CMakeLists.txt 23 KB
Newer Older
1 2 3
# where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/modules")

4 5 6
# we do not need to have WIN32 defined
set(CMAKE_LEGACY_CYGWIN_WIN32 0)

7 8
project(dbus)

9 10
# we need to be up to date
CMAKE_MINIMUM_REQUIRED(VERSION 2.4.4 FATAL_ERROR)
11 12 13
if(COMMAND cmake_policy)
    cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)
14 15


16 17 18 19 20 21
# detect version
include(MacrosAutotools)
autoversion(../configure.ac dbus)
# used by file version info
set (DBUS_PATCH_VERSION "0")

22 23 24 25 26 27 28 29
# set PACKAGE_... variables
autopackage(
    dbus
    ${DBUS_VERSION_STRING}
    "http://dbus.freedesktop.org"
    "https://bugs.freedesktop.org/enter_bug.cgi?product=dbus"
)

30 31 32
include(Macros)
TIMESTAMP(DBUS_BUILD_TIMESTAMP)

33 34 35 36 37 38 39 40 41 42 43
########### basic vars ###############


if (DBUSDIR)
	set(DBUS_INSTALL_DIR "${DBUSDIR}")
endif (DBUSDIR)
if ($ENV{DBUSDIR})
	set(DBUS_INSTALL_DIR "$ENV{DBUSDIR}")
endif ($ENV{DBUSDIR})

if (DBUS_INSTALL_DIR)
44
	set(CMAKE_INSTALL_PREFIX "${DBUS_INSTALL_DIR}" CACHE PATH "install prefix" FORCE)
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
else (DBUS_INSTALL_DIR)
	set(DBUS_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}")
endif (DBUS_INSTALL_DIR)

# autotools style
if (NOT DATAROOTDIR)
    set (DATAROOTDIR share)
endif()

if (NOT DATADIR)
    set (DATADIR ${DATAROOTDIR})
endif()

if (NOT DOCDIR)
    SET(DOCDIR ${DATAROOTDIR}/doc/dbus)
endif()

if (NOT DBUS_DATADIR)
    SET(DBUS_DATADIR ${DATADIR})
endif()

set(prefix                   ${DBUS_INSTALL_DIR})
set(exec_prefix              ${prefix})
set(EXPANDED_LIBDIR          ${DBUS_INSTALL_DIR}/lib)
set(EXPANDED_INCLUDEDIR      ${DBUS_INSTALL_DIR}/include)
set(EXPANDED_BINDIR          ${DBUS_INSTALL_DIR}/bin)
set(EXPANDED_SYSCONFDIR      ${DBUS_INSTALL_DIR}/etc)
set(EXPANDED_DATADIR         ${DBUS_INSTALL_DIR}/${DBUS_DATADIR})
set(DBUS_MACHINE_UUID_FILE   ${DBUS_INSTALL_DIR}/lib/dbus/machine-id)
set(DBUS_BINDIR              ${EXPANDED_BINDIR})
75
set(DBUS_DAEMONDIR           ${EXPANDED_BINDIR})
76 77


78 79 80
#enable building of shared library
SET(BUILD_SHARED_LIBS ON)

81 82 83 84 85 86
if(WIN32)
    set(INSTALL_TARGETS_DEFAULT_ARGS  RUNTIME DESTINATION "bin" LIBRARY DESTINATION "lib" ARCHIVE DESTINATION "lib")
else()
    set(INSTALL_TARGETS_DEFAULT_ARGS  RUNTIME DESTINATION "${EXPANDED_LIBDIR}" LIBRARY DESTINATION "${EXPANDED_LIBDIR}" ARCHIVE DESTINATION "${EXPANDED_LIBDIR}")
endif()

87 88 89
if (CYGWIN)
   set (WIN32)
endif (CYGWIN)
90

91
# search for required packages
92
if (WIN32)
93 94
    # include local header first to avoid using old installed header
    set (CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} ${CMAKE_SOURCE_DIR}/..)
95
	find_package(LibIconv)
96
    include(Win32Macros)
