aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2021-10-23 16:17:36 +0200
committerEven Rouault <even.rouault@spatialys.com>2021-10-23 16:27:30 +0200
commit6e9b324ab7bf5909df7e68409e060282db14fa54 (patch)
tree99383710e05b1e0bb046ce086ad522f54d55d5bc /include
parent9817fe7db31d5a0716876e1f8f7f1a9ba4b91be0 (diff)
downloadPROJ-6e9b324ab7bf5909df7e68409e060282db14fa54.tar.gz
PROJ-6e9b324ab7bf5909df7e68409e060282db14fa54.zip
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.
Diffstat (limited to 'include')
-rw-r--r--include/proj/util.hpp63
1 files changed, 29 insertions, 34 deletions
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"