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 <daniel.j.laird@nxp.com>
This commit is contained in:
Daniel Laird 2008-11-28 14:20:47 +00:00
parent b277d41ccc
commit 5432f26f0e
8 changed files with 47 additions and 11 deletions

View File

@ -189,6 +189,14 @@ config BR2_RECENT
help help
This option show recent versions of packages. 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 config BR2_ENABLE_DEBUG
bool "build packages with debugging symbols" bool "build packages with debugging symbols"
select BR2_PACKAGE_GDB_SERVER select BR2_PACKAGE_GDB_SERVER

View File

@ -32,6 +32,8 @@
# run <autoreconf> before <configure> # run <autoreconf> before <configure>
# FOO_LIBTOOL_PATCH [YES/NO, default YES] # FOO_LIBTOOL_PATCH [YES/NO, default YES]
# Do you want the standard buildroot patch applied to ltmain.sh? (libtool) # 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] # FOO_CONF_ENV [default empty]
# environment passed to the <configure> script # environment passed to the <configure> script
# FOO_CONF_OPT [default empty] # FOO_CONF_OPT [default empty]
@ -217,8 +219,10 @@ $(BUILD_DIR)/%/.stamp_configured:
cd $(@D)/$($(PKG)_SUBDIR) && rm -f config.cache && \ cd $(@D)/$($(PKG)_SUBDIR) && rm -f config.cache && \
$(TARGET_CONFIGURE_OPTS) \ $(TARGET_CONFIGURE_OPTS) \
$(TARGET_CONFIGURE_ARGS) \ $(TARGET_CONFIGURE_ARGS) \
$(TARGET_CONFIGURE_ENV) \
$($(PKG)_CONF_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) \ --target=$(GNU_TARGET_NAME) \
--host=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \
--build=$(GNU_HOST_NAME) \ --build=$(GNU_HOST_NAME) \
@ -302,6 +306,7 @@ $(2)_SITE ?= \
$(2)_DEPENDENCIES ?= $(2)_DEPENDENCIES ?=
$(2)_AUTORECONF ?= NO $(2)_AUTORECONF ?= NO
$(2)_LIBTOOL_PATCH ?= YES $(2)_LIBTOOL_PATCH ?= YES
$(2)_USE_CONFIG_CACHE ?= $(if $(BR2_CONFIG_CACHE),YES,NO)
$(2)_CONF_ENV ?= $(2)_CONF_ENV ?=
$(2)_CONF_OPT ?= $(2)_CONF_OPT ?=
$(2)_MAKE_ENV ?= $(2)_MAKE_ENV ?=

View File

@ -178,6 +178,8 @@ TARGET_STRIP=true -Not_stripping
STRIPCMD=$(TARGET_STRIP) STRIPCMD=$(TARGET_STRIP)
endif endif
INSTALL=/usr/bin/install 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'/-.*//' \ HOST_ARCH:=$(shell $(HOSTCC) -dumpmachine | sed -e s'/-.*//' \
-e 's/sparc.*/sparc/' \ -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)) 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) \ TARGET_CONFIGURE_OPTS=PATH=$(TARGET_PATH) \
AR="$(TARGET_AR)" \ AR="$(TARGET_AR)" \
AS="$(TARGET_AS)" \ AS="$(TARGET_AS)" \
LD="$(TARGET_LD) $(TARGET_LDFLAGS)" \ LD="$(TARGET_LD)" \
CFLAGS="$(TARGET_CFLAGS)" \
LDFLAGS="$(TARGET_LDFLAGS)" \
NM="$(TARGET_NM)" \ NM="$(TARGET_NM)" \
CC="$(TARGET_CC) $(TARGET_CFLAGS)" \ CC="$(TARGET_CC) $(TARGET_CFLAGS)" \
GCC="$(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)" \ PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig:$(PKG_CONFIG_PATH)" \
STAGING_DIR="$(STAGING_DIR)" 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) \ HOST_CONFIGURE_OPTS=PATH=$(TARGET_PATH) \
AR="$(HOSTAR)" \ AR="$(HOSTAR)" \
AS="$(HOSTAS)" \ AS="$(HOSTAS)" \
@ -310,6 +331,11 @@ TARGET_CONFIGURE_ARGS= \
$(BR2_AC_CV_TRAP_CHECK) \ $(BR2_AC_CV_TRAP_CHECK) \
ac_cv_func_mmap_fixed_mapped=yes \ ac_cv_func_mmap_fixed_mapped=yes \
ac_cv_func_memcmp_working=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) $(BR2_AC_CV_C_BIGENDIAN)
####################################################################### #######################################################################

