| 1 |
cmake_minimum_required(VERSION 2.2) |
| 2 |
|
| 3 |
if(COMMAND cmake_policy) |
| 4 |
cmake_policy(SET CMP0003 NEW) |
| 5 |
cmake_policy(SET CMP0002 OLD) |
| 6 |
endif(COMMAND cmake_policy) |
| 7 |
|
| 8 |
|
| 9 |
INCLUDE(cmake/initng_module.cmake) |
| 10 |
|
| 11 |
PROJECT(initng C) |
| 12 |
|
| 13 |
SET(VERSION "0.7.0-svn" CACHE STRING "Version number of the project") |
| 14 |
SET(VERSION_NAME "Bleeding Edge" CACHE STRING "Version string") |
| 15 |
|
| 16 |
SET(API_VERSION 0.7) |
| 17 |
|
| 18 |
SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) |
| 19 |
INCLUDE(CheckIncludeFiles) |
| 20 |
INCLUDE(CheckLibraryExists) |
| 21 |
INCLUDE(FindPkgConfig) |
| 22 |
INCLUDE(CheckSymbolExists) |
| 23 |
|
| 24 |
ADD_DEFINITIONS(-DHAVE_CONFIG_H) |
| 25 |
# Turn on warnings |
| 26 |
SET(CMAKE_C_FLAGS "-std=c99 -Wall -O2 -D_XOPEN_SOURCE=600 ${CMAKE_C_FLAGS}") |
| 27 |
SET(MOD_CFLAGS "${CMAKE_C_FLAGS}") |
| 28 |
SET(MOD_LDFLAGS "${CMAKE_LINK_FLAGS}") |
| 29 |
|
| 30 |
INCLUDE_DIRECTORIES( |
| 31 |
${CMAKE_SOURCE_DIR}/include |
| 32 |
${CMAKE_BINARY_DIR} |
| 33 |
) |
| 34 |
|
| 35 |
# Colorize output, needs CMake > 2.3.4 |
| 36 |
OPTION(CMAKE_COLOR_MAKEFILE "Generate Makefiles with colored output" ON) |
| 37 |
|
| 38 |
SET(CMAKE_INSTALL_PREFIX "" CACHE INTERNAL "") |
| 39 |
SET(INCLUDE_INSTALL_DIR /usr/include/libinitng-${API_VERSION} CACHE STRING |
| 40 |
"Install location for header files.") |
| 41 |
SET(SBIN_INSTALL_DIR /sbin CACHE STRING "Install location for system binaries.") |
| 42 |
SET(BIN_INSTALL_DIR /bin CACHE STRING "Install location for binaries.") |
| 43 |
SET(LIB_INSTALL_DIR /lib CACHE STRING "Install location for libraries.") |
| 44 |
SET(SYSCONF_INSTALL_DIR /etc CACHE STRING "Install location for configuration files.") |
| 45 |
SET(DATA_INSTALL_DIR /usr/share CACHE STRING "Install location for data files.") |
| 46 |
SET(MAN_INSTALL_DIR ${DATA_INSTALL_DIR}/man CACHE STRING "Install location for manpages.") |
| 47 |
SET(DOC_INSTALL_DIR ${DATA_INSTALL_DIR}/doc CACHE STRING "Install location for documentation.") |
| 48 |
SET(PKGCONFIG_INSTALL_DIR /usr/lib/pkgconfig CACHE STRING "Install location for pkg-config files.") |
| 49 |
MARK_AS_ADVANCED(INCLUDE_INSTALL_DIR) |
| 50 |
MARK_AS_ADVANCED(SBIN_INSTALL_DIR) |
| 51 |
MARK_AS_ADVANCED(BIN_INSTALL_DIR) |
| 52 |
MARK_AS_ADVANCED(LIB_INSTALL_DIR) |
| 53 |
MARK_AS_ADVANCED(SYSCONF_INSTALL_DIR) |
| 54 |
MARK_AS_ADVANCED(DATA_INSTALL_DIR) |
| 55 |
MARK_AS_ADVANCED(MAN_INSTALL_DIR) |
| 56 |
MARK_AS_ADVANCED(DOC_INSTALL_DIR) |
| 57 |
MARK_AS_ADVANCED(PKGCONFIG_INSTALL_DIR) |
| 58 |
|
| 59 |
SET(RUNLEVEL_DEFAULT runlevel/default CACHE STRING "Default runlevel.") |
| 60 |
MARK_AS_ADVANCED(RUNLEVEL_DEFAULT) |
| 61 |
|
| 62 |
pkg_search_module(DBUS dbus-1) |
| 63 |
SET(DBUS_DEFINITIONS ${DBUS_CFLAGS}) |
| 64 |
FIND_LIBRARY(DBUS_LIBS NAMES dbus-1 PATHS ${DBUS_LINK_DIR} /usr/lib /usr/local/lib) |
| 65 |
|
| 66 |
SUBDIRS( |
| 67 |
doc |
| 68 |
extras |
| 69 |
core |
| 70 |
modules |
| 71 |
tools |
| 72 |
preinit |
| 73 |
include |
| 74 |
) |
| 75 |
|
| 76 |
OPTION(BUILD_ALSO "Build also module" ON) |
| 77 |
OPTION(BUILD_SERVICE_FILE "Build service_file module" ON ) |
| 78 |
OPTION(BUILD_CHDIR "Build chdir module" ON) |
| 79 |
OPTION(BUILD_CHROOT "Build chroot module" ON) |
| 80 |
OPTION(BUILD_CONFLICT "Build conflict module" ON) |
| 81 |
OPTION(BUILD_CPOUT "Build cpout module" ON) |
| 82 |
OPTION(BUILD_CRITICAL "Build critical module" ON) |
| 83 |
OPTION(BUILD_CTRLALTDEL "Build ctrlaltdel module" ON) |
| 84 |
OPTION(BUILD_DAEMON_CLEAN "Build daemon_clean module" OFF) |
| 85 |
OPTION(BUILD_DBUS_EVENT "Build dbus_event module" OFF) |
| 86 |
OPTION(BUILD_DEBUG_COMMANDS "Build debug_commands module" ON) |
| 87 |
OPTION(BUILD_TASK "Build task service type module" ON) |
| 88 |
OPTION(BUILD_FMON "Build fmon module" ON) |
| 89 |
OPTION(BUILD_FSTAT "Build fstat module" ON) |
| 90 |
OPTION(BUILD_HISTORY "Build history module" OFF) |
| 91 |
OPTION(BUILD_INITCTL "Build initctl module" ON) |
| 92 |
OPTION(BUILD_INTERACTIVE "Build interactive module" ON) |
| 93 |
OPTION(BUILD_LAST "Build last module" ON) |
| 94 |
OPTION(BUILD_LIMIT "Build limit module" ON) |
| 95 |
OPTION(BUILD_LOGFILE "Build logfile module" ON) |
| 96 |
OPTION(BUILD_LOCKFILE "Build lockfile module" ON) |
| 97 |
OPTION(BUILD_NETDEV "Build netdev module" ON) |
| 98 |
OPTION(BUILD_IDLEPROBE "Build idleprobe module" ON) |
| 99 |
OPTION(BUILD_NGC4 "Build ngc4 module" ON) |
| 100 |
OPTION(BUILD_NGCS "Build ngcs module" OFF) |
| 101 |
OPTION(BUILD_NGE "Build nge module" ON) |
| 102 |
OPTION(BUILD_PAUSE "Build pause module" ON) |
| 103 |
OPTION(BUILD_PROVIDE "Build provide module" ON) |
| 104 |
OPTION(BUILD_RELOAD "Build reload module" ON) |
| 105 |
OPTION(BUILD_RENICE "Build renice module" ON) |
| 106 |
OPTION(BUILD_SIMPLE_LAUNCHER "Build simple_launcher module" ON) |
| 107 |
OPTION(BUILD_STCMD "Build stcmd module" ON) |
| 108 |
OPTION(BUILD_STDOUT "Build stdout module" ON) |
| 109 |
OPTION(BUILD_SUID "Build suid module" ON) |
| 110 |
OPTION(BUILD_SYNCRON "Build syncron module" ON) |
| 111 |
OPTION(BUILD_SYSLOG "Build syslog module" ON) |
| 112 |
OPTION(BUILD_SYSREQ "Build sysreq module" ON) |
| 113 |
OPTION(BUILD_UNNEEDED "Build unneeded module" ON) |
| 114 |
OPTION(BUILD_USPLASH "Build initng with usplash support" OFF) |
| 115 |
|
| 116 |
OPTION(SELINUX_SUPPORT "SELinux support" OFF) |
| 117 |
OPTION(INSTALL_AS_INIT "Install initng as complete replacement for SysVInit" OFF) |
| 118 |
OPTION(DEBUG "Build with developer tools, turns on additional warnings and -Werror" OFF) |
| 119 |
OPTION(CHECK_RO "Test if the / is mounted read-only before reboot/halt" ON) |
| 120 |
OPTION(FORCE_NOCOLOR "Prevent cpout module from using colors" OFF) |
| 121 |
OPTION(FORCE_POSIX_IFILES "Force POSIX compliance on ifiles" OFF) |
| 122 |
OPTION(COUNT_ME "Send a simple http reqest to initng server, with initng version data to count initng users out there" OFF) |
| 123 |
|
| 124 |
IF(SELINUX_SUPPORT) |
| 125 |
CHECK_INCLUDE_FILES(selinux/selinux.h HAVE_SELINUX_H) |
| 126 |
CHECK_LIBRARY_EXISTS(selinux selinux_init_load_policy "" HAVE_SELINUX) |
| 127 |
IF(HAVE_SELINUX_H AND HAVE_SELINUX) |
| 128 |
ADD_DEFINITIONS(-DSELINUX) |
| 129 |
SET(SELINUX_LIBS selinux) |
| 130 |
ELSE(HAVE_SELINUX_H AND HAVE_SELINUX) |
| 131 |
MESSAGE(SEND_ERROR "Could not find selinux development files. Install the selinux devel package.") |
| 132 |
ENDIF(HAVE_SELINUX_H AND HAVE_SELINUX) |
| 133 |
ENDIF(SELINUX_SUPPORT) |
| 134 |
|
| 135 |
IF(DEBUG) |
| 136 |
CHECK_INCLUDE_FILES(google/coredumper.h HAVE_COREDUMPER_H) |
| 137 |
CHECK_LIBRARY_EXISTS(coredumper WriteCoreDump "" HAVE_COREDUMPER) |
| 138 |
|
| 139 |
IF(HAVE_COREDUMPER AND HAVE_COREDUMPER_H) |
| 140 |
ADD_DEFINITIONS(-DHAVE_COREDUMPER) |
| 141 |
SET(COREDUMPER_LIBS coredumper) |
| 142 |
ENDIF(HAVE_COREDUMPER AND HAVE_COREDUMPER_H) |
| 143 |
|
| 144 |
SET(CMAKE_C_FLAGS "-DDEBUG -g -Werror -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wimplicit -Wredundant-decls -Wnested-externs -Wwrite-strings -Wsign-compare -Winline -Wswitch -Wreturn-type -Wparentheses -Wmissing-braces -Wformat -Wformat-nonliteral -Wformat-security -Wsequence-point -Wundef -Wunused -Wcomment ${CMAKE_C_FLAGS}") |
| 145 |
ENDIF(DEBUG) |
| 146 |
|
| 147 |
IF(COUNT_ME) |
| 148 |
EXEC_PROGRAM(${CMAKE_CURRENT_SOURCE_DIR}/count_me.sh) |
| 149 |
ENDIF(COUNT_ME) |
| 150 |
|
| 151 |
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/initng.pc.in |
| 152 |
${CMAKE_CURRENT_BINARY_DIR}/initng-${API_VERSION}.pc |
| 153 |
@ONLY) |
| 154 |
INSTALL_FILES(${PKGCONFIG_INSTALL_DIR} FILES initng-${API_VERSION}.pc) |
| 155 |
|
| 156 |
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/initng-paths.h.in |
| 157 |
${CMAKE_CURRENT_BINARY_DIR}/initng-paths.h @ONLY) |
| 158 |
INSTALL_FILES(${INCLUDE_INSTALL_DIR} FILES initng-paths.h) |
| 159 |
|
| 160 |
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in |
| 161 |
${CMAKE_CURRENT_BINARY_DIR}/config.h @ONLY) |
| 162 |
CONFIGURE_FILE( |
| 163 |
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" |
| 164 |
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" |
| 165 |
IMMEDIATE @ONLY) |
| 166 |
|
| 167 |
ADD_CUSTOM_TARGET(uninstall |
| 168 |
"${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") |