]> source.dussan.org Git - rspamd.git/commitdiff
Allow NO_SHARED build to use static archives for internal libraries.
authorVsevolod Stakhov <vsevolod@rambler-co.ru>
Thu, 7 Jun 2012 15:48:27 +0000 (19:48 +0400)
committerVsevolod Stakhov <vsevolod@rambler-co.ru>
Thu, 7 Jun 2012 15:48:27 +0000 (19:48 +0400)
Check for -fPIC/-fpic support.

CMakeLists.txt
lib/CMakeLists.txt
src/cdb/CMakeLists.txt
src/json/CMakeLists.txt
src/lua/CMakeLists.txt

index cde158b154a28fb260f687ba506a7b59c6e6a2ab..fa5fff1d662a559e6b8276042e49dd0787202e61 100644 (file)
@@ -30,6 +30,7 @@ OPTION(ENABLE_PROFILING    "Enable profiling [default: OFF]"
 OPTION(ENABLE_GPERF_TOOLS  "Enable google perftools [default: OFF]"             OFF)
 OPTION(ENABLE_STATIC       "Enable static compiling [default: OFF]"             OFF)
 OPTION(ENABLE_LUAJIT       "Link with libluajit [default: OFF]"                 OFF)
+OPTION(NO_SHARED           "Build internal libs static [default: OFF]"          OFF)
 OPTION(FORCE_GMIME24       "Link with gmime2.4 [default: OFF]"                  OFF)
 
 # Build optimized code for following CPU (default i386)
@@ -420,7 +421,11 @@ IF(ENABLE_STATIC MATCHES "ON")
        SET(LINK_TYPE "STATIC")
 ELSE(ENABLE_STATIC MATCHES "ON")
        pkg_check_modules(GLIB2 REQUIRED glib-2.0>=2.12 gmodule-2.0)
-       SET(LINK_TYPE "SHARED")
+       IF(NO_SHARED MATCHES "OFF")
+               SET(LINK_TYPE "SHARED")
+       ELSE(NO_SHARED MATCHES "OFF")
+               SET(LINK_TYPE "STATIC")
+       ENDIF(NO_SHARED MATCHES "OFF")
 ENDIF(ENABLE_STATIC MATCHES "ON")
 SET(GLIB2_VERSION "${GLIB2_glib-2.0_VERSION}")
 
@@ -697,6 +702,15 @@ IF(SUPPORT_STD_FLAG)
        SET(CMAKE_C_WARN_FLAGS "${CMAKE_C_WARN_FLAGS} -std=c99")
 ENDIF(SUPPORT_STD_FLAG)
  
+CHECK_C_COMPILER_FLAG(-fPIC SUPPORT_FPIC)
+IF(SUPPORT_FPIC)
+       SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
+ENDIF(SUPPORT_FPIC)
+CHECK_C_COMPILER_FLAG(-fpic SUPPORT_Fpic)
+IF(SUPPORT_Fpic)
+       SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpic")
+ENDIF(SUPPORT_Fpic)
  # Optimization flags
 IF(NOT CMAKE_C_OPT_FLAGS)
        IF(ENABLE_OPTIMIZATION MATCHES "ON")
index 4e30a70a811941fed6d6702277e252aa57a0ebdb..b496d4dabbded7b1bfa1a6074b86c46b683c2647 100644 (file)
@@ -75,13 +75,14 @@ IF(GLIB_COMPAT)
        TARGET_LINK_LIBRARIES(rspamd-util glibadditions)
 ENDIF(GLIB_COMPAT)
 
-INSTALL(TARGETS rspamd-util 
-    LIBRARY DESTINATION ${LIBDIR} 
-    PUBLIC_HEADER DESTINATION include
-    ARCHIVE DESTINATION ${LIBDIR})
+IF(NO_SHARED MATCHES "OFF")
+       INSTALL(TARGETS rspamd-util 
+       LIBRARY DESTINATION ${LIBDIR} 
+       PUBLIC_HEADER DESTINATION include)
+ENDIF(NO_SHARED MATCHES "OFF")
 
 # Rspamd client
-ADD_LIBRARY(rspamdclient ${LINK_TYPE} ${LIBRSPAMDCLIENTSRC})
+ADD_LIBRARY(rspamdclient SHARED ${LIBRSPAMDCLIENTSRC})
 ADD_LIBRARY(rspamdclient_static STATIC ${LIBRSPAMDCLIENTSRC})
 SET_TARGET_PROPERTIES(rspamdclient PROPERTIES PUBLIC_HEADER "client/librspamdclient.h")
 
@@ -139,10 +140,12 @@ ENDIF(SQLITE_LIBRARIES)
 IF(OPENSSL_FOUND)
        TARGET_LINK_LIBRARIES(rspamd-server ${OPENSSL_LIBRARIES})
 ENDIF(OPENSSL_FOUND)
-INSTALL(TARGETS rspamd-server 
-    LIBRARY DESTINATION ${LIBDIR} 
-    PUBLIC_HEADER DESTINATION ${INCLUDEDIR}
-    ARCHIVE DESTINATION ${LIBDIR})
+
+IF(NO_SHARED MATCHES "OFF")
+       INSTALL(TARGETS rspamd-server 
+       LIBRARY DESTINATION ${LIBDIR} 
+       PUBLIC_HEADER DESTINATION ${INCLUDEDIR})
+ENDIF(NO_SHARED MATCHES "OFF")
     
 # Librspamdmime
 ADD_LIBRARY(rspamd-mime ${LINK_TYPE} ${LIBRSPAMDMIMESRC})
@@ -161,14 +164,15 @@ ELSE(GMIME24)
        TARGET_LINK_LIBRARIES(rspamd-mime ${GMIME2_LIBRARIES})
 ENDIF(GMIME24)
 
-INSTALL(TARGETS rspamd-mime 
-    LIBRARY DESTINATION ${LIBDIR}  
-    PUBLIC_HEADER DESTINATION ${INCLUDEDIR}
-    ARCHIVE DESTINATION ${LIBDIR})
+IF(NO_SHARED MATCHES "OFF")
+       INSTALL(TARGETS rspamd-mime 
+               LIBRARY DESTINATION ${LIBDIR}  
+       PUBLIC_HEADER DESTINATION ${INCLUDEDIR})
+ENDIF(NO_SHARED MATCHES "OFF")
 
 # Libkvstorageclient
 
-ADD_LIBRARY(kvstorageclient ${LINK_TYPE} ${LIBRKVSTORAGESRC})
+ADD_LIBRARY(kvstorageclient SHARED ${LIBRKVSTORAGESRC})
 ADD_LIBRARY(kvstorageclient_static STATIC ${LIBRKVSTORAGESRC})
 SET_TARGET_PROPERTIES(kvstorageclient PROPERTIES PUBLIC_HEADER "kvstorage/libkvstorageclient.h")
 
@@ -189,9 +193,4 @@ IF(GLIB_COMPAT)
        INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/contrib/lgpl")
        TARGET_LINK_LIBRARIES(kvstorageclient glibadditions)
 ENDIF(GLIB_COMPAT)
-INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/src")
-
-INSTALL(TARGETS rspamdclient rspamdclient_static LIBRARY PUBLIC_HEADER 
-    LIBRARY DESTINATION ${LIBDIR} 
-    PUBLIC_HEADER DESTINATION ${INCLUDEDIR}
-    ARCHIVE DESTINATION ${LIBDIR})
+INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/src")
\ No newline at end of file
index 8c7f6b3be4c9f8413d9882df59b21eebb90cff1e..7c6e1257daa81f20c053db3a6d598e05e264ea45 100644 (file)
@@ -7,7 +7,8 @@ ADD_LIBRARY(rspamd-cdb ${LINK_TYPE} ${CDBSRC})
 TARGET_LINK_LIBRARIES(rspamd-cdb rspamd-util)
 SET_TARGET_PROPERTIES(rspamd-cdb PROPERTIES VERSION ${RSPAMD_VERSION})
 SET_TARGET_PROPERTIES(rspamd-cdb PROPERTIES COMPILE_FLAGS "-DRSPAMD_LIB")
-INSTALL(TARGETS rspamd-cdb 
-    LIBRARY DESTINATION ${LIBDIR} 
-    PUBLIC_HEADER DESTINATION ${INCLUDEDIR}
-    ARCHIVE DESTINATION ${LIBDIR})
\ No newline at end of file
+IF(NO_SHARED MATCHES "OFF")
+       INSTALL(TARGETS rspamd-cdb 
+       LIBRARY DESTINATION ${LIBDIR} 
+       PUBLIC_HEADER DESTINATION ${INCLUDEDIR})
+ENDIF(NO_SHARED MATCHES "OFF")
\ No newline at end of file
index 9b37384bbe106f9d5097a885ee62b6063f7257e8..fd15ae77355f390d8795c2bbbe1223330a272b64 100644 (file)
@@ -10,7 +10,8 @@ ADD_LIBRARY(rspamd-json ${LINK_TYPE} ${JSONSRC})
 TARGET_LINK_LIBRARIES(rspamd-json rspamd-util)
 SET_TARGET_PROPERTIES(rspamd-json PROPERTIES VERSION ${RSPAMD_VERSION})
 SET_TARGET_PROPERTIES(rspamd-json PROPERTIES COMPILE_FLAGS "-DRSPAMD_LIB")
-INSTALL(TARGETS rspamd-json 
-    LIBRARY DESTINATION ${LIBDIR} 
-    PUBLIC_HEADER DESTINATION ${INCLUDEDIR}
-    ARCHIVE DESTINATION ${LIBDIR})
+IF(NO_SHARED MATCHES "OFF")
+       INSTALL(TARGETS rspamd-json 
+       LIBRARY DESTINATION ${LIBDIR} 
+       PUBLIC_HEADER DESTINATION ${INCLUDEDIR})
+ENDIF(NO_SHARED MATCHES "OFF")
index 0c9d936218dc9facda950a6ef40d459c570264fe..a2823ad7be12a3d59e725dd896be274b32427185 100644 (file)
@@ -21,7 +21,8 @@ ELSE(ENABLE_LUAJIT MATCHES "ON")
        TARGET_LINK_LIBRARIES(rspamd-lua "${LUA_LIBRARY}")
 ENDIF(ENABLE_LUAJIT MATCHES "ON")
 SET_TARGET_PROPERTIES(rspamd-lua PROPERTIES COMPILE_FLAGS "-DRSPAMD_LIB")
-INSTALL(TARGETS rspamd-lua 
-    LIBRARY DESTINATION ${LIBDIR} 
-    PUBLIC_HEADER DESTINATION ${INCLUDEDIR}
-    ARCHIVE DESTINATION ${LIBDIR})
+IF(NO_SHARED MATCHES "OFF")
+       INSTALL(TARGETS rspamd-lua 
+       LIBRARY DESTINATION ${LIBDIR} 
+       PUBLIC_HEADER DESTINATION ${INCLUDEDIR})
+ENDIF(NO_SHARED MATCHES "OFF")
\ No newline at end of file