]> code.ossystems Code Review - openembedded-core.git/commitdiff
conf/machine/include: Start to fill out architecture specific tune include files...
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 22 Jul 2011 16:32:21 +0000 (17:32 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 25 Jul 2011 13:19:54 +0000 (14:19 +0100)
These changes revolve around the idea of tune features. These are represented by
'flag' strings that are included in the TUNE_FEATURES variable.

Any string included in TUNE_FEATURES should also add a TUNEVALID[<name>] entry so
we can know which flags are available in TUNE_FEATURES and have documentation about
what the flags do. We will add sanity code to error if flags are listed in
TUNE_FEATURES but are not documented in TUNEVALID.

A given tune configuration will want to define one or more predetermined sets of
_FEATURE flag lists. These are defined in the form TUNE_FEATURES_tune-<name>.
For defined tune configuation, <name> should be added to the AVAILTUNE list so that
we can determine what tune configurations are available. Flags cannot be used in this
case as with TUNEVALID since its useful to be able to build up tune lists from other
TUNE_FEATURES_tune-yyy options.

A given tune configuration may also define PACKAGE_EXTRA_ARCHS_tune-<name> and
BASE_LIB_tune-<name> to control the multilib location. All options can be overridden
by the distro or local user configuration.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
29 files changed:
meta/conf/bitbake.conf
meta/conf/machine/include/arm/arch-arm.inc [new file with mode: 0644]
meta/conf/machine/include/ia32/arch-ia32.inc [new file with mode: 0644]
meta/conf/machine/include/mips/arch-mips.inc [new file with mode: 0644]
meta/conf/machine/include/powerpc/arch-powerpc.inc [new file with mode: 0644]
meta/conf/machine/include/tune-arm1136jf-s.inc
meta/conf/machine/include/tune-arm920t.inc
meta/conf/machine/include/tune-arm926ejs.inc
meta/conf/machine/include/tune-arm9tdmi.inc
meta/conf/machine/include/tune-armv7.inc
meta/conf/machine/include/tune-atom.inc
meta/conf/machine/include/tune-c3.inc
meta/conf/machine/include/tune-core2.inc [new file with mode: 0644]
meta/conf/machine/include/tune-cortexa8.inc
meta/conf/machine/include/tune-cortexm1.inc
meta/conf/machine/include/tune-cortexm3.inc
meta/conf/machine/include/tune-cortexr4.inc
meta/conf/machine/include/tune-ep9312.inc
meta/conf/machine/include/tune-i586.inc
meta/conf/machine/include/tune-iwmmxt.inc
meta/conf/machine/include/tune-mips32.inc
meta/conf/machine/include/tune-ppc603e.inc
meta/conf/machine/include/tune-ppce300c2.inc
meta/conf/machine/include/tune-ppce500.inc
meta/conf/machine/include/tune-ppce500mc.inc
meta/conf/machine/include/tune-ppce500v2.inc
meta/conf/machine/include/tune-strongarm1100.inc
meta/conf/machine/include/tune-x86_64.inc
meta/conf/machine/include/tune-xscale.inc

index 9d1c7690bc98b869d3ed88b30265e1e8ff263e87..380da1c5bb882ee354ff4f97979dd2c5419f42d9 100644 (file)
@@ -83,6 +83,8 @@ HOST_EXEEXT = ""
 
 TUNE_ARCH ??= "INVALID"
 TUNE_CCARGS ??= ""
+TUNE_FEATURES ??= "${TUNE_FEATURES_tune-${DEFAULTTUNE}}"
+PACKAGE_EXTRA_ARCHS_tune-${DEFAULTTUNE} ??= "${TARGET_ARCH}"
 
 TARGET_ARCH = "${TUNE_ARCH}"
 TARGET_OS = "INVALID"
@@ -100,7 +102,7 @@ SDK_CC_ARCH = "${BUILD_CC_ARCH}"
 
 PACKAGE_ARCH = "${TUNE_PKGARCH}"
 MACHINE_ARCH = "${@[bb.data.getVar('TUNE_PKGARCH', d, 1), bb.data.getVar('MACHINE', d, 1)][bool(bb.data.getVar('MACHINE', d, 1))].replace('-', '_')}"
-PACKAGE_EXTRA_ARCHS ??= "${TARGET_ARCH}"
+PACKAGE_EXTRA_ARCHS ??= "${PACKAGE_EXTRA_ARCHS_tune-${DEFAULTTUNE}}"
 PACKAGE_ARCHS = "all any noarch ${PACKAGE_EXTRA_ARCHS} ${MACHINE_ARCH}"
 # MACHINE_ARCH shouldn't be included here as a variable dependency
 # since machine specific packages are handled using multimachine
diff --git a/meta/conf/machine/include/arm/arch-arm.inc b/meta/conf/machine/include/arm/arch-arm.inc
new file mode 100644 (file)
index 0000000..e773d14
--- /dev/null
@@ -0,0 +1 @@
+TUNE_ARCH = "arm"
diff --git a/meta/conf/machine/include/ia32/arch-ia32.inc b/meta/conf/machine/include/ia32/arch-ia32.inc
new file mode 100644 (file)
index 0000000..d1d6605
--- /dev/null
@@ -0,0 +1,31 @@
+#
+# IA32 Architecture definition
+#
+
+DEFAULTTUNE ?= "x86"
+TARGET_FPU ?= ""
+
+# ELF32 ABI
+TUNEVALID[m32] = "IA32 ELF32 standard ABI"
+TUNECONFLICTS[m32] = "m64"
+TUNE_ARCH .= "${@bb.utils.contains("TUNE_FEATURES", "m32", "i586", "" ,d)}"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "m32", "-m32", "", d)}"
+
+# ELF64 ABI
+TUNEVALID[m64] = "IA32e (x86_64) ELF64 standard ABI"
+TUNECONFLICT[m64] = "m32"
+TUNE_ARCH .= "${@bb.utils.contains("TUNE_FEATURES", "m64", "x86_64", "" ,d)}"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "m64", "-m64", "", d)}"
+
+TUNE_PKGARCH ?= "${@bb.utils.contains("TUNE_FEATURES", "m32", "x86", "x86_64", d)}"
+
+# Default Tune configurations
+AVAILTUNES += "x86"
+TUNE_FEATURES_tune-x86 ?= "m32"
+BASE_LIB_tune-x86 ?= "lib"
+PACKAGE_EXTRA_ARCHS_tune-x86 = "x86"
+
+AVAILTUNES += "x86-64"
+TUNE_FEATURES_tune-x86-64 ?= "m64"
+BASE_LIB_tune-x86-64 ?= "lib64"
+PACKAGE_EXTRA_ARCHS_tune-x86-64 = "x86_64"
diff --git a/meta/conf/machine/include/mips/arch-mips.inc b/meta/conf/machine/include/mips/arch-mips.inc
new file mode 100644 (file)
index 0000000..f7f4eed
--- /dev/null
@@ -0,0 +1 @@
+TUNE_ARCH = "mips"
diff --git a/meta/conf/machine/include/powerpc/arch-powerpc.inc b/meta/conf/machine/include/powerpc/arch-powerpc.inc
new file mode 100644 (file)
index 0000000..5ab81d4
--- /dev/null
@@ -0,0 +1 @@
+TUNE_ARCH = "powerpc"
index c1d0c0705bf938bf757f0506a55a43782258375a..953f0dd966abab49b73d231e551fd0b9e1a78093 100644 (file)
@@ -1,4 +1,4 @@
-TUNE_ARCH = "arm"
+require conf/machine/include/arm/arch-arm.inc
 
 TUNE_CCARGS = "-march=armv6j -mtune=arm1136jf-s"
 TUNE_CCARGS += "${@['', '-mfloat-abi=softfp -mfpu=vfp'][(bb.data.getVar('TARGET_FPU', d, 1) == 'soft') and (bb.data.getVar('CPU_FEATURES', d, 1).find('vfp') != -1)]}"