97
    addExplorerWrapper(${CMAKE_PROJECT_NAME})
98
endif (WIN32)
99

100
if(NOT WIN32)
101
	option (DBUS_ENABLE_ABSTRACT_SOCKETS "enable support for abstract sockets" ON)
102 103
	set (CMAKE_THREAD_PREFER_PTHREAD ON)
	include (FindThreads)
104
endif(NOT WIN32)
105

106
option (DBUS_DISABLE_ASSERT "Disable assertion checking" OFF)
107

108 109
option (DBUS_ENABLE_STATS "enable bus daemon usage statistics" OFF)

110
find_package(EXPAT)
111
find_package(X11)
112 113 114 115 116
find_package(GLib2)
find_package(GObject)
if(GLIB2_FOUND AND GOBJECT_FOUND)
    option (DBUS_WITH_GLIB "build with glib" ON)
endif()
117

118
# analogous to AC_USE_SYSTEM_EXTENSIONS in configure.ac
119
add_definitions(-D_GNU_SOURCE)
120

121 122 123
# do config checks
INCLUDE(ConfigureChecks.cmake)

124
# @TODO: how to remove last dir from ${CMAKE_SOURCE_DIR} ?
125 126 127 128 129 130
SET(DBUS_SOURCE_DIR ${CMAKE_SOURCE_DIR}/..)

# make some more macros available
include (MacroLibrary)

if(VCS)
131
	set(DBUS_VERBOSE_C_S 1 CACHE STRING "verbose mode" FORCE)
132 133
endif(VCS)

134
if(WIN32)
135 136 137 138 139 140 141 142 143 144 145 146 147
	set(CMAKE_DEBUG_POSTFIX "d")
	if(MSVC)
		# controll folders in msvc projects
		include(ProjectSourceGroup)
		if(NOT GROUP_CODE)
			#set(GROUP_CODE split) #cmake default
			set(GROUP_CODE flat)
		endif(NOT GROUP_CODE)
		ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)


		# Use the highest warning level
		if (WALL)
148 149
			set(WALL 1 CACHE STRING "all warnings"  FORCE)
			set(CMAKE_CXX_WARNING_LEVEL 4 CACHE STRING "warning level" FORCE)
