summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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