index 3f30e2ab878395174f61f4cacd00b08969fc097f..6c8702657cec0df8faab159ad415e40a28c67717 100644 (file)
@@ -1,4 +1,4 @@
-TUNE_ARCH = "arm"
+require conf/machine/include/arm/arch-arm.inc
 
 TUNE_PKGARCH = "armv4t"
 TUNE_CCARGS = "-march=armv4t -mtune=arm920t"
index 049f57cb3f83b16cf06d5a98a82652b850ceed62..543ab62c70b4544e9d21e0a7946e917b90e5c0ee 100644 (file)
@@ -1,4 +1,4 @@
-TUNE_ARCH = "arm"
+require conf/machine/include/arm/arch-arm.inc
 
 TUNE_PKGARCH = "armv5te"
 PACKAGE_EXTRA_ARCHS = "arm armv4 armv4t armv5te"
index 0ed2f40908d05660bf7c6c5f92064886e3aaee49..f1001ac65dd1f22f8fe909a766e83bd4068b7316 100644 (file)
@@ -1,4 +1,4 @@
-TUNE_ARCH = "arm"
+require conf/machine/include/arm/arch-arm.inc
 
 TUNE_PKGARCH = "armv4t"
 PACKAGE_EXTRA_ARCHS = "arm armv4 armv4t"
