diff options
author | Khem Raj <raj.khem@gmail.com> | 2009-09-03 15:22:46 -0700 |
---|---|---|
committer | Khem Raj <raj.khem@gmail.com> | 2009-09-03 15:34:56 -0700 |
commit | 558f6d44365f062523fbba3926ab46e5cd1984b8 (patch) | |
tree | 67123ae2247951ded269701de07cb06977e1e94a /conf/distro | |
parent | b9feafad3e4f1cac5e0eb4d6da498febdea7d5ae (diff) | |
download | openembedded-558f6d44365f062523fbba3926ab46e5cd1984b8.tar.gz |
OpenEmbedded: Switch to using linux-uclibceabi and linux-gnu for TARGET_OS
* Bump the ABI_LAYOUT. Build from scratch will be needed.
* Replace using TARGET_OS from linux->linux-gnu.
* Replace using linux-uclibcgnueabi->linux-uclibceabi.
* Add 'eabi' to DISTRO_FEATURES (only for minimal and micro).
* Use eabi and BASE_PACKAGE_ARCH to compute real TARGET_OS.
* Fix the micro conf to get console image building.
* Fix the linux-uclibcgnueabi overrides in all recipes.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Acked-by: Phill Blundell <pb@reciva.com>
Acked-by: Michael 'Mickey' Lauer <mickey@vanille-media.de>
Diffstat (limited to 'conf/distro')
-rw-r--r-- | conf/distro/include/sane-toolchain-eglibc.inc | 2 | ||||
-rw-r--r-- | conf/distro/include/sane-toolchain-glibc.inc | 2 | ||||
-rw-r--r-- | conf/distro/include/sane-toolchain-uclibc.inc | 3 | ||||
-rw-r--r-- | conf/distro/include/sane-toolchain.inc | 60 | ||||
-rw-r--r-- | conf/distro/micro.conf | 11 | ||||
-rw-r--r-- | conf/distro/minimal.conf | 12 |
6 files changed, 68 insertions, 22 deletions
diff --git a/conf/distro/include/sane-toolchain-eglibc.inc b/conf/distro/include/sane-toolchain-eglibc.inc index 88719f5f33..4c5f44ff8e 100644 --- a/conf/distro/include/sane-toolchain-eglibc.inc +++ b/conf/distro/include/sane-toolchain-eglibc.inc @@ -3,8 +3,6 @@ # eglibc: # [23:00] oxo: glibc (any version) on sparc does not like (repeat me) "-Os" -TARGET_OS = "linux${@['','-gnueabi'][bb.data.getVar('TARGET_ARCH',d,1) in ['arm', 'armeb'] and bb.data.getVar('MACHINE',d) not in ['collie','h3600', 'h3800', 'simpad', 'htcwallaby']]}" - FULL_OPTIMIZATION = "-fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os" FULL_OPTIMIZATION_pn-perl = "-fexpensive-optimizations -fomit-frame-pointer -frename-registers -O1" FULL_OPTIMIZATION_sparc = "-fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2" diff --git a/conf/distro/include/sane-toolchain-glibc.inc b/conf/distro/include/sane-toolchain-glibc.inc index f3da7c31a2..f029c6fe46 100644 --- a/conf/distro/include/sane-toolchain-glibc.inc +++ b/conf/distro/include/sane-toolchain-glibc.inc @@ -2,8 +2,6 @@ # glibc: -TARGET_OS = "linux${@['','-gnueabi'][bb.data.getVar('TARGET_ARCH',d,1) in ['arm', 'armeb'] and bb.data.getVar('MACHINE',d) not in ['collie','h3600', 'h3800', 'simpad', 'htcwallaby']]}" - #mess with compiler flags to use -Os instead of -O2 #Please see http://free-electrons.com/doc/embedded_linux_optimizations/img47.html for some more info # perl has some problems, see http://bugs.openembedded.net/show_bug.cgi?id=1616 diff --git a/conf/distro/include/sane-toolchain-uclibc.inc b/conf/distro/include/sane-toolchain-uclibc.inc index 04935fe46d..3069820918 100644 --- a/conf/distro/include/sane-toolchain-uclibc.inc +++ b/conf/distro/include/sane-toolchain-uclibc.inc @@ -15,9 +15,6 @@ USE_NLS_glib-2.0 = "yes" USE_NLS_glib-2.0-native = "yes" USE_NLS_gcc-cross = "no" -TARGET_OS_UC = "linux${@['-uclibc','-uclibcgnueabi'][bb.data.getVar('TARGET_ARCH',d,1) in ['arm', 'armeb'] and bb.data.getVar('MACHINE',d) not in ['collie','h3600', 'h3800', 'simpad', 'htcwallaby']]}" -TARGET_OS = "${@['${TARGET_OS_UC}', 'uclinux-uclibc'][bb.data.getVar('TARGET_ARCH',d) in ['bfin']]}" - #mess with compiler flags to use -Os instead of -O2 #Please see http://free-electrons.com/doc/embedded_linux_optimizations/img47.html for some more info FULL_OPTIMIZATION = "-fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os" diff --git a/conf/distro/include/sane-toolchain.inc b/conf/distro/include/sane-toolchain.inc index cebe77b4b5..65cb7763d1 100644 --- a/conf/distro/include/sane-toolchain.inc +++ b/conf/distro/include/sane-toolchain.inc @@ -65,16 +65,21 @@ PREFERRED_PROVIDER_linux-libc-headers = "linux-libc-headers" # Branding TARGET_VENDOR = "-oe" +# Add FEED_ARCH to the overrides list so that we can override the +# ARM_INSTRUCTION_SET like below + +OVERRIDES .= ":${FEED_ARCH}" + # ARM920T and up can use thumb mode to decrease binary size at the expense of speed # (the complete story is a bit more nuanced due to cache starvation) # Minimal turns on thumb for armv4t machine according to this RFC: # http://lists.linuxtogo.org/pipermail/angstrom-distro-devel/2008-October/002714.html # We can't set ARM_INSTRUCTION_SET_<override> directly since that will un-overridable in recipes like gcc -PREFERRED_ARM_INSTRUCTION_SET ?= "arm" PREFERRED_ARM_INSTRUCTION_SET_armv4t = "thumb" PREFERRED_ARM_INSTRUCTION_SET_armv5te = "thumb" PREFERRED_ARM_INSTRUCTION_SET_armv5teb = "thumb" +PREFERRED_ARM_INSTRUCTION_SET ?= "arm" ARM_INSTRUCTION_SET = "${PREFERRED_ARM_INSTRUCTION_SET}" # "arm" "thumb" # The instruction set the compiler should use when generating application @@ -136,7 +141,58 @@ ENABLE_BINARY_LOCALE_GENERATION_armv7a = "0" #qemu has taken a dislike to armeb as well ENABLE_BINARY_LOCALE_GENERATION_armeb = "0" +def detect_arm_abi (d): + import bb + if bb.data.getVar('DISTRO_FEATURES',d) is None: + if bb.data.getVar('TARGET_ARCH', d, 1) in [ 'arm', 'armeb' ]: + return "oabi" + else: + return "" + if bb.data.getVar('TARGET_ARCH', d, 1) in [ 'arm', 'armeb' ]: + if 'eabi' in bb.data.getVar('DISTRO_FEATURES',d).split(): + return "eabi" + return "oabi" + return "" + +def compute_os_portion_of_target_triplet (d): + import bb + arm_eabi_supporting_arches = "armv6 armv6-novfp \ + armv5te iwmmxt armv7a armv7 armv6 armv5teb armv5te armv4t" + ppc_spe_supporting_arches = "ppce500v2 ppce500" + + if bb.data.getVar("LIBC", d, 1) == "uclibc": + libc_suffix = "uclibc" + else: + libc_suffix = "gnu" + + if bb.data.getVar('TARGET_ARCH',d,1) in ['bfin']: + if libc_suffix == "gnu": + bb.fatal("bfin is not supported on glibc/eglibc. Please choose uclibc") + else: + os_suffix = "uclinux" + else: + os_suffix = "linux" + bparch = bb.data.getVar('BASE_PACKAGE_ARCH', d,1) + + if bb.data.getVar('DISTRO_FEATURES',d,1) is not None and \ + bparch is not None: + if 'eabi' in bb.data.getVar('DISTRO_FEATURES',d,1).split() and \ + bb.data.getVar('TARGET_ARCH', d, 1) in [ 'arm', 'armeb' ]: + if bparch not in arm_eabi_supporting_arches.split(): + bb.fatal("DISTRO requested EABI but selected machine does not support EABI") + abi_suffix = "" + else: + abi_suffix = "eabi" + elif bparch in ppc_spe_supporting_arches.split(): + abi_suffix = "spe" + else: + abi_suffix = "" + else: + bb.note("DISTRO_FEATURES is not set abi suffix not set") + abi_suffix = "" + return os_suffix + "-" + libc_suffix + abi_suffix # This is needed to get a correct PACKAGE_ARCH for packages that have PACKAGE_ARCH = ${MACHINE_ARCH} -ARM_ABI ?= "${@['','oabi'][bb.data.getVar('MACHINE',d) in ['collie','h3600', 'h3800', 'simpad', 'htcwallaby']]}" +ARM_ABI = "${@detect_arm_abi(d)}" +TARGET_OS = "${@compute_os_portion_of_target_triplet(d)}" include conf/distro/include/sane-toolchain-${ARM_ABI}.inc diff --git a/conf/distro/micro.conf b/conf/distro/micro.conf index 2d45425290..aca4a18caf 100644 --- a/conf/distro/micro.conf +++ b/conf/distro/micro.conf @@ -16,16 +16,10 @@ DISTRO_NAME = "micro" DISTRO_VERSION = "${SRCDATE}" ############################################################################# -# TARGET OS -############################################################################# -# Linux -TARGET_OS = "linux" - -############################################################################# # DISTRO FEATURE SELECTION ############################################################################# # No features selected -DISTRO_FEATURES = "" +DISTRO_FEATURES = "eabi" ############################################################################# # LIBRARY NAMES @@ -79,7 +73,7 @@ ${TARGET_ARCH}:build-${BUILD_OS}:fail-fast:pn-${PN}" # PREFERRED PROVIDERS ############################################################################# PREFERRED_PROVIDER_task-bootstrap = "task-bootstrap" - +PREFERRED_PROVIDER_virtual/libx11 = "libx11" ############################################################################# # PREFERRED VERSIONS ############################################################################# @@ -110,3 +104,4 @@ USE_LDCONFIG = "0" # Disable online package management ONLINE_PACKAGE_MANAGEMENT = "none" +DISTRO_BLUETOOTH_MANAGER = "bluez4" diff --git a/conf/distro/minimal.conf b/conf/distro/minimal.conf index fa2a926a1d..ecf6649fab 100644 --- a/conf/distro/minimal.conf +++ b/conf/distro/minimal.conf @@ -25,6 +25,8 @@ DISTRO_CHECK := "${@bb.data.getVar("DISTRO_VERSION",d,1) or bb.fatal('Remove thi DISTRO_BLUETOOTH_MANAGER = "bluez4" # We want images supporting the following features (for task-base) DISTRO_FEATURES = "nfs smbfs wifi ppp alsa ext2 vfat pcmcia usbgadget usbhost pci" +# Following features are for ARM and E500 based machines +DISTRO_FEATURES += "eabi" ############################################################################# # LIBRARY NAMES @@ -71,15 +73,15 @@ KERNEL = "kernel26" MACHINE_KERNEL_VERSION = "2.6" ############################################################################# -# TOOLCHAIN +# OVERWRITES adjusted from bitbake.conf to feature the MACHINE_CLASS ############################################################################# -LIBC ?= "eglibc" -require conf/distro/include/sane-toolchain.inc +OVERRIDES = "local:${MACHINE}:${MACHINE_CLASS}:${DISTRO}:${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:fail-fast:pn-${PN}" ############################################################################# -# OVERWRITES adjusted from bitbake.conf to feature the MACHINE_CLASS +# TOOLCHAIN ############################################################################# -OVERRIDES = "local:${MACHINE}:${MACHINE_CLASS}:${DISTRO}:${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:fail-fast:pn-${PN}" +LIBC ?= "eglibc" +require conf/distro/include/sane-toolchain.inc ############################################################################# # PREFERRED PROVIDERS |