commit d0ad3c5: [Minor] Modernize CMakeLists
Vsevolod Stakhov
vsevolod at highsecure.ru
Tue Jul 9 10:00:05 UTC 2019
Author: Vsevolod Stakhov
Date: 2019-07-09 10:46:47 +0100
URL: https://github.com/rspamd/rspamd/commit/d0ad3c5f2b6ad4543d6f4b4004be9d4c9e656c1a
[Minor] Modernize CMakeLists
---
CMakeLists.txt | 73 +++++++++++++++-------------------------------------------
1 file changed, 18 insertions(+), 55 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0b872a18a..de9a543e3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,10 +5,7 @@
#
############################# INITIAL SECTION #############################################
-CMAKE_MINIMUM_REQUIRED(VERSION 3.0 FATAL_ERROR)
-
-PROJECT(rspamd C)
-ENABLE_LANGUAGE(ASM)
+CMAKE_MINIMUM_REQUIRED(VERSION 3.1 FATAL_ERROR)
SET(RSPAMD_VERSION_MAJOR 2)
SET(RSPAMD_VERSION_MINOR 0)
@@ -23,6 +20,17 @@ IF(GIT_ID)
ENDIF()
SET(RSPAMD_VERSION "${RSPAMD_VERSION_MAJOR}.${RSPAMD_VERSION_MINOR}")
+
+PROJECT(rspamd VERSION "${RSPAMD_VERSION}" LANGUAGES C CXX ASM)
+
+# This is supported merely with cmake 3.1
+SET(CMAKE_CXX_STANDARD 17)
+SET(CMAKE_CXX_STANDARD_REQUIRED ON)
+SET(USE_CXX_LINKER 1)
+
+SET(CMAKE_C_STANDARD 11)
+SET(CMAKE_C_STANDARD_REQUIRED ON)
+
SET(RSPAMD_MASTER_SITE_URL "https://rspamd.com")
IF(NOT RSPAMD_USER)
@@ -39,14 +47,11 @@ SET_PROPERTY(GLOBAL PROPERTY ALLOW_DUPLICATE_CUSTOM_TARGETS 1)
OPTION(ENABLE_OPTIMIZATION "Enable extra optimizations [default: OFF]" OFF)
OPTION(SKIP_RELINK_RPATH "Skip relinking and full RPATH for the install tree" OFF)
-OPTION(ENABLE_REDIRECTOR "Enable redirector install [default: OFF]" 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: ON]" ON)
-OPTION(ENABLE_DB "Find and link with DB library [default: OFF]" OFF)
OPTION(ENABLE_URL_INCLUDE "Enable urls in ucl includes (requires libcurl or libfetch) [default: OFF]" OFF)
OPTION(NO_SHARED "Build internal libs static [default: ON]" ON)
-OPTION(INSTALL_EXAMPLES "Install examples [default: OFF]" OFF)
OPTION(INSTALL_WEBUI "Install web interface [default: ON]" ON)
OPTION(WANT_SYSTEMD_UNITS "Install systemd unit files on Linux [default: OFF]" OFF)
OPTION(ENABLE_SNOWBALL "Enable snowball stemmer [default: ON]" ON)
@@ -404,6 +409,7 @@ MACRO(ProcessPackage PKG_NAME)
# Handle other CFLAGS and LDFLAGS
FOREACH(_arg ${${_XPREFIX}_CFLAGS_OTHER})
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_arg}")
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_arg}")
ENDFOREACH(_arg ${${_XPREFIX}_CFLAGS_OTHER})
FOREACH(_arg ${${_XPREFIX}_LDFLAGS_OTHER})
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${_arg}")
@@ -464,35 +470,6 @@ MACRO(ProcessPackage PKG_NAME)
UNSET(_lib CACHE)
UNSET(_incl CACHE)
ENDMACRO(ProcessPackage name)
-
-MACRO(ADD_PRECOMPILED_HEADER _target _input)
- GET_FILENAME_COMPONENT(_name ${_input} NAME)
- SET(_outdir "${CMAKE_BINARY_DIR}/${_name}.pch")
- MAKE_DIRECTORY(${_outdir})
- SET(_output "${_outdir}/${_name}.pch")
- STRING(TOUPPER "CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE}" _flags_var_name)
- SET(_compiler_FLAGS ${${_flags_var_name}})
- GET_DIRECTORY_PROPERTY(_directory_flags INCLUDE_DIRECTORIES)
- FOREACH(item ${_directory_flags})
- LIST(APPEND _compiler_FLAGS "-I${item}")
- ENDFOREACH(item)
-
- INCLUDE_DIRECTORIES(${_outdir})
- IF("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
- IF(NOT TARGET ${_name}_pch)
- MESSAGE("${CMAKE_C_COMPILER} -DPCHCOMPILE ${CMAKE_C_FLAGS} -x c-header -o ${_output} ${_input}")
- ADD_CUSTOM_COMMAND(OUTPUT ${_output}
- COMMAND ${CMAKE_C_COMPILER} -DPCHCOMPILE ${_compiler_FLAGS} -x c-header -o ${_output} ${_input}
- DEPENDS ${_input})
- ADD_CUSTOM_TARGET(${_name}_pch DEPENDS ${_output})
- ENDIF()
-
- ADD_CUSTOM_TARGET(${_target}_pch DEPENDS ${_name}_pch)
- ADD_DEPENDENCIES(${_target} ${_target}_pch)
- SET_TARGET_PROPERTIES(${_target} PROPERTIES COMPILE_FLAGS "-include ${_name} -Winvalid-pch")
- ENDIF()
-ENDMACRO()
-
############################# CONFIG SECTION #############################################
# Initial set
@@ -527,10 +504,6 @@ SET(TAR "tar")
IF(CMAKE_SYSTEM_NAME MATCHES "^.*BSD$|DragonFly")
ADD_DEFINITIONS(-DFREEBSD -D_BSD_SOURCE)
CONFIGURE_FILE(freebsd/rspamd.sh.in freebsd/rspamd @ONLY)
-
- IF(ENABLE_REDIRECTOR MATCHES "ON")
- CONFIGURE_FILE(freebsd/redirector.sh.in freebsd/redirector @ONLY)
- ENDIF(ENABLE_REDIRECTOR MATCHES "ON")
MESSAGE(STATUS "Configuring for BSD system")
# Find util library
ProcessPackage(LIBUTIL LIBRARY util INCLUDE libutil.h
@@ -549,7 +522,7 @@ IF(CMAKE_SYSTEM_NAME MATCHES "^.*BSD$|DragonFly")
ENDIF()
IF(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
- SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_BSD_SOURCE -DDARWIN")
+ ADD_DEFINITIONS(-D_BSD_SOURCE -DDARWIN)
SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS} -undefined dynamic_lookup")
IF(ENABLE_LUAJIT MATCHES "ON")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pagezero_size 10000 -image_base 100000000")
@@ -560,7 +533,6 @@ IF(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
- SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_GNU_SOURCE")
ADD_DEFINITIONS(-D_GNU_SOURCE -DLINUX)
# Workaround with architecture specific includes
#IF(IS_DIRECTORY "/usr/include/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu/")
@@ -591,8 +563,7 @@ IF(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
ENDIF(ENABLE_OPTIMIZATION MATCHES "ON")
ENDIF("${CMAKE_C_COMPILER_ID}" MATCHES SunPro)
- SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__EXTENSIONS__ -DSOLARIS -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112L")
-
+ ADD_DEFINITIONS(-D__EXTENSIONS__ -DSOLARIS -D_POSIX_SOURCE -D_POSIX_C_SOURCE=200112)
LIST(APPEND CMAKE_REQUIRED_LIBRARIES rt)
LIST(APPEND CMAKE_REQUIRED_LIBRARIES dl)
LIST(APPEND CMAKE_REQUIRED_LIBRARIES resolv)
@@ -694,16 +665,10 @@ IF(ENABLE_GPERF_TOOLS MATCHES "ON")
ProcessPackage(GPERF LIBRARY profiler INCLUDE profiler.h INCLUDE_SUFFIXES include/google
ROOT ${GPERF_ROOT_DIR})
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-omit-frame-pointer")
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer")
SET(WITH_GPERF_TOOLS 1)
ENDIF(ENABLE_GPERF_TOOLS MATCHES "ON")
-IF (ENABLE_HYPERSCAN MATCHES "ON")
- IF(${HYPERSCAN_LIBRARY} MATCHES ".*[.]a$" OR STATIC_HYPERSCAN)
- ENABLE_LANGUAGE(CXX)
- SET(USE_CXX_LINKER 1)
- ENDIF()
-ENDIF()
-
CHECK_C_COMPILER_FLAG(-Wall SUPPORT_WALL)
CHECK_C_COMPILER_FLAG(-W SUPPORT_W)
CHECK_C_COMPILER_FLAG(-Wpointer-arith SUPPORT_WPOINTER)
@@ -722,10 +687,6 @@ CHECK_C_COMPILER_FLAG(-Wduplicated-cond SUPPORT_WDUPLICATED_COND)
# GCC 7 specific
CHECK_C_COMPILER_FLAG(-Wimplicit-fallthrough SUPPORT_WIMPLICIT_FALLTHROUGH)
-IF(NOT "${CMAKE_C_COMPILER_ID}" MATCHES SunPro)
- CHECK_C_COMPILER_FLAG("-std=c11" SUPPORT_STD11_FLAG)
- CHECK_C_COMPILER_FLAG("-std=c99" SUPPORT_STD99_FLAG)
-ENDIF(NOT "${CMAKE_C_COMPILER_ID}" MATCHES SunPro)
IF(SUPPORT_W)
ADD_COMPILE_OPTIONS("-W")
ENDIF(SUPPORT_W)
@@ -816,6 +777,7 @@ ENDIF(NOT CMAKE_C_OPT_FLAGS)
IF(ENABLE_COVERAGE)
SET(CMAKE_C_OPT_FLAGS "-g -O0")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --coverage")
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage")
ENDIF(ENABLE_COVERAGE)
@@ -824,6 +786,7 @@ IF(ENABLE_LUA_TRACE)
ENDIF(ENABLE_LUA_TRACE)
SET(CMAKE_C_FLAGS "${CMAKE_C_OPT_FLAGS} ${CMAKE_C_FLAGS}")
+SET(CMAKE_CXX_FLAGS "${CMAKE_C_OPT_FLAGS} ${CMAKE_CXX_FLAGS}")
ADD_DEFINITIONS(-DHAVE_CONFIG_H)
More information about the Commits
mailing list