summaryrefslogtreecommitdiffstats
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
parentd6c45f0f1184e94a45381af9813f831aaa9052ef (diff)
downloadpoky-d2febcce2b584e634a664bf128359c69a70a811f.tar.gz
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>
-rw-r--r--meta/classes/siteconfig.bbclass31
-rw-r--r--meta/classes/siteinfo.bbclass7
-rwxr-xr-xscripts/gen-site-config53
3 files changed, 91 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 @@
1siteconfig_do_siteconfig() {
2 if [ ! -d ${FILE_DIRNAME}/site_config ]; then
3 exit 0
4 fi
5 mkdir ${WORKDIR}/site_config
6 gen-site-config ${FILE_DIRNAME}/site_config \
7 >${WORKDIR}/site_config/configure.ac
8 cd ${WORKDIR}/site_config
9 autoconf
10 CONFIG_SITE="" ./configure ${CONFIGUREOPTS} --cache-file ${PN}_cache
11 sed -n -e "/ac_cv_c_bigendian/p" -e "/ac_cv_sizeof_/p" \
12 -e "/ac_cv_type_/p" -e "/ac_cv_header_/p" -e "/ac_cv_func_/p" \
13 < ${PN}_cache > ${PN}_config
14 mkdir -p ${SYSROOT_DESTDIR}${STAGING_DATADIR}/${TARGET_SYS}_config_site.d
15 cp ${PN}_config ${SYSROOT_DESTDIR}${STAGING_DATADIR}/${TARGET_SYS}_config_site.d
16}
17
18# Ugly integration with sstate_task_postfunc for now. The normal package
19# sysroot components must be installed in order to generate the cache, but
20# the site cache must be generated before the staging archive is generated.
21python sstate_task_postfunc () {
22 shared_state = sstate_state_fromvars(d)
23 sstate_install(shared_state, d)
24 if shared_state['name'] == 'populate-sysroot':
25 bb.build.exec_func('do_siteconfig', d)
26 sstate_clean(shared_state, d)
27 sstate_install(shared_state, d)
28 sstate_package(shared_state, d)
29}
30
31EXPORT_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):
96 if os.path.exists(fname): 96 if os.path.exists(fname):
97 sitefiles += fname + " " 97 sitefiles += fname + " "
98 98
99 # Now check for siteconfig cache files
100 path_siteconfig = os.path.join(bb.data.getVar('STAGING_DATADIR', d, 1), bb.data.getVar('TARGET_SYS', d, 1) + "_config_site.d")
101 if os.path.isdir(path_siteconfig):
102 for i in os.listdir(path_siteconfig):
103 fname = os.path.join(path_siteconfig, i)
104 sitefiles += fname + " "
105
99 bb.debug(1, "SITE files " + sitefiles); 106 bb.debug(1, "SITE files " + sitefiles);
100 return sitefiles 107 return sitefiles
101 108
diff --git a/scripts/gen-site-config b/scripts/gen-site-config
new file mode 100755
index 0000000000..7da7a0bd8a
--- /dev/null
+++ b/scripts/gen-site-config
@@ -0,0 +1,53 @@
1#! /bin/sh
2# Copyright (c) 2005-2008 Wind River Systems, Inc.
3#
4# This program is free software; you can redistribute it and/or modify
5# it under the terms of the GNU General Public License version 2 as
6# published by the Free Software Foundation.
7#
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11# See the GNU General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License
14# along with this program; if not, write to the Free Software
15# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16
17cat << EOF
18AC_PREREQ(2.57)
19AC_INIT([site_wide],[1.0.0])
20
21EOF
22
23# Disable as endian is set in the default config
24#echo AC_C_BIGENDIAN
25#echo
26
27if [ -e $1/types ] ; then
28 while read type ; do
29 echo "AC_CHECK_SIZEOF([$type])"
30 done < $1/types
31
32 echo
33fi
34
35if [ -e $1/funcs ]; then
36 while read func ; do
37 echo "AC_CHECK_FUNCS([$func])"
38 done < $1/funcs
39
40 echo
41fi
42
43if [ -e $1/headers ]; then
44 while read header ; do
45 echo "AC_CHECK_HEADERS([$header])"
46 done < $1/headers
47
48 echo
49fi
50
51cat << EOF
52AC_OUTPUT
53EOF