From 54d64798e1e14b526c3cc1142961972cff9f1e8a Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Thu, 13 May 2010 22:21:08 +0200 Subject: [PATCH 01/19] Add a BR2_NEEDS_GETTEXT option When using an external toolchain that uses the glibc or eglibc C libraries, compiling a separate gettext and libintl is not needed and is even a source of confusion, causing build failures. These build failures are due to the fact that when libintl is compiled, it replaces the C library libintl.h by its own, which does #define gettext libintl_gettext. Then, when packages want to use gettext, autoconf realize that gettext is available in the C library and therefore do not add -lintl to the LDFLAGS, causing the build failure because the program has been compiled to use libintl_gettext but this function is not available. Therefore, we should only use gettext if a uClibc internal toolchain or a uClibc external toolchain. If an external glibc toolchain is used, gettext shouldn't be used. In order to implement that, we introduce the BR2_NEEDS_GETTEXT option, which is hidden to the user, and whose value is computed automatically from the rest of the configuration. Signed-off-by: Thomas Petazzoni --- toolchain/Config.in.2 | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/toolchain/Config.in.2 b/toolchain/Config.in.2 index f04f18a210..fc6759dd62 100644 --- a/toolchain/Config.in.2 +++ b/toolchain/Config.in.2 @@ -56,6 +56,14 @@ config BR2_ENABLE_LOCALE_WHITELIST will be available on the target - That purely depends on the support for that locale in the selected packages. +# uClibc toolchains require a separatly-compiled gettext/libintl when +# locale support is enabled. This isn't necessary with glibc +# toolchains as glibc includes gettext/libintl. +config BR2_NEEDS_GETTEXT + bool + default y if (BR2_TOOLCHAIN_BUILDROOT && BR2_ENABLE_LOCALE) + default y if (BR2_TOOLCHAIN_EXTERNAL_UCLIBC && BR2_ENABLE_LOCALE) + config BR2_USE_WCHAR bool "Enable WCHAR support" help From 542fbe8520c981f9c96705a57e4263f34f2ab2e6 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Fri, 14 May 2010 09:44:03 +0200 Subject: [PATCH 02/19] Make all package using gettext rely on BR2_NEEDS_GETTEXT Signed-off-by: Thomas Petazzoni --- package/avahi/Config.in | 4 ++-- package/avahi/avahi.mk | 2 +- package/gmpc/Config.in | 4 ++-- package/gmpc/gmpc.mk | 3 ++- package/grep/Config.in | 4 ++-- package/grep/grep.mk | 2 +- package/hal/Config.in | 4 ++-- package/hal/hal.mk | 2 +- package/libglib2/Config.in | 4 ++-- package/libglib2/libglib2.mk | 2 +- package/libidn/libidn.mk | 2 +- package/libsoup/libsoup.mk | 2 +- package/make/Config.in | 4 ++-- package/make/make.mk | 2 +- package/multimedia/libmpd/Config.in | 2 -- package/pango/pango.mk | 2 +- package/php/Config.ext | 2 +- package/php/php.mk | 2 +- package/psmisc/Config.in | 4 ++-- package/psmisc/psmisc.mk | 8 +------- package/sshfs/Config.in | 4 ++-- package/sshfs/sshfs.mk | 2 +- package/util-linux/Config.in | 4 ++-- package/util-linux/util-linux.mk | 4 ++-- 24 files changed, 34 insertions(+), 41 deletions(-) diff --git a/package/avahi/Config.in b/package/avahi/Config.in index 35b7c2785d..338600515e 100644 --- a/package/avahi/Config.in +++ b/package/avahi/Config.in @@ -1,7 +1,7 @@ config BR2_PACKAGE_AVAHI bool "avahi" - select BR2_PACKAGE_GETTEXT if BR2_ENABLE_LOCALE - select BR2_PACKAGE_LIBINTL if BR2_ENABLE_LOCALE + select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT + select BR2_PACKAGE_LIBINTL if BR2_NEEDS_GETTEXT help Avahi is a system which facilitates service discovery on a local network. diff --git a/package/avahi/avahi.mk b/package/avahi/avahi.mk index 9940d280d9..5e64047b4b 100644 --- a/package/avahi/avahi.mk +++ b/package/avahi/avahi.mk @@ -82,7 +82,7 @@ AVAHI_CONF_OPT = --localstatedir=/var \ --with-autoipd-user=default \ --with-autoipd-group=default -AVAHI_DEPENDENCIES = $(if $(BR2_PACKAGE_GETTEXT),gettext) host-intltool +AVAHI_DEPENDENCIES = $(if $(BR2_NEEDS_GETTEXT),gettext libintl) host-intltool ifneq ($(BR2_PACKAGE_AVAHI_DAEMON)$(BR2_PACKAGE_AVAHI_AUTOIPD),) AVAHI_DEPENDENCIES += libdaemon diff --git a/package/gmpc/Config.in b/package/gmpc/Config.in index a8343617ee..056f5a0779 100644 --- a/package/gmpc/Config.in +++ b/package/gmpc/Config.in @@ -2,8 +2,8 @@ config BR2_PACKAGE_GMPC bool "gmpc" depends on BR2_PACKAGE_LIBGTK2 select BR2_PACKAGE_LIBGLIB2 - select BR2_PACKAGE_GETTEXT - select BR2_PACKAGE_LIBINTL + select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT + select BR2_PACKAGE_LIBINTL if BR2_NEEDS_GETTEXT select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE select BR2_PACKAGE_LIBMPD select BR2_PACKAGE_LIBCURL diff --git a/package/gmpc/gmpc.mk b/package/gmpc/gmpc.mk index 0db89b9028..aa74a2e2f2 100644 --- a/package/gmpc/gmpc.mk +++ b/package/gmpc/gmpc.mk @@ -11,7 +11,8 @@ GMPC_CONF_ENV = ac_cv_lib_curl_curl_global_init=yes \ ac_cv_path_GOB2=$(GOB2_HOST_BINARY) GMPC_CONF_OPT = --disable-mmkeys -GMPC_DEPENDENCIES = libglib2 libgtk2 libglade libcurl libmpd host-gob2 host-intltool +GMPC_DEPENDENCIES = libglib2 libgtk2 libglade libcurl libmpd host-gob2 host-intltool \ + $(if $(BR2_NEEDS_GETTEXT),gettext libintl) ifeq ($(BR2_PACKAGE_XLIB_LIBSM),y) GMPC_DEPENENCIES += xlib_libSM diff --git a/package/grep/Config.in b/package/grep/Config.in index 3795330cef..f898fdf4ab 100644 --- a/package/grep/Config.in +++ b/package/grep/Config.in @@ -1,7 +1,7 @@ config BR2_PACKAGE_GREP bool "grep" - select BR2_PACKAGE_GETTEXT if BR2_ENABLE_LOCALE - select BR2_PACKAGE_LIBINTL if BR2_ENABLE_LOCALE + select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT + select BR2_PACKAGE_LIBINTL if BR2_NEEDS_GETTEXT help The GNU regular expression matcher. diff --git a/package/grep/grep.mk b/package/grep/grep.mk index acef6e9d2f..93c6cafddd 100644 --- a/package/grep/grep.mk +++ b/package/grep/grep.mk @@ -8,6 +8,6 @@ GREP_SOURCE:=grep-$(GREP_VERSION).tar.bz2 GREP_SITE:=$(BR2_GNU_MIRROR)/grep GREP_CONF_OPT = --disable-perl-regexp --without-included-regex -GREP_DEPENDENCIES = $(if $(BR2_ENABLE_LOCALE),gettext libintl) +GREP_DEPENDENCIES = $(if $(BR2_NEEDS_GETTEXT),gettext libintl) $(eval $(call AUTOTARGETS,package,grep)) diff --git a/package/hal/Config.in b/package/hal/Config.in index 250e00509c..9518f1355f 100644 --- a/package/hal/Config.in +++ b/package/hal/Config.in @@ -2,8 +2,8 @@ config BR2_PACKAGE_HAL bool "hal" select BR2_PACKAGE_EXPAT select BR2_PACKAGE_LIBGLIB2 - select BR2_PACKAGE_GETTEXT - select BR2_PACKAGE_LIBINTL + select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT + select BR2_PACKAGE_LIBINTL if BR2_NEEDS_GETTEXT select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE select BR2_PACKAGE_DBUS select BR2_PACKAGE_DBUS_EXPAT diff --git a/package/hal/hal.mk b/package/hal/hal.mk index 262fc41bcc..62eca704a4 100644 --- a/package/hal/hal.mk +++ b/package/hal/hal.mk @@ -79,7 +79,7 @@ $(TARGET_DIR)/$(HAL_TARGET_BINARY): $(HAL_DIR)/hald/hald rm -f $(TARGET_DIR)/usr/libexec/$$file; \ done -hal: host-pkg-config host-libxml-parser-perl dbus-glib hwdata udev $(TARGET_DIR)/$(HAL_TARGET_BINARY) +hal: host-pkg-config host-libxml-parser-perl dbus-glib hwdata udev $(if $(BR2_NEEDS_GETTEXT),gettext libintl) $(TARGET_DIR)/$(HAL_TARGET_BINARY) hal-clean: rm -f $(TARGET_DIR)/etc/dbus-1/system.d/hal.conf diff --git a/package/libglib2/Config.in b/package/libglib2/Config.in index d947eb67fe..cc1d6e27bf 100644 --- a/package/libglib2/Config.in +++ b/package/libglib2/Config.in @@ -1,7 +1,7 @@ config BR2_PACKAGE_LIBGLIB2 bool "libglib2" - select BR2_PACKAGE_GETTEXT - select BR2_PACKAGE_LIBINTL + select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT + select BR2_PACKAGE_LIBINTL if BR2_NEEDS_GETTEXT select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE help Low-level core library that forms the basis of GTK+ and GNOME. diff --git a/package/libglib2/libglib2.mk b/package/libglib2/libglib2.mk index 72a1396453..43b1a89004 100644 --- a/package/libglib2/libglib2.mk +++ b/package/libglib2/libglib2.mk @@ -55,7 +55,7 @@ HOST_LIBGLIB2_CONF_OPT = \ --disable-gtk-doc \ --enable-debug=no \ -LIBGLIB2_DEPENDENCIES = gettext libintl host-pkg-config host-libglib2 +LIBGLIB2_DEPENDENCIES = host-pkg-config host-libglib2 $(if $(BR2_NEEDS_GETTEXT),gettext libintl) HOST_LIBGLIB2_DEPENDENCIES = host-pkg-config diff --git a/package/libidn/libidn.mk b/package/libidn/libidn.mk index 6ee1a96982..bc8e001403 100644 --- a/package/libidn/libidn.mk +++ b/package/libidn/libidn.mk @@ -10,7 +10,7 @@ LIBIDN_INSTALL_STAGING = YES LIBIDN_INSTALL_TARGET = YES LIBIDN_CONF_OPT = --enable-shared --disable-java --enable-csharp=no LIBIDN_LIBTOOL_PATCH = NO -LIBIDN_DEPENDENCIES = host-pkg-config gettext $(if $(BR2_PACKAGE_LIBICONV),libiconv) +LIBIDN_DEPENDENCIES = host-pkg-config $(if $(BR2_NEEDS_GETTEXT),gettext) $(if $(BR2_PACKAGE_LIBICONV),libiconv) $(eval $(call AUTOTARGETS,package,libidn)) diff --git a/package/libsoup/libsoup.mk b/package/libsoup/libsoup.mk index 3829a81a24..45f62e8e48 100644 --- a/package/libsoup/libsoup.mk +++ b/package/libsoup/libsoup.mk @@ -26,6 +26,6 @@ LIBSOUP_CONF_OPT = \ --without-gnome \ --disable-gtk-doc -LIBSOUP_DEPENDENCIES = gettext libintl host-pkg-config host-libglib2 libglib2 libxml2 +LIBSOUP_DEPENDENCIES = $(if $(BR2_NEEDS_GETTEXT),gettext libintl) host-pkg-config host-libglib2 libglib2 libxml2 $(eval $(call AUTOTARGETS,package,libsoup)) diff --git a/package/make/Config.in b/package/make/Config.in index 52640058ea..674e245e9a 100644 --- a/package/make/Config.in +++ b/package/make/Config.in @@ -1,7 +1,7 @@ config BR2_PACKAGE_MAKE bool "make" - select BR2_PACKAGE_GETTEXT if BR2_ENABLE_LOCALE - select BR2_PACKAGE_LIBINTL if BR2_ENABLE_LOCALE + select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT + select BR2_PACKAGE_LIBINTL if BR2_NEEDS_GETTEXT help A tool which controls the generation of executables and other non-source files of a program from the program's source files. diff --git a/package/make/make.mk b/package/make/make.mk index 29c7af45e1..5dd06379f1 100644 --- a/package/make/make.mk +++ b/package/make/make.mk @@ -56,7 +56,7 @@ $(TARGET_DIR)/$(GNUMAKE_TARGET_BINARY): $(GNUMAKE_DIR)/$(GNUMAKE_BINARY) rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \ $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc -make: $(if $(BR2_PACKAGE_GETTEXT),gettext) $(TARGET_DIR)/$(GNUMAKE_TARGET_BINARY) +make: $(if $(BR2_NEEDS_GETTEXT),gettext) $(TARGET_DIR)/$(GNUMAKE_TARGET_BINARY) make-clean: $(MAKE) DESTDIR=$(TARGET_DIR) -C $(GNUMAKE_DIR) uninstall diff --git a/package/multimedia/libmpd/Config.in b/package/multimedia/libmpd/Config.in index c79203c99f..4f3a7144f0 100644 --- a/package/multimedia/libmpd/Config.in +++ b/package/multimedia/libmpd/Config.in @@ -1,8 +1,6 @@ config BR2_PACKAGE_LIBMPD bool "libmpd" select BR2_PACKAGE_LIBGLIB2 - select BR2_PACKAGE_GETTEXT - select BR2_PACKAGE_LIBINTL select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE help High-level client library for accessing Music Player Daemon. diff --git a/package/pango/pango.mk b/package/pango/pango.mk index 38e163e04d..812a4c8721 100644 --- a/package/pango/pango.mk +++ b/package/pango/pango.mk @@ -45,7 +45,7 @@ HOST_PANGO_CONF_OPT = \ $(if $(BR2_PACKAGE_XORG7),--with-x,--without-x) \ --disable-debug \ -PANGO_DEPENDENCIES = gettext libintl host-pkg-config host-pango libglib2 cairo +PANGO_DEPENDENCIES = $(if $(BR2_NEEDS_GETTEXT),gettext libintl) host-pkg-config host-pango libglib2 cairo HOST_PANGO_DEPENDENCIES = host-pkg-config host-cairo host-libglib2 host-autoconf host-automake diff --git a/package/php/Config.ext b/package/php/Config.ext index 9b53e872b6..2fbd05e8a4 100644 --- a/package/php/Config.ext +++ b/package/php/Config.ext @@ -67,7 +67,7 @@ config BR2_PACKAGE_PHP_EXT_FTP config BR2_PACKAGE_PHP_EXT_GETTEXT bool "gettext" - select BR2_PACKAGE_GETTEXT + select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT help gettext support diff --git a/package/php/php.mk b/package/php/php.mk index cd5ed9e9e0..c5f9c140e0 100644 --- a/package/php/php.mk +++ b/package/php/php.mk @@ -84,7 +84,7 @@ endif ifeq ($(BR2_PACKAGE_PHP_EXT_GETTEXT),y) PHP_CONF_OPT += --with-gettext=$(STAGING_DIR)/usr - PHP_DEPENDENCIES += gettext + PHP_DEPENDENCIES += $(if $(BR2_NEEDS_GETTEXT),gettext) endif ifeq ($(BR2_PACKAGE_PHP_EXT_GMP),y) diff --git a/package/psmisc/Config.in b/package/psmisc/Config.in index e7ce704619..31e982c645 100644 --- a/package/psmisc/Config.in +++ b/package/psmisc/Config.in @@ -1,8 +1,8 @@ config BR2_PACKAGE_PSMISC bool "psmisc" select BR2_PACKAGE_NCURSES - select BR2_PACKAGE_GETTEXT if BR2_ENABLE_LOCALE - select BR2_PACKAGE_LIBINTL if BR2_ENABLE_LOCALE + select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT + select BR2_PACKAGE_LIBINTL if BR2_NEEDS_GETTEXT help Helpful /proc related utilities such as pstree, fuser, and killall diff --git a/package/psmisc/psmisc.mk b/package/psmisc/psmisc.mk index e04923d755..b82883fa9b 100644 --- a/package/psmisc/psmisc.mk +++ b/package/psmisc/psmisc.mk @@ -7,12 +7,6 @@ PSMISC_VERSION:=22.8 PSMISC_SOURCE:=psmisc-$(PSMISC_VERSION).tar.gz PSMISC_SITE:=http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/psmisc PSMISC_AUTORECONF:=NO -PSMISC_DEPENDENCIES:=ncurses - -ifeq ($(BR2_ENABLE_LOCALE),y) -# psmisc gets confused and forgets to link with libintl -PSMISC_MAKE_OPT:=LIBS=-lintl -PSMISC_DEPENDENCIES+= gettext libintl -endif +PSMISC_DEPENDENCIES:=ncurses $(if $(BR2_NEEDS_GETTEXT),gettext libintl) $(eval $(call AUTOTARGETS,package,psmisc)) diff --git a/package/sshfs/Config.in b/package/sshfs/Config.in index 12d98f6bcc..7ddd0c13a9 100644 --- a/package/sshfs/Config.in +++ b/package/sshfs/Config.in @@ -2,8 +2,8 @@ config BR2_PACKAGE_SSHFS bool "sshfs (FUSE)" select BR2_PACKAGE_LIBFUSE select BR2_PACKAGE_LIBGLIB2 - select BR2_PACKAGE_GETTEXT - select BR2_PACKAGE_LIBINTL + select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT + select BR2_PACKAGE_LIBINTL if BR2_NEEDS_GETTEXT select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE depends on BR2_PACKAGE_OPENSSH help diff --git a/package/sshfs/sshfs.mk b/package/sshfs/sshfs.mk index 4acc2931e9..d15aa00c26 100644 --- a/package/sshfs/sshfs.mk +++ b/package/sshfs/sshfs.mk @@ -11,6 +11,6 @@ SSHFS_AUTORECONF:=NO SSHFS_INSTALL_STAGING:=NO SSHFS_INSTALL_TARGET:=YES -SSHFS_DEPENDENCIES = libglib2 libfuse +SSHFS_DEPENDENCIES = libglib2 libfuse $(if $(BR2_NEEDS_GETTEXT),gettext libintl) $(eval $(call AUTOTARGETS,package,sshfs)) diff --git a/package/util-linux/Config.in b/package/util-linux/Config.in index e21daf6cd4..533ef698b7 100644 --- a/package/util-linux/Config.in +++ b/package/util-linux/Config.in @@ -1,7 +1,7 @@ config BR2_PACKAGE_UTIL-LINUX bool "util-linux" - select BR2_PACKAGE_GETTEXT if BR2_ENABLE_LOCALE - select BR2_PACKAGE_LIBINTL if BR2_ENABLE_LOCALE + select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT + select BR2_PACKAGE_LIBINTL if BR2_NEEDS_GETTEXT depends on BR2_INET_RPC help Various useful/essential Linux utilities. diff --git a/package/util-linux/util-linux.mk b/package/util-linux/util-linux.mk index e2135e7d46..6446d37b0a 100644 --- a/package/util-linux/util-linux.mk +++ b/package/util-linux/util-linux.mk @@ -18,8 +18,8 @@ else UTIL-LINUX_SCHED_UTILS:=--disable-schedutils endif -ifeq ($(BR2_PACKAGE_LIBINTL),y) -UTIL-LINUX_DEPENDENCIES += libintl +ifeq ($(BR2_NEEDS_GETTEXT),y) +UTIL-LINUX_DEPENDENCIES += gettext libintl UTIL-LINUX_MAKE_OPT = LIBS=-lintl endif From 485ba350324ddf2b457375817110a50e8880818b Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Thu, 13 May 2010 22:30:52 +0200 Subject: [PATCH 03/19] libcap: fix build failure On a x86-64 host, libcap tried to install things in $(STAGING_DIR)/lib64 and $(TARGET_DIR)/lib64. Therefore, pass lib= and prefix=, as required by the strange build system used by libcap. Signed-off-by: Thomas Petazzoni --- package/libcap/libcap.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libcap/libcap.mk b/package/libcap/libcap.mk index 3ea5e51aad..301d1b1fa5 100644 --- a/package/libcap/libcap.mk +++ b/package/libcap/libcap.mk @@ -8,7 +8,7 @@ define LIBCAP_BUILD_CMDS endef define LIBCAP_INSTALL_STAGING_CMDS - $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) LIBATTR=no DESTDIR=$(STAGING_DIR) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) LIBATTR=no DESTDIR=$(STAGING_DIR) prefix=/usr lib=lib install endef define LIBCAP_INSTALL_TARGET_CMDS @@ -20,7 +20,7 @@ define HOST_LIBCAP_BUILD_CMDS endef define HOST_LIBCAP_INSTALL_CMDS - $(HOST_MAKE_ENV) $(MAKE) -C $(@D) LIBATTR=no DESTDIR=$(HOST_DIR) install + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) LIBATTR=no DESTDIR=$(HOST_DIR) prefix=/usr lib=lib install endef $(eval $(call GENTARGETS,package,libcap)) From bdc9c05f4450b0ca1e4bfd8edc52c4f9537e576a Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Thu, 13 May 2010 22:40:31 +0200 Subject: [PATCH 04/19] libcgicc: fix package after autotools infrastructure conversion The patch had an incorrect name, and the libtool patch was applied while it shouldn't, and the package wasn't autoreconfed while the patch changes some Makefile.am files. Signed-off-by: Thomas Petazzoni --- ....patch => libcgicc-3.2.9-disable-documentation-option.patch} | 0 package/libcgicc/libcgicc.mk | 2 ++ 2 files changed, 2 insertions(+) rename package/libcgicc/{cgicc-3.2.9-disable-documentation-option.patch => libcgicc-3.2.9-disable-documentation-option.patch} (100%) diff --git a/package/libcgicc/cgicc-3.2.9-disable-documentation-option.patch b/package/libcgicc/libcgicc-3.2.9-disable-documentation-option.patch similarity index 100% rename from package/libcgicc/cgicc-3.2.9-disable-documentation-option.patch rename to package/libcgicc/libcgicc-3.2.9-disable-documentation-option.patch diff --git a/package/libcgicc/libcgicc.mk b/package/libcgicc/libcgicc.mk index c2f80b6c73..b281eed16f 100644 --- a/package/libcgicc/libcgicc.mk +++ b/package/libcgicc/libcgicc.mk @@ -7,6 +7,8 @@ LIBCGICC_VERSION=3.2.9 LIBCGICC_SITE=$(BR2_GNU_MIRROR)/cgicc LIBCGICC_SOURCE=cgicc-$(LIBCGICC_VERSION).tar.gz LIBCGICC_INSTALL_STAGING=YES +LIBCGICC_LIBTOOL_PATCH=NO +LIBCGICC_AUTORECONF=YES LIBCGICC_CONF_OPT = \ --disable-demos \ From 728e43534d6c9fc50336ed1c7c95e855ecd2b438 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Thu, 13 May 2010 22:41:30 +0200 Subject: [PATCH 05/19] ltrace: fix build failure ltrace failed to build because of missing arguments to gcc to find the header files. This is due to the fact that the existing ltrace.mk was setting CC and LD at build time to incorrect values. Keeping the values set at configure time is just the right thing to do. Signed-off-by: Thomas Petazzoni --- package/ltrace/ltrace.mk | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package/ltrace/ltrace.mk b/package/ltrace/ltrace.mk index c99f223acc..4a6811d86c 100644 --- a/package/ltrace/ltrace.mk +++ b/package/ltrace/ltrace.mk @@ -54,8 +54,7 @@ $(LTRACE_DIR)/.configured: $(LTRACE_DIR)/.patched touch $@ $(LTRACE_DIR)/$(LTRACE_BINARY): $(LTRACE_DIR)/.configured - $(MAKE) CC=$(TARGET_CC) LD=$(TARGET_CROSS)ld ARCH=$(LTRACE_ARCH) \ - -C $(LTRACE_DIR) + $(MAKE) ARCH=$(LTRACE_ARCH) -C $(LTRACE_DIR) $(TARGET_DIR)/$(LTRACE_TARGET_BINARY): $(LTRACE_DIR)/$(LTRACE_BINARY) #$(MAKE) DESTDIR=$(TARGET_DIR) ARCH=$(LTRACE_ARCH) -C $(LTRACE_DIR) install From 407616f690a46f50f10d797a8bbc58052f515bba Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Fri, 14 May 2010 09:46:21 +0200 Subject: [PATCH 06/19] gettext: make only available if BR2_NEEDS_GETTEXT is set This allows to make sure that an user, or a randpackageconfig, will not select the gettext or libintl package when using an external toolchain based on glibc/eglibc. Signed-off-by: Thomas Petazzoni --- package/gettext/Config.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package/gettext/Config.in b/package/gettext/Config.in index bd5950c12b..c6792acd7d 100644 --- a/package/gettext/Config.in +++ b/package/gettext/Config.in @@ -1,5 +1,6 @@ config BR2_PACKAGE_GETTEXT bool "gettext" + depends on BR2_NEEDS_GETTEXT help The GNU `gettext' utilities are a set of tools that provide a framework to help other GNU packages produce multi-lingual @@ -21,6 +22,7 @@ config BR2_PACKAGE_GETTEXT_STATIC config BR2_PACKAGE_LIBINTL bool "libintl" + depends on BR2_NEEDS_GETTEXT help Selecting this package installs all of gettext in the staging directory and the shared library for it's use in the target. From fad3b5a7bee8ce6dd1cf17f230de693d8ed9230f Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Fri, 14 May 2010 13:24:43 +0200 Subject: [PATCH 07/19] external toolchain: check BR2_INSTALL_LIBSTDCPP Verify that the value of BR2_INSTALL_LIBSTDCPP set by the user in the Buildroot configuration really matches the external toolchain capabilities by checking that a C++ cross-compiler is available. Signed-off-by: Thomas Petazzoni --- toolchain/external-toolchain/ext-tool.mk | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/toolchain/external-toolchain/ext-tool.mk b/toolchain/external-toolchain/ext-tool.mk index 2c2562cde3..bb4809ccdd 100644 --- a/toolchain/external-toolchain/ext-tool.mk +++ b/toolchain/external-toolchain/ext-tool.mk @@ -231,6 +231,15 @@ check_arm_abi = \ exit 1 ; \ fi ; \ +# +# Check that the external toolchain supports C++ +# +check_cplusplus = \ + if ! test -x $(TARGET_CXX) ; then \ + echo "BR2_INSTALL_LIBSTDCPP is selected but C++ support not available in external toolchain" ; \ + exit 1 ; \ + fi ; \ + # # Check that the cross-compiler given in the configuration exists # @@ -288,6 +297,9 @@ endif ifeq ($(BR2_arm),y) $(Q)$(call check_arm_abi) endif +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) + $(Q)$(call check_cplusplus) +endif ifeq ($(BR2_TOOLCHAIN_EXTERNAL_UCLIBC),y) $(Q)$(call check_uclibc,$(SYSROOT_DIR)) else From 2fae26486f86e9ed2b466ebc61a3521b60897a12 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 15 May 2010 09:19:24 +0200 Subject: [PATCH 08/19] iconv: disallow selection when BR2_ENABLE_LOCALE is enabled A C library compiled with locale support already has an iconv() implementation. In that case, libiconv is useless. Therefore, disallow the selection of libiconv when the configuration says that the toolchain has locale support. This fixes build issues similar to the one we had with gettext: libiconv headers are installed, but -liconv is not added because the ./configure script detects that the C library supports iconv. Signed-off-by: Thomas Petazzoni --- package/libiconv/Config.in | 1 + 1 file changed, 1 insertion(+) diff --git a/package/libiconv/Config.in b/package/libiconv/Config.in index b6009444fc..ee4fd62011 100644 --- a/package/libiconv/Config.in +++ b/package/libiconv/Config.in @@ -1,5 +1,6 @@ config BR2_PACKAGE_LIBICONV bool "libiconv" + depends on !BR2_ENABLE_LOCALE help unicode conversion library From 9923439841ffb0dc9fcf70b2ccc67a2998cd3713 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 15 May 2010 09:21:50 +0200 Subject: [PATCH 09/19] lmbench: needs BR2_INET_RPC This package uses several pmap_*() functions in the C library, that are only available if the C library has RPC support. Signed-off-by: Thomas Petazzoni --- package/lmbench/Config.in | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/package/lmbench/Config.in b/package/lmbench/Config.in index 704b3ff7f4..d09a333c9e 100644 --- a/package/lmbench/Config.in +++ b/package/lmbench/Config.in @@ -1,7 +1,12 @@ config BR2_PACKAGE_LMBENCH bool "lmbench" + # Uses pmap_set, pmap__unset, pmap_getport, etc. + depends on BR2_INET_RPC help LMbench is a suite of simple, portable, ANSI/C microbenchmarks for UNIX/POSIX. http://sourceforge.net/projects/lmbench/ + +comment "lmbench requires a toolchain with RPC support" + depends on !BR2_INET_RPC From 362791a7c18bf2c2528334543cb7baf36c4a89fe Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 15 May 2010 09:34:49 +0200 Subject: [PATCH 10/19] startup-notification: add dependency on xlib_libX11 Signed-off-by: Thomas Petazzoni --- package/startup-notification/Config.in | 2 ++ package/startup-notification/startup-notification.mk | 1 + 2 files changed, 3 insertions(+) diff --git a/package/startup-notification/Config.in b/package/startup-notification/Config.in index 23fdf74f38..277d30024c 100644 --- a/package/startup-notification/Config.in +++ b/package/startup-notification/Config.in @@ -1,5 +1,7 @@ config BR2_PACKAGE_STARTUP_NOTIFICATION bool "startup-notification" + select BR2_PACKAGE_XLIB_LIBX11 + depends on BR2_PACKAGE_XORG7 help Startup-notification is a library used to monitor application startup. diff --git a/package/startup-notification/startup-notification.mk b/package/startup-notification/startup-notification.mk index 62f067ac64..f70fcc1c7e 100644 --- a/package/startup-notification/startup-notification.mk +++ b/package/startup-notification/startup-notification.mk @@ -9,6 +9,7 @@ STARTUP_NOTIFICATION_SITE = http://freedesktop.org/software/startup-notification STARTUP_NOTIFICATION_AUTORECONF = NO STARTUP_NOTIFICATION_INSTALL_STAGING = YES STARTUP_NOTIFICATION_INSTALL_TARGET = YES +STARTUP_NOTIFICATION = xlib_libX11 STARTUP_NOTIFICATION_CONF_ENV = lf_cv_sane_realloc=yes From a4051d9db88d5cf789d64d973efd0f91fc741f6e Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 15 May 2010 16:40:07 +0200 Subject: [PATCH 11/19] ntp: fix build failure This patch adds a patch to NTP to fix the following build failure, using a workaround patch found on the Fedora bugzilla: ntp_loopfilter.c: In function 'local_clock': ntp_loopfilter.c:571: error: 'MOD_NANO' undeclared (first use in this function) ntp_loopfilter.c:571: error: (Each undeclared identifier is reported only once ntp_loopfilter.c:571: error: for each function it appears in.) ntp_loopfilter.c: In function 'loop_config': ntp_loopfilter.c:896: error: 'MOD_NANO' undeclared (first use in this function) Signed-off-by: Thomas Petazzoni --- package/ntp/ntp-4.2.4_p5-nano.patch | 36 +++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 package/ntp/ntp-4.2.4_p5-nano.patch diff --git a/package/ntp/ntp-4.2.4_p5-nano.patch b/package/ntp/ntp-4.2.4_p5-nano.patch new file mode 100644 index 0000000000..f4097ee565 --- /dev/null +++ b/package/ntp/ntp-4.2.4_p5-nano.patch @@ -0,0 +1,36 @@ +Fixes the MOD_NANO build failure + +ntp_loopfilter.c: In function 'local_clock': +ntp_loopfilter.c:571: error: 'MOD_NANO' undeclared (first use in this function) +ntp_loopfilter.c:571: error: (Each undeclared identifier is reported only once +ntp_loopfilter.c:571: error: for each function it appears in.) +ntp_loopfilter.c: In function 'loop_config': +ntp_loopfilter.c:896: error: 'MOD_NANO' undeclared (first use in this function) + +Taken from +http://cvs.fedoraproject.org/viewvc/devel/ntp/ntp-4.2.4p7-nano.patch?revision=1.1&content-type=text/plain&view=co + +See the discussion at +https://bugs.launchpad.net/ubuntu/+source/ntp/+bug/412242 for more +details and links. The below fix is not a correct fix, but only a +workaround. The real fix required changes to kernel/libc headers. + +Index: ntp-4.2.4p5/include/ntp_syscall.h +=================================================================== +--- ntp-4.2.4p5.orig/include/ntp_syscall.h 2010-05-14 17:34:48.000000000 +0200 ++++ ntp-4.2.4p5/include/ntp_syscall.h 2010-05-14 17:35:13.000000000 +0200 +@@ -14,6 +14,14 @@ + # include + #endif + ++#if defined(ADJ_NANO) && !defined(MOD_NANO) ++#define MOD_NANO ADJ_NANO ++#endif ++ ++#if defined(ADJ_TAI) && !defined(MOD_TAI) ++#define MOD_TAI ADJ_TAI ++#endif ++ + #ifndef NTP_SYSCALLS_LIBC + #ifdef NTP_SYSCALLS_STD + # define ntp_adjtime(t) syscall(SYS_ntp_adjtime, (t)) From 0317b30912eb73bc512b137b1581ff520b14c40a Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 15 May 2010 16:42:02 +0200 Subject: [PATCH 12/19] samba: only require libiconv if !BR2_ENABLE_LOCALE Signed-off-by: Thomas Petazzoni --- package/samba/Config.in | 2 +- package/samba/samba.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/samba/Config.in b/package/samba/Config.in index 720ecd7953..a7a0b34df3 100644 --- a/package/samba/Config.in +++ b/package/samba/Config.in @@ -1,6 +1,6 @@ config BR2_PACKAGE_SAMBA bool "samba" - select BR2_PACKAGE_LIBICONV + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE help Provides print services to all manner of SMB/CIFS clients, including the numerous versions of Microsoft Windows diff --git a/package/samba/samba.mk b/package/samba/samba.mk index 411536302b..39968a9cb0 100644 --- a/package/samba/samba.mk +++ b/package/samba/samba.mk @@ -16,7 +16,7 @@ SAMBA_INSTALL_TARGET = YES SAMBA_DEPENDENCIES = \ - libiconv \ + $(if $(BR2_ENABLE_LOCALE),,libiconv) \ $(if $(BR2_PACKAGE_SAMBA_RPCCLIENT),readline) \ $(if $(BR2_PACKAGE_SAMBA_SMBCLIENT),readline) \ $(if $(BR2_PACKAGE_SAMBA_AVAHI),avahi) \ From 832ce382c6fbd416ac562da10ba3946e3fc7b935 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 15 May 2010 16:42:23 +0200 Subject: [PATCH 13/19] pango: run pango-querymodules on the target instead of on the host We needed to build pango for the host in order to compile pango-querymodules for the host, which was used to produce /etc/pango/pango.modules. Unfortunately: * This produces an incorrect /etc/pango/pango.modules (no modules detected in my case), probably because the host pango-querymodules was looking at host pango modules * This requires to build pango for the host, which requires to build cairo for the host, which requires to build X11 for the host. To make things work and remove the dependency between pango and host-pango, we introduce a S25pango script that creates /etc/pango/pango.modules on startup if it doesn't exist, just as we do with libgtk2 for /etc/gtk-2.0/gdk-pixbuf.loaders. Since host-pango is no longer needed, we remove all definitions related to it. Signed-off-by: Thomas Petazzoni --- package/pango/S25pango | 20 ++++++++++++++++++++ package/pango/pango.mk | 18 ++---------------- 2 files changed, 22 insertions(+), 16 deletions(-) create mode 100644 package/pango/S25pango diff --git a/package/pango/S25pango b/package/pango/S25pango new file mode 100644 index 0000000000..9af9307c48 --- /dev/null +++ b/package/pango/S25pango @@ -0,0 +1,20 @@ +#!/bin/sh +# +# run pango-querymodules if needed + +FILE=/etc/pango/pango.modules + +case "$1" in + start|"") + if [ ! -f $FILE ] ; then + mkdir -p /etc/pango + /usr/bin/pango-querymodules > "$FILE" + fi + ;; + stop) + ;; + *) + echo "Usage: $0 {start|stop}" >&2 + exit 1 + ;; +esac \ No newline at end of file diff --git a/package/pango/pango.mk b/package/pango/pango.mk index 812a4c8721..c640045843 100644 --- a/package/pango/pango.mk +++ b/package/pango/pango.mk @@ -40,16 +40,7 @@ PANGO_CONF_ENV = ac_cv_func_posix_getpwuid_r=yes glib_cv_stack_grows=no \ PANGO_CONF_OPT = --enable-shared --enable-static \ --enable-explicit-deps=no --disable-debug -HOST_PANGO_CONF_OPT = \ - --disable-static \ - $(if $(BR2_PACKAGE_XORG7),--with-x,--without-x) \ - --disable-debug \ - -PANGO_DEPENDENCIES = $(if $(BR2_NEEDS_GETTEXT),gettext libintl) host-pkg-config host-pango libglib2 cairo - -HOST_PANGO_DEPENDENCIES = host-pkg-config host-cairo host-libglib2 host-autoconf host-automake - -HOST_PANGO_AUTORECONF = YES +PANGO_DEPENDENCIES = $(if $(BR2_NEEDS_GETTEXT),gettext libintl) host-pkg-config libglib2 cairo ifeq ($(BR2_PACKAGE_XORG7),y) PANGO_CONF_OPT += --with-x \ @@ -61,12 +52,7 @@ else endif $(eval $(call AUTOTARGETS,package,pango)) -$(eval $(call AUTOTARGETS,package,pango,host)) $(PANGO_HOOK_POST_INSTALL): - mkdir -p $(TARGET_DIR)/etc/pango - $(PANGO_HOST_BINARY) > $(TARGET_DIR)/etc/pango/pango.modules - $(SED) 's~$(HOST_DIR)~~g' $(TARGET_DIR)/etc/pango/pango.modules + $(INSTALL) -m 755 package/pango/S25pango $(TARGET_DIR)/etc/init.d/ touch $@ - -PANGO_HOST_BINARY:=$(HOST_DIR)/usr/bin/pango-querymodules From 7b38fc20baa4762e5081246d8f2547336e883534 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 15 May 2010 16:45:54 +0200 Subject: [PATCH 14/19] cairo: remove host variant Since we no longer need to build pango on the host, cairo on the host is no longer needed. Signed-off-by: Thomas Petazzoni --- package/cairo/cairo.mk | 3 --- 1 file changed, 3 deletions(-) diff --git a/package/cairo/cairo.mk b/package/cairo/cairo.mk index 0ca99aa611..9b72ffa3f3 100644 --- a/package/cairo/cairo.mk +++ b/package/cairo/cairo.mk @@ -79,8 +79,6 @@ else CAIRO_CONF_OPT += --disable-svg endif -HOST_CAIRO_DEPENDENCIES = host-pkg-config host-pixman host-fontconfig - HOST_CAIRO_CONF_OPT = \ --enable-ps \ --enable-pdf \ @@ -90,4 +88,3 @@ HOST_CAIRO_CONF_OPT = \ --disable-svg $(eval $(call AUTOTARGETS,package,cairo)) -$(eval $(call AUTOTARGETS,package,cairo,host)) From 47a7c75bfbb304c1afa48f4d1dced372652c0c16 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 15 May 2010 20:02:28 +0200 Subject: [PATCH 15/19] mutt: fix build and convert to autotools mutt has been upgraded, but the mutt-1.5.16-makedoc-hostcc.patch wasn't upgraded accordingly, causing build failures in the documentation. Therefore, we add a new patch mutt-1.5.17+20080114-nodoc.patch that disables the construction of the documentation. As this patch modifies Makefile.am, we need to autoreconf the package. The simplest and cleanest way to do this is to convert the package to the autotools infrastructure. Signed-off-by: Thomas Petazzoni --- package/mutt/mutt-1.5.16-makedoc-hostcc.patch | 32 -------- package/mutt/mutt-1.5.17+20080114-nodoc.patch | 21 ++++++ package/mutt/mutt.mk | 73 +++---------------- 3 files changed, 32 insertions(+), 94 deletions(-) delete mode 100644 package/mutt/mutt-1.5.16-makedoc-hostcc.patch create mode 100644 package/mutt/mutt-1.5.17+20080114-nodoc.patch diff --git a/package/mutt/mutt-1.5.16-makedoc-hostcc.patch b/package/mutt/mutt-1.5.16-makedoc-hostcc.patch deleted file mode 100644 index de5cc2db3e..0000000000 --- a/package/mutt/mutt-1.5.16-makedoc-hostcc.patch +++ /dev/null @@ -1,32 +0,0 @@ ---- mutt-1.5.16.oorig/Makefile.in 2007-09-02 22:16:23.000000000 +0200 -+++ mutt-1.5.16/Makefile.in 2007-09-02 22:19:49.000000000 +0200 -@@ -164,12 +164,6 @@ - DBX = @DBX@ - DEBUGGER = @DEBUGGER@ - --# $(makedoc_OBJECTS): $(makedoc_SOURCES) --# $(HOST_CC) $(DEFS) $(AM_CPPFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) -c $< -- --# makedoc: $(makedoc_OBJECTS) $(makedoc_DEPENDENCIES) --# @rm -rf makedoc --# $(HOST_CC) $(AM_CFLAGS) $(LDFLAGS) $(makedoc_LDFLAGS) $(makedoc_OBJECTS) $(makedoc_LDADD) -o makedoc - DEFS = -DPKGDATADIR=\"$(pkgdatadir)\" -DSYSCONFDIR=\"$(sysconfdir)\" \ - -DBINDIR=\"$(bindir)\" -DMUTTLOCALEDIR=\"$(datadir)/locale\" \ - -DHAVE_CONFIG_H=1 -@@ -447,9 +441,15 @@ - - clean-binPROGRAMS: - -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) -+ -+$(makedoc_OBJECTS): $(makedoc_SOURCES) -+ $(CC_FOR_BUILD) -DHAVE_UNISTD_H -DHAVE_GETOPT_H -DHAVE_STRERROR -c $< ;#$(DEFS) $(AM_CPPFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) -c $< -+#makedoc: $(makedoc_OBJECTS) $(makedoc_DEPENDENCIES) -+# @rm -rf makedoc -+# $(CC_FOR_BUILD) $(AM_CFLAGS) $(LDFLAGS) $(makedoc_LDFLAGS) $(makedoc_OBJECTS) $(makedoc_LDADD) -o makedoc - makedoc$(EXEEXT): $(makedoc_OBJECTS) $(makedoc_DEPENDENCIES) - @rm -f makedoc$(EXEEXT) -- $(LINK) $(makedoc_LDFLAGS) $(makedoc_OBJECTS) $(makedoc_LDADD) $(LIBS) -+ $(CC_FOR_BUILD) $(makedoc_LDFLAGS) $(makedoc_OBJECTS) $(makedoc_LDADD) $(LIBS) -o $@ - mutt$(EXEEXT): $(mutt_OBJECTS) $(mutt_DEPENDENCIES) - @rm -f mutt$(EXEEXT) - $(LINK) $(mutt_LDFLAGS) $(mutt_OBJECTS) $(mutt_LDADD) $(LIBS) diff --git a/package/mutt/mutt-1.5.17+20080114-nodoc.patch b/package/mutt/mutt-1.5.17+20080114-nodoc.patch new file mode 100644 index 0000000000..6fd556dcbc --- /dev/null +++ b/package/mutt/mutt-1.5.17+20080114-nodoc.patch @@ -0,0 +1,21 @@ +Disable the documentation build + +The documentation tool is compiled for the target, but executed on the +host. We don't bother fixing this, as we don't care of the +documentation in Buildroot. + +Signed-off-by: Thomas Petazzoni + +Index: mutt-1.5.17+20080114/Makefile.am +=================================================================== +--- mutt-1.5.17+20080114.orig/Makefile.am 2010-05-15 18:15:08.000000000 +0200 ++++ mutt-1.5.17+20080114/Makefile.am 2010-05-15 18:15:17.000000000 +0200 +@@ -9,7 +9,7 @@ + IMAP_INCLUDES = -I$(top_srcdir)/imap + endif + +-SUBDIRS = m4 po intl doc contrib $(IMAP_SUBDIR) ++SUBDIRS = m4 po intl contrib $(IMAP_SUBDIR) + + bin_SCRIPTS = muttbug flea @SMIMEAUX_TARGET@ + diff --git a/package/mutt/mutt.mk b/package/mutt/mutt.mk index 3ad0f2f43e..d021aef821 100644 --- a/package/mutt/mutt.mk +++ b/package/mutt/mutt.mk @@ -7,70 +7,19 @@ MUTT_VERSION:=1.5.17+20080114 MUTT_SOURCE:=mutt_$(MUTT_VERSION).orig.tar.gz MUTT_PATCH:=mutt_$(MUTT_VERSION)-1.diff.gz MUTT_SITE:=$(BR2_DEBIAN_MIRROR)/debian/pool/main/m/mutt/ -MUTT_DIR:=$(BUILD_DIR)/mutt-$(MUTT_VERSION) -MUTT_CAT:=$(ZCAT) -MUTT_BINARY:=mutt -MUTT_TARGET_BINARY:=usr/bin/mutt - -$(DL_DIR)/$(MUTT_SOURCE): - $(call DOWNLOAD,$(MUTT_SITE),$(MUTT_SOURCE)) - -$(DL_DIR)/$(MUTT_PATCH): - $(call DOWNLOAD,$(MUTT_SITE),$(MUTT_PATCH)) - -$(MUTT_DIR)/.unpacked: $(DL_DIR)/$(MUTT_SOURCE) $(DL_DIR)/$(MUTT_PATCH) - $(MUTT_CAT) $(DL_DIR)/$(MUTT_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - - toolchain/patch-kernel.sh $(MUTT_DIR) package/mutt/ mutt-$(MUTT_VERSION)\*.patch -ifneq ($(MUTT_PATCH),) - (cd $(MUTT_DIR) && $(MUTT_CAT) $(DL_DIR)/$(MUTT_PATCH) | patch -p1) - if [ -d $(MUTT_DIR)/debian/patches ]; then \ - toolchain/patch-kernel.sh $(MUTT_DIR) $(MUTT_DIR)/debian/patches \*.patch; \ - fi -endif - touch $@ - -$(MUTT_DIR)/.configured: $(MUTT_DIR)/.unpacked - (cd $(MUTT_DIR); rm -rf config.cache; \ - $(TARGET_CONFIGURE_OPTS) \ - $(TARGET_CONFIGURE_ARGS) \ - ./configure $(QUIET) \ - --target=$(GNU_TARGET_NAME) \ - --host=$(GNU_TARGET_NAME) \ - --build=$(GNU_HOST_NAME) \ - --prefix=/usr \ - $(DISABLE_LARGEFILE) \ - $(DISABLE_IPV6) \ - $(DISABLE_NLS) \ +MUTT_DEPENDENCIES=ncurses +MUTT_CONF_OPT = \ --disable-smtp \ --disable-iconv \ - --without-wc-funcs \ - ) - touch $@ + --without-wc-funcs +MUTT_AUTORECONF=YES -$(MUTT_DIR)/$(MUTT_BINARY): $(MUTT_DIR)/.configured - $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(MUTT_DIR) +define MUTT_APPLY_DEBIAN_PATCHES + if [ -d $(@D)/debian/patches ]; then \ + toolchain/patch-kernel.sh $(@D) $(@D)/debian/patches \*.patch; \ + fi +endef -$(TARGET_DIR)/$(MUTT_TARGET_BINARY): $(MUTT_DIR)/$(MUTT_BINARY) - cp -dpf $(MUTT_DIR)/$(MUTT_BINARY) $@ - $(STRIPCMD) $(STRIP_STRIP_ALL) $@ +MUTT_POST_PATCH_HOOKS += MUTT_APPLY_DEBIAN_PATCHES -mutt-source: $(DL_DIR)/$(MUTT_SOURCE) $(DL_DIR)/$(MUTT_PATCH) - -mutt-unpacked: $(MUTT_DIR)/.unpacked - -mutt: ncurses $(TARGET_DIR)/$(MUTT_TARGET_BINARY) - -mutt-clean: - -$(MAKE) -C $(MUTT_DIR) clean - rm -f $(TARGET_DIR)/$(MUTT_TARGET_BINARY) - -mutt-dirclean: - rm -rf $(MUTT_DIR) -############################################################# -# -# Toplevel Makefile options -# -############################################################# -ifeq ($(BR2_PACKAGE_MUTT),y) -TARGETS+=mutt -endif +$(eval $(call AUTOTARGETS,package,mutt)) \ No newline at end of file From 0c44617e7f16f2e925fb2672d84bbc9dfccec0f8 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 15 May 2010 20:04:02 +0200 Subject: [PATCH 16/19] lvm2: do not override CC and similar variables Since lvm2 uses autoconf, there's no point in overriding CC and other variables at build time. This causes build breakage as CFLAGS aren't used at link time, therefore --sysroot lacks, which breaks the build with external toolchains. Signed-off-by: Thomas Petazzoni --- package/lvm2/lvm2.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/lvm2/lvm2.mk b/package/lvm2/lvm2.mk index bc6f458720..2bd6b8bcfc 100644 --- a/package/lvm2/lvm2.mk +++ b/package/lvm2/lvm2.mk @@ -74,7 +74,7 @@ $(LVM2_DIR)/.configured: $(LVM2_DIR)/.unpacked $(LVM2_DIR)/.built: $(LVM2_DIR)/.configured - $(MAKE1) CC=$(TARGET_CC) RANLIB=$(TARGET_RANLIB) AR=$(TARGET_AR) -C $(LVM2_DIR) DESTDIR=$(STAGING_DIR) + $(MAKE1) -C $(LVM2_DIR) DESTDIR=$(STAGING_DIR) $(MAKE1) -C $(LVM2_DIR) DESTDIR=$(STAGING_DIR) install # Fixup write permissions so that the files can be overwritten # several times in the $(TARGET_DIR) From d30649ada0e27b0c9f0fdff8f5d9ece18b077a87 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 15 May 2010 20:05:26 +0200 Subject: [PATCH 17/19] uemacs: don't forget CFLAGS at link time Without CFLAGS, the build breaks because --sysroot is missing at link time, and this option is absolutely mandatory for external toolchain builds. Signed-off-by: Thomas Petazzoni --- package/uemacs/uemacs.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/uemacs/uemacs.mk b/package/uemacs/uemacs.mk index 6e2f4c4973..539ad51f0e 100644 --- a/package/uemacs/uemacs.mk +++ b/package/uemacs/uemacs.mk @@ -23,7 +23,7 @@ $(UEMACS_DIR)/.unpacked: $(DL_DIR)/$(UEMACS_SOURCE) $(UEMACS_DIR)/$(UEMACS_BINARY): $(UEMACS_DIR)/.unpacked $(MAKE) -C $(UEMACS_DIR) \ - CC="$(TARGET_CC)" DEFINES="-DAUTOCONF -DPOSIX -DUSG" CFLAGS+="$(TARGET_CFLAGS) " LIBS=-lncurses + CC="$(TARGET_CC)" DEFINES="-DAUTOCONF -DPOSIX -DUSG" CFLAGS+="$(TARGET_CFLAGS) " LIBS="$(TARGET_CFLAGS) -lncurses" $(STRIPCMD) $(UEMACS_DIR)/$(UEMACS_BINARY) $(TARGET_DIR)/$(UEMACS_TARGET_BINARY): $(UEMACS_DIR)/$(UEMACS_BINARY) From 56407a4efa4f0da90462e4eb71180b3c2c8bb874 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 15 May 2010 20:06:27 +0200 Subject: [PATCH 18/19] vpnc: pass CFLAGS at link time External toolchain builds absolutely require the --sysroot option to be passed at link time. Signed-off-by: Thomas Petazzoni --- package/vpnc/vpnc.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/vpnc/vpnc.mk b/package/vpnc/vpnc.mk index 5d0f87abd1..c4f23fa2ab 100644 --- a/package/vpnc/vpnc.mk +++ b/package/vpnc/vpnc.mk @@ -26,7 +26,7 @@ $(VPNC_BINARY): $(VPNC_DIR)/.unpacked rm -f $@ $(MAKE) $(TARGET_CONFIGURE_OPTS) INCLUDE=$(STAGING_DIR)/usr/include \ CFLAGS="$(TARGET_CFLAGS)" \ - LDFLAGS+=-lgcrypt LDFLAGS+=-lgpg-error \ + LDFLAGS+=-lgcrypt LDFLAGS+=-lgpg-error LDFLAGS+="$(TARGET_CFLAGS)" \ CC="$(TARGET_CC)" -C $(VPNC_DIR) $(VPNC_TARGET_BINARY): $(VPNC_BINARY) @@ -38,7 +38,7 @@ $(VPNC_TARGET_BINARY): $(VPNC_BINARY) MANDIR=/usr/share/man \ VERSION=$(VPNC_VERSION) \ INCLUDE=$(STAGING_DIR)/usr/include \ - LDFLAGS="-lgcrypt -lgpg-error" \ + LDFLAGS="-lgcrypt -lgpg-error $(TARGET_CFLAGS)" \ -C $(VPNC_DIR) install $(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(VPNC_TARGET_BINARY) From 52e600ebec9cb571edee8f791da851035ae6b969 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 15 May 2010 20:09:46 +0200 Subject: [PATCH 19/19] netsnmp: disable build with external toolchain There is a build problem with netsnmp on external toolchain that isn't easy to fix: libtool strips the --sysroot that we are passing it, which make the link step fail. In preparation for the release, just make sure this package isn't visible to external toolchain users. Of course, on the long run, we should fix this. We also disable the build of the Quagga SNMP support because it selects netsnmp. Signed-off-by: Thomas Petazzoni --- package/netsnmp/Config.in | 6 ++++++ package/quagga/Config.in | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/package/netsnmp/Config.in b/package/netsnmp/Config.in index fd54eb40dd..810b654bfe 100644 --- a/package/netsnmp/Config.in +++ b/package/netsnmp/Config.in @@ -1,7 +1,13 @@ config BR2_PACKAGE_NETSNMP bool "netsnmp" + # Build with external toolchains is broken, libtool strips + # --sysroot at link time + depends on !BR2_TOOLCHAIN_EXTERNAL help Suite of applications used to implement SNMP v1, SNMP v2c, and SNMP v3 using both IPv4 and IPv6. http://net-snmp.sourceforge.net/ + +comment "lmbench is broken with external toolchains" + depends on BR2_TOOLCHAIN_EXTERNAL diff --git a/package/quagga/Config.in b/package/quagga/Config.in index e540cc6081..fb0d590b6e 100644 --- a/package/quagga/Config.in +++ b/package/quagga/Config.in @@ -59,8 +59,12 @@ config BR2_PACKAGE_QUAGGA_NETLINK config BR2_PACKAGE_QUAGGA_SNMP bool "SNMP support" + depends on !BR2_TOOLCHAIN_EXTERNAL select BR2_PACKAGE_NETSNMP +comment "quagga snmp support broken with external toolchains" + depends on BR2_TOOLCHAIN_EXTERNAL + config BR2_PACKAGE_QUAGGA_TCP_ZEBRA bool "TCP/IP socket connection between zebra and proto daemon"