summaryrefslogtreecommitdiff
path: root/meta/classes
diff options
context:
space:
mode:
authorJeff Polk <jeff.polk@windriver.com>2010-09-02 15:08:59 -0600
committerRichard Purdie <rpurdie@linux.intel.com>2010-09-03 10:50:02 +0100
commitd2febcce2b584e634a664bf128359c69a70a811f (patch)
tree4e7a3d85d5b489e91a914dc1ba57b793a4c82aea /meta/classes
parentd6c45f0f1184e94a45381af9813f831aaa9052ef (diff)
downloadopenembedded-core-d2febcce2b584e634a664bf128359c69a70a811f.tar.gz
openembedded-core-d2febcce2b584e634a664bf128359c69a70a811f.tar.bz2
openembedded-core-d2febcce2b584e634a664bf128359c69a70a811f.zip
siteconfig: generate configuration data caches for autoconf
siteinfo: Use configuration caches when available Generate cached configuration data for autoconf for the package based on a list of header, types, and functions to eliminate the need for all subesequent package builds to do the actual tests via the cross compiler and sysroot. The cache files are stored in the sysroot in ${STAGING_DATADIR}/${TARGET_SYS}_config_site.d. Siteinfo appends any files it finds in that directory to the normal CONFIG_SITE. All of the cache values set the variables only if not already set so they may be overridden by any of the normal site files. Signed-off-by: Jeff Polk <jeff.polk@windriver.com>
Diffstat (limited to 'meta/classes')
-rw-r--r--meta/classes/siteconfig.bbclass31
-rw-r--r--meta/classes/siteinfo.bbclass7
2 files changed, 38 insertions, 0 deletions
diff --git a/meta/classes/siteconfig.bbclass b/meta/classes/siteconfig.bbclass
new file mode 100644
index 0000000000..5311653bb5
--- /dev/null
+++ b/meta/classes/siteconfig.bbclass
@@ -0,0 +1,31 @@
+siteconfig_do_siteconfig() {
+ if [ ! -d ${FILE_DIRNAME}/site_config ]; then
+ exit 0
+ fi
+ mkdir ${WORKDIR}/site_config
+ gen-site-config ${FILE_DIRNAME}/site_config \
+ >${WORKDIR}/site_config/configure.ac
+ cd ${WORKDIR}/site_config
+ autoconf
+ CONFIG_SITE="" ./configure ${CONFIGUREOPTS} --cache-file ${PN}_cache
+ sed -n -e "/ac_cv_c_bigendian/p" -e "/ac_cv_sizeof_/p" \
+ -e "/ac_cv_type_/p" -e "/ac_cv_header_/p" -e "/ac_cv_func_/p" \
+ < ${PN}_cache > ${PN}_config
+ mkdir -p ${SYSROOT_DESTDIR}${STAGING_DATADIR}/${TARGET_SYS}_config_site.d
+ cp ${PN}_config ${SYSROOT_DESTDIR}${STAGING_DATADIR}/${TARGET_SYS}_config_site.d
+}
+
+# Ugly integration with sstate_task_postfunc for now. The normal package
+# sysroot components must be installed in order to generate the cache, but
+# the site cache must be generated before the staging archive is generated.
+python sstate_task_postfunc () {
+ shared_state = sstate_state_fromvars(d)
+ sstate_install(shared_state, d)
+ if shared_state['name'] == 'populate-sysroot':
+ bb.build.exec_func('do_siteconfig', d)
+ sstate_clean(shared_state, d)
+ sstate_install(shared_state, d)
+ sstate_package(shared_state, d)
+}
+
+EXPORT_FUNCTIONS do_siteconfig
diff --git a/meta/classes/siteinfo.bbclass b/meta/classes/siteinfo.bbclass
index c4206c2d85..130fdc4cfb 100644
--- a/meta/classes/siteinfo.bbclass
+++ b/meta/classes/siteinfo.bbclass
@@ -96,6 +96,13 @@ def siteinfo_get_files(d):
if os.path.exists(fname):
sitefiles += fname + " "
+ # Now check for siteconfig cache files
+ path_siteconfig = os.path.join(bb.data.getVar('STAGING_DATADIR', d, 1), bb.data.getVar('TARGET_SYS', d, 1) + "_config_site.d")
+ if os.path.isdir(path_siteconfig):
+ for i in os.listdir(path_siteconfig):
+ fname = os.path.join(path_siteconfig, i)
+ sitefiles += fname + " "
+
bb.debug(1, "SITE files " + sitefiles);
return sitefiles