index 2e32323ebf60fc1690b372a9b52620d4da205c76..8a68c0abe3a2a96f470b066141f0e3265d055178 100644 (file)
@@ -1,4 +1,4 @@
-TUNE_ARCH = "arm"
+require conf/machine/include/arm/arch-arm.inc
 
 # valid options for -march: `armv7', `armv7-a', `armv7-r', `armv7-m'
 # valid option for -mtune: `cortex-a8', `cortex-r4', `cortex-m3', `cortex-m1'
index 52acd12ba84a63e72e00256aef9b7cb3f3194f77..5e1bb74c6cd232e41099fbc19ef4dbe92aa8a479 100644 (file)
@@ -1,7 +1,2 @@
-TUNE_ARCH = "i586"
-
-TUNE_PKGARCH = "core2"
-TUNE_CCARGS = "-m32 -march=core2 -msse3 -mtune=generic -mfpmath=sse"
-#MOBLIN_CFLAGS = "-Os -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -fasynchronous-unwind-tables"
-
-PACKAGE_EXTRA_ARCHS = "x86 i386 i486 i586 i686 core2"
+# Atom tunings are the same as core2 for now...
+require conf/machine/include/tune-core2.inc
index dbe1e43abc211397d63143bdb0705b649599348f..e1569f595289a642ec2ec18bda3f933e186c8fca 100644 (file)
@@ -1,4 +1,4 @@
-TUNE_ARCH = "i586"
+require conf/machine/include/ia32/arch-ia32.inc
 
 TUNE_PKGARCH = "i586"
 
diff --git a/meta/conf/machine/include/tune-core2.inc b/meta/conf/machine/include/tune-core2.inc
new file mode 100644 (file)
index 0000000..138ca17
--- /dev/null
@@ -0,0 +1,21 @@
+DEFAULTTUNE ?= "core2"
+TUNE_ARCH ?= "${@bb.utils.contains("TUNE_FEATURES", "m32", "i686", "x86_64", d)}"
+TUNE_PKGARCH ?= "${@bb.utils.contains("TUNE_FEATURES", "m32", "core2", "core2-64", d)}"
+
+require conf/machine/include/tune-i586.inc
+
+# Extra tune features
+TUNEVALID[core2] = "Enable core2 specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "core2", "-march=core2 -msse3 -mtune=generic -mfpmath=sse", "", d)}"
+
+# Extra tune selections
+AVAILTUNES += "core2"
+TUNE_FEATURES_tune-core2 ?= "${TUNE_FEATURES_tune-x86} core2"
+BASE_LIB_tune-core2 ?= "lib"
+PACKAGE_EXTRA_ARCHS_tune-core2 = "${PACKAGE_EXTRA_ARCHS_tune-x86} i386 i486 i586 i686 core2"
+
+AVAILTUNES += "core2-64"
+TUNE_FEATURES_tune-core2-64 ?= "${TUNE_FEATURES_tune-x86-64} core2"
+BASE_LIB_tune-core2-64 ?= "lib64"
+PACKAGE_EXTRA_ARCHS_tune-core2-64 = "${PACKAGE_EXTRA_ARCHS_tune-x86-64} core2-64"
+
index 9be423abffee1a369227e542e999e74eec028777..ae5095486b8273069ac31fc3e833df2c45e89b09 100644 (file)
@@ -1,4 +1,5 @@
-TUNE_ARCH = "arm"
+require conf/machine/include/arm/arch-arm.inc
+
 
 # Instead of using -mfpu=vfp[2] we can use -mfpu=neon to make use of gcc intrinsics[1] and vectorize loops with -ftree-vectorize[3]
 # [1] http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html
