diff options
author | Florent Le Coz <louiz@louiz.org> | 2014-11-13 06:22:17 +0100 |
---|---|---|
committer | Florent Le Coz <louiz@louiz.org> | 2014-11-13 06:44:15 +0100 |
commit | 2bb4a347cdfbee92334d5340ba640c8680a81d9e (patch) | |
tree | 76f8d377ac569e11a9f259dd33b8b6c75ff6488d | |
parent | 12eeb4d11eee5b8e6514f0ce8bf7508cc2d6d7a1 (diff) | |
download | biboumi-2bb4a347cdfbee92334d5340ba640c8680a81d9e.tar.gz biboumi-2bb4a347cdfbee92334d5340ba640c8680a81d9e.tar.bz2 biboumi-2bb4a347cdfbee92334d5340ba640c8680a81d9e.tar.xz biboumi-2bb4a347cdfbee92334d5340ba640c8680a81d9e.zip |
Improve dependencies checks in the build process
- Rename all Find*.cmake files to uppercase, to make things more consistent,
and fix some issues with them (notably the REQUIRED flag)
- Rename SYSTEMDDAEMON to SYSTEMD and only use the libsystemd instead of
libsystemd-daemon because it's deprecated for a long time now
- Provide a WITH_* and WITHOUT_* switch for all optional dependencies
- Document things in the INSTALL file
-rw-r--r-- | CMakeLists.txt | 25 | ||||
-rw-r--r-- | INSTALL | 40 | ||||
-rw-r--r-- | cmake/Modules/FindBOTAN.cmake (renamed from cmake/Modules/FindBotan.cmake) | 2 | ||||
-rw-r--r-- | cmake/Modules/FindICONV.cmake (renamed from cmake/Modules/FindIconv.cmake) | 0 | ||||
-rw-r--r-- | cmake/Modules/FindLIBIDN.cmake (renamed from cmake/Modules/FindLibidn.cmake) | 0 | ||||
-rw-r--r-- | cmake/Modules/FindLIBUUID.cmake (renamed from cmake/Modules/FindLibuuid.cmake) | 0 | ||||
-rw-r--r-- | cmake/Modules/FindSYSTEMD.cmake | 39 | ||||
-rw-r--r-- | cmake/Modules/FindSystemdDaemon.cmake | 39 | ||||
-rw-r--r-- | src/config.h.cmake | 2 |
9 files changed, 80 insertions, 67 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 14c002c..138bdeb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,14 +18,25 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__FILENAME__='\"$(subst ${CMAKE_SOURCE set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/") include(FindEXPAT) find_package(EXPAT REQUIRED) -find_package(Iconv REQUIRED) -find_package(Libuuid REQUIRED) -find_package(Libidn) -if(NOT WITHOUT_SYSTEMD) - find_package(SystemdDaemon) +find_package(ICONV REQUIRED) +find_package(LIBUUID REQUIRED) + +if(WITH_LIBIDN) + find_package(LIBIDN REQUIRED) +elseif(NOT WITHOUT_LIBIDN) + find_package(LIBIDN) +endif() + +if(WITH_SYSTEMD) + find_package(SYSTEMD REQUIRED) +elseif(NOT WITHOUT_SYSTEMD) + find_package(SYSTEMD) endif() -if(NOT WITHOUT_BOTAN) - find_package(Botan) + +if(WITH_BOTAN) + find_package(BOTAN REQUIRED) +elseif(NOT WITHOUT_BOTAN) + find_package(BOTAN) endif() # @@ -35,7 +35,7 @@ Libraries: Other branches than the 1.11 are not supported. http://botan.randombit.net/ -- systemd-daemon (optional) +- systemd (optional) Provides the support for a systemd service of Type=notify. This is useful only if you are packaging biboumi in a distribution with Systemd. @@ -67,33 +67,35 @@ In ccmake, first use 'c' to configure the build system, edit the values you need and finaly use 'g' to generate the Makefiles to build the system and quit ccmake. -or you can also use an interactive mode with: +You can also configure these options using a -D command line flag. -% cmake -i . +The list of available options: -and respond to the questions when you are prompted to. - -You can, for example, select the poller used by biboumi, at compile-time, -using the POLLER cmake option. Available values are: +- POLLER: lets you select the poller used by biboumi, at + compile-time. Possible values are: EPOLL: use the Linux-specific epoll(7). This is the default on Linux. - POLL: use the standard poll(2). This is the default value on all non-Linux platforms. + POLL: use the standard poll(2). This is the default value on all non-Linux + platforms. -Examples, configure the poller with cmake: +- WITH_BOTAN and WITHOUT_BOTAN: The first force the usage of the Botan library, + if it is not found, the configuration process will fail. The second will + make the build process ignore the Botan library, it will not be used even + if it's available on the system. If none of these option is specified, the + library will be used if available and will be ignored otherwise. -% cmake . -DPOLLER=EPOLL +- WITH_LIBIDN and WITHOUT_LIBIDN: Just like the WITH(OUT)_BOTAN options, but + for the IDN library -You can also decide not to use two of the optional dependencies, even if -they are present on your system, for example if Botan is available but you -do not want to use it, you can set the value of WITHOUT_BOTAN to 1, like -this: +- WITH_SYSTEMD and WITHOUT_SYSTEMD: Just like the other WITH(OUT)_* options, + but for the Systemd library -% cmake . -DWITHOUT_BOTAN=1 +Example: -This way, the binary will not be linked with libotan at all (and all -connection will then be made in clear text). -You can also decide not to link with systemd, like this: +% cmake . -DCMAKE_BUILD_TYPE=release -DCMAKE_INSTALL_PREFIX \ + -DWITH_BOTAN=1 -DWITHOUT_SYSTEMD=1 -% cmake . -DWITHOUT_SYSTEMD=1 +This command will configure the project to build a release, with TLS enabled +(using Botan) but without using Systemd (even if available on the system). ============== diff --git a/cmake/Modules/FindBotan.cmake b/cmake/Modules/FindBOTAN.cmake index aa8f58c..a12bd35 100644 --- a/cmake/Modules/FindBotan.cmake +++ b/cmake/Modules/FindBOTAN.cmake @@ -25,7 +25,7 @@ find_library(BOTAN_LIBRARIES NAMES botan botan-1.11 # Use some standard module to handle the QUIETLY and REQUIRED arguments, and # set BOTAN_FOUND to TRUE if these two variables are set. include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(Botan REQUIRED_VARS BOTAN_LIBRARIES BOTAN_INCLUDE_DIRS) +find_package_handle_standard_args(BOTAN REQUIRED_VARS BOTAN_LIBRARIES BOTAN_INCLUDE_DIRS) if(BOTAN_FOUND) set(BOTAN_LIBRARY ${BOTAN_LIBRARIES}) diff --git a/cmake/Modules/FindIconv.cmake b/cmake/Modules/FindICONV.cmake index 7ca173f..7ca173f 100644 --- a/cmake/Modules/FindIconv.cmake +++ b/cmake/Modules/FindICONV.cmake diff --git a/cmake/Modules/FindLibidn.cmake b/cmake/Modules/FindLIBIDN.cmake index 611a6a8..611a6a8 100644 --- a/cmake/Modules/FindLibidn.cmake +++ b/cmake/Modules/FindLIBIDN.cmake diff --git a/cmake/Modules/FindLibuuid.cmake b/cmake/Modules/FindLIBUUID.cmake index 25b330b..25b330b 100644 --- a/cmake/Modules/FindLibuuid.cmake +++ b/cmake/Modules/FindLIBUUID.cmake diff --git a/cmake/Modules/FindSYSTEMD.cmake b/cmake/Modules/FindSYSTEMD.cmake new file mode 100644 index 0000000..c7decde --- /dev/null +++ b/cmake/Modules/FindSYSTEMD.cmake @@ -0,0 +1,39 @@ +# - Find SystemdDaemon +# Find the systemd daemon library +# +# This module defines the following variables: +# SYSTEMD_FOUND - True if library and include directory are found +# If set to TRUE, the following are also defined: +# SYSTEMD_INCLUDE_DIRS - The directory where to find the header file +# SYSTEMD_LIBRARIES - Where to find the library file +# +# For conveniance, these variables are also set. They have the same values +# than the variables above. The user can thus choose his/her prefered way +# to write them. +# SYSTEMD_LIBRARY +# SYSTEMD_INCLUDE_DIR +# +# This file is in the public domain + +include(FindPkgConfig) +pkg_check_modules(SYSTEMD libsystemd) + +if(NOT SYSTEMD_FOUND) + find_path(SYSTEMD_INCLUDE_DIRS NAMES systemd/sd-daemon.h + DOC "The Systemd include directory") + + find_library(SYSTEMD_LIBRARIES NAMES systemd + DOC "The Systemd library") + + # Use some standard module to handle the QUIETLY and REQUIRED arguments, and + # set SYSTEMD_FOUND to TRUE if these two variables are set. + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(SYSTEMD REQUIRED_VARS SYSTEMD_LIBRARIES SYSTEMD_INCLUDE_DIRS) + + if(SYSTEMD_FOUND) + set(SYSTEMD_LIBRARY ${SYSTEMD_LIBRARIES}) + set(SYSTEMD_INCLUDE_DIR ${SYSTEMD_INCLUDE_DIRS}) + endif() +endif() + +mark_as_advanced(SYSTEMD_INCLUDE_DIRS SYSTEMD_LIBRARIES)
\ No newline at end of file diff --git a/cmake/Modules/FindSystemdDaemon.cmake b/cmake/Modules/FindSystemdDaemon.cmake deleted file mode 100644 index 9492bf2..0000000 --- a/cmake/Modules/FindSystemdDaemon.cmake +++ /dev/null @@ -1,39 +0,0 @@ -# - Find SystemdDaemon -# Find the systemd daemon library -# -# This module defines the following variables: -# SYSTEMDDAEMON_FOUND - True if library and include directory are found -# If set to TRUE, the following are also defined: -# SYSTEMDDAEMON_INCLUDE_DIRS - The directory where to find the header file -# SYSTEMDDAEMON_LIBRARIES - Where to find the library file -# -# For conveniance, these variables are also set. They have the same values -# than the variables above. The user can thus choose his/her prefered way -# to write them. -# SYSTEMDDAEMON_LIBRARY -# SYSTEMDDAEMON_INCLUDE_DIR -# -# This file is in the public domain - -include(FindPkgConfig) -pkg_check_modules(SYSTEMDDAEMON libsystemd-daemon) - -if(NOT SYSTEMDDAEMON_FOUND) - find_path(SYSTEMDDAEMON_INCLUDE_DIRS NAMES systemd/sd-daemon.h - DOC "The Systemd Daemon include directory") - - find_library(SYSTEMDDAEMON_LIBRARIES NAMES systemd-daemon systemd - DOC "The Systemd Daemon library") - - # Use some standard module to handle the QUIETLY and REQUIRED arguments, and - # set SYSTEMDDAEMON_FOUND to TRUE if these two variables are set. - include(FindPackageHandleStandardArgs) - find_package_handle_standard_args(SYSTEMDDAEMON REQUIRED_VARS SYSTEMDDAEMON_LIBRARIES SYSTEMDDAEMON_INCLUDE_DIRS) - - if(SYSTEMDDAEMON_FOUND) - set(SYSTEMDDAEMON_LIBRARY ${SYSTEMDDAEMON_LIBRARIES}) - set(SYSTEMDDAEMON_INCLUDE_DIR ${SYSTEMDDAEMON_INCLUDE_DIRS}) - endif() -endif() - -mark_as_advanced(SYSTEMDDAEMON_INCLUDE_DIRS SYSTEMDDAEMON_LIBRARIES)
\ No newline at end of file diff --git a/src/config.h.cmake b/src/config.h.cmake index d8833ad..8eb2d1c 100644 --- a/src/config.h.cmake +++ b/src/config.h.cmake @@ -1,7 +1,7 @@ #define SYSTEM_NAME "${CMAKE_SYSTEM}" #cmakedefine ICONV_SECOND_ARGUMENT_IS_CONST #cmakedefine LIBIDN_FOUND -#cmakedefine SYSTEMDDAEMON_FOUND +#cmakedefine SYSTEMD_FOUND #cmakedefine POLLER ${POLLER} #cmakedefine BOTAN_FOUND #cmakedefine BIBOUMI_VERSION "${BIBOUMI_VERSION}" |