summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/gcc/gcc-common.inc
Commit message (Collapse)AuthorAgeFilesLines
* base/gcc-common: Ensure umask setting is consistent for shared workdirRichard Purdie2014-02-091-0/+1
| | | | | | | | | | | | | | | | | gcc has cross and target components with a shared workdir. The unpack umask settings need to match for all of these. We need to use strings in each case to ensure the sstate code matches them correctly. This patch tweaks various things to ensure the change adding the unpack umask change doesn't break the compiler builds. (From OE-Core master rev: 67162438ee9c402b23c32853af9d313949eb6e4a) (From OE-Core rev: 3e8776e3fc09ba11867457e0be6b4c3a4a01e2c6) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* gcc-common: Improve fpu code checksum dependenciesRichard Purdie2013-10-041-0/+2
| | | | | | | | | | We only care about the end result in this case, not the specific inputs that went into determining the gcc option. This change updates the code to reflect that. (From OE-Core rev: 83055511dab1e2aeefe84262ebe52595848c844b) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake.conf/package: Collapse PKGDATA_DIR into a single machine specific ↵Richard Purdie2013-09-141-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | directory Currently we have a hierarchy of pkgdata directories and the code has to put together a search path and look through each in turn until it finds the data it needs. This has lead to a number of hardcoded paths and file globing which is unpredictable and undesirable. Worse, certain tricks that should be easy like a GL specific package architecture become problematic with the curretn search paths. With the modern sstate code, we can do better and construct a single pkgdata directory for each machine in just the same way as we do for the sysroot. This is already tried and well tested. With such a single directory, all the code that iterated through multiple pkgdata directories and simply be removed and give a significant simplification of the code. Even existing build directories adapt to the change well since the package contents doesn't change, just the location they're installed to and the stamp for them. The only complication is the we need a different shlibs directory for each multilib. These are only used by package.bbclass and the simple fix is to add MLPREFIX to the shlib directory name. This means the multilib packages will repackage and the sstate checksum will change but an existing build directory will adapt to the changes safely. It is close to release however I believe the benefits this patch give us are worth consideration for inclusion and give us more options for dealing with problems like the GL one. It also sets the ground work well for shlibs improvements in 1.6. (From OE-Core rev: 1b8e4abd2d9c0901d38d89d0f944fe1ffd019379) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* gcc-common: Exclude AVAILTUNES from sstate checksumsRichard Purdie2013-03-181-0/+2
| | | | | | | | | | | | | AVAILTUNES is only used as a sanity check, we don't need to include it in the sstate checksum in this case. If included it can cause problems when switching machines with a common package architecture. [YOCTO #3667] (From OE-Core rev: b1cc5a4055c6402595eac1a93eac4c946210d130) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* gcc-common.inc: handle case where tune is not definedMatthew McClintock2013-03-051-1/+1
| | | | | | | (From OE-Core rev: d3eab8b17f8e50f99042a7a8f43db94640c53d41) Signed-off-by: Matthew McClintock <msm@freescale.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* gcc: enable multilib for target gccConstantin Musca2013-02-011-0/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | - add a task to setup multilib configuration for target gcc - this commit adapts Nitin Kamble's work to gcc 4.7 - use a hash for storing arch-dependent multilib options - patch gcc in order to use the multilib config files from the build directory Tests: root@qemux86-64:~# gcc -m64 t.c -o t root@qemux86-64:~# file t t: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped root@qemux86-64:~# ./t Hello World ! root@qemux86-64:~# gcc -m32 t.c -o t root@qemux86-64:~# file t t: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped root@qemux86-64:~# ./t Hello World ! [YOCTO #1369] (From OE-Core rev: b26819c85881e82ee1b5c68840011e78c321f18e) Signed-off-by: Constantin Musca <constantinx.musca@intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* gcc: Use FILESPATH instead of FILESDIR and cleanup/simplifyRichard Purdie2012-11-211-2/+0
| | | | | | (From OE-Core rev: 4cb359182da00e661fda11a8b31e3611b0df03cb) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* Revert "gcc: Use FILESPATH instead of FILESDIR and cleanup/simplify"Richard Purdie2012-11-201-1/+1
| | | | | | This reverts commit 90616875b432a932415063b08497266e70c49d75. It was never meant to be applied as its an incorrect previous development verison of a patch in progress.
* gcc: Use FILESPATH instead of FILESDIR and cleanup/simplifyRichard Purdie2012-11-191-1/+1
| | | | Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* gcc-common.inc: Consider multilib when renaming libgcc for debian'nessKhem Raj2012-09-251-1/+1
| | | | | | | | | | | When doing multilib builds rpm does not find libgcc1 for lib32 multilib because its not honoring the debian renaming scheme for libgcc-multilib. Lets add MLPREFIX to fix it. (From OE-Core rev: 9327ca868667b15f29af3123611d6f56b4249a63) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* gcc: Use 4.7.2 release tarballKhem Raj2012-09-211-4/+5
| | | | | | | | | | | | | This avoids the SVN or git fetcher issues for gcc and the tar is mirrored around the world so it will not be slow Fixes [YOCTO #2908] (From OE-Core rev: 5e03d1e83d0536a2fc69a88d3e5407108836203f) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake.conf/gcc-common.inc: Fix STAMPCLEAN expressionRichard Purdie2012-09-211-1/+1
| | | | | | | | | | | | The globs used for STAMPCLEAN were too greedy matching gcc-cross-initial stamps for gcc-cross for example. This patch resolves that problem making the assumption that PV starts with something numeric. This assumption should hold in most cases and has a better failure case that the current situation. (From OE-Core rev: d7fbc70b6c6ac629d2a23ac16ab45461f88b4b26) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake.conf/gcc: Add clean masks for stamp filesRichard Purdie2012-09-201-0/+4
| | | | | | | | | | | This takes advantage of new bitbake functionality to clean up stale stamp files when creating new stamp files. [YOCTO #2961] (From OE-Core rev: e21b6c04e512a3bc2339a20045b7041f1d26e859) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* gcc: Convert do_headerfix into a definitive patchKhem Raj2012-07-171-18/+0
| | | | | | | | | | | | | do_headerfix task is essentially editing configuration headers in sources which can well be maintained as a patch which is easier to spot errors (if any) than dynamically edited source tree (From OE-Core rev: ddd344e9acef88d614473581266569ce14716ccc) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* gcc-common: Don't use "is" for comparing strings, use "=="Kartik Mohta2012-07-091-1/+1
| | | | | | | | | | | | | Needed because the equality check was failing here even though upon printing the LHS and RHS were the same. As per http://stackoverflow.com/a/2987975/64537, using "is" compares the memory addresses of the two objects which is not what we want here. We just want to compare the values. (From OE-Core rev: 7fd82cc90a48302ed42b6bfa962bb0de2c652b45) Signed-off-by: Kartik Mohta <kartikmohta@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* gcc-common: Replace use of TARGET_ARCH with TRANSLATED_TARGET_ARCHKhem Raj2012-06-111-2/+2
| | | | | | | | | | | TARGET_ARCH is poured into TRANSLATED_TARGET_ARCH for gcc-cross family or gcc-crosssdk family of recipes we have to check for TRANSLATED_TARGET_ARCH (From OE-Core rev: 03f7322b1f4e1b1cf465a46cba3b82573384ab9e) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* gcc-common: Enable hardfloat ABI when target is armKhem Raj2012-06-111-1/+1
| | | | | | | | | | | We need to check target to be arm before enabling hard-float ABI. There are crossdk targets or candian-cross targets built for arm and we should not enable it for those class of recipes. (From OE-Core rev: f48bb903218e14ba15dab452e8bb43ba25b9ea44) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* gcc: Grok for callconvention-hard to enable hard floatKhem Raj2012-05-241-0/+2
| | | | | | | | | | If callconvention-hard is set then we build gcc defaulting to hard-float ABI (From OE-Core rev: 88dee5cf5265d3ea26fc9d471fc6155e48935dc7) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* meta: Replace bb.data.expand(xxx, d) -> d.expand(xxx)Richard Purdie2012-03-051-1/+1
| | | | | | | | sed \ -e 's:bb.data.\(expand([^,()]*\), *\([^) ]*\) *):\2.\1):g' \ -i `grep -ril bb.data.expand *` Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* meta: Convert getVar/getVarFlag(xxx, 1) -> (xxx, True)Richard Purdie2012-03-051-3/+3
| | | | | | | | | | | | Using "1" with getVar is bad coding style and "True" is preferred. This patch is a sed over the meta directory of the form: sed \ -e 's:\(\.getVar([^,()]*, \)1 *):\1True):g' \ -e 's:\(\.getVarFlag([^,()]*, [^,()]*, \)1 *):\1True):g' \ -i `grep -ril getVar *` Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* gcc: Excluding the DATE/SRCDATE from do_patch dependency.Lianhao Lu2012-02-211-1/+1
| | | | | | | | | | Corrected the error introduced by commit afb400e of dropping DATE/SRCDATE out of the vardepsexlude list of do_patch. (From OE-Core rev: 6546096d068b51cc9cf4557cdb35aee6f62838d5) Signed-off-by: Lianhao Lu <lianhao.lu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* gcc: Ensure same sstate hashes for shared soruce directoryLianhao Lu2012-02-101-0/+1
| | | | | | | | | | Ensure do_patch have the same sstate hashes for nativesdk variants of gcc family recipes, since they share the same source directory. (From OE-Core rev: afb400e9c3ddac604906bde44df5da29a6c134d9) Signed-off-by: Lianhao Lu <lianhao.lu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* gcc-common.inc: Fix commentRichard Purdie2012-01-241-1/+1
| | | | | | (From OE-Core rev: a4a98b6d6273d4e716afbff0880d0ac2ff7be0a9) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* gcc-common.inc: Ensure WORKDIR doesn't adversly affect sstate checksumsRichard Purdie2012-01-241-0/+4
| | | | | | | | | | Changes in WORKDIR were changing the do_patch stamps between gcc-crosssdk and gcc-cross. This excludes the variable since in this case, we don't need want those changes to affect the signatures. (From OE-Core rev: 0de85d2ca3bc9674323302a35995dfddb6044a71) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* gcc: Ensure that the shared source directory shared the same sstate hashesRichard Purdie2012-01-231-0/+17
| | | | | | | | | | | | | | | | | | | | | | The fetch/unpack/patch/headerfix tasks are shared and hence their sstate hashes should also match. Sadly this is not the case since: a) gcc-runtime applies an additional patch b) The do_headerfix task was missing from libgcc c) The do_headerfix task is a shell task and hence depends on all exported variables which can vary between cross and target recipes. To fix this, the patch moves the patch to the common code, adds the headerfix task to a common include file and disabled shell dependencies on the do_headerfix task since its clear in this case we don't need thsoe dependencies since we just call sed. With this patch applied, all these recipes now share common sstate checksums. (From OE-Core rev: 2c4569801a710f34a695b8d2a0ee7fc127fb34e4) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* Fix multiarch DISTRO_FEATUREJulian Pidancet2011-11-301-7/+10
| | | | | | | | | | | | | | Make get_gcc_multiarch_setting more elegant. Use a dictionnary to store the config options and replace bb.data.getVar with d.getVar. Remove i686 from the architecture list because it doesn't seem to be a valid TARGET_ARCH any more in OE. Configure gdb (gdb and gdb-cross) with --enable-64-bit-bfd if multiarch DISTRO_FEATURE is present (From OE-Core rev: 0b42b2fc118bef8ce0d1473b146673182f5d1f78) Signed-off-by: Julian Pidancet <julian.pidancet@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* Introduce multiarch DISTRO_FEATUREJulian Pidancet2011-11-291-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch introduces a distro feature which enables gcc to produce both 32bit and 64bit code, and enables binutils to operate on both 32bit and 64bit binaries. It differs from multilib toolchains in that it does not require to compile a version of the libc for each architecture variant. However, the code produced for the secondary architecture will not be linkable against the libc. v2: - Renamed the feature name from "biarch" to "multiarch". The GCC installation manual claims that the mips-linux can be made a tri-arch compiler (http://gcc.gnu.org/install/configure.html) - For x86_64, the compiler is made bi-arch by default, so nothing has to be done in particular. - I analyzed the gcc/config.gcc from GCC sources and added in this patch all the architectures that could be made biarch with the version of gcc currently used in OE, which are powerpc, and sparc, in addition to x86. mips and s390 will probably be supported in future versions of gcc. For x86 and sparc, only the --enable-targets=all option is valid to make this work (this option doesn't have any other side effects than making the compiler bi-arch). For powerpc, I used the --enable-targets=powerpc64 option (although 'all' also works). Note: - Untested on powerpc and sparc. But I believe it works the same as with x86. - gcc in meta-toolchain is also made multiarch. (From OE-Core rev: 99e295ef30ba02db3966c66619807c037ef5089f) Signed-off-by: Julian Pidancet <julian.pidancet@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* Convert to use direct access to the data store (instead of bb.data.*Var*())Richard Purdie2011-11-101-4/+4
| | | | | | | | | | | | | | | | | This is the result of running the following over the metadata: sed \ -e 's:bb.data.\(setVar([^,()]*,[^,()]*\), *\([^ )]*\) *):\2.\1):g' \ -e 's:bb.data.\(setVarFlag([^,()]*,[^,()]*,[^,()]*\), *\([^) ]*\) *):\2.\1):g' \ -e 's:bb.data.\(getVar([^,()]*\), *\([^(), ]*\) *,\([^)]*\)):\2.\1,\3):g' \ -e 's:bb.data.\(getVarFlag([^,()]*,[^,()]*\), *\([^(), ]*\) *,\([^)]*\)):\2.\1,\3):g' \ -e 's:bb.data.\(getVarFlag([^,()]*,[^,()]*\), *\([^() ]*\) *):\2.\1):g' \ -e 's:bb.data.\(getVar([^,()]*\), *\([^) ]*\) *):\2.\1):g' \ -i `grep -ril bb.data *` (From OE-Core rev: b22831fd63164c4db9c0b72934d7d734a6585251) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake meta-toolchain with gcc 4.5.1 failedRobert Yang2011-08-231-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Fixes bug [YOCTO #1386] 1) Add the following lines to conf/local.conf: SDKGCCVERSION="4.5.1" GCCVERSION="4.5.1" 2) bitbake meta-toolchain The we will notice the error that sed can't find the directory: ${TMPDIR}/work-shared/gcc-${PV}/gcc-${PV}-${PR} we had changed the name of S from gcc-${PV} to gcc-${PV}-${PR}, but didn't update meta/recipes-devtools/gcc/gcc-common.inc, so fix S in gcc-common.inc would make it work. (From OE-Core rev: 282773ff3e0f365c08ae7e8fe759029f33e575b1) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* gcc: Various fixups to ensure consistent gcc buildsRichard Purdie2011-08-111-4/+5
| | | | | | | | | | | | | | | We ensure that: * the shared work directory contains PR and ensure PR values are consistent across gcc builds * the regexp to handle library directories is in a specific task and run once This avoids breakage that was seen in incremental builds after commit be1f70d68b6b75772ebab8bdff683ddd7c42b0cd where the interpretor could become corrupted. This was due to the sed expression corrupting the source directory. (From OE-Core rev: 970af6b09e1d69041b0d82fa56ace19543405eb1) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* gcc: Add gcc configure for PowerPC e500v2/SPE embedded floating point ABIKumar Gala2011-07-201-0/+2
| | | | | | | | | | | | The e500v2 core utilizes a unique floating point programming model / ABI. We utilize TARGET_FPU = "ppc-efd" to distinguish this choice (Embedded scalar single-precision floating-point). When building the toolchain for this ABI we need configure gcc with --enable-e500_double. (From OE-Core rev: 5136c4ad6279c1593301f6dde9b959ad26a2fd0f) Signed-off-by: Kumar Gala <galak@kernel.crashing.org> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* Share gcc work directoriesRobert Yang2011-06-301-2/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patched is derived from Richard, make gcc use the shared source directory during the different building: 1) Make gcc-cross, gcc-cross-initial, gcc-cross-intermediate and gcc-runtime share the same source directory. 2) The source directory is ${TMPDIR}/work-shared/gcc-${PV}, for example: tmp/work-shared/gcc-4.5.1 3) Fix do_clean to clean the shared source directory and stamps 4) gcc uses sed and creates config files against ${S} which means the directory should not be shared. Change the way to make it work: * The configure option --with-headers=${STAGING_DIR_TARGET}${SYSTEMHEADERS} can replace the sed command, see the code in configure: if test "x$with_headers" != x; then glibc_header_dir=$with_headers This has the same effect as the sed command: sed -i 's:^\([ ]*\)glibc_header_dir=\"${with_build_sysroot}/usr/include\": ... so add the --with-headers=${STAGING_DIR_TARGET}${SYSTEMHEADERS} to gcc-configure-cross.inc( not add to gcc-configure-common.inc, since not all the gcc building need this, the one which has its own do_configure doesn't need it). * Move t-oe from ${T} to ${B}/gcc, so that the patched Makefile.in can read it easily, please see the commit for gcc-4.5.1 and gcc-4.6.0. * Use the defaults.h in ${B}/gcc instead of ${S}/gcc, and the patched configure.ac(configure) can read it correctly, please see the commit for gcc-4.5.1 and gcc-4.6.0. * The gcc-crosssdk.inc used sed to edit ${S}/config/*/linux*.h to change the GLIBC_DYNAMIC_LINKER, which made the source incompatible. To make the source compatible: - Use: sed -i ${S}/gcc/config/*/linux*.h -e \ 's#\(GLIBC_DYNAMIC_LINKER[^ ]*\)\( *"/lib.*\)#\1 SYSTEMLIBS_DIR\2#' so entries in the files that look like: #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2" would become #define GLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR"/ld-linux-x86-64.so.2" and we define SYSTEMLIBS_DIR in defaults.h. NOTE: #define GLIBC_DYNAMIC_LINKER64 (SYSTEMLIBS_DIR "/ld-linux-x86-64.so.2") doesn't work in in the following define: #define LINUX_DYNAMIC_LINKER \ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER) so use #define GLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR"/ld-linux-x86-64.so.2" 5) Add do_configure_prepend to gcc-configure-common.inc and remove the one in gcc-crosssdk.inc, this makes it easy to share the source, otherwise we need do extra changes in gcc-configure-sdk.inc. 6) Use "cat > file <_EOF" to replace the "echo > file" (From OE-Core rev: 934d38530c9a67562e53d4034aee5531f0f26750) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* Revert "bitbake/gcc: Enable a shared common source tree"Richard Purdie2011-03-291-10/+2
| | | | | This reverts commit 12b163dbd81cafafec1ebe3c4039c65af60ee261 as it was an unintended change for master
* bitbake/gcc: Enable a shared common source treeRichard Purdie2011-03-281-2/+10
| | | | | | | | | | | | | | | | | | | | | This patch is a quick proof of concept to show how source code could be shared between recipes which use ${B} to have a separate build directory compared to source directory ${S}. Issues: a) gcc uses sed and creates config files against ${S} which means the directory should not be shared. Need to change the way that works. b) Could be extended to cover eglibc except there is a patch applied against nativesdk versions which again makes the source incompatible. c) Need to clean up the layout in work-shared and make a directory level deeper to ensure patch separation. d) clean task does not remove stamps Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* meta: Update mirror urls to new format and update yocto project urlsRichard Purdie2011-02-111-6/+6
| | | | Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* Major layout change to the packages directoryRichard Purdie2010-08-271-0/+46
Having one monolithic packages directory makes it hard to find things and is generally overwhelming. This commit splits it into several logical sections roughly based on function, recipes.txt gives more information about the classifications used. The opportunity is also used to switch from "packages" to "recipes" as used in OpenEmbedded as the term "packages" can be confusing to people and has many different meanings. Not all recipes have been classified yet, this is just a first pass at separating things out. Some packages are moved to meta-extras as they're no longer actively used or maintained. Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>