index d0d3b2cb17346ebe1bf4485e07ce7479f4ea826c..b944db45525f066e35707d6418ddb827ee97b1f3 100644 (file)
@@ -1,4 +1,4 @@
-TUNE_ARCH = "arm"
+require conf/machine/include/arm/arch-arm.inc
 
 TUNE_CCARGS = "-march=armv7 -mtune=cortex-m1 -mfpu=vfp -mfloat-abi=softfp"
 TUNE_PKGARCH = "armv6"
index 495c8f642057b70a4c33343b6cdc9649db9e018e..a77cbddfcd9a98493b806ffea9afe9ffaccfc6b4 100644 (file)
@@ -1,4 +1,4 @@
-TUNE_ARCH = "arm"
+require conf/machine/include/arm/arch-arm.inc
 
 # valid options for -march: `armv7', `armv7-m'
 TUNE_CCARGS = "-march=armv7-m -mtune=cortex-m3 -mfpu=vfp -mfloat-abi=softfp"
index c775e8309e66c66fd52dbb4e05bf146054a15f22..c9193ca8c3e2497608e0995ffc9075bb79af091c 100644 (file)
@@ -1,4 +1,4 @@
-TUNE_ARCH = "arm"
+require conf/machine/include/arm/arch-arm.inc
 
 # valid options for -march: `armv7', `armv7-r'
 TUNE_CCARGS = "-march=armv7-r -mtune=cortex-r4 -mfpu=vfp -mfloat-abi=softfp"
index 8c7fc5a1d808228d67cc978f7f3a680df49c2ddc..e04a00a9844594c6abc29a36a6f367659b8be30a 100644 (file)
@@ -1,4 +1,4 @@
-TUNE_ARCH = "arm"
+require conf/machine/include/arm/arch-arm.inc
 
 TUNE_CCARGS = "-march=ep9312 -mtune=ep9312 -mcpu=ep9312"
 # add "-mfp=maverick" for newer gcc versions > 4.0
index 1dc44dfd6709ce95f1c5a1d6e0ae8ba381203173..ba655b94d34f35e4f543443053e0449fe6ce34d4 100644 (file)
@@ -1,6 +1,15 @@
-TUNE_ARCH = "i586"
+DEFAULTTUNE ?= "i586"
+TUNE_PKGARCH ?= "i586"
 
-TUNE_PKGARCH = "i586"
-TUNE_CCARGS = "-m32 -march=i586"
+require conf/machine/include/ia32/arch-ia32.inc
+
+# Extra tune features
+TUNEVALID[i586] = "Enable i586 specific processor optimizations"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "i586", "-march=i586", "", d)}"
+
+# Extra tune selections
+AVAILTUNES += "i586"
+TUNE_FEATURES_tune-i586 ?= "${TUNE_FEATURES_tune-x86} i586"
+BASE_LIB_tune-i586 ?= "lib"
+PACKAGE_EXTRA_ARCHS_tune-i586 = "${PACKAGE_EXTRA_ARCHS_tune-x86} i386 i486 i586"
 
