mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-06-08 23:58:25 +02:00
It's a minor security benefit, but not automatically beneficial (it
enables ASLR, but breaks prelinking, some buggy toolchains, and some gdb
versions). Distributions who know their infrastructure works well can
enable it just as easily via
./configure CFLAGS="-fPIE" LDFLAGS="-pie"
without extra support from us, and that's a generic solution applicable to
many packages.
Similarly, don't force libdbus and libdbus-internal to be PIC: libtool
knows better than we do whether that's necessary/beneficial on a
particular platform.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=16621
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=27215
Bug-NB: NB#171940
Reviewed-by: Colin Walters <walters@verbum.org>
274 lines
6.7 KiB
Makefile
274 lines
6.7 KiB
Makefile
configdir=$(sysconfdir)/dbus-1
|
|
dbus_daemon_execdir = $(DBUS_DAEMONDIR)
|
|
|
|
INCLUDES = -I$(top_srcdir) \
|
|
$(DBUS_BUS_CFLAGS) \
|
|
-DDBUS_SYSTEM_CONFIG_FILE=\""$(configdir)/system.conf"\" \
|
|
-DDBUS_COMPILATION
|
|
|
|
EFENCE=
|
|
|
|
CONFIG_IN_FILES= \
|
|
session.conf.in \
|
|
system.conf.in \
|
|
org.freedesktop.dbus-session.plist.in
|
|
|
|
config_DATA= \
|
|
session.conf \
|
|
system.conf
|
|
|
|
if DBUS_ENABLE_LAUNCHD
|
|
agentdir=$(LAUNCHD_AGENT_DIR)
|
|
agent_DATA=org.freedesktop.dbus-session.plist
|
|
endif
|
|
|
|
if DBUS_USE_LIBXML
|
|
XML_SOURCES=config-loader-libxml.c
|
|
endif
|
|
if DBUS_USE_EXPAT
|
|
XML_SOURCES=config-loader-expat.c
|
|
endif
|
|
|
|
if DBUS_BUS_ENABLE_KQUEUE
|
|
DIR_WATCH_SOURCE=dir-watch-kqueue.c
|
|
else
|
|
if DBUS_BUS_ENABLE_INOTIFY
|
|
DIR_WATCH_SOURCE=dir-watch-inotify.c
|
|
else
|
|
if DBUS_BUS_ENABLE_DNOTIFY_ON_LINUX
|
|
DIR_WATCH_SOURCE=dir-watch-dnotify.c
|
|
else
|
|
DIR_WATCH_SOURCE=dir-watch-default.c
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
BUS_SOURCES= \
|
|
activation.c \
|
|
activation.h \
|
|
activation-exit-codes.h \
|
|
bus.c \
|
|
bus.h \
|
|
config-parser.c \
|
|
config-parser.h \
|
|
config-parser-common.c \
|
|
config-parser-common.h \
|
|
connection.c \
|
|
connection.h \
|
|
desktop-file.c \
|
|
desktop-file.h \
|
|
$(DIR_WATCH_SOURCE) \
|
|
dir-watch.h \
|
|
dispatch.c \
|
|
dispatch.h \
|
|
driver.c \
|
|
driver.h \
|
|
expirelist.c \
|
|
expirelist.h \
|
|
policy.c \
|
|
policy.h \
|
|
selinux.h \
|
|
selinux.c \
|
|
services.c \
|
|
services.h \
|
|
signals.c \
|
|
signals.h \
|
|
test.c \
|
|
test.h \
|
|
utils.c \
|
|
utils.h \
|
|
$(XML_SOURCES)
|
|
|
|
dbus_daemon_SOURCES= \
|
|
$(BUS_SOURCES) \
|
|
main.c
|
|
|
|
dbus_daemon_CPPFLAGS = -DDBUS_STATIC_BUILD
|
|
dbus_daemon_LDADD= \
|
|
$(top_builddir)/dbus/libdbus-internal.la \
|
|
$(EFENCE) \
|
|
$(DBUS_BUS_LIBS)
|
|
|
|
dbus_daemon_LDFLAGS=@R_DYNAMIC_LDFLAG@ @SECTION_LDFLAGS@
|
|
|
|
LAUNCH_HELPER_SOURCES= \
|
|
$(XML_SOURCES) \
|
|
config-parser-common.c \
|
|
config-parser-common.h \
|
|
config-parser-trivial.c \
|
|
config-parser-trivial.h \
|
|
desktop-file.c \
|
|
desktop-file.h \
|
|
utils.c \
|
|
utils.h \
|
|
activation-exit-codes.h \
|
|
activation-helper.h \
|
|
activation-helper.c
|
|
|
|
## This is the installed launch helper with the setuid checks
|
|
dbus_daemon_launch_helper_SOURCES= \
|
|
activation-helper-bin.c \
|
|
$(LAUNCH_HELPER_SOURCES)
|
|
|
|
dbus_daemon_launch_helper_CPPFLAGS = -DDBUS_STATIC_BUILD
|
|
dbus_daemon_launch_helper_LDADD= \
|
|
$(top_builddir)/dbus/libdbus-internal.la \
|
|
$(DBUS_LAUNCHER_LIBS)
|
|
|
|
dbus_daemon_launch_helper_LDFLAGS=@R_DYNAMIC_LDFLAG@ @SECTION_LDFLAGS@
|
|
|
|
## we build another binary so we can do the launch testing without root privs.
|
|
## DO NOT INSTALL THIS FILE
|
|
dbus_daemon_launch_helper_test_SOURCES= \
|
|
activation-helper-bin.c \
|
|
$(LAUNCH_HELPER_SOURCES)
|
|
|
|
dbus_daemon_launch_helper_test_LDADD= \
|
|
$(top_builddir)/dbus/libdbus-internal.la \
|
|
$(DBUS_LAUNCHER_LIBS)
|
|
|
|
dbus_daemon_launch_helper_test_LDFLAGS=@R_DYNAMIC_LDFLAG@ @SECTION_LDFLAGS@
|
|
dbus_daemon_launch_helper_test_CPPFLAGS= -DDBUS_STATIC_BUILD \
|
|
-DACTIVATION_LAUNCHER_TEST
|
|
|
|
## we build yet another binary so we can do the OOM tests
|
|
## DO NOT INSTALL THIS FILE
|
|
bus_test_launch_helper_SOURCES= \
|
|
test-launch-helper.c \
|
|
$(LAUNCH_HELPER_SOURCES)
|
|
|
|
bus_test_launch_helper_LDADD= \
|
|
$(top_builddir)/dbus/libdbus-internal.la \
|
|
$(DBUS_LAUNCHER_LIBS)
|
|
|
|
bus_test_launch_helper_LDFLAGS=@R_DYNAMIC_LDFLAG@ @SECTION_LDFLAGS@
|
|
bus_test_launch_helper_CPPFLAGS= -DDBUS_STATIC_BUILD \
|
|
-DACTIVATION_LAUNCHER_TEST \
|
|
-DACTIVATION_LAUNCHER_DO_OOM
|
|
|
|
## we use noinst_PROGRAMS not check_PROGRAMS so that we build
|
|
## even when not doing "make check"
|
|
noinst_PROGRAMS = $(TESTS)
|
|
dbus_daemon_exec_PROGRAMS = dbus-daemon
|
|
libexec_PROGRAMS = dbus-daemon-launch-helper
|
|
|
|
## 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
|
|
TESTS =
|
|
|
|
if DBUS_BUILD_TESTS
|
|
TESTS_ENVIRONMENT=DBUS_TEST_DATA=$(top_builddir)/test/data DBUS_TEST_HOMEDIR=$(top_builddir)/dbus DBUS_FATAL_WARNINGS=1 DBUS_BLOCK_ON_ABORT=1
|
|
TESTS += bus-test bus-test-system
|
|
|
|
if DBUS_UNIX
|
|
TESTS += bus-test-launch-helper
|
|
# this is used by the tests but is not,itself, a test
|
|
noinst_PROGRAMS += dbus-daemon-launch-helper-test
|
|
endif DBUS_UNIX
|
|
|
|
endif DBUS_BUILD_TESTS
|
|
|
|
bus_test_system_SOURCES= \
|
|
$(XML_SOURCES) \
|
|
config-parser-common.c \
|
|
config-parser-common.h \
|
|
config-parser-trivial.c \
|
|
config-parser-trivial.h \
|
|
utils.c \
|
|
utils.h \
|
|
test-system.c
|
|
|
|
bus_test_system_CPPFLAGS = -DDBUS_STATIC_BUILD
|
|
bus_test_system_LDADD=$(top_builddir)/dbus/libdbus-internal.la $(DBUS_BUS_LIBS)
|
|
bus_test_system_LDFLAGS=@R_DYNAMIC_LDFLAG@
|
|
|
|
bus_test_SOURCES= \
|
|
$(BUS_SOURCES) \
|
|
test-main.c
|
|
|
|
bus_test_CPPFLAGS = -DDBUS_STATIC_BUILD
|
|
bus_test_LDADD=$(top_builddir)/dbus/libdbus-internal.la $(DBUS_BUS_LIBS)
|
|
bus_test_LDFLAGS=@R_DYNAMIC_LDFLAG@
|
|
|
|
## 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)$(configdir)/session.d
|
|
$(mkinstalldirs) $(DESTDIR)$(datadir)/dbus-1/services
|
|
$(mkinstalldirs) $(DESTDIR)$(datadir)/dbus-1/system-services
|
|
if HAVE_SYSTEMD
|
|
# Install dbus.socket as default implementation of a D-Bus stack
|
|
$(mkinstalldirs) $(DESTDIR)$(systemdsystemunitdir)/dbus.target.wants
|
|
$(LN_S) ../dbus.socket $(DESTDIR)$(systemdsystemunitdir)/dbus.target.wants/dbus.socket
|
|
# Unconditionally enable D-Bus on systemd installations
|
|
$(mkinstalldirs) $(DESTDIR)$(systemdsystemunitdir)/sockets.target.wants
|
|
$(LN_S) ../dbus.socket $(DESTDIR)$(systemdsystemunitdir)/sockets.target.wants/dbus.socket
|
|
$(mkinstalldirs) $(DESTDIR)$(systemdsystemunitdir)/multi-user.target.wants
|
|
$(LN_S) ../dbus.service $(DESTDIR)$(systemdsystemunitdir)/multi-user.target.wants/dbus.service
|
|
endif
|
|
|
|
if DBUS_UNIX
|
|
install-exec-hook:
|
|
if test `id -u` -eq 0; then \
|
|
chown root:$(DBUS_USER) $(DESTDIR)$(libexecdir)/dbus-daemon-launch-helper$(EXEEXT); \
|
|
chmod 4750 $(DESTDIR)$(libexecdir)/dbus-daemon-launch-helper$(EXEEXT); \
|
|
else \
|
|
echo "Not installing $(DESTDIR)$(libexecdir)/dbus-daemon-launch-helper binary setuid!"; \
|
|
echo "You'll need to manually set permissions to root:$(DBUS_USER) and permissions 4750"; \
|
|
fi
|
|
endif
|
|
|
|
#### Init scripts fun
|
|
SCRIPT_IN_FILES=messagebus.in \
|
|
messagebus-config.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
|
|
|
|
## Cygwin start
|
|
if DBUS_INIT_SCRIPTS_CYGWIN
|
|
|
|
bin_SCRIPTS= \
|
|
messagebus-config
|
|
|
|
endif
|
|
## Cygwin end
|
|
|
|
if HAVE_SYSTEMD
|
|
SCRIPT_IN_FILES += \
|
|
dbus.service.in \
|
|
dbus.socket.in
|
|
|
|
systemdsystemunit_DATA = \
|
|
dbus.service \
|
|
dbus.socket
|
|
endif
|
|
|
|
#### Extra dist
|
|
|
|
EXTRA_DIST=$(CONFIG_IN_FILES) $(SCRIPT_IN_FILES)
|