diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-01-25 00:34:09 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-01-25 12:25:45 +0000 |
commit | c0e1272d1526484f1921f3dd14ca042798d530d9 (patch) | |
tree | e29de33c2cb3edf5c1c43bd772a4c98a77ec36a4 /meta | |
parent | 23cb814b2761cbe42f1f76e66abb61d8d4584c54 (diff) | |
download | poky-c0e1272d1526484f1921f3dd14ca042798d530d9.tar.gz |
gcc/libc: Change bootstrap to use an intermediate sysroot and hence no longer overwrite files
Based upon patches from Dexuan Cui <dexuan.cui@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r-- | meta/classes/siteconfig.bbclass | 4 | ||||
-rw-r--r-- | meta/conf/bitbake.conf | 1 | ||||
-rw-r--r-- | meta/recipes-core/eglibc/eglibc-initial.inc | 7 | ||||
-rw-r--r-- | meta/recipes-core/eglibc/eglibc.inc | 15 | ||||
-rw-r--r-- | meta/recipes-core/glibc/glibc-initial.inc | 7 | ||||
-rw-r--r-- | meta/recipes-core/glibc/glibc.inc | 15 | ||||
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-cross-intermediate.inc | 6 |
7 files changed, 51 insertions, 4 deletions
diff --git a/meta/classes/siteconfig.bbclass b/meta/classes/siteconfig.bbclass index e7cc9ae0da..5edc0d6a0b 100644 --- a/meta/classes/siteconfig.bbclass +++ b/meta/classes/siteconfig.bbclass | |||
@@ -10,13 +10,15 @@ python siteconfig_do_siteconfig () { | |||
10 | sstate_install(shared_state, d) | 10 | sstate_install(shared_state, d) |
11 | } | 11 | } |
12 | 12 | ||
13 | EXTRASITECONFIG ?= "" | ||
14 | |||
13 | siteconfig_do_siteconfig_gencache () { | 15 | siteconfig_do_siteconfig_gencache () { |
14 | mkdir -p ${WORKDIR}/site_config | 16 | mkdir -p ${WORKDIR}/site_config |
15 | gen-site-config ${FILE_DIRNAME}/site_config \ | 17 | gen-site-config ${FILE_DIRNAME}/site_config \ |
16 | >${WORKDIR}/site_config/configure.ac | 18 | >${WORKDIR}/site_config/configure.ac |
17 | cd ${WORKDIR}/site_config | 19 | cd ${WORKDIR}/site_config |
18 | autoconf | 20 | autoconf |
19 | CONFIG_SITE="" ./configure ${CONFIGUREOPTS} --cache-file ${PN}_cache | 21 | CONFIG_SITE="" ${EXTRASITECONFIG} ./configure ${CONFIGUREOPTS} --cache-file ${PN}_cache |
20 | sed -n -e "/ac_cv_c_bigendian/p" -e "/ac_cv_sizeof_/p" \ | 22 | sed -n -e "/ac_cv_c_bigendian/p" -e "/ac_cv_sizeof_/p" \ |
21 | -e "/ac_cv_type_/p" -e "/ac_cv_header_/p" -e "/ac_cv_func_/p" \ | 23 | -e "/ac_cv_type_/p" -e "/ac_cv_header_/p" -e "/ac_cv_func_/p" \ |
22 | < ${PN}_cache > ${PN}_config | 24 | < ${PN}_cache > ${PN}_config |
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf index 19ec1a7ce7..1c6c7e5f12 100644 --- a/meta/conf/bitbake.conf +++ b/meta/conf/bitbake.conf | |||
@@ -293,6 +293,7 @@ STAGING_PYDIR = "${STAGING_DIR}/lib/python2.4" | |||
293 | # This should really be MULTIMACH_TARGET_SYS but that breaks "all" and machine | 293 | # This should really be MULTIMACH_TARGET_SYS but that breaks "all" and machine |
294 | # specific packages - hack around it for now. | 294 | # specific packages - hack around it for now. |
295 | STAGING_DIR_TARGET = "${STAGING_DIR}/${BASEPKG_TARGET_SYS}" | 295 | STAGING_DIR_TARGET = "${STAGING_DIR}/${BASEPKG_TARGET_SYS}" |
296 | STAGING_DIR_TCBOOTSTRAP = "${STAGING_DIR_TARGET}-tcbootstrap" | ||
296 | 297 | ||
297 | # Setting DEPLOY_DIR outside of TMPDIR is helpful, when you are using | 298 | # Setting DEPLOY_DIR outside of TMPDIR is helpful, when you are using |
298 | # packaged staging and/or multimachine. | 299 | # packaged staging and/or multimachine. |
diff --git a/meta/recipes-core/eglibc/eglibc-initial.inc b/meta/recipes-core/eglibc/eglibc-initial.inc index cb50e89226..ce85d99096 100644 --- a/meta/recipes-core/eglibc/eglibc-initial.inc +++ b/meta/recipes-core/eglibc/eglibc-initial.inc | |||
@@ -45,8 +45,15 @@ do_install () { | |||
45 | install -m 644 csu/crt[1in].o ${D}${libdir} | 45 | install -m 644 csu/crt[1in].o ${D}${libdir} |
46 | ${CC} -nostdlib -nostartfiles -shared -x c /dev/null \ | 46 | ${CC} -nostdlib -nostartfiles -shared -x c /dev/null \ |
47 | -o ${D}${libdir}/libc.so | 47 | -o ${D}${libdir}/libc.so |
48 | |||
49 | # add links to linux-libc-headers: gcc-{cross,crossdk}-intermediate need this. | ||
50 | for t in linux asm asm-generic; do | ||
51 | ln -s ${STAGING_DIR_TARGET}${includedir}/$t ${D}${includedir}/ | ||
52 | done | ||
48 | } | 53 | } |
49 | 54 | ||
50 | do_siteconfig () { | 55 | do_siteconfig () { |
51 | : | 56 | : |
52 | } | 57 | } |
58 | |||
59 | do_populate_sysroot[sstate-outputdirs] = "${STAGING_DIR_TCBOOTSTRAP}" | ||
diff --git a/meta/recipes-core/eglibc/eglibc.inc b/meta/recipes-core/eglibc/eglibc.inc index 63c313ca48..8314cb1548 100644 --- a/meta/recipes-core/eglibc/eglibc.inc +++ b/meta/recipes-core/eglibc/eglibc.inc | |||
@@ -4,6 +4,21 @@ STAGINGCC = "gcc-cross-intermediate" | |||
4 | STAGINGCC_virtclass-nativesdk = "gcc-crosssdk-intermediate" | 4 | STAGINGCC_virtclass-nativesdk = "gcc-crosssdk-intermediate" |
5 | PATH_prepend = "${STAGING_BINDIR_TOOLCHAIN}.${STAGINGCC}:" | 5 | PATH_prepend = "${STAGING_BINDIR_TOOLCHAIN}.${STAGINGCC}:" |
6 | 6 | ||
7 | TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR_TCBOOTSTRAP}" | ||
8 | |||
9 | # siteconfig.bbclass runs configure which needs a working compiler | ||
10 | # For the compiler to work we need a working libc yet libc isn't | ||
11 | # in the sysroots directory at this point. This means the libc.so | ||
12 | # linker script won't work as the --sysroot setting isn't correct. | ||
13 | # Here we create a hacked up libc linker script and pass in the right | ||
14 | # flags to let configure work. Ugly. | ||
15 | EXTRASITECONFIG = "CFLAGS='${CFLAGS} -Wl,-L${WORKDIR}/site_config_libc -L${WORKDIR}/site_config_libc -L${SYSROOT_DESTDIR}${libdir} -L${SYSROOT_DESTDIR}${base_libdir} -Wl,-L${SYSROOT_DESTDIR}${libdir} -Wl,-L${SYSROOT_DESTDIR}${base_libdir}'" | ||
16 | siteconfig_do_siteconfig_gencache_prepend = " \ | ||
17 | mkdir -p ${WORKDIR}/site_config_libc; \ | ||
18 | cp ${SYSROOT_DESTDIR}${libdir}/libc.so ${WORKDIR}/site_config_libc; \ | ||
19 | sed -i -e 's# ${base_libdir}# ${SYSROOT_DESTDIR}${base_libdir}#g' -e 's# ${libdir}# ${SYSROOT_DESTDIR}${libdir}#g' ${WORKDIR}/site_config_libc/libc.so; \ | ||
20 | " | ||
21 | |||
7 | # nptl needs unwind support in gcc, which can't be built without glibc. | 22 | # nptl needs unwind support in gcc, which can't be built without glibc. |
8 | DEPENDS = "virtual/${TARGET_PREFIX}gcc-intermediate linux-libc-headers" | 23 | DEPENDS = "virtual/${TARGET_PREFIX}gcc-intermediate linux-libc-headers" |
9 | #this leads to circular deps, so lets not add it yet | 24 | #this leads to circular deps, so lets not add it yet |
diff --git a/meta/recipes-core/glibc/glibc-initial.inc b/meta/recipes-core/glibc/glibc-initial.inc index 99aa05fab7..3745955f60 100644 --- a/meta/recipes-core/glibc/glibc-initial.inc +++ b/meta/recipes-core/glibc/glibc-initial.inc | |||
@@ -53,8 +53,15 @@ do_install () { | |||
53 | install -m 644 csu/crt[1in].o ${D}${libdir} | 53 | install -m 644 csu/crt[1in].o ${D}${libdir} |
54 | ${CC} -nostdlib -nostartfiles -shared -x c /dev/null \ | 54 | ${CC} -nostdlib -nostartfiles -shared -x c /dev/null \ |
55 | -o ${D}${libdir}/libc.so | 55 | -o ${D}${libdir}/libc.so |
56 | |||
57 | # add links to linux-libc-headers: gcc-{cross,crossdk}-intermediate need this. | ||
58 | for t in linux asm asm-generic; do | ||
59 | ln -s ${STAGING_DIR_TARGET}${includedir}/$t ${D}${includedir}/ | ||
60 | done | ||
56 | } | 61 | } |
57 | 62 | ||
58 | do_siteconfig () { | 63 | do_siteconfig () { |
59 | : | 64 | : |
60 | } | 65 | } |
66 | |||
67 | do_populate_sysroot[sstate-outputdirs] = "${STAGING_DIR_TCBOOTSTRAP}" | ||
diff --git a/meta/recipes-core/glibc/glibc.inc b/meta/recipes-core/glibc/glibc.inc index cdfa06de90..127ae231d7 100644 --- a/meta/recipes-core/glibc/glibc.inc +++ b/meta/recipes-core/glibc/glibc.inc | |||
@@ -21,6 +21,21 @@ STAGINGCC = "gcc-cross-intermediate" | |||
21 | STAGINGCC_virtclass-nativesdk = "gcc-crosssdk-intermediate" | 21 | STAGINGCC_virtclass-nativesdk = "gcc-crosssdk-intermediate" |
22 | PATH_prepend = "${STAGING_BINDIR_TOOLCHAIN}.${STAGINGCC}:" | 22 | PATH_prepend = "${STAGING_BINDIR_TOOLCHAIN}.${STAGINGCC}:" |
23 | 23 | ||
24 | TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR_TCBOOTSTRAP}" | ||
25 | |||
26 | # siteconfig.bbclass runs configure which needs a working compiler | ||
27 | # For the compiler to work we need a working libc yet libc isn't | ||
28 | # in the sysroots directory at this point. This means the libc.so | ||
29 | # linker script won't work as the --sysroot setting isn't correct. | ||
30 | # Here we create a hacked up libc linker script and pass in the right | ||
31 | # flags to let configure work. Ugly. | ||
32 | EXTRASITECONFIG = "CFLAGS='${CFLAGS} -Wl,-L${WORKDIR}/site_config_libc -L${WORKDIR}/site_config_libc -L${SYSROOT_DESTDIR}${libdir} -L${SYSROOT_DESTDIR}${base_libdir} -Wl,-L${SYSROOT_DESTDIR}${libdir} -Wl,-L${SYSROOT_DESTDIR}${base_libdir}'" | ||
33 | siteconfig_do_siteconfig_gencache_prepend = " \ | ||
34 | mkdir -p ${WORKDIR}/site_config_libc; \ | ||
35 | cp ${SYSROOT_DESTDIR}${libdir}/libc.so ${WORKDIR}/site_config_libc; \ | ||
36 | sed -i -e 's# ${base_libdir}# ${SYSROOT_DESTDIR}${base_libdir}#g' -e 's# ${libdir}# ${SYSROOT_DESTDIR}${libdir}#g' ${WORKDIR}/site_config_libc/libc.so; \ | ||
37 | " | ||
38 | |||
24 | inherit autotools | 39 | inherit autotools |
25 | 40 | ||
26 | GLIBC_EXTRA_OECONF ?= "" | 41 | GLIBC_EXTRA_OECONF ?= "" |
diff --git a/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc b/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc index 12fdb70ae8..01571a3202 100644 --- a/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc +++ b/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc | |||
@@ -14,13 +14,13 @@ EXTRA_OECONF = "--with-local-prefix=${STAGING_DIR_TARGET}${target_prefix} \ | |||
14 | --enable-languages=c \ | 14 | --enable-languages=c \ |
15 | ${OPTSPACE} \ | 15 | ${OPTSPACE} \ |
16 | --program-prefix=${TARGET_PREFIX} \ | 16 | --program-prefix=${TARGET_PREFIX} \ |
17 | --with-sysroot=${STAGING_DIR_TARGET} \ | 17 | --with-sysroot=${STAGING_DIR_TCBOOTSTRAP} \ |
18 | --with-build-sysroot=${STAGING_DIR_TARGET} \ | 18 | --with-build-sysroot=${STAGING_DIR_TCBOOTSTRAP} \ |
19 | ${EXTRA_OECONF_INTERMEDIATE} \ | 19 | ${EXTRA_OECONF_INTERMEDIATE} \ |
20 | ${@get_gcc_fpu_setting(bb, d)}" | 20 | ${@get_gcc_fpu_setting(bb, d)}" |
21 | 21 | ||
22 | do_populate_sysroot[sstate-inputdirs] = "${SYSROOT_DESTDIR}/${STAGING_DIR_HOST} ${SYSROOT_DESTDIR}/${STAGING_DIR_TARGET}/${target_base_libdir}" | 22 | do_populate_sysroot[sstate-inputdirs] = "${SYSROOT_DESTDIR}/${STAGING_DIR_HOST} ${SYSROOT_DESTDIR}/${STAGING_DIR_TARGET}/${target_base_libdir}" |
23 | do_populate_sysroot[sstate-outputdirs] = "${STAGING_DIR_HOST} ${STAGING_DIR_TARGET}/${target_base_libdir}" | 23 | do_populate_sysroot[sstate-outputdirs] = "${STAGING_DIR_HOST} ${STAGING_DIR_TCBOOTSTRAP}/${target_base_libdir}" |
24 | 24 | ||
25 | do_compile () { | 25 | do_compile () { |
26 | oe_runmake | 26 | oe_runmake |