summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorent Le Coz <louiz@louiz.org>2014-11-13 06:22:17 +0100
committerFlorent Le Coz <louiz@louiz.org>2014-11-13 06:44:15 +0100
commit2bb4a347cdfbee92334d5340ba640c8680a81d9e (patch)
tree76f8d377ac569e11a9f259dd33b8b6c75ff6488d
parent12eeb4d11eee5b8e6514f0ce8bf7508cc2d6d7a1 (diff)
downloadbiboumi-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.txt25
-rw-r--r--INSTALL40
-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.cmake39
-rw-r--r--cmake/Modules/FindSystemdDaemon.cmake39
-rw-r--r--src/config.h.cmake2
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()
#
diff --git a/INSTALL b/INSTALL
index 051e203..69fa4bd 100644
--- a/INSTALL
+++ b/INSTALL
@@ -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}"