Next attempt to tackle DLLs.
authorMathis Rosenhauer <rosenhauer@dkrz.de>
Tue, 29 Jul 2014 15:47:10 +0000 (17:47 +0200)
committerMathis Rosenhauer <rosenhauer@dkrz.de>
Tue, 29 Jul 2014 15:47:10 +0000 (17:47 +0200)
CMakeLists.txt
cmake/config.h.in
src/CMakeLists.txt
src/libaec.h

index dc017a7..66cc038 100644 (file)
@@ -26,14 +26,15 @@ CONFIGURE_FILE(
 ADD_DEFINITIONS("-DHAVE_CONFIG_H")
 
 # Allow the developer to select if Dynamic or Static libraries are built
-OPTION (BUILD_SHARED_LIBS "Build Shared Libraries" OFF)
-IF (BUILD_SHARED_LIBS)
-  # User wants to build Dynamic Libraries,
-  # so change the LIB_TYPE variable to CMake keyword 'SHARED'
+OPTION(BUILD_SHARED_LIBS "Build Shared Libraries" ON)
+IF(BUILD_SHARED_LIBS)
   SET (LIB_TYPE SHARED)
 ELSE(BUILD_SHARED_LIBS)
-  SET (LIB_TYPE STATIC)
-ENDIF (BUILD_SHARED_LIBS)
+  IF(WIN32)
+    MESSAGE(WARNING "You will have to modify libaec.h for static libs.")
+  ENDIF(WIN32)
+  SET(LIB_TYPE STATIC)
+ENDIF(BUILD_SHARED_LIBS)
 
 INCLUDE_DIRECTORIES("${PROJECT_BINARY_DIR}")
 INCLUDE_DIRECTORIES("${PROJECT_BINARY_DIR}/src")
index acfb060..9f5fffb 100644 (file)
@@ -3,4 +3,3 @@
 #cmakedefine WORDS_BIGENDIAN 1
 #cmakedefine HAVE_DECL___BUILTIN_CLZLL 1
 #cmakedefine HAVE_BSR64 1
-#cmakedefine BUILD_SHARED_LIBS 1
index a8d6927..f62f402 100644 (file)
@@ -11,10 +11,10 @@ SET_TARGET_PROPERTIES(sz PROPERTIES
   )
 
 TARGET_LINK_LIBRARIES(sz aec)
-IF(WIN32)
-  SET_TARGET_PROPERTIES (aec PROPERTIES DEFINE_SYMBOL "DLL_EXPORT")
-  SET_TARGET_PROPERTIES (sz PROPERTIES DEFINE_SYMBOL "DLL_EXPORT")
-ENDIF(WIN32)
+IF(WIN32 AND BUILD_SHARED_LIBS)
+  SET_TARGET_PROPERTIES (aec PROPERTIES DEFINE_SYMBOL "AECDLL_EXPORTS")
+  SET_TARGET_PROPERTIES (sz PROPERTIES DEFINE_SYMBOL "AECDLL_EXPORTS")
+ENDIF(WIN32 AND BUILD_SHARED_LIBS)
 
 ADD_EXECUTABLE(aec_client aec.c)
 SET_TARGET_PROPERTIES(aec_client PROPERTIES OUTPUT_NAME "aec")
index 5acd241..736a069 100644 (file)
@@ -55,8 +55,8 @@
 
 #include <stddef.h>
 
-#if _WIN32 && BUILD_SHARED_LIBS
-#  ifdef DLL_EXPORT
+#if _WIN32
+#  ifdef AECDLL_EXPORTS
 #    define AEC_SCOPE __declspec(dllexport)
 #  else
 #    define AEC_SCOPE extern __declspec(dllimport)