[Buildroot] Building Cairo using DirectFB

Daniel Laird daniel.j.laird at nxp.com
Wed Aug 13 10:55:48 UTC 2008


The following patch add support for building DirectFB 1.0 or 1.2.X
It also stop auto adding packages and turns features on if people
have enabled them from menuconfig.

 Config.in   |   27 ++++++--
 directfb.mk |  200 +++++++++++++++++++++++++++++++++++++++---------------------
 2 files changed, 151 insertions(+), 76 deletions(-)

Signed-off-by: daniel.j.laird <daniel.j.laird at nxp.com>

diff -urN buildroot.orig/package/directfb/Config.in buildroot/package/directfb/Config.in
--- buildroot.orig/package/directfb/Config.in	2008-08-13 10:44:42.000000000 +0100
+++ buildroot/package/directfb/Config.in	2008-08-12 11:58:15.000000000 +0100
@@ -1,19 +1,34 @@
 config BR2_PACKAGE_DIRECTFB
 	bool "directfb"
-	select BR2_PACKAGE_ZLIB
-	select BR2_PACKAGE_JPEG
+	default n
 	select BR2_PACKAGE_LIBPNG
-	select BR2_PACKAGE_LIBSYSFS
-	select BR2_PACKAGE_FREETYPE
-	select BR2_PACKAGE_TSLIB
+	select BR2_PACKAGE_JPEG
 	help
 	  http://www.directfb.org/
 
+choice
+	prompt "DirectFB Version"
+	depends BR2_PACKAGE_DIRECTFB
+	default BR2_DIRECTFB_VERSION_1_0_X
+	help
+	  Select the version of DirectFB you wish to use.
+
+	config BR2_DIRECTFB_VERSION_1_0_X
+		bool "DirectFB 1.0.0"
+
+	config BR2_DIRECTFB_VERSION_1_2_X
+		bool "DirectFB 1.2.0"
+endchoice
+
+config BR2_DIRECTFB_VERSION
+	string
+	default "1.0.0"		if BR2_DIRECTFB_VERSION_1_0_X
+	default "1.2.0"		if BR2_DIRECTFB_VERSION_1_2_X
 
 config BR2_PACKAGE_DIRECTFB_MULTI
 	bool "directfb multi application"
+	default n
 	depends on BR2_PACKAGE_DIRECTFB
-	select BR2_PACKAGE_LINUX_FUSION
 	help
 	  Enable use of multiple concurrent DirectFB applications
 	  http://www.directfb.org/
diff -urN buildroot.orig/package/directfb/directfb.mk buildroot/package/directfb/directfb.mk
--- buildroot.orig/package/directfb/directfb.mk	2008-08-13 10:44:42.000000000 +0100
+++ buildroot/package/directfb/directfb.mk	2008-08-13 11:33:17.000000000 +0100
@@ -3,27 +3,65 @@
 # directfb
 #
 #############################################################
-#DIRECTFB_VERSION:=0.9.25.1
-#DIRECTFB_SITE:=http://www.directfb.org/downloads/Old
-DIRECTFB_VERSION:=1.0.1
 DIRECTFB_SITE:=http://www.directfb.org/downloads/Core
