From 6e9b324ab7bf5909df7e68409e060282db14fa54 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sat, 23 Oct 2021 16:17:36 +0200 Subject: CMake: revise how we deal with symbol export and static builds - Remove the explicit PROJ_MSVC_DLL_IMPORT symbol used for importing symbols from a MSVC .dll: by default on MSVC, we use now __declspec(dllimport), unless PROJ_MSVC_DLL_EXPORT is defined by PROJ at build time. This makes it easier for users: they don't have to define anything special. This simplifies in particular the build of our binaries - For static builds, export -DPROJ_DLL= as public, so that users that import PROJ through CMake mechanism don't have to do it manually. --- include/proj/util.hpp | 63 ++++++++++++++++++++++++--------------------------- 1 file changed, 29 insertions(+), 34 deletions(-) (limited to 'include') diff --git a/include/proj/util.hpp b/include/proj/util.hpp index acc793cc..3f5e208e 100644 --- a/include/proj/util.hpp +++ b/include/proj/util.hpp @@ -50,43 +50,38 @@ namespace proj {} //! @cond Doxygen_Suppress #ifndef PROJ_DLL -#ifdef PROJ_MSVC_DLL_EXPORT -#define PROJ_DLL __declspec(dllexport) -#elif defined(PROJ_MSVC_DLL_IMPORT) -#define PROJ_DLL __declspec(dllimport) -#elif defined(__GNUC__) -#define PROJ_DLL __attribute__((visibility("default"))) -#else -#define PROJ_DLL -#endif +# if defined(_MSC_VER) +# ifdef PROJ_MSVC_DLL_EXPORT +# define PROJ_DLL __declspec(dllexport) +# else +# define PROJ_DLL __declspec(dllimport) +# endif +# elif defined(__GNUC__) +# define PROJ_DLL __attribute__ ((visibility("default"))) +# else +# define PROJ_DLL +# endif #endif #ifndef PROJ_MSVC_DLL - -#ifdef PROJ_MSVC_DLL_EXPORT -#define PROJ_MSVC_DLL PROJ_DLL -#define PROJ_GCC_DLL -#define PROJ_INTERNAL -#elif defined(PROJ_MSVC_DLL_IMPORT) -#define PROJ_MSVC_DLL PROJ_DLL -#define PROJ_GCC_DLL -#define PROJ_INTERNAL -#elif defined(__GNUC__) -#define PROJ_MSVC_DLL -#define PROJ_GCC_DLL PROJ_DLL -#if !defined(__MINGW32__) -#define PROJ_INTERNAL __attribute__((visibility("hidden"))) -#else -#define PROJ_INTERNAL -#endif -#else -#define PROJ_MSVC_DLL -#define PROJ_GCC_DLL -#define PROJ_INTERNAL -#endif - -#define PROJ_FOR_TEST PROJ_DLL - +# if defined(_MSC_VER) +# define PROJ_MSVC_DLL PROJ_DLL +# define PROJ_GCC_DLL +# define PROJ_INTERNAL +# elif defined(__GNUC__) +# define PROJ_MSVC_DLL +# define PROJ_GCC_DLL PROJ_DLL +# if !defined(__MINGW32__) +# define PROJ_INTERNAL __attribute__((visibility("hidden"))) +# else +# define PROJ_INTERNAL +# endif +# else +# define PROJ_MSVC_DLL +# define PROJ_GCC_DLL +# define PROJ_INTERNAL +# endif +# define PROJ_FOR_TEST PROJ_DLL #endif #include "nn.hpp" -- cgit v1.2.3