-PACKAGE_EXTRA_ARCHS = "x86 i386 i486 i586"
index 236cede98866a80f411785b025fd2f70e39b0037..6bb76d5b3231f86e0ab64625f910468efd22cfdd 100644 (file)
@@ -1,4 +1,4 @@
-TUNE_ARCH = "arm"
+require conf/machine/include/arm/arch-arm.inc
 
 # Configurations for the Intel PXA27x Appications Processor Family. 
 # Please use tune-xscale for PXA255/PXA26x based processors.
index 182d16cf2215ac9232c711619979f08ca519e9da..28b00479e2c5ec86908fba1da93bfd329a537a17 100644 (file)
@@ -1,4 +1,4 @@
-TUNE_ARCH = "mips"
+require conf/machine/include/mips/arch-mips.inc
 
 TUNE_CCARGS = "-march=mips32"
 TUNE_PKGARCH = "mips"
index ec43cfe831dea69809f0810be944b76e597352ed..61c0669acf04ec822e3244459689c36a26ac58c7 100644 (file)
@@ -1,4 +1,4 @@
-TUNE_ARCH = "powerpc"
+require conf/machine/include/powerpc/arch-powerpc.inc
 
 TUNE_CCARGS = "-mcpu=603e  -mhard-float"
 TUNE_PKGARCH = "ppc603e"
index ac232424bfe39036c21e5e3d22d0ab2d84e460b1..a38e97c18b9903d89dd86b1c02da24433480dd2d 100644 (file)
@@ -1,4 +1,4 @@
-TUNE_ARCH = "powerpc"
+require conf/machine/include/powerpc/arch-powerpc.inc
 
 TUNE_CCARGS = "-mcpu=e300c2 -msoft-float"
 TUNE_PKGARCH = "ppce300"
index a342cfba9fb421948978e067c5cc5899fc62d138..22208f0722629342037884e3f123596b060ba4b2 100644 (file)
@@ -1,4 +1,4 @@
-TUNE_ARCH = "powerpc"
+require conf/machine/include/powerpc/arch-powerpc.inc
 
 TUNE_CCARGS = "-mcpu=8540"
 BASE_PACKAGE_ARCH = "ppce500"
index 497c1a412d4ef52b2d47f4d6f512179cb5567c3b..182d019c32787303bbb4f809f07b9337142119f7 100644 (file)
@@ -1,4 +1,4 @@
-TUNE_ARCH = "powerpc"
+require conf/machine/include/powerpc/arch-powerpc.inc
 
 TUNE_CCARGS = "-mcpu=e500mc"
 TUNE_PKGARCH = "ppce500mc"
index 1c568297955234bb88f5c3397179358f9b3f9f4e..daf2d580050d000b4e2007a55d4bf56c568b0ce9 100644 (file)
@@ -1,4 +1,4 @@
-TUNE_ARCH = "powerpc"
+require conf/machine/include/powerpc/arch-powerpc.inc
 
 TUNE_CCARGS = "-mcpu=8548 -mabi=spe -mspe"
 TUNE_PKGARCH = "ppce500v2"
index ec290532a2b0daf81e7f0bef10b4f2abe813e91b..2b760692082386b30ca85d716cf6b4e019d771e3 100644 (file)
@@ -1,4 +1,4 @@
-TUNE_ARCH = "arm"
+require conf/machine/include/arm/arch-arm.inc
 
 TUNE_PKGARCH = "arm"
 
index 08ff30a23d4a9cd8667270406f006bc2c3681b70..04b0f966788f3a8240186970073cf0b301d5795b 100644 (file)
@@ -1,5 +1,3 @@
-TUNE_ARCH = "x86_64"
-
-TUNE_PKGARCH = "x86_64"
-TUNE_CCARGS = "-m64"
+require conf/machine/include/ia32/arch-ia32.inc
 
+DEFAULTTUNE = "x86-64"
index 9618a8b513fbbf5694ae439b44eadf4190852052..71dba5bb1eec30668fdadf9b8302c690c15501a7 100644 (file)
@@ -1,4 +1,4 @@
-TUNE_ARCH = "arm"
+require conf/machine/include/arm/arch-arm.inc
 
 INHERIT += "siteinfo"