150 151 152 153 154 155 156 157 158 159 160 161 162

			if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
				STRING(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
			else(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
				SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
			endif(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")

			if(CMAKE_C_FLAGS MATCHES "/W[0-4]")
				STRING(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
			else(CMAKE_C_FLAGS MATCHES "/W[0-4]")
				SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4")
			endif(CMAKE_C_FLAGS MATCHES "/W[0-4]")
		else (WALL)
163
			set(CMAKE_CXX_WARNING_LEVEL 3 CACHE STRING "warning level" FORCE)
164 165 166 167 168 169 170 171
		endif (WALL)

		SET(MSVC_W_ERROR   " /we4028 /we4013 /we4133 /we4047 /we4031 /we4002 /we4003 /we4114")
		SET(MSVC_W_DISABLE " /wd4127 /wd4090 /wd4101 /wd4244")

		SET(CMAKE_C_FLAGS_DEBUG   "${CMAKE_C_FLAGS_DEBUG}   /FIconfig.h ${MSVC_W_ERROR} ${MSVC_W_DISABLE}")
		SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /FIconfig.h ${MSVC_W_ERROR} ${MSVC_W_DISABLE}")
	endif(MSVC)
172
endif(WIN32)
173

174
if (UNIX AND NOT DBUS_DISABLE_ASSERT)
175 176 177 178
	# required for backtrace
	SET(CMAKE_C_FLAGS_DEBUG   "${CMAKE_C_FLAGS_DEBUG}   -Wl,--export-dynamic")
	SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wl,--export-dynamic")
	add_definitions(-DDBUS_BUILT_R_DYNAMIC)
179
endif (UNIX AND NOT DBUS_DISABLE_ASSERT)
180

181 182
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}  -D_DEBUG")

183
#########################################################################
184
# Windows CE (>= 5.0.0)
185
#
186 187 188 189
# WinCE support now relies on the presence of platform files, found in cmake/modules/platform
# Cmake 2.8.0 doesn't include WinCE platform files by default, but working ones can be found
# on CMake's bugtracker :
# http://public.kitware.com/Bug/view.php?id=7919
190
#
191 192
# for cmake 2.8.0 get the following patch only :
# http://public.kitware.com/Bug/file_download.php?file_id=2944&type=bug
193
#
194 195 196 197 198 199 200 201 202 203 204 205
# after applying the patch, you can enable the WinCE build by specifying :
# cmake [...] -DCMAKE_SYSTEM_NAME=WinCE -DCMAKE_SYSTEM_VERSION=X.XX
# (where X.XX is your actual WinCE version, e.g. 5.02 for Windows Mobile 6)
#
# Note that you should have a proper cross-compilation environment set up prior to running
# cmake, ie. the PATH, INCLUDE and LIB env vars pointing to your CE SDK/toolchain.
#
if(WINCE)

MESSAGE("Building for WinCE (${CMAKE_SYSTEM_VERSION})")

endif(WINCE)
206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221
#########################################################################


ENABLE_TESTING()

#########################################################################
# Disallow in-source build
#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.")

# ... and warn in case of an earlier in-source build
#set(generatedFileInSourceDir EXISTS ${dbus_SOURCE_DIR}/config.h)
#if(${generatedFileInSourceDir})
#   message(STATUS "config.h exists in your source directory.")
#endif(${generatedFileInSourceDir})
#########################################################################

222
if (WIN32 OR CYGWIN)
223
	set (LIBRARY_OUTPUT_PATH  ${CMAKE_BINARY_DIR}/bin)
224
else (WIN32 OR CYGWIN)
225
	set (LIBRARY_OUTPUT_PATH  ${CMAKE_BINARY_DIR}/lib)
226
endif (WIN32 OR CYGWIN)
227 228 229 230

set (EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)

# for including config.h and for includes like <dir/foo.h>
231
include_directories( ${CMAKE_SOURCE_DIR}/.. ${CMAKE_BINARY_DIR} ${CMAKE_INCLUDE_PATH} )
232 233 234 235 236 237 238 239 240 241

# linker search directories
link_directories(${DBUS_LIB_DIR} ${LIBRARY_OUTPUT_PATH} )
include_directories( ${CMAKE_LIBRARY_PATH}  )

set(DBUS_INCLUDES)

ENABLE_TESTING()

########### command line options ###############
242
# TODO: take check from configure.in
243

244
option (DBUS_BUILD_TESTS "enable unit test code" ON)
245 246
 
if(DBUS_BUILD_TESTS)
247 248 249
    set (DBUS_ENABLE_EMBEDDED_TESTS ON)
    set (DBUS_ENABLE_MODULAR_TESTS ON)
    add_definitions(-DDBUS_ENABLE_EMBEDDED_TESTS -DDBUS_ENABLE_MODULAR_TESTS)
250
endif(DBUS_BUILD_TESTS)
251

252
option (DBUS_USE_OUTPUT_DEBUG_STRING "enable win32 debug port for message output" OFF)
253 254 255 256
if(DBUS_USE_OUTPUT_DEBUG_STRING)
    add_definitions(-DDBUS_USE_OUTPUT_DEBUG_STRING)
endif(DBUS_USE_OUTPUT_DEBUG_STRING)

257 258
if(WIN32)
	# win32 dbus service support - this support is not complete
259
	option (DBUS_SERVICE "enable dbus service installer" OFF)
260
endif(WIN32)
261

262
option (DBUS_ENABLE_ANSI "enable -ansi -pedantic gcc flags" OFF)
263 264 265 266 267
if(DBUS_ENABLE_ANSI)
   if(NOT MSVC)
        add_definitions(-ansi -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE -pedantic)
   else(NOT MSVC)
        add_definitions(-Za -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE -W4)
268
   endif(NOT MSVC)
269 270
endif(DBUS_ENABLE_ANSI)

271
option (DBUS_ENABLE_VERBOSE_MODE "support verbose debug mode" ON)
272

273
option (DBUS_DISABLE_CHECKS "Disable public API sanity checking" OFF)
274

275
if(NOT MSVC)
276
    option (DBUS_GCOV_ENABLED "compile with coverage profiling instrumentation (gcc only)" OFF)
277 278 279 280 281 282 283
    if(DBUS_GCOV_ENABLED)
            add_definitions(-fprofile-arcs -ftest-coverage)
            # FIXME!!!!
            ## remove optimization
    #        CFLAGS=`echo "$CFLAGS" | sed -e 's/-O[0-9]*//g'`
    endif(DBUS_GCOV_ENABLED)
endif(NOT MSVC)
284

285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
    option (DBUS_BUS_ENABLE_INOTIFY "build with inotify support (linux only)" ON)
    if(DBUS_BUS_ENABLE_INOTIFY)
        check_include_file(sys/inotify.h HAVE_SYS_INOTIFY_H)
        if(NOT HAVE_SYS_INOTIFY_H)
            message(FATAL_ERROR "sys/inotify.h not found!")
        endif(NOT HAVE_SYS_INOTIFY_H)
    endif(DBUS_BUS_ENABLE_INOTIFY)
elseif("${CMAKE_SYSTEM_NAME}" MATCHES ".*BSD")
    option (DBUS_BUS_ENABLE_KQUEUE "build with kqueue support (FreeBSD only)" ON)
    if(DBUS_BUS_ENABLE_KQUEUE)
        # cmake check a header by compiling a test program with
        # the header, sys/event.h needs stdint.h and sys/types.h
        # to work.
        check_include_files("stdint.h;sys/types.h;sys/event.h" HAVE_SYS_EVENT_H)
        if(NOT HAVE_SYS_EVENT_H)
            message(FATAL_ERROR "sys/event.h not found!")
        endif(NOT HAVE_SYS_EVENT_H)
    endif(DBUS_BUS_ENABLE_KQUEUE)
endif("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")

306 307
STRING(TOUPPER ${CMAKE_SYSTEM_NAME} sysname)
if("${sysname}" MATCHES ".*SOLARIS.*")
308
    option (HAVE_CONSOLE_OWNER_FILE "enable console owner file (solaris only)" ON)
309
    if(HAVE_CONSOLE_OWNER_FILE)
310
        set (DBUS_CONSOLE_OWNER_FILE "/dev/console" CACHE STRING "Directory to check for console ownerhip")
311 312 313
    endif(HAVE_CONSOLE_OWNER_FILE)
endif("${sysname}" MATCHES ".*SOLARIS.*")

Chengwei Yang's avatar
Chengwei Yang committed
314
if(NOT EXPAT_FOUND)
315
    message(FATAL_ERROR "expat not found!")
Chengwei Yang's avatar
Chengwei Yang committed
316
endif(NOT EXPAT_FOUND)
317

318 319 320
SET(XML_LIB "Expat")
SET(XML_LIBRARY     ${EXPAT_LIBRARIES})
SET(XML_INCLUDE_DIR ${EXPAT_INCLUDE_DIR})
321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346

# all missing or hardcoded for now

# 'hidden' ones
set(atomic_int OFF)
set(atomic_int486 OFF)
if(CMAKE_COMPILER_IS_GNUCC AND NOT DBUS_ENABLE_ANSI)
    FIND_PROGRAM(UNAME_EXECUTABLE
                    NAMES uname
                    PATHS /bin /usr/bin /usr/local/bin c:/Programme/MSys/bin d:/Programme/MSys/bin)

    if(UNAME_EXECUTABLE)
        EXECUTE_PROCESS(COMMAND ${UNAME_EXECUTABLE} "-m"
                        OUTPUT_VARIABLE UNAME_OUTPUT)

        if("UNAME_OUTPUT" MATCHES "^.*i[0123]86.*$")
            set(atomic_int ON)
        else("UNAME_OUTPUT" MATCHES "^.*i[0123]86.*$")
            if("UNAME_OUTPUT" MATCHES "^.*i?86.*$")
                set(atomic_int ON)
                set(atomic_int_486 ON)
            endif("UNAME_OUTPUT" MATCHES "^.*i?86.*$")
        endif("UNAME_OUTPUT" MATCHES "^.*i[0123]86.*$")
    endif(UNAME_EXECUTABLE)
endif(CMAKE_COMPILER_IS_GNUCC AND NOT DBUS_ENABLE_ANSI)

347 348
set (DBUS_HAVE_ATOMIC_INT ${atomic_int} CACHE STRING "Some atomic integer implementation present")
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 353 354 355
endif(X11_FOUND)

# test binary names
if (WIN32)
356 357
    # follow Automake's naming convention so we can share .in files
    set (EXEEXT ${CMAKE_EXECUTABLE_SUFFIX})
358 359
endif(WIN32)

360
if (MSVC_IDE)
361
    if(CMAKE_BUILD_TYPE MATCHES Debug)
362
		set(IDE_BIN /Debug )
363
		message(STATUS)
364 365
		message(STATUS "Visual Studio: test programs will only work with 'Debug' configuration!")
		message(STATUS "To run tests with 'Release' configuration use -DCMAKE_BUILD_TYPE=Release")
366 367
		message(STATUS "Add '..\\..\\test\\data' to the command line option of the test programs")
		message(STATUS)
368
    else(CMAKE_BUILD_TYPE MATCHES Debug)
369
		set(IDE_BIN /Release)
370
		message(STATUS)
371 372
		message(STATUS "Visual Studio: test programs will only work with 'Release' configuration!")
		message(STATUS "To run tests with 'Debug' configuration use -DCMAKE_BUILD_TYPE=Debug")
373 374
		message(STATUS "Add '..\\..\\test\\data' to the command line option of the test programs")
		message(STATUS)
375
    endif(CMAKE_BUILD_TYPE MATCHES Debug)
376 377 378 379
	set (TEST_PATH_FORCE FORCE)
	FILE(REMOVE ${CMAKE_BINARY_DIR}/data/dbus-1/services)
endif (MSVC_IDE)

380
#### Find socket directories
381 382 383 384 385 386 387 388 389 390 391
 if (NOT $ENV{TMPDIR} STREQUAL "")
     set (DBUS_SESSION_SOCKET_DIR $ENV{TMPDIR})
 else (NOT $ENV{TMPDIR} STREQUAL "")
     if (NOT $ENV{TEMP} STREQUAL "")
         set (DBUS_SESSION_SOCKET_DIR $ENV{TEMP})
     else (NOT $ENV{TEMP} STREQUAL "")
         if (NOT $ENV{TMP} STREQUAL "")
             set (DBUS_SESSION_SOCKET_DIR $ENV{TMP})
         else (NOT $ENV{TMP} STREQUAL "")
         if (WIN32)
             #Should never happen, both TMP and TEMP seem always set on Windows
392
             message(FATAL_ERROR "Could not determine a usable temporary directory")
393 394 395 396 397 398
         else(WIN32)
            set (DBUS_SESSION_SOCKET_DIR /tmp)
         endif(WIN32)
         endif (NOT $ENV{TMP} STREQUAL "")
     endif (NOT $ENV{TEMP} STREQUAL "")
 endif (NOT $ENV{TMPDIR} STREQUAL "")
399

400
# TODO: fix redhet
401 402 403 404 405 406 407 408 409 410 411 412 413 414 415
if (WIN32)
  # bus-test expects a non empty string
	set (DBUS_SYSTEM_PID_FILE "/dbus-pid")
else (WIN32)
	set (DBUS_SYSTEM_PID_FILE ${EXPANDED_LOCALSTATEDIR}/run/dbus/pid)
endif (WIN32)

if (WIN32)
	set (DBUS_CONSOLE_AUTH_DIR "")
else (WIN32)
	set (DBUS_CONSOLE_AUTH_DIR "/var/run/console/")
endif (WIN32)

set (DBUS_USER )

416 417
# In Autotools this has a different default on QNX, but there seems little
# point in replicating that here; if you're on an unusual Unix, use Autotools.
418
set (DEFAULT_MESSAGE_UNIX_FDS 1024)
419

420 421 422 423 424 425 426 427 428
# This won't work on Windows. It's not meant to - the system bus is
# meaningless on Windows anyway.
#
# This has to be suitable for hard-coding in client libraries as well as
# in the dbus-daemon's configuration, so it has to be valid to listen on
# and also to connect to. If this ever changes, it'll need to be split into
# two variables, one for the listening address and one for the connecting
# address.
set (DBUS_SYSTEM_BUS_DEFAULT_ADDRESS "unix:path=${EXPANDED_LOCALSTATEDIR}/run/dbus/system_bus_socket" CACHE STRING "system bus default address")
429 430

if (WIN32)
431 432
  set (DBUS_SESSION_BUS_LISTEN_ADDRESS "autolaunch:" CACHE STRING "session bus default listening address")
  set (DBUS_SESSION_BUS_CONNECT_ADDRESS "autolaunch:" CACHE STRING "session bus fallback address for clients")
433

Ralf Habacker's avatar
Ralf Habacker committed
434 435
  set (DBUS_SYSTEM_CONFIG_FILE "etc/dbus-1/system.conf")
  set (DBUS_SESSION_CONFIG_FILE "etc/dbus-1/session.conf")
436
  # bus-test expects a non empty string
437
  set (DBUS_USER "Administrator")
438
else (WIN32)
439 440
  set (DBUS_SESSION_BUS_LISTEN_ADDRESS "unix:tmpdir=${DBUS_SESSION_SOCKET_DIR}" CACHE STRING "session bus default listening address")
  set (DBUS_SESSION_BUS_CONNECT_ADDRESS "autolaunch:" CACHE STRING "session bus fallback address for clients")
441 442 443 444
  set (sysconfdir "")
  set (configdir ${sysconfdir}/dbus-1 )
  set (DBUS_SYSTEM_CONFIG_FILE  ${configdir}/system.conf)
  set (DBUS_SESSION_CONFIG_FILE ${configdir}/session.conf)
445
  set (DBUS_USER "root")
446 447
endif (WIN32)

448
set (DBUS_DAEMON_NAME "dbus-daemon" CACHE STRING "The name of the dbus daemon executable")
449 450 451 452 453

########### create config.h ###############

#include(ConfigureChecks.cmake)

454
# better use flags for gcc
455 456 457 458
if (MINGW)
	set (HAVE_GNUC_VARARGS 1)
endif(MINGW)

459
# compiler definitions
460
add_definitions(-DHAVE_CONFIG_H=1)
461
add_definitions(${DBUS_BUS_CFLAGS})
462 463


464 465
if (DBUS_BUILD_TESTS)
    # set variables used for the .in files (substituted by configure_file) in test/data:
466
    set(DBUS_TEST_EXEC ${EXECUTABLE_OUTPUT_PATH}${IDE_BIN})
467
    set(DBUS_TEST_DATA ${CMAKE_BINARY_DIR}/test/data)
468 469
    set(TEST_SOCKET_DIR ${DBUS_SESSION_SOCKET_DIR} )
    set(TEST_LAUNCH_HELPER_BINARY ${EXECUTABLE_OUTPUT_PATH}/dbus-daemon-launch-helper-test)
470
    set(TEST_BUS_LAUNCH_BINARY ${EXECUTABLE_OUTPUT_PATH}/dbus-launch${EXEEXT})
471
    if (UNIX)
472
        set (TEST_LISTEN "unix:tmpdir=${TEST_SOCKET_DIR}")
473 474
    endif (UNIX)
    if (WIN32)
475
        set (TEST_LISTEN "tcp:host=localhost")
476
    endif (WIN32)
477 478
endif  (DBUS_BUILD_TESTS)

479
set(DBUS_LIBRARIES dbus-1)
480 481 482 483 484 485
set(DBUS_INTERNAL_LIBRARIES dbus-internal)

# settings for building and using static internal lib
# important note: DBUS_INTERNAL_xxxxx_DEFINITIONS must *not* be set when building dbus-1 library
set (DBUS_INTERNAL_ADD_LIBRARY_OPTIONS STATIC)
set (DBUS_INTERNAL_LIBRARY_DEFINITIONS "-DDBUS_STATIC_BUILD")
486 487 488
# For now, the CMake build system doesn't support replacing the internal
# main loop with dbus-glib
set (DBUS_INTERNAL_CLIENT_DEFINITIONS "-DDBUS_STATIC_BUILD -DDBUS_COMPILATION -DDBUS_TEST_USE_INTERNAL")
489

490
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h )
491 492

if (WIN32)
493 494
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/dbus-env.bat.cmake ${CMAKE_BINARY_DIR}/bin/dbus-env.bat )
install_files(/bin FILES ${CMAKE_BINARY_DIR}/bin/dbus-env.bat)
495 496
endif()

497
add_definitions(-DHAVE_CONFIG_H=1)
498

499 500 501 502 503 504 505 506
########### subdirs ###############

add_subdirectory( dbus )
add_subdirectory( bus )
if (DBUS_BUILD_TESTS)
	add_subdirectory( test )
endif (DBUS_BUILD_TESTS)
add_subdirectory( tools )
507
add_subdirectory( doc )
508 509 510 511 512 513 514 515 516 517 518


OPTION(DBUS_INSTALL_SYSTEM_LIBS "install required system libraries" OFF)
MESSAGE(" ")
MESSAGE("set -DDBUS_INSTALL_SYSTEM_LIBS=1 to install runtime libraries too")
MESSAGE("set DBUSDIR (environment or cmake option) to overwrite the default install directory ")
MESSAGE(" ")
MESSAGE(" ")
GET_FILENAME_COMPONENT(C_COMPILER ${CMAKE_C_COMPILER} NAME)
GET_FILENAME_COMPONENT(CXX_COMPILER ${CMAKE_CXX_COMPILER} NAME)

519 520
message("                  D-BUS ${DBUS_VERSION}                               ")
message("                  ===========                                         ")
521
message("                                                                      ")
522 523 524 525 526 527
message("        install prefix:           ${prefix}                           ")
message("        install exec_prefix:      ${exec_prefix}                      ")
message("        install libdir:           ${EXPANDED_LIBDIR}                  ")
message("        install bindir:           ${EXPANDED_BINDIR}                  ")
message("        install sysconfdir:       ${EXPANDED_SYSCONFDIR}              ")
message("        install datadir:          ${EXPANDED_DATADIR}                 ")
528
message("        source code location:     ${DBUS_SOURCE_DIR}                  ")
529
message("        build dir:                ${CMAKE_BINARY_DIR}                 ")
530 531 532 533 534 535 536 537 538 539 540 541
message("        c compiler:               ${C_COMPILER}                       ")
message("        cflags:                   ${CMAKE_C_FLAGS}                    ")
message("        cflags debug:             ${CMAKE_C_FLAGS_DEBUG}              ")
message("        cflags release:           ${CMAKE_C_FLAGS_RELEASE}            ")
message("        cxx compiler:             ${CXX_COMPILER}                     ")
message("        cxxflags:                 ${CMAKE_CXX_FLAGS}                  ")
message("        cxxflags debug:           ${CMAKE_CXX_FLAGS_DEBUG}            ")
message("        cxxflags release:         ${CMAKE_CXX_FLAGS_RELEASE}          ")
message("        64-bit int:               ${DBUS_INT64_TYPE}                  ")
message("        32-bit int:               ${DBUS_INT32_TYPE}                  ")
message("        16-bit int:               ${DBUS_INT16_TYPE}                  ")
message("        Doxygen:                  ${DOXYGEN}                          ")
542
message("        Docbook Generator:        ${DOCBOOK_GENERATOR_NAME}           ")
543 544 545 546


message("        gcc coverage profiling:   ${DBUS_GCOV_ENABLED}                ")
message("        Building unit tests:      ${DBUS_BUILD_TESTS}                 ")
547
message("        Building with GLib:       ${DBUS_WITH_GLIB}                   ")
548
message("        Building verbose mode:    ${DBUS_ENABLE_VERBOSE_MODE}         ")
Chengwei Yang's avatar
Chengwei Yang committed
549
message("        Building w/o assertions:  ${DBUS_DISABLE_ASSERT}              ")
550
message("        Building w/o checks:      ${DBUS_DISABLE_CHECKS}              ")
551
message("        Building bus stats API:   ${DBUS_ENABLE_STATS}                ")
552
message("        installing system libs:   ${DBUS_INSTALL_SYSTEM_LIBS}         ")
553
message("        Building inotify support: ${DBUS_BUS_ENABLE_INOTIFY}          ")
Chengwei Yang's avatar
Chengwei Yang committed
554
message("        Building kqueue support:  ${DBUS_BUS_ENABLE_KQUEUE}           ")
555
message("        Building Doxygen docs:    ${DBUS_ENABLE_DOXYGEN_DOCS}         ")
556
message("        Building XML docs:        ${DBUS_ENABLE_XML_DOCS}             ")
557
message("        Daemon executable name:   ${DBUS_DAEMON_NAME}")
558 559
if (WIN32)
message("        System bus address:       ${DBUS_SYSTEM_BUS_DEFAULT_ADDRESS}  ")
Chengwei Yang's avatar
Chengwei Yang committed
560
message("        Session bus listens on:   ${DBUS_SESSION_BUS_LISTEN_ADDRESS}  ")
561
message("        Session clients connect to: ${DBUS_SESSION_BUS_CONNECT_ADDRESS} ")
562 563 564 565 566 567 568 569 570
else (WIN32)
message("        System bus socket:        ${DBUS_SYSTEM_SOCKET}               ")
message("        System bus address:       ${DBUS_SYSTEM_BUS_DEFAULT_ADDRESS}  ")
message("        System bus PID file:      ${DBUS_SYSTEM_PID_FILE}             ")
message("        Session bus socket dir:   ${DBUS_SESSION_SOCKET_DIR}          ")
message("        Console auth dir:         ${DBUS_CONSOLE_AUTH_DIR}            ")
message("        System bus user:          ${DBUS_USER}                        ")
message("        'make check' socket dir:  ${TEST_SOCKET_DIR}                  ")
endif (WIN32)
571
message("        Test listen address:      ${TEST_LISTEN}                      ")
572 573 574 575
if (MSVC)
message("        build timestamp:          ${DBUS_BUILD_TIMESTAMP}             ")
endif (MSVC)

576 577 578 579 580
MESSAGE(" ")
if (DBUS_BUILD_TESTS)
    message("NOTE: building with unit tests increases the size of the installed library and renders it insecure.")
endif(DBUS_BUILD_TESTS)

581
if (DBUS_BUILD_TESTS AND DBUS_DISABLE_ASSERT)
582
    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)")
583
endif(DBUS_BUILD_TESTS AND DBUS_DISABLE_ASSERT)
584 585 586 587 588 589 590 591 592

if (DBUS_GCOV_ENABLED)
    message("NOTE: building with coverage profiling is definitely for developers only.")
endif(DBUS_GCOV_ENABLED)

if (DBUS_ENABLE_VERBOSE_MODE)
    message("NOTE: building with verbose mode increases library size, may slightly increase security risk, and decreases performance.")
endif(DBUS_ENABLE_VERBOSE_MODE)

593
if(NOT DBUS_DISABLE_ASSERT)
594
    message("NOTE: building with assertions increases library size and decreases performance.")
595
endif(NOT DBUS_DISABLE_ASSERT)
596 597 598 599 600 601 602

if (DBUS_DISABLE_CHECKS)
    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.")
endif(DBUS_DISABLE_CHECKS)
MESSAGE(" ")

INCLUDE(modules/CPackInstallConfig.cmake)
603 604 605 606 607

add_custom_target(help-options
    cmake -LH 
    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)