diff options
author | Ralf Habacker <ralf.habacker@freenet.de> | 2007-03-03 14:32:17 +0000 |
---|---|---|
committer | Ralf Habacker <ralf.habacker@freenet.de> | 2007-03-03 14:32:17 +0000 |
commit | 36ebfd411b358fb4797d31d23f945e8f6844d15a (patch) | |
tree | 9c8982d1da82fdffea8d2a741dba82e927874869 /cmake/bus | |
parent | 4ceb86d29a68ebe52b20c8c090bc90c68a58f8c8 (diff) |
* cmake: new directory, contains cmake build support.
See http://www.cmake.org for more informations.
Currently only unix will be buildable because some
win32 required files are still missing.
Diffstat (limited to 'cmake/bus')
-rw-r--r-- | cmake/bus/CMakeLists.txt | 178 | ||||
-rw-r--r-- | cmake/bus/service.cmake | 3 | ||||
-rw-r--r-- | cmake/bus/session.conf.cmake | 30 | ||||
-rw-r--r-- | cmake/bus/system.conf.cmake | 62 |
4 files changed, 273 insertions, 0 deletions
diff --git a/cmake/bus/CMakeLists.txt b/cmake/bus/CMakeLists.txt new file mode 100644 index 00000000..79629e96 --- /dev/null +++ b/cmake/bus/CMakeLists.txt @@ -0,0 +1,178 @@ + +include_directories(${CMAKE_SOURCE_DIR}/..) +include_directories( ${CMAKE_INCLUDE_PATH} ) + +add_definitions(-DDBUS_COMPILATION) + +SET(EFENCE "") +SET(BUS_DIR ${CMAKE_SOURCE_DIR}/../bus) + +set (config_DATA + session.conf + system.conf +) + +# config files for installation +FOREACH(file ${config_DATA}) + CONFIGURE_FILE( "${CMAKE_CURRENT_SOURCE_DIR}/${file}.cmake" "${CMAKE_CURRENT_BINARY_DIR}/${file}" IMMEDIATE @ONLY) +ENDFOREACH(file) + +# copy services for local daemon start to local service dir data/dbus-1/services +SET (SERVICE_FILES test/data/valid-service-files) +FILE(GLOB FILES "${CMAKE_SOURCE_DIR}/../${SERVICE_FILES}/*.service.in" ) +FOREACH(FILE ${FILES}) + GET_FILENAME_COMPONENT(FILENAME ${FILE} NAME_WE) + SET (TARGET ${CMAKE_BINARY_DIR}/data/dbus-1/services/${FILENAME}.service) + IF (CONFIG_VERBOSE) + MESSAGE("FROM: ${FILE}\nTO: ${TARGET}\n") + ENDIF (CONFIG_VERBOSE) + configure_file(${FILE} ${TARGET} ) +ENDFOREACH(FILE) + +if(DBUS_USE_EXPAT) + SET (XML_SOURCES ${BUS_DIR}/config-loader-expat.c) +else(DBUS_USE_EXPAT) + SET (XML_SOURCES ${BUS_DIR}/config-loader-libxml.c) +endif (DBUS_USE_EXPAT) + +# after next cvs update +#set (DIR_WATCH_SOURCE ${BUS_DIR}/dir-watch-default.c) +set (DIR_WATCH_SOURCE ) + +set (BUS_SOURCES + ${BUS_DIR}/activation.c + ${BUS_DIR}/activation.h + ${BUS_DIR}/bus.c + ${BUS_DIR}/bus.h + ${BUS_DIR}/config-parser.c + ${BUS_DIR}/config-parser.h + ${BUS_DIR}/connection.c + ${BUS_DIR}/connection.h + ${BUS_DIR}/desktop-file.c + ${BUS_DIR}/desktop-file.h + ${BUS_DIR}/dir-watch.c + ${BUS_DIR}/dir-watch.h + ${BUS_DIR}/dispatch.c + ${BUS_DIR}/dispatch.h + ${BUS_DIR}/driver.c + ${BUS_DIR}/driver.h + ${BUS_DIR}/expirelist.c + ${BUS_DIR}/expirelist.h + ${BUS_DIR}/policy.c + ${BUS_DIR}/policy.h + ${BUS_DIR}/selinux.h + ${BUS_DIR}/selinux.c + ${BUS_DIR}/services.c + ${BUS_DIR}/services.h + ${BUS_DIR}/signals.c + ${BUS_DIR}/signals.h + ${BUS_DIR}/test.c + ${BUS_DIR}/test.h + ${BUS_DIR}/utils.c + ${BUS_DIR}/utils.h + ${XML_SOURCES} + ${DIR_WATCH_SOURCE} +) + +set (dbus_daemon_SOURCES + ${BUS_SOURCES} + ${BUS_DIR}/main.c +) + +include_directories(${XML_INCLUDE_DIR}) +SET (LIBS ${XML_LIBRARY}) + +add_executable(dbus-daemon ${dbus_daemon_SOURCES}) +target_link_libraries(dbus-daemon dbus-1 ${LIBS}) +install_targets(/bin dbus-daemon ) +install_files(/etc FILES ${config_DATA}) + +if (DBUS_SERVICE) + set (dbus_service_SOURCES + ${BUS_DIR}/bus-service-win.c + # TODO: add additional files + # ${BUS_DIR}/service-main.c + # ${BUS_SOURCES} + ) + + add_executable(dbus-service ${dbus_service_SOURCES} ) + target_link_libraries(dbus-service dbus-1 ${LIBS}) + install_targets(/bin dbus-service ) + +endif (DBUS_SERVICE) + +## note that TESTS has special meaning (stuff to use in make check) +## so if adding tests not to be run in make check, don't add them to +## TESTS +#if DBUS_BUILD_TESTS +#TESTS_ENVIRONMENT=DBUS_TEST_DATA=$(top_builddir)/test/data DBUS_TEST_HOMEDIR=$(top_builddir)/dbus +#TESTS=bus-test +#else +#TESTS= +#endif + +## we use noinst_PROGRAMS not check_PROGRAMS so that we build +## even when not doing "make check" +#noinst_PROGRAMS=$(TESTS) + +set (bus_test_SOURCES + ${BUS_SOURCES} + ${BUS_DIR}/test-main.c +) + +if (DBUS_BUILD_TESTS) + add_executable(bus-test ${bus_test_SOURCES}) + target_link_libraries(bus-test dbus-1 ${LIBS} ) + install_targets(/bin bus-test) + add_test(bus-test ${EXECUTABLE_OUTPUT_PATH}/bus-test ${CMAKE_SOURCE_DIR}/../test/data) +endif (DBUS_BUILD_TESTS) + +if(MSVC) + project_source_group(${GROUP_CODE} bus_test_SOURCES dummy) +endif(MSVC) + +## mop up the gcov files +#clean-local: +# /bin/rm *.bb *.bbg *.da *.gcov || true + +#install-data-hook: +# $(mkinstalldirs) $(DESTDIR)/$(localstatedir)/run/dbus +# $(mkinstalldirs) $(DESTDIR)/$(configdir)/system.d +# $(mkinstalldirs) $(DESTDIR)/$(datadir)/dbus-1/services + +##install_file(${configdir}/system.d FILE + + + +#### Init scripts fun +#SCRIPT_IN_FILES=messagebus.in +# rc.messagebus.in + +## Red Hat start +#if DBUS_INIT_SCRIPTS_RED_HAT + +#initddir=$(sysconfdir)/rc.d/init.d + +#initd_SCRIPTS= +# messagebus + +#endif +# ## Red Hat end + +## Slackware start +#if DBUS_INIT_SCRIPTS_SLACKWARE + +#initddir=$(sysconfdir)/rc.d/ + +#initd_SCRIPTS= +# rc.messagebus + +#endif +## Slackware end + +#MAN_IN_FILES=dbus-daemon.1.in +#man_MANS = dbus-daemon.1 + +#### Extra dist + +#EXTRA_DIST=$(CONFIG_IN_FILES) $(SCRIPT_IN_FILES) $(man_MANS) $(MAN_IN_FILES) diff --git a/cmake/bus/service.cmake b/cmake/bus/service.cmake new file mode 100644 index 00000000..25d17ff1 --- /dev/null +++ b/cmake/bus/service.cmake @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=org.freedektop.DBus.ServiceName +Exec=notepad diff --git a/cmake/bus/session.conf.cmake b/cmake/bus/session.conf.cmake new file mode 100644 index 00000000..6bba91e9 --- /dev/null +++ b/cmake/bus/session.conf.cmake @@ -0,0 +1,30 @@ +<!-- This configuration file controls the per-user-login-session message bus. + Add a session-local.conf and edit that rather than changing this + file directly. --> + +<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" + "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> +<busconfig> + <!-- Our well-known bus type, don't change this --> + <type>session</type> + + <listen>@DBUS_SESSION_BUS_DEFAULT_ADDRESS@</listen> + + <standard_session_servicedirs /> + + <policy context="default"> + <!-- Allow everything to be sent --> + <allow send_destination="*"/> + <!-- Allow everything to be received --> + <allow eavesdrop="true"/> + <!-- Allow anyone to own anything --> + <allow own="*"/> + </policy> + + <!-- This is included last so local configuration can override what's + in this standard file --> + <include ignore_missing="yes">session-local.conf</include> + + <include if_selinux_enabled="yes" selinux_root_relative="yes">contexts/dbus_contexts</include> + +</busconfig> diff --git a/cmake/bus/system.conf.cmake b/cmake/bus/system.conf.cmake new file mode 100644 index 00000000..ee85ecc4 --- /dev/null +++ b/cmake/bus/system.conf.cmake @@ -0,0 +1,62 @@ +<!-- This configuration file controls the systemwide message bus. + Add a system-local.conf and edit that rather than changing this + file directly. --> + +<!-- Note that there are any number of ways you can hose yourself + security-wise by screwing up this file; in particular, you + probably don't want to listen on any more addresses, add any more + auth mechanisms, run as a different user, etc. --> + +<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" + "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> +<busconfig> + + <!-- Our well-known bus type, do not change this --> + <type>system</type> + + <!-- Run as special user --> + <user>@DBUS_USER@</user> + + <!-- Fork into daemon mode --> + <fork/> + + <!-- Write a pid file --> + <pidfile>@DBUS_SYSTEM_PID_FILE@</pidfile> + + <!-- Only allow socket-credentials-based authentication --> + <auth>EXTERNAL</auth> + + <!-- Only listen on a local socket. (abstract=/path/to/socket + means use abstract namespace, don't really create filesystem + file; only Linux supports this. Use path=/whatever on other + systems.) --> + <listen>@DBUS_SYSTEM_BUS_DEFAULT_ADDRESS@</listen> + + <policy context="default"> + <!-- Deny everything then punch holes --> + <deny send_interface="*"/> + <deny receive_interface="*"/> + <deny own="*"/> + <!-- But allow all users to connect --> + <allow user="*"/> + <!-- Allow anyone to talk to the message bus --> + <!-- FIXME I think currently these allow rules are always implicit + even if they aren't in here --> + <allow send_destination="org.freedesktop.DBus"/> + <allow receive_sender="org.freedesktop.DBus"/> + <!-- valid replies are always allowed --> + <allow send_requested_reply="true"/> + <allow receive_requested_reply="true"/> + </policy> + + <!-- Config files are placed here that among other things, punch + holes in the above policy for specific services. --> + <includedir>system.d</includedir> + + <!-- This is included last so local configuration can override what's + in this standard file --> + <include ignore_missing="yes">system-local.conf</include> + + <include if_selinux_enabled="yes" selinux_root_relative="yes">contexts/dbus_contexts</include> + +</busconfig> |