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
 
 #      run <autoreconf> before <configure>
 # 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 <configure> script
 # FOO_CONF_OPT [default empty]
        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) \
 $(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                  ?=
 
 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/' \
        )
 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)" \
                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)" \
        $(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)
 
 #######################################################################
 
                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 \
 
 
 $(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 \
 
 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" \
 
                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 \
 
                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) \