config BR2_PACKAGE_DBUS
        bool "dbus"
        default n
-       select BR2_PACKAGE_EXPAT
-       select BR2_PACKAGE_LIBXML2
        help
          The D-Bus message bus system.
 
          http://www.freedesktop.org/wiki/Software/dbus
+
+choice
+       prompt "XML library to use"
+       depends BR2_PACKAGE_DBUS
+       default BR2_DBUS_LIBXML2 if BR2_PACKAGE_LIBXML2
+       default BR2_DBUS_EXPAT
+       help
+         Select the XML library to use with D-Bus. Select Expat
+         unless you have specific reasons for using libxml2 as
+         Expat is significant smaller.
+
+       config BR2_DBUS_EXPAT
+              bool "Expat"
+              select BR2_PACKAGE_EXPAT
+
+       config BR2_DBUS_LIBXML2
+              bool "libxml2"
+              select BR2_PACKAGE_LIBXML2
+
+endchoice
 
 DBUS_BINARY:=bus/dbus-daemon
 DBUS_TARGET_BINARY:=usr/bin/dbus-daemon
 
+ifeq ($(strip $(BR2_DBUS_EXPAT)),y)
+DBUS_XML:=expat
+DBUS_XML_DEP:=expat
+else
+DBUS_XML:=libxml
+DBUS_XML_DEP:=libxml2-headers
+endif
+
 $(DL_DIR)/$(DBUS_SOURCE):
        $(WGET) -P $(DL_DIR) $(DBUS_SITE)/$(DBUS_SOURCE)
 
                --disable-static \
                --enable-dnotify \
                --without-x \
-               --without-xml \
+               --with-xml=$(DBUS_XML) \
                --with-system-socket=/var/run/dbus/system_bus_socket \
                --with-system-pid-file=/var/run/messagebus.pid \
        )
        touch $@
 
 $(DBUS_DIR)/$(DBUS_BINARY): $(DBUS_DIR)/.configured
-       $(MAKE) DBUS_BUS_LIBS="$(STAGING_DIR)/usr/lib/libexpat.so $(STAGING_DIR)/usr/lib/libxml2.so" -C $(DBUS_DIR) all
+       $(MAKE) -C $(DBUS_DIR) all
 
 $(STAGING_DIR)/usr/lib/libdbus-1.so: $(DBUS_DIR)/$(DBUS_BINARY)
        $(MAKE) DESTDIR=$(STAGING_DIR) -C $(DBUS_DIR)/dbus install
        rmdir --ignore-fail-on-non-empty $(TARGET_DIR)/usr/share
        rm -rf $(TARGET_DIR)/etc/rc.d
 
-dbus: uclibc expat libxml2-headers $(TARGET_DIR)/$(DBUS_TARGET_BINARY)
+dbus: uclibc $(DBUS_XML_DEP) $(TARGET_DIR)/$(DBUS_TARGET_BINARY)
 
 dbus-clean:
        rm -f $(TARGET_DIR)/etc/dbus-1/session.conf