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
This commit is contained in:
+18
-7
@@ -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/")
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
|
||||||
include(FindEXPAT)
|
include(FindEXPAT)
|
||||||
find_package(EXPAT REQUIRED)
|
find_package(EXPAT REQUIRED)
|
||||||
find_package(Iconv REQUIRED)
|
find_package(ICONV REQUIRED)
|
||||||
find_package(Libuuid REQUIRED)
|
find_package(LIBUUID REQUIRED)
|
||||||
find_package(Libidn)
|
|
||||||
if(NOT WITHOUT_SYSTEMD)
|
if(WITH_LIBIDN)
|
||||||
find_package(SystemdDaemon)
|
find_package(LIBIDN REQUIRED)
|
||||||
|
elseif(NOT WITHOUT_LIBIDN)
|
||||||
|
find_package(LIBIDN)
|
||||||
endif()
|
endif()
|
||||||
if(NOT WITHOUT_BOTAN)
|
|
||||||
find_package(Botan)
|
if(WITH_SYSTEMD)
|
||||||
|
find_package(SYSTEMD REQUIRED)
|
||||||
|
elseif(NOT WITHOUT_SYSTEMD)
|
||||||
|
find_package(SYSTEMD)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(WITH_BOTAN)
|
||||||
|
find_package(BOTAN REQUIRED)
|
||||||
|
elseif(NOT WITHOUT_BOTAN)
|
||||||
|
find_package(BOTAN)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ Libraries:
|
|||||||
Other branches than the 1.11 are not supported.
|
Other branches than the 1.11 are not supported.
|
||||||
http://botan.randombit.net/
|
http://botan.randombit.net/
|
||||||
|
|
||||||
- systemd-daemon (optional)
|
- systemd (optional)
|
||||||
Provides the support for a systemd service of Type=notify. This is useful only
|
Provides the support for a systemd service of Type=notify. This is useful only
|
||||||
if you are packaging biboumi in a distribution with Systemd.
|
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
|
need and finaly use 'g' to generate the Makefiles to build the system and
|
||||||
quit ccmake.
|
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.
|
- POLLER: lets you select the poller used by biboumi, at
|
||||||
|
compile-time. Possible values are:
|
||||||
You can, for example, select the poller used by biboumi, at compile-time,
|
|
||||||
using the POLLER cmake option. Available values are:
|
|
||||||
EPOLL: use the Linux-specific epoll(7). This is the default on Linux.
|
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
|
- WITH_SYSTEMD and WITHOUT_SYSTEMD: Just like the other WITH(OUT)_* options,
|
||||||
they are present on your system, for example if Botan is available but you
|
but for the Systemd library
|
||||||
do not want to use it, you can set the value of WITHOUT_BOTAN to 1, like
|
|
||||||
this:
|
|
||||||
|
|
||||||
% cmake . -DWITHOUT_BOTAN=1
|
Example:
|
||||||
|
|
||||||
This way, the binary will not be linked with libotan at all (and all
|
% cmake . -DCMAKE_BUILD_TYPE=release -DCMAKE_INSTALL_PREFIX \
|
||||||
connection will then be made in clear text).
|
-DWITH_BOTAN=1 -DWITHOUT_SYSTEMD=1
|
||||||
You can also decide not to link with systemd, like this:
|
|
||||||
|
|
||||||
% 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).
|
||||||
|
|
||||||
|
|
||||||
==============
|
==============
|
||||||
|
|||||||
@@ -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
|
# Use some standard module to handle the QUIETLY and REQUIRED arguments, and
|
||||||
# set BOTAN_FOUND to TRUE if these two variables are set.
|
# set BOTAN_FOUND to TRUE if these two variables are set.
|
||||||
include(FindPackageHandleStandardArgs)
|
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)
|
if(BOTAN_FOUND)
|
||||||
set(BOTAN_LIBRARY ${BOTAN_LIBRARIES})
|
set(BOTAN_LIBRARY ${BOTAN_LIBRARIES})
|
||||||
@@ -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)
|
||||||
@@ -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)
|
|
||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
#define SYSTEM_NAME "${CMAKE_SYSTEM}"
|
#define SYSTEM_NAME "${CMAKE_SYSTEM}"
|
||||||
#cmakedefine ICONV_SECOND_ARGUMENT_IS_CONST
|
#cmakedefine ICONV_SECOND_ARGUMENT_IS_CONST
|
||||||
#cmakedefine LIBIDN_FOUND
|
#cmakedefine LIBIDN_FOUND
|
||||||
#cmakedefine SYSTEMDDAEMON_FOUND
|
#cmakedefine SYSTEMD_FOUND
|
||||||
#cmakedefine POLLER ${POLLER}
|
#cmakedefine POLLER ${POLLER}
|
||||||
#cmakedefine BOTAN_FOUND
|
#cmakedefine BOTAN_FOUND
|
||||||
#cmakedefine BIBOUMI_VERSION "${BIBOUMI_VERSION}"
|
#cmakedefine BIBOUMI_VERSION "${BIBOUMI_VERSION}"
|
||||||
|
|||||||
Reference in New Issue
Block a user