1 project(dbus) 2 3 # we need to be up to date 4 CMAKE_MINIMUM_REQUIRED(VERSION 2.4.4 FATAL_ERROR) 5 if(COMMAND cmake_policy) 6 cmake_policy(SET CMP0003 NEW) 7 endif(COMMAND cmake_policy) 8 9 # where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked 10 set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/modules") 11 12 # detect version 13 include(MacrosAutotools) 14 autoversion(../configure.ac dbus) 15 # used by file version info 16 set (DBUS_PATCH_VERSION "0") 17 18 include(Macros) 19 TIMESTAMP(DBUS_BUILD_TIMESTAMP) 20 21 ########### basic vars ############### 22 23 24 if (DBUSDIR) 25 set(DBUS_INSTALL_DIR "${DBUSDIR}") 26 endif (DBUSDIR) 27 if ($ENV{DBUSDIR}) 28 set(DBUS_INSTALL_DIR "$ENV{DBUSDIR}") 29 endif ($ENV{DBUSDIR}) 30 31 if (DBUS_INSTALL_DIR) 32 set(CMAKE_INSTALL_PREFIX "${DBUS_INSTALL_DIR}" CACHE PATH "install prefix" FORCE) 33 else (DBUS_INSTALL_DIR) 34 set(DBUS_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}") 35 endif (DBUS_INSTALL_DIR) 36 37 # autotools style 38 if (NOT DATAROOTDIR) 39 set (DATAROOTDIR share) 40 endif() 41 42 if (NOT DATADIR) 43 set (DATADIR ${DATAROOTDIR}) 44 endif() 45 46 if (NOT DOCDIR) 47 SET(DOCDIR ${DATAROOTDIR}/doc/dbus) 48 endif() 49 50 if (NOT DBUS_DATADIR) 51 SET(DBUS_DATADIR ${DATADIR}) 52 endif() 53 54 set(prefix ${DBUS_INSTALL_DIR}) 55 set(exec_prefix ${prefix}) 56 set(EXPANDED_LIBDIR ${DBUS_INSTALL_DIR}/lib) 57 set(EXPANDED_INCLUDEDIR ${DBUS_INSTALL_DIR}/include) 58 set(EXPANDED_BINDIR ${DBUS_INSTALL_DIR}/bin) 59 set(EXPANDED_SYSCONFDIR ${DBUS_INSTALL_DIR}/etc) 60 set(EXPANDED_DATADIR ${DBUS_INSTALL_DIR}/${DBUS_DATADIR}) 61 set(DBUS_MACHINE_UUID_FILE ${DBUS_INSTALL_DIR}/lib/dbus/machine-id) 62 set(DBUS_BINDIR ${EXPANDED_BINDIR}) 63 set(DBUS_DAEMONDIR ${EXPANDED_BINDIR}) 64 65 66 #enable building of shared library 67 SET(BUILD_SHARED_LIBS ON) 68 69 if (CYGWIN) 70 set (WIN32) 71 endif (CYGWIN) 72 73 # search for required packages 74 if (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}) 80 endif (WIN32) 81 82 option (DBUS_USE_EXPAT "Use expat (== ON) or libxml2 (==OFF)" ON) 83 84 if(NOT WIN32) 85 option (DBUS_ENABLE_ABSTRACT_SOCKETS "enable support for abstract sockets" ON) 86 set (CMAKE_THREAD_PREFER_PTHREAD ON) 87 include (FindThreads) 88 endif(NOT WIN32) 89 90 #AC_ARG_ENABLE(asserts, AS_HELP_STRING([--enable-asserts],[include assertion checks]),enable_asserts=$enableval,enable_asserts=$USE_MAINTAINER_MODE) 91 option (DBUS_DISABLE_ASSERTS "Disable assertion checking" OFF) 92 93 option (DBUS_ENABLE_STATS "enable bus daemon usage statistics" OFF) 94 95 option (DBUS_ENABLE_STATS "enable bus daemon usage statistics" OFF) 96 97 if (DBUS_USE_EXPAT) 98 find_package(LibExpat) 99 else () 100 find_package(LibXml2) 101 endif () 102 find_package(X11) 103 104 # analogous to AC_USE_SYSTEM_EXTENSIONS in configure.ac 105 add_definitions(-D_POSIX_C_SOURCE=199309L -D_GNU_SOURCE) 106 107 # do config checks 108 INCLUDE(ConfigureChecks.cmake) 109 110 # @TODO: how to remove last dir from ${CMAKE_SOURCE_DIR} ? 111 SET(DBUS_SOURCE_DIR ${CMAKE_SOURCE_DIR}/..) 112 113 # make some more macros available 114 include (MacroLibrary) 115 116 if(VCS) 117 set(DBUS_VERBOSE_C_S 1 CACHE STRING "verbose mode" FORCE) 118 endif(VCS) 119 120 if(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) 158 endif(WIN32) 159 160 if (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) 165 endif (UNIX AND NOT DBUS_DISABLE_ASSERTS) 166 167 SET(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 # 187 if(WINCE) 188 189 MESSAGE("Building for WinCE (${CMAKE_SYSTEM_VERSION})") 190 191 endif(WINCE) 192 ######################################################################### 193 194 195 ENABLE_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 208 if (WIN32 OR CYGWIN) 209 set (LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin) 210 else (WIN32 OR CYGWIN) 211 set (LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib) 212 endif (WIN32 OR CYGWIN) 213 214 set (EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin) 215 216 # for including config.h and for includes like <dir/foo.h> 217 include_directories( ${CMAKE_SOURCE_DIR}/.. ${CMAKE_BINARY_DIR} ${CMAKE_INCLUDE_PATH} ) 218 219 # linker search directories 220 link_directories(${DBUS_LIB_DIR} ${LIBRARY_OUTPUT_PATH} ) 221 include_directories( ${CMAKE_LIBRARY_PATH} ) 222 223 set(DBUS_INCLUDES) 224 225 ENABLE_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) 231 option (DBUS_BUILD_TESTS "enable unit test code" ON) 232 233 if(DBUS_BUILD_TESTS) 234 add_definitions(-DDBUS_BUILD_TESTS -DDBUS_ENABLE_EMBEDDED_TESTS) 235 endif(DBUS_BUILD_TESTS) 236 237 option (DBUS_USE_OUTPUT_DEBUG_STRING "enable win32 debug port for message output" OFF) 238 if(DBUS_USE_OUTPUT_DEBUG_STRING) 239 add_definitions(-DDBUS_USE_OUTPUT_DEBUG_STRING) 240 endif(DBUS_USE_OUTPUT_DEBUG_STRING) 241 242 if(WIN32) 243 # win32 dbus service support - this support is not complete 244 option (DBUS_SERVICE "enable dbus service installer" OFF) 245 endif(WIN32) 246 247 #AC_ARG_ENABLE(ansi, AS_HELP_STRING([--enable-ansi],[enable -ansi -pedantic gcc flags]),enable_ansi=$enableval,enable_ansi=no) 248 option (DBUS_ENABLE_ANSI "enable -ansi -pedantic gcc flags" OFF) 249 if(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) 255 endif(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) 258 option (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) 261 option (DBUS_DISABLE_CHECKS "Disable public API sanity checking" OFF) 262 263 if(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) 272 endif(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) 281 if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") 282 option (DBUS_BUS_ENABLE_DNOTIFY_ON_LINUX "build with dnotify support (linux only)" ON) # add a check ! 283 endif("${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) 289 STRING(TOUPPER ${CMAKE_SYSTEM_NAME} sysname) 290 if("${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) 295 endif("${sysname}" MATCHES ".*SOLARIS.*") 296 297 #AC_ARG_WITH(xml, AS_HELP_STRING([--with-xml=[libxml/expat]],[XML library to use])) 298 if(NOT LIBXML2_FOUND AND NOT LIBEXPAT_FOUND) 299 message(FATAL "Neither expat nor libxml2 found!") 300 endif(NOT LIBXML2_FOUND AND NOT LIBEXPAT_FOUND) 301 302 if(DBUS_USE_EXPAT) 303 SET(XML_LIB "Expat") 304 SET(XML_LIBRARY ${LIBEXPAT_LIBRARIES}) 305 SET(XML_INCLUDE_DIR ${LIBEXPAT_INCLUDE_DIR}) 306 else(DBUS_USE_EXPAT) 307 SET(XML_LIB "LibXML2") 308 SET(XML_LIBRARY ${LIBXML2_LIBRARIES}) 309 SET(XML_INCLUDE_DIR ${LIBXML2_INCLUDE_DIR}) 310 endif(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 325 set(atomic_int OFF) 326 set(atomic_int486 OFF) 327 if(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) 345 endif(CMAKE_COMPILER_IS_GNUCC AND NOT DBUS_ENABLE_ANSI) 346 347 set (DBUS_HAVE_ATOMIC_INT ${atomic_int} CACHE STRING "Some atomic integer implementation present") 348 set (DBUS_USE_ATOMIC_INT_486 ${atomic_int_486} CACHE STRING "Use atomic integer implementation for 486") 349 350 if(X11_FOUND) 351 option (DBUS_BUILD_X11 "Build with X11 autolaunch support " ON) 352 endif(X11_FOUND) 353 354 # test binary names 355 if (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") 359 endif(WIN32) 360 361 if (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) 379 endif (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 413 if (WIN32) 414 # bus-test expects a non empty string 415 set (DBUS_SYSTEM_PID_FILE "/dbus-pid") 416 else (WIN32) 417 set (DBUS_SYSTEM_PID_FILE ${EXPANDED_LOCALSTATEDIR}/run/dbus/pid) 418 endif (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 424 if (WIN32) 425 set (DBUS_CONSOLE_AUTH_DIR "") 426 else (WIN32) 427 set (DBUS_CONSOLE_AUTH_DIR "/var/run/console/") 428 endif (WIN32) 429 430 #AC_ARG_WITH(dbus_user, AS_HELP_STRING([--with-dbus-user=<user>],[User for running the DBUS daemon (messagebus)])) 431 432 set (DBUS_USER ) 433 434 435 if (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") 443 else (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") 451 endif (WIN32) 452 453 set (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 460 if (MINGW) 461 set (HAVE_GNUC_VARARGS 1) 462 endif(MINGW) 463 464 # compiler definitions 465 add_definitions(-DHAVE_CONFIG_H=1) 466 add_definitions(${DBUS_BUS_CFLAGS}) 467 468 469 if (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) 481 endif (DBUS_BUILD_TESTS) 482 483 set(DBUS_LIBRARIES dbus-1) 484 set(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 488 set (DBUS_INTERNAL_ADD_LIBRARY_OPTIONS STATIC) 489 set (DBUS_INTERNAL_LIBRARY_DEFINITIONS "-DDBUS_STATIC_BUILD") 490 set (DBUS_INTERNAL_CLIENT_DEFINITIONS "-DDBUS_STATIC_BUILD") 491 492 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h ) 493 494 if (WIN32) 495 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/dbus-env.bat.cmake ${CMAKE_BINARY_DIR}/bin/dbus-env.bat ) 496 install_files(/bin FILES ${CMAKE_BINARY_DIR}/bin/dbus-env.bat) 497 endif() 498 499 add_definitions(-DHAVE_CONFIG_H=1) 500 501 ########### subdirs ############### 502 503 add_subdirectory( dbus ) 504 add_subdirectory( bus ) 505 if (DBUS_BUILD_TESTS) 506 add_subdirectory( test ) 507 endif (DBUS_BUILD_TESTS) 508 add_subdirectory( tools ) 509 add_subdirectory( doc ) 510 511 512 OPTION(DBUS_INSTALL_SYSTEM_LIBS "install required system libraries" OFF) 513 MESSAGE(" ") 514 MESSAGE("set -DDBUS_INSTALL_SYSTEM_LIBS=1 to install runtime libraries too") 515 MESSAGE("set DBUSDIR (environment or cmake option) to overwrite the default install directory ") 516 MESSAGE(" ") 517 MESSAGE(" ") 518 GET_FILENAME_COMPONENT(C_COMPILER ${CMAKE_C_COMPILER} NAME) 519 GET_FILENAME_COMPONENT(CXX_COMPILER ${CMAKE_CXX_COMPILER} NAME) 520 521 message(" D-BUS ${DBUS_VERSION} ") 522 message(" =========== ") 523 message(" ") 524 message(" install prefix: ${prefix} ") 525 message(" install exec_prefix: ${exec_prefix} ") 526 message(" install libdir: ${EXPANDED_LIBDIR} ") 527 message(" install bindir: ${EXPANDED_BINDIR} ") 528 message(" install sysconfdir: ${EXPANDED_SYSCONFDIR} ") 529 #message(" install localstatedir: ${EXPANDED_LOCALSTATEDIR} ") 530 message(" install datadir: ${EXPANDED_DATADIR} ") 531 message(" source code location: ${DBUS_SOURCE_DIR} ") 532 message(" build dir: ${CMAKE_BINARY_DIR} ") 533 message(" c compiler: ${C_COMPILER} ") 534 message(" cflags: ${CMAKE_C_FLAGS} ") 535 message(" cflags debug: ${CMAKE_C_FLAGS_DEBUG} ") 536 message(" cflags release: ${CMAKE_C_FLAGS_RELEASE} ") 537 message(" cxx compiler: ${CXX_COMPILER} ") 538 message(" cxxflags: ${CMAKE_CXX_FLAGS} ") 539 message(" cxxflags debug: ${CMAKE_CXX_FLAGS_DEBUG} ") 540 message(" cxxflags release: ${CMAKE_CXX_FLAGS_RELEASE} ") 541 message(" 64-bit int: ${DBUS_INT64_TYPE} ") 542 message(" 32-bit int: ${DBUS_INT32_TYPE} ") 543 message(" 16-bit int: ${DBUS_INT16_TYPE} ") 544 message(" Doxygen: ${DOXYGEN} ") 545 message(" Docbook Generator: ${DOCBOOK_GENERATOR_NAME} ") 546 547 548 #message(" Maintainer mode: ${USE_MAINTAINER_MODE} ") 549 message(" gcc coverage profiling: ${DBUS_GCOV_ENABLED} ") 550 message(" Building unit tests: ${DBUS_BUILD_TESTS} ") 551 message(" Building verbose mode: ${DBUS_ENABLE_VERBOSE_MODE} ") 552 message(" Building w/o assertions: ${DBUS_DISABLE_ASSERTS} ") 553 message(" Building w/o checks: ${DBUS_DISABLE_CHECKS} ") 554 message(" Building bus stats API: ${DBUS_ENABLE_STATS} ") 555 message(" installing system libs: ${DBUS_INSTALL_SYSTEM_LIBS} ") 556 #message(" Building SELinux support: ${have_selinux} ") 557 #message(" Building dnotify support: ${have_dnotify} ") 558 message(" Building Doxygen docs: ${DBUS_ENABLE_DOXYGEN_DOCS} ") 559 message(" Building XML docs: ${DBUS_ENABLE_XML_DOCS} ") 560 #message(" Gettext libs (empty OK): ${INTLLIBS} ") 561 message(" Using XML parser: ${XML_LIB} ") 562 message(" Daemon executable name: ${DBUS_DAEMON_NAME}") 563 if (WIN32) 564 message(" System bus address: ${DBUS_SYSTEM_BUS_DEFAULT_ADDRESS} ") 565 message(" Session bus address: ${DBUS_SESSION_BUS_DEFAULT_ADDRESS} ") 566 else (WIN32) 567 #message(" Init scripts style: ${with_init_scripts} ") 568 #message(" Abstract socket names: ${have_abstract_sockets} ") 569 message(" System bus socket: ${DBUS_SYSTEM_SOCKET} ") 570 message(" System bus address: ${DBUS_SYSTEM_BUS_DEFAULT_ADDRESS} ") 571 message(" System bus PID file: ${DBUS_SYSTEM_PID_FILE} ") 572 message(" Session bus socket dir: ${DBUS_SESSION_SOCKET_DIR} ") 573 message(" Console auth dir: ${DBUS_CONSOLE_AUTH_DIR} ") 574 message(" System bus user: ${DBUS_USER} ") 575 message(" 'make check' socket dir: ${TEST_SOCKET_DIR} ") 576 endif (WIN32) 577 message(" Test listen address: ${TEST_LISTEN} ") 578 if (MSVC) 579 message(" build timestamp: ${DBUS_BUILD_TIMESTAMP} ") 580 endif (MSVC) 581 582 MESSAGE(" ") 583 if (DBUS_BUILD_TESTS) 584 message("NOTE: building with unit tests increases the size of the installed library and renders it insecure.") 585 endif(DBUS_BUILD_TESTS) 586 587 if (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)") 589 endif(DBUS_BUILD_TESTS AND DBUS_DISABLE_ASSERTS) 590 591 if (DBUS_GCOV_ENABLED) 592 message("NOTE: building with coverage profiling is definitely for developers only.") 593 endif(DBUS_GCOV_ENABLED) 594 595 if (DBUS_ENABLE_VERBOSE_MODE) 596 message("NOTE: building with verbose mode increases library size, may slightly increase security risk, and decreases performance.") 597 endif(DBUS_ENABLE_VERBOSE_MODE) 598 599 if(NOT DBUS_DISABLE_ASSERTS) 600 message("NOTE: building with assertions increases library size and decreases performance.") 601 endif(NOT DBUS_DISABLE_ASSERTS) 602 603 if (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.") 605 endif(DBUS_DISABLE_CHECKS) 606 MESSAGE(" ") 607 608 INCLUDE(modules/CPackInstallConfig.cmake) 609 610 add_custom_target(help-options 611 cmake -LH 612 WORKING_DIRECTORY ${CMAKE_BINARY_DIR} 613 ) 614