+DIRECTFB_CAT:=zcat
+DIRECTFB_VERSION=$(strip $(subst ",, $(BR2_DIRECTFB_VERSION)))
 DIRECTFB_SOURCE:=DirectFB-$(DIRECTFB_VERSION).tar.gz
-DIRECTFB_CAT:=$(ZCAT)
 DIRECTFB_DIR:=$(BUILD_DIR)/DirectFB-$(DIRECTFB_VERSION)
 
+DIRECTFB_CFLAGS:=$(TARGET_CFLAGS) -I. -I$(DIRECTFB_DIR)/include/fusion -I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include
+# What if we need large file support.
+ifeq ($(BR2_LARGEFILE),y)
+DIRECTFB_CFLAGS+=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
+endif
+
+# If we are building multi with the fusion kernel module then enable-multi.
 ifeq ($(BR2_PACKAGE_DIRECTFB_MULTI),y)
 DIRECTFB_MULTI:=--enable-multi
-DIRECTFB_FUSION:=linux-fusion
 else
 DIRECTFB_MULTI:=
-DIRECTFB_FUSION:=
 endif
+
+#If we have enabled freetype then build with support for it.
+ifeq ($(BR2_PACKAGE_FREETYPE),y)
+DIRECTFB_FREETYPE:=--enable-freetype
+else
+DIRECTFB_FREETYPE:=
+endif
+
+#If we have enabled sysfs then build with support for it
+ifeq ($(BR2_PACKAGE_LIBSYSFS),y)
+DIRECTFB_SYSFS:=--enable-sysfs
+else
+DIRECTFB_SYSFS:=
+endif
+
+#If we have enabled zlib then build with support for it
+ifeq ($(BR2_PACKAGE_ZLIB),y)
+DIRECTFB_ZLIB:=--enable-zlib
+else
+DIRECTFB_ZLIB:=
+endif
+
+# If no X server specified then disable X
 ifeq ($(BR2_PACKAGE_XSERVER_none),y)
 DIRECTFB_X:=--disable-x11
 else
 DIRECTFB_X:=--enable-x11
 endif
 
+#If libjpeg or libpng then build the imageproviders for them.
+ifeq ($(BR2_PACKAGE_JPEG),y)
+DIRECTFB_JPEG:=--enable-jpeg
+else
+DIRECTFB_JPEG:=--disable-jpeg 
+endif
+ifeq ($(BR2_PACKAGE_LIBPNG),y)
+DIRECTFB_PNG:=--enable-png
+else
+DIRECTFB_PNG:=--disable-png
+endif
+
 $(DL_DIR)/$(DIRECTFB_SOURCE):
 	$(WGET) -P $(DL_DIR) $(DIRECTFB_SITE)/$(DIRECTFB_SOURCE)
 
@@ -31,81 +69,103 @@
 
 $(DIRECTFB_DIR)/.unpacked: $(DL_DIR)/$(DIRECTFB_SOURCE)
 	$(DIRECTFB_CAT) $(DL_DIR)/$(DIRECTFB_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
-	toolchain/patch-kernel.sh $(DIRECTFB_DIR) package/directfb/ directfb\*.patch
-	touch $@
+	touch $(DIRECTFB_DIR)/.unpacked
 
-$(DIRECTFB_DIR)/.configured: $(DIRECTFB_DIR)/.unpacked
-	(cd $(DIRECTFB_DIR); rm -f config.cache; \
-		$(TARGET_CONFIGURE_OPTS) \
-		$(TARGET_CONFIGURE_ARGS) \
+$(DIRECTFB_DIR)/.patched:$(DIRECTFB_DIR)/.unpacked
+	cp -R package/directfb/overlay$(DIRECTFB_VERSION)/* $(DIRECTFB_DIR)
+	toolchain/patch-kernel.sh $(DIRECTFB_DIR) package/directfb/ libdir-la.patch
+	touch  $(DIRECTFB_DIR)/.patched
+
+$(DIRECTFB_DIR)/.configured: $(DIRECTFB_DIR)/.patched
+	(cd $(DIRECTFB_DIR); \
+	$(TARGET_CONFIGURE_OPTS) \
+	CFLAGS="$(DIRECTFB_CFLAGS)" \
+	LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib -Wl,--rpath-link -Wl,$(STAGING_DIR)/lib -Wl,--rpath-link -Wl,$(STAGING_DIR)/usr/lib" \
 	ac_cv_header_linux_wm97xx_h=no \
 	ac_cv_header_linux_sisfb_h=no \
-	ac_cv_header_asm_page_h=no \
 	./configure \
-		--target=$(GNU_TARGET_NAME) \
-		--host=$(GNU_TARGET_NAME) \
-		--build=$(GNU_HOST_NAME) \
-		--prefix=/usr \
-		--exec-prefix=/usr \
-		--bindir=/bin \
-		--sbindir=/sbin \
-		--libdir=/lib \
-		--libexecdir=/lib \
-		--sysconfdir=/etc \
-		--datadir=/share \
-		--localstatedir=/var \
-		--includedir=/include \
-		--mandir=/man \
-		--infodir=/info \
-		--with-gfxdrivers=cle266,unichrome \
-		--enable-shared \
-		$(DIRECTFB_MULTI) \
-		$(DIRECTFB_X) \
-		--enable-jpeg \
-		--enable-png \
-		--enable-linux-input \
-		--enable-zlib \
-		--enable-freetype \
-		--disable-sysfs \
-		--disable-sdl \
-		--disable-vnc \
-		--disable-video4linux \
-		--disable-video4linux2 \
-		--enable-fusion )
-	touch $@
+	--target=$(GNU_TARGET_NAME) \
+	--host=$(GNU_TARGET_NAME) \
+	--build=$(GNU_HOST_NAME) \
+	--prefix=/usr \
+	--exec-prefix=/usr \
+	--bindir=/usr/bin \
+	--sbindir=/usr/sbin \
+	--libdir=/usr/lib \
+	--libexecdir=/usr/lib \
+	--sysconfdir=/etc \
+	--datadir=/usr/share \
+	--localstatedir=/var \
+	--includedir=/usr/include \
+	--mandir=/usr/man \
+	--infodir=/usr/info \
+	--with-gfxdrivers=cle266,unichrome \
+	--with-inputdrivers=linuxinput \
+	--disable-sdl \
+	--disable-vnc \
+	--disable-video4linux \
+	--disable-video4linux2 \
+	--enable-gif \
+	$(DIRECTFB_JPEG) \
+	$(DIRECTFB_PNG) \
+	$(DIRECTFB_ZLIB) \
+	$(DIRECTFB_FREETYPE) \
+	$(DIRECTFB_SYSFS) \
+	$(DIRECTFB_X) \
+	$(DIRECTFB_MULTI) \
+	);
+	touch  $(DIRECTFB_DIR)/.configured
 
 $(DIRECTFB_DIR)/.compiled: $(DIRECTFB_DIR)/.configured
-	$(MAKE) PATH=$(STAGING_DIR)/usr/lib:$(PATH) \
-		$(TARGET_CONFIGURE_OPTS) \
-		-C $(DIRECTFB_DIR)
+	$(MAKE) -C $(DIRECTFB_DIR)
 	touch $(DIRECTFB_DIR)/.compiled
 
 $(STAGING_DIR)/usr/lib/libdirectfb.so: $(DIRECTFB_DIR)/.compiled
-	$(MAKE) DESTDIR=$(STAGING_DIR)/usr -C $(DIRECTFB_DIR) install
-	$(SED) "s,^libdir=.*,libdir=\'$(STAGING_DIR)/usr/lib\',g" \
-		$(STAGING_DIR)/usr/lib/libdirectfb.la
-	$(SED) "s,/lib/libfusion.la,$(STAGING_DIR)/usr/lib/libfusion.la,g" \
-		$(STAGING_DIR)/usr/lib/libdirectfb.la
-	$(SED) "s,/lib/libdirect.la,$(STAGING_DIR)/usr/lib/libdirect.la,g" \
-		$(STAGING_DIR)/usr/lib/libdirectfb.la
-	$(SED) "s,^libdir=.*,libdir=\'$(STAGING_DIR)/usr/lib\',g" \
-		$(STAGING_DIR)/usr/lib/libdirect.la
-	$(SED) "s,^libdir=.*,libdir=\'$(STAGING_DIR)/usr/lib\',g" \
-		$(STAGING_DIR)/usr/lib/libfusion.la
-	$(SED) "s,/lib/libdirect.la,$(STAGING_DIR)/usr/lib/libdirect.la,g" \
-		$(STAGING_DIR)/usr/lib/libfusion.la
-	touch -c $@
+	$(MAKE) DESTDIR=$(STAGING_DIR) -C $(DIRECTFB_DIR) install
+	$(SED) "/^libdir=/ s,/usr/lib,$(STAGING_DIR)/usr/lib,g" $(STAGING_DIR)/usr/lib/libdirectfb.la
+	$(SED) "/^dependency_libs=/ s,/usr/lib,$(STAGING_DIR)/usr/lib,g" $(STAGING_DIR)/usr/lib/libdirectfb.la
+	$(SED) "/^libdir=/ s,/usr/lib,$(STAGING_DIR)/usr/lib,g" $(STAGING_DIR)/usr/lib/libdirect.la
+	$(SED) "/^dependency_libs=/ s,/usr/lib,$(STAGING_DIR)/usr/lib,g" $(STAGING_DIR)/usr/lib/libdirect.la
+	$(SED) "/^libdir=/ s,/usr/lib,$(STAGING_DIR)/usr/lib,g" $(STAGING_DIR)/usr/lib/libfusion.la
+	$(SED) "/^dependency_libs=/ s,/usr/lib,$(STAGING_DIR)/usr/lib,g" $(STAGING_DIR)/usr/lib/libfusion.la
+	touch -c $(STAGING_DIR)/usr/lib/libdirectfb.so
 
 $(TARGET_DIR)/usr/lib/libdirectfb.so: $(STAGING_DIR)/usr/lib/libdirectfb.so
-	cp -dpf $(STAGING_DIR)/usr/lib/libdirect* $(STAGING_DIR)/usr/lib/libfusion* $(TARGET_DIR)/usr/lib/
-	cp -rdpf $(STAGING_DIR)/usr/lib/directfb-* $(TARGET_DIR)/usr/lib/
-	-$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) \
-		$(TARGET_DIR)/usr/lib/libdirectfb.so \
-		$(TARGET_DIR)/usr/lib/libdirect.so \
-		$(TARGET_DIR)/usr/lib/libfusion.so
-
-directfb: uclibc jpeg libpng freetype libsysfs tslib $(DIRECTFB_FUSION) \
-		$(TARGET_DIR)/usr/lib/libdirectfb.so
+	mkdir -p $(TARGET_DIR)/usr/lib
+	mkdir -p $(TARGET_DIR)/usr/bin
+	mkdir -p $(TARGET_DIR)/usr/share/directfb-$(DIRECTFB_VERSION)
+	# Copy in the useful DirectFB apps
+	$(INSTALL) $(STAGING_DIR)/usr/bin/$(GNU_TARGET_NAME)-dfbdump $(TARGET_DIR)/usr/bin/dfbdump
+	$(INSTALL) $(STAGING_DIR)/usr/bin/$(GNU_TARGET_NAME)-dfbg $(TARGET_DIR)/usr/bin/dfbg
+	$(INSTALL) $(STAGING_DIR)/usr/bin/$(GNU_TARGET_NAME)-dfbinfo $(TARGET_DIR)/usr/bin/dfbinfo
+	$(INSTALL) $(STAGING_DIR)/usr/bin/$(GNU_TARGET_NAME)-dfblayer $(TARGET_DIR)/usr/bin/dfblayer
+	$(INSTALL) $(STAGING_DIR)/usr/bin/$(GNU_TARGET_NAME)-dfbscreen $(TARGET_DIR)/usr/bin/dfbscreen
+	$(INSTALL) $(STAGING_DIR)/usr/bin/$(GNU_TARGET_NAME)-dfbinput $(TARGET_DIR)/usr/bin/dfbinput
+	# Copy in the DirectFB libraries
+	cp -dpf $(STAGING_DIR)/usr/lib/libdirect* $(TARGET_DIR)/usr/lib/
+	cp -dpf $(STAGING_DIR)/usr/lib/libfusion* $(TARGET_DIR)/usr/lib/
+	cp -rdpf $(STAGING_DIR)/usr/lib/directfb-1.* $(TARGET_DIR)/usr/lib/
+	# Copy in the DirectFB cursor
+	cp -rdpf $(STAGING_DIR)/usr/share/directfb-$(DIRECTFB_VERSION) $(TARGET_DIR)/usr/share/
+	# Strip the libraries
+	-$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/bin/dfbdump
+	-$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/bin/dfbg
+	-$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/bin/dfbinfo
+	-$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/bin/dfblayer
+	-$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/bin/dfbscreen
+	-$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/bin/dfbinput
+	-$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/lib/libdirect*.so
+	-$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/lib/libfusion*.so
+
+directfb: uclibc \
+	$(if $(BR2_PACKAGE_FREETYPE), freetype) \
+	$(if $(BR2_PACKAGE_ZLIB), zlib) \
+	$(if $(BR2_PACKAGE_LIBPNG), libpng) \
+	$(if $(BR2_PACKAGE_JPEG), jpeg) \
+	$(if $(BR2_PACKAGE_LIBSYSFS), libsysfs) \
+	$(if $(BR2_PACKAGE_TSLIB), tslib) \
+	$(if $(BR2_PACKAGE_DIRECTFB_MULTI), linux-fusion) \
+	$(TARGET_DIR)/usr/lib/libdirectfb.so
 
 directfb-clean:
 	-$(MAKE) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(DIRECTFB_DIR) uninstall




More information about the buildroot mailing list