TARGET_CONFIGURE_OPTS+=CXX=""
 endif
 
+# X Windowing system
+
+XSERVER:=
+ifeq ($(strip $(BR2_PACKAGE_TINYX)),y)
+XSERVER+=tinyx
+endif
+ifeq ($(strip $(BR2_PACKAGE_XORG)),y)
+XSERVER+=xorg
+endif
+ifeq ($(strip $(BR2_PACKAGE_XGGI)),y)
+XSERVER+=xggi
+endif
+
 
        $(STRIP) --strip-unneeded $(TARGET_DIR)/lib/libcairo.so.2.*
        touch -c $(TARGET_DIR)/lib/libcairo.so.2.9.3
 
-cairo: uclibc gettext libintl pkgconfig libglib2 xorg $(TARGET_DIR)/lib/libcairo.so.2.9.3
+cairo: uclibc gettext libintl pkgconfig libglib2 $(XSERVER) $(TARGET_DIR)/lib/libcairo.so.2.9.3
 
 cairo-clean:
        rm -f $(TARGET_DIR)/lib/$(CAIRO_BINARY)
 
        $(MAKE) -C $(DILLO_DIR) DESTDIR=$(TARGET_DIR) install
        touch $(DILLO_DIR)/.installed
 
-dillo: uclibc xorg libglib12 libgtk12 jpeg libpng $(DILLO_DIR)/.installed
+dillo: uclibc $(XSERVER) libglib12 libgtk12 jpeg libpng $(DILLO_DIR)/.installed
 
 dillo-source: $(DL_DIR)/$(DILLO_SOURCE)
 
 
        $(STRIP) --strip-unneeded $(TARGET_DIR)/lib/libgdk-1.2.so.0.9.1
        touch -c $(TARGET_DIR)/lib/libgtk-1.2.so.0.9.1
 
-libgtk12: uclibc libglib12 xorg $(TARGET_DIR)/lib/libgtk-1.2.so.0.9.1
+libgtk12: uclibc libglib12 $(XSERVER) $(TARGET_DIR)/lib/libgtk-1.2.so.0.9.1
 
 libgtk12-clean:
        rm -f $(TARGET_DIR)/lib/libgtk* $(TARGET_DIR)/lib/libgdk*
 
        cp package/libgtk2/gtk.immodules $(TARGET_DIR)/etc/gtk-2.0
        touch -c $(TARGET_DIR)/lib/libgtk-x11-2.0.so.0
 
-libgtk2: uclibc png jpeg tiff xorg libglib2 \
+libgtk2: uclibc png jpeg tiff $(XSERVER) libglib2 \
        cairo pango atk $(TARGET_DIR)/lib/libgtk-x11-2.0.so.0
 
 libgtk2-clean:
 
        (cd $(TARGET_DIR)/usr/share/themes; rm -rf Atlanta; ln -s Clearlooks Atlanta)
        cp -a package/metacity/Xsession $(TARGET_DIR)/etc/X11/
 
-metacity: uclibc zlib xorg libgtk2 $(TARGET_DIR)/lib/*metacity*.so
+metacity: uclibc zlib $(XSERVER) libgtk2 $(TARGET_DIR)/lib/*metacity*.so
 
 metacity-clean:
        -$(MAKE) -C $(METACITY_DIR) clean
 
        cp package/pango/pangox.aliases $(TARGET_DIR)/etc/pango/
        touch -c $(TARGET_DIR)/lib/libpango-1.0.so.0
 
-pango: uclibc gettext libintl pkgconfig libglib2 xorg cairo \
+pango: uclibc gettext libintl pkgconfig libglib2 $(XSERVER) cairo \
        $(TARGET_DIR)/lib/libpango-1.0.so.0
 
 pango-clean:
 
        cp $(RDESKTOP_DIR)/rdesktop $(TARGET_DIR)/usr/bin
        touch $(RDESKTOP_DIR)/.installed
 
-rdesktop: uclibc xorg openssl $(RDESKTOP_DIR)/.installed
+rdesktop: uclibc openssl $(XSERVER) $(RDESKTOP_DIR)/.installed
 
 rdesktop-source: $(DL_DIR)/$(RDESKTOP_SOURCE)
 
 
        cp -f $(RXVT_BINARY) $(TARGET_DIR)/usr/X11R6/bin
        (cd $(TARGET_DIR)/usr/X11R6/bin; ln -fs rxvt xterm)
 
-ifeq ($(strip $(BR2_PACKAGE_TINYX)),y)
-rxvt: tinyx $(TARGET_DIR)/usr/X11R6/bin/rxvt
-endif
-ifeq ($(strip $(BR2_PACKAGE_XORG)),y)
-rxvt: xorg $(TARGET_DIR)/usr/X11R6/bin/rxvt
-endif
+rxvt: $(XSERVER) $(TARGET_DIR)/usr/X11R6/bin/rxvt
 
 rxvt-clean:
        rm -f $(TARGET_DIR)/usr/X11R6/bin/rxvt
 
 DEJAVU_DIR:=$(BUILD_DIR)/dejavu-ttf-$(DEJAVU_VERSION)
 
 # Install Xorg xserver
-XSERVER:=Xorg
-XORG_XSERVER:=$(XORG_DIR)/programs/Xserver/$(XSERVER)
-TARGET_XSERVER:=$(XORG_BINX)/$(XSERVER)
+XSERVER_BINARY:=Xorg
+XORG_XSERVER:=$(XORG_DIR)/programs/Xserver/$(XSERVER_BINARY)
+TARGET_XSERVER:=$(XORG_BINX)/$(XSERVER_BINARY)
 
 # figure out Xorg's idea of corresponding architecture name
 ifeq ($(BR2_alpha),y)
                $(STRIP) $(XORG_PROGS)/$$file || /bin/true ; \
        done
        cp $(XORG_XSERVER) $(TARGET_XSERVER)
-       (cd $(XORG_BINX); ln -snf $(XSERVER) X)
+       (cd $(XORG_BINX); ln -snf $(XSERVER_BINARY) X)
        $(STRIP) $(TARGET_XSERVER)
        mkdir -p $(XORG_LIBX)/modules
        cp -LRf $(XORG_DIR)/exports/lib/modules/ $(XORG_LIBX)/