From 5432f26f0e78fc74a599a596c90a3b8f02963c13 Mon Sep 17 00:00:00 2001 From: Daniel Laird Date: Fri, 28 Nov 2008 14:20:47 +0000 Subject: [PATCH] Adding Central config.cache options The following changes allow for use of a central configure cache file. This speeds up configuration of packages. Its use is configurable at the top level (BR2_CONFIG_CACHE - default n). Old style makefiles can use it if they use the following MACRO in makefiles: $(AUTO_CONFIGURE_TARGET) see my change to directfb.mk. New style Autotools.in will use it if you set the global option. However you can enable the global option and on a per package overrule it by doing the following: $(PKGNAME)_USE_CONFIG_CACHE = NO see fontconfig.mk for an example of this. Finally I have removed a few config variable settings which indicated no CXX compiler as this is wrong and breaks the build when using this central cache. Config.in | 8 ++++++++ package/Makefile.autotools.in | 5 ++++- package/Makefile.in | 28 +++++++++++++++++++++++++++- package/atk/atk.mk | 2 +- package/directfb/directfb.mk | 7 +------ package/fontconfig/fontconfig.mk | 3 +++ package/libglib2/libglib2.mk | 2 +- package/libgtk2/libgtk2.mk | 1 - 8 files changed, 45 insertions(+), 11 deletions(-) I would appreciate feedback on this change (I have been testing for 2-3 weeks) But I can never test all cases! If you enable the BR2_CONFIG_CACHE option some Makefile.autotools.in based packages may now break - I cannot build them all. In this case you may need to remove config options that are being hardcoded all over the place (like gtk saying we have 2 CXX compiler) or disable the use of CONFIG CACHE file like I have done in fontconfig. I can build all packages required to get WebKit on DirectFB up and running and it runs fine. I will try to resolve any issues this creates as fast as I can. Signed-off-by: Daniel Laird --- Config.in | 8 ++++++++ package/Makefile.autotools.in | 7 ++++++- package/Makefile.in | 28 +++++++++++++++++++++++++++- package/atk/atk.mk | 2 +- package/directfb/directfb.mk | 7 +------ package/fontconfig/fontconfig.mk | 3 +++ package/libglib2/libglib2.mk | 2 +- package/libgtk2/libgtk2.mk | 1 - 8 files changed, 47 insertions(+), 11 deletions(-) diff --git a/Config.in b/Config.in index ddbe43b9ac..353b3815cb 100644 --- a/Config.in +++ b/Config.in @@ -189,6 +189,14 @@ config BR2_RECENT help This option show recent versions of packages. +config BR2_CONFIG_CACHE + bool "Use a central configure cache file" + default n + help + This determines if a central config cache is used by + packages, reducing the configure time for packages as each + one caches its findings. + config BR2_ENABLE_DEBUG bool "build packages with debugging symbols" select BR2_PACKAGE_GDB_SERVER diff --git a/package/Makefile.autotools.in b/package/Makefile.autotools.in index 2e5d16606c..25eae8f835 100644 --- a/package/Makefile.autotools.in +++ b/package/Makefile.autotools.in @@ -32,6 +32,8 @@ # run before # FOO_LIBTOOL_PATCH [YES/NO, default YES] # Do you want the standard buildroot patch applied to ltmain.sh? (libtool) +# FOO_USE_CONFIG_CACHE [YES/NO default $(BR2_CONFIG_CACHE)] +# Do you wany to use the central configure cache file? See BR2_CONFIG_CACHE. # FOO_CONF_ENV [default empty] # environment passed to the script # FOO_CONF_OPT [default empty] @@ -217,8 +219,10 @@ $(BUILD_DIR)/%/.stamp_configured: cd $(@D)/$($(PKG)_SUBDIR) && rm -f config.cache && \ $(TARGET_CONFIGURE_OPTS) \ $(TARGET_CONFIGURE_ARGS) \ + $(TARGET_CONFIGURE_ENV) \ $($(PKG)_CONF_ENV) \ - ./configure \ + $(if $(THIS_SRCDIR),$(THIS_SRCDIR)/,./)configure \ + $(if $(filter YES,$($(PKG)_USE_CONFIG_CACHE)),--cache-file="$(PROJECT_BUILD_DIR)/tgt-config.cache",) \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ --build=$(GNU_HOST_NAME) \ @@ -302,6 +306,7 @@ $(2)_SITE ?= \ $(2)_DEPENDENCIES ?= $(2)_AUTORECONF ?= NO $(2)_LIBTOOL_PATCH ?= YES +$(2)_USE_CONFIG_CACHE ?= $(if $(BR2_CONFIG_CACHE),YES,NO) $(2)_CONF_ENV ?= $(2)_CONF_OPT ?= $(2)_MAKE_ENV ?= diff --git a/package/Makefile.in b/package/Makefile.in index 431ca8e785..19c7c56b04 100644 --- a/package/Makefile.in +++ b/package/Makefile.in @@ -178,6 +178,8 @@ TARGET_STRIP=true -Not_stripping STRIPCMD=$(TARGET_STRIP) endif INSTALL=/usr/bin/install +FLEX:=$(shell $(CONFIG_SHELL) -c 'which flex || type -p flex') +BISON:=$(shell $(CONFIG_SHELL) -c 'which bison || type -p bison') HOST_ARCH:=$(shell $(HOSTCC) -dumpmachine | sed -e s'/-.*//' \ -e 's/sparc.*/sparc/' \ @@ -193,10 +195,23 @@ HOST_ARCH:=$(shell $(HOSTCC) -dumpmachine | sed -e s'/-.*//' \ ) GNU_HOST_NAME:=$(HOST_ARCH)-$(subst ",,$(BR2_GNU_BUILD_SUFFIX)) #") + +AUTO_CONFIGURE_TARGET=\ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + $(TARGET_CONFIGURE_ENV) \ + $(if $(THIS_SRCDIR),$(THIS_SRCDIR)/,./)configure \ + $(if $(BR2_CONFIG_CACHE),--cache-file="$(PROJECT_BUILD_DIR)/tgt-config.cache",) \ + --target=$(GNU_TARGET_NAME) \ + --host=$(GNU_TARGET_NAME) \ + --build=$(GNU_HOST_NAME) + TARGET_CONFIGURE_OPTS=PATH=$(TARGET_PATH) \ AR="$(TARGET_AR)" \ AS="$(TARGET_AS)" \ - LD="$(TARGET_LD) $(TARGET_LDFLAGS)" \ + LD="$(TARGET_LD)" \ + CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ NM="$(TARGET_NM)" \ CC="$(TARGET_CC) $(TARGET_CFLAGS)" \ GCC="$(TARGET_CC) $(TARGET_CFLAGS)" \ @@ -229,6 +244,12 @@ TARGET_CONFIGURE_OPTS=PATH=$(TARGET_PATH) \ PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig:$(PKG_CONFIG_PATH)" \ STAGING_DIR="$(STAGING_DIR)" +TARGET_CONFIGURE_ENV=\ + CFLAGS="$(TARGET_CFLAGS)" \ + CXXFLAGS="$(TARGET_CXXFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + FCFLAGS="$(TARGET_FCFLAGS)" \ + HOST_CONFIGURE_OPTS=PATH=$(TARGET_PATH) \ AR="$(HOSTAR)" \ AS="$(HOSTAS)" \ @@ -310,6 +331,11 @@ TARGET_CONFIGURE_ARGS= \ $(BR2_AC_CV_TRAP_CHECK) \ ac_cv_func_mmap_fixed_mapped=yes \ ac_cv_func_memcmp_working=yes \ + ac_cv_have_decl_malloc=yes \ + gl_cv_func_malloc_0_nonnull=yes \ + ac_cv_func_malloc_0_nonnull=yes \ + ac_cv_func_calloc_0_nonnull=yes \ + ac_cv_func_realloc_0_nonnull=yes \ $(BR2_AC_CV_C_BIGENDIAN) ####################################################################### diff --git a/package/atk/atk.mk b/package/atk/atk.mk index ee44db75c0..9157a9eaa5 100644 --- a/package/atk/atk.mk +++ b/package/atk/atk.mk @@ -39,7 +39,7 @@ ATK_CONF_ENV = ac_cv_func_posix_getpwuid_r=yes \ gl_cv_func_mkstemp_limitations=no ac_cv_func_working_mktime=yes \ jm_cv_func_working_re_compile_pattern=yes ac_use_included_regex=no \ gl_cv_c_restrict=no ac_cv_path_GLIB_GENMARSHAL=$(HOST_GLIB)/bin/glib-genmarshal \ - ac_cv_prog_F77=no ac_cv_prog_CXX=no + ac_cv_prog_F77=no ifneq ($(BR2_PACKAGE_XSERVER_none),y) ATK_CONF_OPT_X = --with-x \ diff --git a/package/directfb/directfb.mk b/package/directfb/directfb.mk index 3ad2efa8c1..92d494ea82 100644 --- a/package/directfb/directfb.mk +++ b/package/directfb/directfb.mk @@ -115,15 +115,10 @@ $(DIRECTFB_DIR)/.unpacked: $(DL_DIR)/$(DIRECTFB_SOURCE) $(DIRECTFB_DIR)/.configured: $(DIRECTFB_DIR)/.unpacked (cd $(DIRECTFB_DIR); rm -f config.cache; \ - $(TARGET_CONFIGURE_OPTS) \ - $(TARGET_CONFIGURE_ARGS) \ 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) \ + $(AUTO_CONFIGURE_TARGET) \ --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ diff --git a/package/fontconfig/fontconfig.mk b/package/fontconfig/fontconfig.mk index 8e5577aa8c..06872c45af 100644 --- a/package/fontconfig/fontconfig.mk +++ b/package/fontconfig/fontconfig.mk @@ -7,8 +7,11 @@ FONTCONFIG_VERSION = 2.6.0 FONTCONFIG_SOURCE = fontconfig-$(FONTCONFIG_VERSION).tar.gz FONTCONFIG_SITE = http://fontconfig.org/release FONTCONFIG_AUTORECONF = YES +FONTCONFIG_USE_CONFIG_CACHE = NO FONTCONFIG_INSTALL_STAGING = YES FONTCONFIG_INSTALL_TARGET = YES +# This package does not like using the target cflags for some reason. +FONTCONFIG_CONF_ENV = CFLAGS= FONTCONFIG_CONF_OPT = --with-arch=$(GNU_TARGET_NAME) \ --with-freetype-config="$(STAGING_DIR)/usr/bin/freetype-config" \ diff --git a/package/libglib2/libglib2.mk b/package/libglib2/libglib2.mk index fa33db08b9..6522f37b08 100644 --- a/package/libglib2/libglib2.mk +++ b/package/libglib2/libglib2.mk @@ -41,7 +41,7 @@ LIBGLIB2_CONF_ENV = \ ac_cv_func_working_mktime=yes jm_cv_func_working_re_compile_pattern=yes \ ac_use_included_regex=no gl_cv_c_restrict=no \ ac_cv_path_GLIB_GENMARSHAL=$(HOST_GLIB)/bin/glib-genmarshal ac_cv_prog_F77=no \ - ac_cv_prog_CXX=no ac_cv_func_posix_getgrgid_r=no \ + ac_cv_func_posix_getgrgid_r=no \ gt_cv_c_wchar_t=$(if $(BR2_USE_WCHAR),yes,no) LIBGLIB2_CONF_OPT = --enable-shared \ diff --git a/package/libgtk2/libgtk2.mk b/package/libgtk2/libgtk2.mk index 647b00f884..8f8227559e 100644 --- a/package/libgtk2/libgtk2.mk +++ b/package/libgtk2/libgtk2.mk @@ -68,7 +68,6 @@ LIBGTK2_CONF_ENV = ac_cv_func_posix_getpwuid_r=yes glib_cv_stack_grows=no \ ac_cv_path_GTK_UPDATE_ICON_CACHE=$(HOST_GLIB)/bin/gtk-update-icon-cache \ ac_cv_path_GDK_PIXBUF_CSOURCE=$(HOST_GLIB)/bin/gdk-pixbuf-csource \ ac_cv_prog_F77=no \ - ac_cv_prog_CXX=no \ ac_cv_path_CUPS_CONFIG=no LIBGTK2_CONF_OPT = --target=$(GNU_TARGET_NAME) --host=$(GNU_TARGET_NAME) \ -- 2.30.2