kumquat-buildroot/package/dbus/dbus.mk
Vicente Olivert Riera 717236da0f dbus: use -pthread instead of -lpthread
This fixes a problem in other packages when they link against dbus. For
instance, with the dnsmasq package:

/buildroot/output/host/usr/bin/mipsel-ctng-linux-uclibc-gcc --static
-lidn  -o dnsmasq cache.o rfc1035.o util.o option.o forward.o network.o
dnsmasq.o dhcp.o lease.o rfc2131.o netlink.o dbus.o bpf.o helper.o
tftp.o log.o conntrack.o dhcp6.o rfc3315.o dhcp-common.o outpacket.o
radv.o slaac.o auth.o ipset.o domain.o dnssec.o blockdata.o
-L/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/sysroot/usr/lib
-ldbus-1 -lpthread
-L/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/sysroot/usr/lib
-lidn -liconv
-L/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/sysroot/usr/lib
-llua -lm     -Wl,-Bstatic -lhogweed
-L/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/sysroot/usr/lib
-lnettle -lgmp   -Wl,-Bdynamic -Wl,-Bstatic -lgmp -Wl,-Bdynamic
/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libpthread.a(init.os):
In function `__pthread_initialize_minimal_internal':
init.c:(.text+0x26c): undefined reference to `__libc_setup_tls'
collect2: error: ld returned 1 exit status
make[2]: *** [dnsmasq] Error 1
make[2]: Leaving directory
`/buildroot/output/build/dnsmasq-2.71/src'

When dnsmasq tries to link against dbus it checks the dbus pkgconfig
file to obtain the LIBS that it need to pass to the linker. In the dbus
.pc file you have "-ldbus-1 -lpthread" because -lpthread was used when
building dbus. If you use -pthread when you build dbus, then you will
have -pthread in the dbus .pc file as well.

-lpthread means that we want to link with a library called pthread.
-pthread is a compiler option which will do whatever is needed to be
done to compile with the pthreads standards so that it works.

Fixes:
  http://autobuild.buildroot.net/results/7cd/7cdab3b6f74dbfde965300a51e58a377ba30602b/

Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2014-07-01 13:30:11 +02:00

106 lines
2.6 KiB
Makefile

################################################################################
#
# dbus
#
################################################################################
DBUS_VERSION = 1.8.4
DBUS_SITE = http://dbus.freedesktop.org/releases/dbus
DBUS_LICENSE = AFLv2.1 GPLv2+
DBUS_LICENSE_FILES = COPYING
DBUS_INSTALL_STAGING = YES
define DBUS_PERMISSIONS
/usr/libexec/dbus-daemon-launch-helper f 4755 0 0 - - - - -
endef
DBUS_DEPENDENCIES = host-pkgconf expat
DBUS_CONF_ENV = ac_cv_have_abstract_sockets=yes
DBUS_CONF_OPT = --with-dbus-user=dbus \
--disable-tests \
--disable-asserts \
--enable-abstract-sockets \
--disable-selinux \
--disable-xml-docs \
--disable-doxygen-docs \
--disable-dnotify \
--localstatedir=/var \
--with-xml=expat \
--with-system-socket=/var/run/dbus/system_bus_socket \
--with-system-pid-file=/var/run/messagebus.pid
define DBUS_USERS
dbus -1 dbus -1 * /var/run/dbus - dbus DBus messagebus user
endef
ifeq ($(BR2_PREFER_STATIC_LIB),y)
DBUS_CONF_OPT += LIBS='-pthread'
endif
ifeq ($(BR2_microblaze),y)
# microblaze toolchain doesn't provide inotify_rm_* but does have sys/inotify.h
DBUS_CONF_OPT += --disable-inotify
endif
ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y)
DBUS_CONF_OPT += --with-x
DBUS_DEPENDENCIES += xlib_libX11
else
DBUS_CONF_OPT += --without-x
endif
ifeq ($(BR2_PACKAGE_SYSTEMD),y)
DBUS_CONF_OPT += --with-systemdsystemunitdir=/lib/systemd/system
endif
# fix rebuild (dbus makefile errors out if /var/lib/dbus is a symlink)
define DBUS_REMOVE_VAR_LIB_DBUS
rm -rf $(TARGET_DIR)/var/lib/dbus
endef
DBUS_POST_BUILD_HOOKS += DBUS_REMOVE_VAR_LIB_DBUS
define DBUS_REMOVE_DEVFILES
rm -rf $(TARGET_DIR)/usr/lib/dbus-1.0
endef
DBUS_POST_INSTALL_TARGET_HOOKS += DBUS_REMOVE_DEVFILES
define DBUS_INSTALL_TARGET_FIXUP
mkdir -p $(TARGET_DIR)/var/lib
rm -rf $(TARGET_DIR)/var/lib/dbus
ln -sf /tmp/dbus $(TARGET_DIR)/var/lib/dbus
endef
DBUS_POST_INSTALL_TARGET_HOOKS += DBUS_INSTALL_TARGET_FIXUP
define DBUS_INSTALL_INIT_SYSV
$(INSTALL) -m 0755 -D package/dbus/S30dbus \
$(TARGET_DIR)/etc/init.d/S30dbus
endef
HOST_DBUS_DEPENDENCIES = host-pkgconf host-expat
HOST_DBUS_CONF_OPT = \
--with-dbus-user=dbus \
--disable-tests \
--disable-asserts \
--enable-abstract-sockets \
--disable-selinux \
--disable-xml-docs \
--disable-doxygen-docs \
--enable-dnotify \
--without-x \
--with-xml=expat
# dbus for the host
DBUS_HOST_INTROSPECT=$(HOST_DBUS_DIR)/introspect.xml
HOST_DBUS_GEN_INTROSPECT = \
$(HOST_DIR)/usr/bin/dbus-daemon --introspect > $(DBUS_HOST_INTROSPECT)
HOST_DBUS_POST_INSTALL_HOOKS += HOST_DBUS_GEN_INTROSPECT
$(eval $(autotools-package))
$(eval $(host-autotools-package))