1project(dbus) 2 3# we need to be up to date 4CMAKE_MINIMUM_REQUIRED(VERSION 2.4.4 FATAL_ERROR) 5if(COMMAND cmake_policy) 6 cmake_policy(SET CMP0003 NEW) 7endif(COMMAND cmake_policy) 8 9# where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked 10set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/modules") 11 12# detect version 13include(MacrosAutotools) 14autoversion(../configure.ac dbus) 15# used by file version info 16set (DBUS_PATCH_VERSION "0") 17 18include(Macros) 19TIMESTAMP(DBUS_BUILD_TIMESTAMP) 20 21########### basic vars ############### 22 23 24if (DBUSDIR) 25 set(DBUS_INSTALL_DIR "${DBUSDIR}") 26endif (DBUSDIR) 27if ($ENV{DBUSDIR}) 28 set(DBUS_INSTALL_DIR "$ENV{DBUSDIR}") 29endif ($ENV{DBUSDIR}) 30 31if (DBUS_INSTALL_DIR) 32 set(CMAKE_INSTALL_PREFIX "${DBUS_INSTALL_DIR}" CACHE PATH "install prefix" FORCE) 33else (DBUS_INSTALL_DIR) 34 set(DBUS_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}") 35endif (DBUS_INSTALL_DIR) 36 37# autotools style 38if (NOT DATAROOTDIR) 39 set (DATAROOTDIR share) 40endif() 41 42if (NOT DATADIR) 43 set (DATADIR ${DATAROOTDIR}) 44endif() 45 46if (NOT DOCDIR) 47 SET(DOCDIR ${DATAROOTDIR}/doc/dbus) 48endif() 49 50if (NOT DBUS_DATADIR) 51 SET(DBUS_DATADIR ${DATADIR}) 52endif() 53 54set(prefix ${DBUS_INSTALL_DIR}) 55set(exec_prefix ${prefix}) 56set(EXPANDED_LIBDIR ${DBUS_INSTALL_DIR}/lib) 57set(EXPANDED_INCLUDEDIR ${DBUS_INSTALL_DIR}/include) 58set(EXPANDED_BINDIR ${DBUS_INSTALL_DIR}/bin) 59set(EXPANDED_SYSCONFDIR ${DBUS_INSTALL_DIR}/etc) 60set(EXPANDED_DATADIR ${DBUS_INSTALL_DIR}/${DBUS_DATADIR}) 61set(DBUS_MACHINE_UUID_FILE ${DBUS_INSTALL_DIR}/lib/dbus/machine-id) 62set(DBUS_BINDIR ${EXPANDED_BINDIR}) 63set(DBUS_DAEMONDIR ${EXPANDED_BINDIR}) 64 65 66#enable building of shared library 67SET(BUILD_SHARED_LIBS ON) 68 69if (CYGWIN) 70 set (WIN32) 71endif (CYGWIN) 72 73# search for required packages 74if (WIN32) 75 # include local header first to avoid using old installed header 76 set (CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} ${CMAKE_SOURCE_DIR}/..) 77 find_package(LibIconv) 78 include(Win32Macros) 79 addExplorerWrapper(${CMAKE_PROJECT_NAME}) 80endif (WIN32) 81 82option (DBUS_USE_EXPAT "Use expat (== ON) or libxml2 (==OFF)" ON) 83 84if(NOT WIN32) 85 option (DBUS_ENABLE_ABSTRACT_SOCKETS "enable support for abstract sockets" ON) 86 set (CMAKE_THREAD_PREFER_PTHREAD ON) 87 include (FindThreads) 88endif(NOT WIN32) 89 90#AC_ARG_ENABLE(asserts, AS_HELP_STRING([--enable-asserts],[include assertion checks]),enable_asserts=$enableval,enable_asserts=$USE_MAINTAINER_MODE) 91option (DBUS_DISABLE_ASSERTS "Disable assertion checking" OFF) 92 93option (DBUS_ENABLE_STATS "enable bus daemon usage statistics" OFF) 94 95option (DBUS_ENABLE_STATS "enable bus daemon usage statistics" OFF) 96 97if (DBUS_USE_EXPAT) 98 find_package(LibExpat) 99else () 100 find_package(LibXml2) 101endif () 102find_package(X11) 103 104# analogous to AC_USE_SYSTEM_EXTENSIONS in configure.ac 105add_definitions(-D_POSIX_C_SOURCE=199309L -D_GNU_SOURCE) 106 107# do config checks 108INCLUDE(ConfigureChecks.cmake) 109 110# @TODO: how to remove last dir from ${CMAKE_SOURCE_DIR} ? 111SET(DBUS_SOURCE_DIR ${CMAKE_SOURCE_DIR}/..) 112 113# make some more macros available 114include (MacroLibrary) 115 116if(VCS) 117 set(DBUS_VERBOSE_C_S 1 CACHE STRING "verbose mode" FORCE) 118endif(VCS) 119 120if(WIN32) 121 set(CMAKE_DEBUG_POSTFIX "d") 122 if(MSVC) 123 # controll folders in msvc projects 124 include(ProjectSourceGroup) 125 if(NOT GROUP_CODE) 126 #set(GROUP_CODE split) #cmake default 127 set(GROUP_CODE flat) 128 endif(NOT GROUP_CODE) 129 ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE) 130 131 132 # Use the highest warning level 133 if (WALL) 134 set(WALL 1 CACHE STRING "all warnings" FORCE) 135 set(CMAKE_CXX_WARNING_LEVEL 4 CACHE STRING "warning level" FORCE) 136 137 if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]") 138 STRING(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") 139 else(CMAKE_CXX_FLAGS MATCHES "/W[0-4]") 140 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") 141 endif(CMAKE_CXX_FLAGS MATCHES "/W[0-4]") 142 143 if(CMAKE_C_FLAGS MATCHES "/W[0-4]") 144 STRING(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") 145 else(CMAKE_C_FLAGS MATCHES "/W[0-4]") 146 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4") 147 endif(CMAKE_C_FLAGS MATCHES "/W[0-4]") 148 else (WALL) 149 set(CMAKE_CXX_WARNING_LEVEL 3 CACHE STRING "warning level" FORCE) 150 endif (WALL) 151 152 SET(MSVC_W_ERROR " /we4028 /we4013 /we4133 /we4047 /we4031 /we4002 /we4003 /we4114") 153 SET(MSVC_W_DISABLE " /wd4127 /wd4090 /wd4101 /wd4244") 154 155 SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /FIconfig.h ${MSVC_W_ERROR} ${MSVC_W_DISABLE}") 156 SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /FIconfig.h ${MSVC_W_ERROR} ${MSVC_W_DISABLE}") 157 endif(MSVC) 158endif(WIN32) 159 160if (UNIX AND NOT DBUS_DISABLE_ASSERTS) 161 # required for backtrace 162 SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wl,--export-dynamic") 163 SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wl,--export-dynamic") 164 add_definitions(-DDBUS_BUILT_R_DYNAMIC) 165endif (UNIX AND NOT DBUS_DISABLE_ASSERTS) 166 167SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG") 168 169######################################################################### 170# Windows CE (>= 5.0.0) 171# 172# WinCE support now relies on the presence of platform files, found in cmake/modules/platform 173# Cmake 2.8.0 doesn't include WinCE platform files by default, but working ones can be found 174# on CMake's bugtracker : 175# http://public.kitware.com/Bug/view.php?id=7919 176# 177# for cmake 2.8.0 get the following patch only : 178# http://public.kitware.com/Bug/file_download.php?file_id=2944&type=bug 179# 180# after applying the patch, you can enable the WinCE build by specifying : 181# cmake [...] -DCMAKE_SYSTEM_NAME=WinCE -DCMAKE_SYSTEM_VERSION=X.XX 182# (where X.XX is your actual WinCE version, e.g. 5.02 for Windows Mobile 6) 183# 184# Note that you should have a proper cross-compilation environment set up prior to running 185# cmake, ie. the PATH, INCLUDE and LIB env vars pointing to your CE SDK/toolchain. 186# 187if(WINCE) 188 189MESSAGE("Building for WinCE (${CMAKE_SYSTEM_VERSION})") 190 191endif(WINCE) 192######################################################################### 193 194 195ENABLE_TESTING() 196 197######################################################################### 198# Disallow in-source build 199#macro_ensure_out_of_source_build("dbus requires an out of source build. Please create a separate build directory and run 'cmake path_to_dbus [options]' there.") 200 201# ... and warn in case of an earlier in-source build 202#set(generatedFileInSourceDir EXISTS ${dbus_SOURCE_DIR}/config.h) 203#if(${generatedFileInSourceDir}) 204# message(STATUS "config.h exists in your source directory.") 205#endif(${generatedFileInSourceDir}) 206######################################################################### 207 208if (WIN32 OR CYGWIN) 209 set (LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin) 210else (WIN32 OR CYGWIN) 211 set (LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib) 212endif (WIN32 OR CYGWIN) 213 214set (EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin) 215 216# for including config.h and for includes like <dir/foo.h> 217include_directories( ${CMAKE_SOURCE_DIR}/.. ${CMAKE_BINARY_DIR} ${CMAKE_INCLUDE_PATH} ) 218 219# linker search directories 220link_directories(${DBUS_LIB_DIR} ${LIBRARY_OUTPUT_PATH} ) 221include_directories( ${CMAKE_LIBRARY_PATH} ) 222 223set(DBUS_INCLUDES) 224 225ENABLE_TESTING() 226 227########### command line options ############### 228# TODO: take check from configure.in 229 230#AC_ARG_ENABLE(tests, AS_HELP_STRING([--enable-tests],[enable unit test code]),enable_tests=$enableval,enable_tests=$USE_MAINTAINER_MODE) 231option (DBUS_BUILD_TESTS "enable unit test code" ON) 232 233if(DBUS_BUILD_TESTS) 234 add_definitions(-DDBUS_BUILD_TESTS -DDBUS_ENABLE_EMBEDDED_TESTS) 235endif(DBUS_BUILD_TESTS) 236 237option (DBUS_USE_OUTPUT_DEBUG_STRING "enable win32 debug port for message output" OFF) 238if(DBUS_USE_OUTPUT_DEBUG_STRING) 239 add_definitions(-DDBUS_USE_OUTPUT_DEBUG_STRING) 240endif(DBUS_USE_OUTPUT_DEBUG_STRING) 241 242if(WIN32) 243 # win32 dbus service support - this support is not complete 244 option (DBUS_SERVICE "enable dbus service installer" OFF) 245endif(WIN32) 246 247#AC_ARG_ENABLE(ansi, AS_HELP_STRING([--enable-ansi],[enable -ansi -pedantic gcc flags]),enable_ansi=$enableval,enable_ansi=no) 248option (DBUS_ENABLE_ANSI "enable -ansi -pedantic gcc flags" OFF) 249if(DBUS_ENABLE_ANSI) 250 if(NOT MSVC) 251 add_definitions(-ansi -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE -pedantic) 252 else(NOT MSVC) 253 add_definitions(-Za -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE -W4) 254 endif(NOT MSVC) 255endif(DBUS_ENABLE_ANSI) 256 257#AC_ARG_ENABLE(verbose-mode, AS_HELP_STRING([--enable-verbose-mode],[support verbose debug mode]),enable_verbose_mode=$enableval,enable_verbose_mode=$USE_MAINTAINER_MODE) 258option (DBUS_ENABLE_VERBOSE_MODE "support verbose debug mode" ON) 259 260#AC_ARG_ENABLE(checks, AS_HELP_STRING([--enable-checks],[include sanity checks on public API]),enable_checks=$enableval,enable_checks=yes) 261option (DBUS_DISABLE_CHECKS "Disable public API sanity checking" OFF) 262 263if(NOT MSVC) 264 #AC_ARG_ENABLE(gcov, AS_HELP_STRING([--enable-gcov],[compile with coverage profiling instrumentation (gcc only)]),enable_gcov=$enableval,enable_gcov=no) 265 option (DBUS_GCOV_ENABLED "compile with coverage profiling instrumentation (gcc only)" OFF) 266 if(DBUS_GCOV_ENABLED) 267 add_definitions(-fprofile-arcs -ftest-coverage) 268 # FIXME!!!! 269 ## remove optimization 270 # CFLAGS=`echo "$CFLAGS" | sed -e 's/-O[0-9]*//g'` 271 endif(DBUS_GCOV_ENABLED) 272endif(NOT MSVC) 273 274#AC_ARG_ENABLE(abstract-sockets, AS_HELP_STRING([--enable-abstract-sockets],[use abstract socket namespace (linux only)]),enable_abstract_sockets=$enableval,enable_abstract_sockets=auto) 275# -> moved before include(ConfigureChecks.cmake) 276 277#AC_ARG_ENABLE(selinux, AS_HELP_STRING([--enable-selinux],[build with SELinux support]),enable_selinux=$enableval,enable_selinux=auto) 278#selinux missing 279 280#AC_ARG_ENABLE(dnotify, AS_HELP_STRING([--enable-dnotify],[build with dnotify support (linux only)]),enable_dnotify=$enableval,enable_dnotify=auto) 281if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") 282 option (DBUS_BUS_ENABLE_DNOTIFY_ON_LINUX "build with dnotify support (linux only)" ON) # add a check ! 283endif("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") 284 285#AC_ARG_ENABLE(kqueue, AS_HELP_STRING([--enable-kqueue],[build with kqueue support (FreeBSD only)]),enable_kqueue=$enableval,enable_kqueue=auto) 286#missing 287 288#AC_ARG_ENABLE(console-owner-file, AS_HELP_STRING([--enable-console-owner-file],[enable console owner file]),enable_console_owner_file=$enableval,enable_console_owner_file=auto) 289STRING(TOUPPER ${CMAKE_SYSTEM_NAME} sysname) 290if("${sysname}" MATCHES ".*SOLARIS.*") 291 option (HAVE_CONSOLE_OWNER_FILE "enable console owner file (solaris only)" ON) 292 if(HAVE_CONSOLE_OWNER_FILE) 293 set (DBUS_CONSOLE_OWNER_FILE "/dev/console" CACHE STRING "Directory to check for console ownerhip") 294 endif(HAVE_CONSOLE_OWNER_FILE) 295endif("${sysname}" MATCHES ".*SOLARIS.*") 296 297#AC_ARG_WITH(xml, AS_HELP_STRING([--with-xml=[libxml/expat]],[XML library to use])) 298if(NOT LIBXML2_FOUND AND NOT LIBEXPAT_FOUND) 299 message(FATAL "Neither expat nor libxml2 found!") 300endif(NOT LIBXML2_FOUND AND NOT LIBEXPAT_FOUND) 301 302if(DBUS_USE_EXPAT) 303 SET(XML_LIB "Expat") 304 SET(XML_LIBRARY ${LIBEXPAT_LIBRARIES}) 305 SET(XML_INCLUDE_DIR ${LIBEXPAT_INCLUDE_DIR}) 306else(DBUS_USE_EXPAT) 307 SET(XML_LIB "LibXML2") 308 SET(XML_LIBRARY ${LIBXML2_LIBRARIES}) 309 SET(XML_INCLUDE_DIR ${LIBXML2_INCLUDE_DIR}) 310endif(DBUS_USE_EXPAT) 311 312 313#AC_ARG_WITH(init-scripts, AS_HELP_STRING([--with-init-scripts=[redhat]],[Style of init scripts to install])) 314#AC_ARG_WITH(session-socket-dir, AS_HELP_STRING([--with-session-socket-dir=[dirname]],[Where to put sockets for the per-login-session message bus])) 315#AC_ARG_WITH(test-socket-dir, AS_HELP_STRING([--with-test-socket-dir=[dirname]],[Where to put sockets for make check])) 316#AC_ARG_WITH(system-pid-file, AS_HELP_STRING([--with-system-pid-file=[pidfile]],[PID file for systemwide daemon])) 317#AC_ARG_WITH(system-socket, AS_HELP_STRING([--with-system-socket=[filename]],[UNIX domain socket for systemwide daemon])) 318#AC_ARG_WITH(console-auth-dir, AS_HELP_STRING([--with-console-auth-dir=[dirname]],[directory to check for console ownerhip])) 319#AC_ARG_WITH(console-owner-file, AS_HELP_STRING([--with-console-owner-file=[filename]],[file whose owner determines current console owner])) 320#AC_ARG_WITH(dbus_user, AS_HELP_STRING([--with-dbus-user=<user>],[User for running the DBUS daemon (messagebus)])) 321#AC_ARG_WITH(dbus_daemondir, AS_HELP_STRING([--with-dbus-daemondir=[dirname]],[Directory for installing the DBUS daemon])) 322# all missing or hardcoded for now 323 324# 'hidden' ones 325set(atomic_int OFF) 326set(atomic_int486 OFF) 327if(CMAKE_COMPILER_IS_GNUCC AND NOT DBUS_ENABLE_ANSI) 328 FIND_PROGRAM(UNAME_EXECUTABLE 329 NAMES uname 330 PATHS /bin /usr/bin /usr/local/bin c:/Programme/MSys/bin d:/Programme/MSys/bin) 331 332 if(UNAME_EXECUTABLE) 333 EXECUTE_PROCESS(COMMAND ${UNAME_EXECUTABLE} "-m" 334 OUTPUT_VARIABLE UNAME_OUTPUT) 335 336 if("UNAME_OUTPUT" MATCHES "^.*i[0123]86.*$") 337 set(atomic_int ON) 338 else("UNAME_OUTPUT" MATCHES "^.*i[0123]86.*$") 339 if("UNAME_OUTPUT" MATCHES "^.*i?86.*$") 340 set(atomic_int ON) 341 set(atomic_int_486 ON) 342 endif("UNAME_OUTPUT" MATCHES "^.*i?86.*$") 343 endif("UNAME_OUTPUT" MATCHES "^.*i[0123]86.*$") 344 endif(UNAME_EXECUTABLE) 345endif(CMAKE_COMPILER_IS_GNUCC AND NOT DBUS_ENABLE_ANSI) 346 347set (DBUS_HAVE_ATOMIC_INT ${atomic_int} CACHE STRING "Some atomic integer implementation present") 348set (DBUS_USE_ATOMIC_INT_486 ${atomic_int_486} CACHE STRING "Use atomic integer implementation for 486") 349 350if(X11_FOUND) 351 option (DBUS_BUILD_X11 "Build with X11 autolaunch support " ON) 352endif(X11_FOUND) 353 354# test binary names 355if (WIN32) 356 # Automake calls this EXEEXT, and CMake doesn't have a standard name 357 # for it; follow Automake's naming convention so we can share .in files 358 set (EXEEXT ".exe") 359endif(WIN32) 360 361if (MSVC_IDE) 362 if(CMAKE_BUILD_TYPE MATCHES Debug) 363 set(IDE_BIN /Debug ) 364 message(STATUS) 365 message(STATUS "Visual Studio: test programs will only work with 'Debug' configuration!") 366 message(STATUS "To run tests with 'Release' configuration use -DCMAKE_BUILD_TYPE=Release") 367 message(STATUS "Add '..\\..\\test\\data' to the command line option of the test programs") 368 message(STATUS) 369 else(CMAKE_BUILD_TYPE MATCHES Debug) 370 set(IDE_BIN /Release) 371 message(STATUS) 372 message(STATUS "Visual Studio: test programs will only work with 'Release' configuration!") 373 message(STATUS "To run tests with 'Debug' configuration use -DCMAKE_BUILD_TYPE=Debug") 374 message(STATUS "Add '..\\..\\test\\data' to the command line option of the test programs") 375 message(STATUS) 376 endif(CMAKE_BUILD_TYPE MATCHES Debug) 377 set (TEST_PATH_FORCE FORCE) 378 FILE(REMOVE ${CMAKE_BINARY_DIR}/data/dbus-1/services) 379endif (MSVC_IDE) 380 381#### Find socket directories 382 if (NOT $ENV{TMPDIR} STREQUAL "") 383 set (DBUS_SESSION_SOCKET_DIR $ENV{TMPDIR}) 384 else (NOT $ENV{TMPDIR} STREQUAL "") 385 if (NOT $ENV{TEMP} STREQUAL "") 386 set (DBUS_SESSION_SOCKET_DIR $ENV{TEMP}) 387 else (NOT $ENV{TEMP} STREQUAL "") 388 if (NOT $ENV{TMP} STREQUAL "") 389 set (DBUS_SESSION_SOCKET_DIR $ENV{TMP}) 390 else (NOT $ENV{TMP} STREQUAL "") 391 if (WIN32) 392 #Should never happen, both TMP and TEMP seem always set on Windows 393 message(FATAL "Could not determine a usable temporary directory") 394 else(WIN32) 395 set (DBUS_SESSION_SOCKET_DIR /tmp) 396 endif(WIN32) 397 endif (NOT $ENV{TMP} STREQUAL "") 398 endif (NOT $ENV{TEMP} STREQUAL "") 399 endif (NOT $ENV{TMPDIR} STREQUAL "") 400 401#AC_ARG_WITH(test-socket-dir, AS_HELP_STRING([--with-test-socket-dir=[dirname]],[Where to put sockets for make check])) 402 403#AC_ARG_WITH(system-pid-file, AS_HELP_STRING([--with-system-pid-file=[pidfile]],[PID file for systemwide daemon])) 404 405#if ! test -z "$with_system_pid_file"; then 406# DBUS_SYSTEM_PID_FILE=$with_system_pid_file 407#elif test x$operating_system = xredhat ; then 408# DBUS_SYSTEM_PID_FILE=${EXPANDED_LOCALSTATEDIR}/run/messagebus.pid 409#else 410# DBUS_SYSTEM_PID_FILE=${EXPANDED_LOCALSTATEDIR}/run/dbus/pid 411#fi 412# TODO: fix redhet 413if (WIN32) 414 # bus-test expects a non empty string 415 set (DBUS_SYSTEM_PID_FILE "/dbus-pid") 416else (WIN32) 417 set (DBUS_SYSTEM_PID_FILE ${EXPANDED_LOCALSTATEDIR}/run/dbus/pid) 418endif (WIN32) 419 420#AC_ARG_WITH(system-socket, AS_HELP_STRING([--with-system-socket=[filename]],[UNIX domain socket for systemwide daemon])) 421 422#AC_ARG_WITH(console-auth-dir, AS_HELP_STRING([--with-console-auth-dir=[dirname]],[directory to check for console ownerhip])) 423 424if (WIN32) 425 set (DBUS_CONSOLE_AUTH_DIR "") 426else (WIN32) 427 set (DBUS_CONSOLE_AUTH_DIR "/var/run/console/") 428endif (WIN32) 429 430#AC_ARG_WITH(dbus_user, AS_HELP_STRING([--with-dbus-user=<user>],[User for running the DBUS daemon (messagebus)])) 431 432set (DBUS_USER ) 433 434 435if (WIN32) 436 set (DBUS_SYSTEM_BUS_DEFAULT_ADDRESS "nonce-tcp:" CACHE STRING "system bus default address") 437 set (DBUS_SESSION_BUS_DEFAULT_ADDRESS "nonce-tcp:" CACHE STRING "session bus default address") 438 439 set (DBUS_SYSTEM_CONFIG_FILE "etc/dbus-1/system.conf") 440 set (DBUS_SESSION_CONFIG_FILE "etc/dbus-1/session.conf") 441 # bus-test expects a non empty string 442 set (DBUS_USER "Administrator") 443else (WIN32) 444 set (DBUS_SYSTEM_BUS_DEFAULT_ADDRESS "unix:tmpdir=" CACHE STRING "system bus default address") 445 set (DBUS_SESSION_BUS_DEFAULT_ADDRESS "unix:path=${DBUS_SESSION_SOCKET_DIR}" CACHE STRING "session bus default address") 446 set (sysconfdir "") 447 set (configdir ${sysconfdir}/dbus-1 ) 448 set (DBUS_SYSTEM_CONFIG_FILE ${configdir}/system.conf) 449 set (DBUS_SESSION_CONFIG_FILE ${configdir}/session.conf) 450 set (DBUS_USER "root") 451endif (WIN32) 452 453set (DBUS_DAEMON_NAME "dbus-daemon" CACHE STRING "The name of the dbus daemon executable") 454 455########### create config.h ############### 456 457#include(ConfigureChecks.cmake) 458 459# better use flags for gcc 460if (MINGW) 461 set (HAVE_GNUC_VARARGS 1) 462endif(MINGW) 463 464# compiler definitions 465add_definitions(-DHAVE_CONFIG_H=1) 466add_definitions(${DBUS_BUS_CFLAGS}) 467 468 469if (DBUS_BUILD_TESTS) 470 # set variables used for the .in files (substituted by configure_file) in test/data: 471 set(DBUS_TEST_EXEC ${EXECUTABLE_OUTPUT_PATH}${IDE_BIN}) 472 set(DBUS_TEST_DATA ${CMAKE_BINARY_DIR}/test/data) 473 set(TEST_SOCKET_DIR ${DBUS_SESSION_SOCKET_DIR} ) 474 set(TEST_LAUNCH_HELPER_BINARY ${EXECUTABLE_OUTPUT_PATH}/dbus-daemon-launch-helper-test) 475 if (UNIX) 476 set (TEST_LISTEN "unix:tmpdir=${TEST_SOCKET_DIR}") 477 endif (UNIX) 478 if (WIN32) 479 set (TEST_LISTEN "tcp:host=localhost") 480 endif (WIN32) 481endif (DBUS_BUILD_TESTS) 482 483set(DBUS_LIBRARIES dbus-1) 484set(DBUS_INTERNAL_LIBRARIES dbus-internal) 485 486# settings for building and using static internal lib 487# important note: DBUS_INTERNAL_xxxxx_DEFINITIONS must *not* be set when building dbus-1 library 488set (DBUS_INTERNAL_ADD_LIBRARY_OPTIONS STATIC) 489set (DBUS_INTERNAL_LIBRARY_DEFINITIONS "-DDBUS_STATIC_BUILD") 490set (DBUS_INTERNAL_CLIENT_DEFINITIONS "-DDBUS_STATIC_BUILD") 491 492configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h ) 493 494if (WIN32) 495configure_file(${CMAKE_CURRENT_SOURCE_DIR}/dbus-env.bat.cmake ${CMAKE_BINARY_DIR}/bin/dbus-env.bat ) 496install_files(/bin FILES ${CMAKE_BINARY_DIR}/bin/dbus-env.bat) 497endif() 498 499add_definitions(-DHAVE_CONFIG_H=1) 500 501########### subdirs ############### 502 503add_subdirectory( dbus ) 504add_subdirectory( bus ) 505if (DBUS_BUILD_TESTS) 506 add_subdirectory( test ) 507endif (DBUS_BUILD_TESTS) 508add_subdirectory( tools ) 509add_subdirectory( doc ) 510 511 512OPTION(DBUS_INSTALL_SYSTEM_LIBS "install required system libraries" OFF) 513MESSAGE(" ") 514MESSAGE("set -DDBUS_INSTALL_SYSTEM_LIBS=1 to install runtime libraries too") 515MESSAGE("set DBUSDIR (environment or cmake option) to overwrite the default install directory ") 516MESSAGE(" ") 517MESSAGE(" ") 518GET_FILENAME_COMPONENT(C_COMPILER ${CMAKE_C_COMPILER} NAME) 519GET_FILENAME_COMPONENT(CXX_COMPILER ${CMAKE_CXX_COMPILER} NAME) 520 521message(" D-BUS ${DBUS_VERSION} ") 522message(" =========== ") 523message(" ") 524message(" install prefix: ${prefix} ") 525message(" install exec_prefix: ${exec_prefix} ") 526message(" install libdir: ${EXPANDED_LIBDIR} ") 527message(" install bindir: ${EXPANDED_BINDIR} ") 528message(" install sysconfdir: ${EXPANDED_SYSCONFDIR} ") 529#message(" install localstatedir: ${EXPANDED_LOCALSTATEDIR} ") 530message(" install datadir: ${EXPANDED_DATADIR} ") 531message(" source code location: ${DBUS_SOURCE_DIR} ") 532message(" build dir: ${CMAKE_BINARY_DIR} ") 533message(" c compiler: ${C_COMPILER} ") 534message(" cflags: ${CMAKE_C_FLAGS} ") 535message(" cflags debug: ${CMAKE_C_FLAGS_DEBUG} ") 536message(" cflags release: ${CMAKE_C_FLAGS_RELEASE} ") 537message(" cxx compiler: ${CXX_COMPILER} ") 538message(" cxxflags: ${CMAKE_CXX_FLAGS} ") 539message(" cxxflags debug: ${CMAKE_CXX_FLAGS_DEBUG} ") 540message(" cxxflags release: ${CMAKE_CXX_FLAGS_RELEASE} ") 541message(" 64-bit int: ${DBUS_INT64_TYPE} ") 542message(" 32-bit int: ${DBUS_INT32_TYPE} ") 543message(" 16-bit int: ${DBUS_INT16_TYPE} ") 544message(" Doxygen: ${DOXYGEN} ") 545message(" Docbook Generator: ${DOCBOOK_GENERATOR_NAME} ") 546 547 548#message(" Maintainer mode: ${USE_MAINTAINER_MODE} ") 549message(" gcc coverage profiling: ${DBUS_GCOV_ENABLED} ") 550message(" Building unit tests: ${DBUS_BUILD_TESTS} ") 551message(" Building verbose mode: ${DBUS_ENABLE_VERBOSE_MODE} ") 552message(" Building w/o assertions: ${DBUS_DISABLE_ASSERTS} ") 553message(" Building w/o checks: ${DBUS_DISABLE_CHECKS} ") 554message(" Building bus stats API: ${DBUS_ENABLE_STATS} ") 555message(" installing system libs: ${DBUS_INSTALL_SYSTEM_LIBS} ") 556#message(" Building SELinux support: ${have_selinux} ") 557#message(" Building dnotify support: ${have_dnotify} ") 558message(" Building Doxygen docs: ${DBUS_ENABLE_DOXYGEN_DOCS} ") 559message(" Building XML docs: ${DBUS_ENABLE_XML_DOCS} ") 560#message(" Gettext libs (empty OK): ${INTLLIBS} ") 561message(" Using XML parser: ${XML_LIB} ") 562message(" Daemon executable name: ${DBUS_DAEMON_NAME}") 563if (WIN32) 564message(" System bus address: ${DBUS_SYSTEM_BUS_DEFAULT_ADDRESS} ") 565message(" Session bus address: ${DBUS_SESSION_BUS_DEFAULT_ADDRESS} ") 566else (WIN32) 567#message(" Init scripts style: ${with_init_scripts} ") 568#message(" Abstract socket names: ${have_abstract_sockets} ") 569message(" System bus socket: ${DBUS_SYSTEM_SOCKET} ") 570message(" System bus address: ${DBUS_SYSTEM_BUS_DEFAULT_ADDRESS} ") 571message(" System bus PID file: ${DBUS_SYSTEM_PID_FILE} ") 572message(" Session bus socket dir: ${DBUS_SESSION_SOCKET_DIR} ") 573message(" Console auth dir: ${DBUS_CONSOLE_AUTH_DIR} ") 574message(" System bus user: ${DBUS_USER} ") 575message(" 'make check' socket dir: ${TEST_SOCKET_DIR} ") 576endif (WIN32) 577message(" Test listen address: ${TEST_LISTEN} ") 578if (MSVC) 579message(" build timestamp: ${DBUS_BUILD_TIMESTAMP} ") 580endif (MSVC) 581 582MESSAGE(" ") 583if (DBUS_BUILD_TESTS) 584 message("NOTE: building with unit tests increases the size of the installed library and renders it insecure.") 585endif(DBUS_BUILD_TESTS) 586 587if (DBUS_BUILD_TESTS AND DBUS_DISABLE_ASSERTS) 588 message("NOTE: building with unit tests but without assertions means tests may not properly report failures (this configuration is only useful when doing something like profiling the tests)") 589endif(DBUS_BUILD_TESTS AND DBUS_DISABLE_ASSERTS) 590 591if (DBUS_GCOV_ENABLED) 592 message("NOTE: building with coverage profiling is definitely for developers only.") 593endif(DBUS_GCOV_ENABLED) 594 595if (DBUS_ENABLE_VERBOSE_MODE) 596 message("NOTE: building with verbose mode increases library size, may slightly increase security risk, and decreases performance.") 597endif(DBUS_ENABLE_VERBOSE_MODE) 598 599if(NOT DBUS_DISABLE_ASSERTS) 600 message("NOTE: building with assertions increases library size and decreases performance.") 601endif(NOT DBUS_DISABLE_ASSERTS) 602 603if (DBUS_DISABLE_CHECKS) 604 message("NOTE: building without checks for arguments passed to public API makes it harder to debug apps using D-BUS, but will slightly decrease D-BUS library size and _very_ slightly improve performance.") 605endif(DBUS_DISABLE_CHECKS) 606MESSAGE(" ") 607 608INCLUDE(modules/CPackInstallConfig.cmake) 609 610add_custom_target(help-options 611 cmake -LH 612 WORKING_DIRECTORY ${CMAKE_BINARY_DIR} 613) 614