Browse Source

Allow NO_SHARED build to use static archives for internal libraries.

Check for -fPIC/-fpic support.
tags/0.5.0
Vsevolod Stakhov 12 years ago
parent
commit
b1cb2de69a
5 changed files with 49 additions and 33 deletions
  1. 15
    1
      CMakeLists.txt
  2. 19
    20
      lib/CMakeLists.txt
  3. 5
    4
      src/cdb/CMakeLists.txt
  4. 5
    4
      src/json/CMakeLists.txt
  5. 5
    4
      src/lua/CMakeLists.txt

+ 15
- 1
CMakeLists.txt View 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")

+ 19
- 20
lib/CMakeLists.txt View 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")

+ 5
- 4
src/cdb/CMakeLists.txt View 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})
IF(NO_SHARED MATCHES "OFF")
INSTALL(TARGETS rspamd-cdb
LIBRARY DESTINATION ${LIBDIR}
PUBLIC_HEADER DESTINATION ${INCLUDEDIR})
ENDIF(NO_SHARED MATCHES "OFF")

+ 5
- 4
src/json/CMakeLists.txt View 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")

+ 5
- 4
src/lua/CMakeLists.txt View 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")

Loading…
Cancel
Save