View File

@ -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 \ 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 \ 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 \ 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) ifneq ($(BR2_PACKAGE_XSERVER_none),y)
ATK_CONF_OPT_X = --with-x \ ATK_CONF_OPT_X = --with-x \

View File

@ -115,15 +115,10 @@ $(DIRECTFB_DIR)/.unpacked: $(DL_DIR)/$(DIRECTFB_SOURCE)
$(DIRECTFB_DIR)/.configured: $(DIRECTFB_DIR)/.unpacked $(DIRECTFB_DIR)/.configured: $(DIRECTFB_DIR)/.unpacked
(cd $(DIRECTFB_DIR); rm -f config.cache; \ (cd $(DIRECTFB_DIR); rm -f config.cache; \
$(TARGET_CONFIGURE_OPTS) \
$(TARGET_CONFIGURE_ARGS) \
ac_cv_header_linux_wm97xx_h=no \ ac_cv_header_linux_wm97xx_h=no \
ac_cv_header_linux_sisfb_h=no \ ac_cv_header_linux_sisfb_h=no \
ac_cv_header_asm_page_h=no \ ac_cv_header_asm_page_h=no \
./configure \ $(AUTO_CONFIGURE_TARGET) \
--target=$(GNU_TARGET_NAME) \
--host=$(GNU_TARGET_NAME) \
--build=$(GNU_HOST_NAME) \
--prefix=/usr \ --prefix=/usr \
--sysconfdir=/etc \ --sysconfdir=/etc \
--localstatedir=/var \ --localstatedir=/var \

View File

@ -7,8 +7,11 @@ FONTCONFIG_VERSION = 2.6.0
FONTCONFIG_SOURCE = fontconfig-$(FONTCONFIG_VERSION).tar.gz FONTCONFIG_SOURCE = fontconfig-$(FONTCONFIG_VERSION).tar.gz
FONTCONFIG_SITE = http://fontconfig.org/release FONTCONFIG_SITE = http://fontconfig.org/release
FONTCONFIG_AUTORECONF = YES FONTCONFIG_AUTORECONF = YES
FONTCONFIG_USE_CONFIG_CACHE = NO
FONTCONFIG_INSTALL_STAGING = YES FONTCONFIG_INSTALL_STAGING = YES
FONTCONFIG_INSTALL_TARGET = 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) \ FONTCONFIG_CONF_OPT = --with-arch=$(GNU_TARGET_NAME) \
--with-freetype-config="$(STAGING_DIR)/usr/bin/freetype-config" \ --with-freetype-config="$(STAGING_DIR)/usr/bin/freetype-config" \

View File

@ -41,7 +41,7 @@ LIBGLIB2_CONF_ENV = \
ac_cv_func_working_mktime=yes jm_cv_func_working_re_compile_pattern=yes \ 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_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_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) gt_cv_c_wchar_t=$(if $(BR2_USE_WCHAR),yes,no)
LIBGLIB2_CONF_OPT = --enable-shared \ LIBGLIB2_CONF_OPT = --enable-shared \

View File

@ -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_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_path_GDK_PIXBUF_CSOURCE=$(HOST_GLIB)/bin/gdk-pixbuf-csource \
ac_cv_prog_F77=no \ ac_cv_prog_F77=no \
ac_cv_prog_CXX=no \
ac_cv_path_CUPS_CONFIG=no ac_cv_path_CUPS_CONFIG=no
LIBGTK2_CONF_OPT = --target=$(GNU_TARGET_NAME) --host=$(GNU_TARGET_NAME) \ LIBGTK2_CONF_OPT = --target=$(GNU_TARGET_NAME) --host=$(GNU_TARGET_NAME) \