summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Seebach <peter.seebach@windriver.com>2012-10-23 17:56:00 -0500
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-10-27 09:44:56 +0100
commit8d98171dc2d66459dc5862cebdb350437c817982 (patch)
tree623e117b0be74122588c956acaab9d281d6a3cb9
parent4940be556c808dd13a76be4bb332c207085d7fba (diff)
downloadpoky-8d98171dc2d66459dc5862cebdb350437c817982.tar.gz
insane.bbclass and friends: Fix sanity checks and multlib headers for n32
The n32 architecture is odd, in that it's a mips64 ABI which happens to be 32-bit. To handle this, we need something in the environment which can be used to distinguish it. The obvious place to stash this is the ABI suffix, so we use "n32" as an ABI suffix. This allows a couple of improved checks: 1. In insane.bbclass, we can use "linux-gnun32" to discern that it's okay for a mips64 binary to be a 32-bit binary in some cases. 2. In multilib_header, we can check for the n32 ABI, and use a distinct value. 3. In siteinfo, add linux-gnun32 as a synonym for linux, similar to what's done for linux-gnux32, and tell the mips*-linux-gnun32 variants to pick up the corresponding mips-linux site configs. Note that the multilib header wrapper already has n32 hooks in it, there was just nothing creating -n32 header variants. (From OE-Core rev: c8e8e8ba22eaa335ac72f0e5b317f804035133e2) Signed-off-by: Peter Seebach <peter.seebach@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/insane.bbclass4
-rw-r--r--meta/classes/multilib_header.bbclass32
-rw-r--r--meta/classes/siteinfo.bbclass5
-rw-r--r--meta/conf/machine/include/mips/arch-mips.inc1
4 files changed, 32 insertions, 10 deletions
diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
index 29b122e31d..2dc9ba31f7 100644
--- a/meta/classes/insane.bbclass
+++ b/meta/classes/insane.bbclass
@@ -105,6 +105,10 @@ def package_qa_get_machine_dict():
105 "linux-gnux32" : { 105 "linux-gnux32" : {
106 "x86_64": (62, 0, 0, True, 32), 106 "x86_64": (62, 0, 0, True, 32),
107 }, 107 },
108 "linux-gnun32" : {
109 "mips64": ( 8, 0, 0, False, 32),
110 "mipsel64": ( 8, 0, 0, True, 32),
111 },
108 } 112 }
109 113
110 114
diff --git a/meta/classes/multilib_header.bbclass b/meta/classes/multilib_header.bbclass
index 867bce4134..639ed4ba53 100644
--- a/meta/classes/multilib_header.bbclass
+++ b/meta/classes/multilib_header.bbclass
@@ -1,16 +1,29 @@
1inherit siteinfo 1inherit siteinfo
2 2
3# If applicable on the architecture, this routine will rename the header and add 3# If applicable on the architecture, this routine will rename the header and
4# a unique identifier to the name for the ABI/bitsize that is being used. A wrapper will 4# add a unique identifier to the name for the ABI/bitsize that is being used.
5# be generated for the architecture that knows how to call all of the ABI variants for that 5# A wrapper will be generated for the architecture that knows how to call
6# given architecture. 6# all of the ABI variants for that given architecture.
7#
8# TODO: mips64 n32 is not yet recognized in this code
9# when that is identified the name of the wrapped item should be "n32" and appropriately
10# determined int he if coding...
11# 7#
12oe_multilib_header() { 8oe_multilib_header() {
13 # Do nothing on ARM, only one ABI is supported at once 9 # We use
10 # For ARM: We don't support multilib builds.
11 # For MIPS: "n32" is a special case, which needs to be
12 # distinct from both 64-bit and 32-bit.
13 case ${TARGET_ARCH} in
14 arm*) return
15 ;;
16 mips*) case "${MIPSPKGSFX_ABI}" in
17 "-n32")
18 ident=n32
19 ;;
20 *)
21 ident=${SITEINFO_BITS}
22 ;;
23 esac
24 ;;
25 *) ident=${SITEINFO_BITS}
26 esac
14 if echo ${TARGET_ARCH} | grep -q arm; then 27 if echo ${TARGET_ARCH} | grep -q arm; then
15 return 28 return
16 fi 29 fi
@@ -20,7 +33,6 @@ oe_multilib_header() {
20 continue 33 continue
21 fi 34 fi
22 stem=$(echo $each_header | sed 's#\.h$##') 35 stem=$(echo $each_header | sed 's#\.h$##')
23 ident=${SITEINFO_BITS}
24 # if mips64/n32 set ident to n32 36 # if mips64/n32 set ident to n32
25 mv ${D}/${includedir}/$each_header ${D}/${includedir}/${stem}-${ident}.h 37 mv ${D}/${includedir}/$each_header ${D}/${includedir}/${stem}-${ident}.h
26 38
diff --git a/meta/classes/siteinfo.bbclass b/meta/classes/siteinfo.bbclass
index aab08676e8..e09d16a0fd 100644
--- a/meta/classes/siteinfo.bbclass
+++ b/meta/classes/siteinfo.bbclass
@@ -51,6 +51,7 @@ def siteinfo_data(d):
51 "linux": "common-linux common-glibc", 51 "linux": "common-linux common-glibc",
52 "linux-gnu": "common-linux common-glibc", 52 "linux-gnu": "common-linux common-glibc",
53 "linux-gnux32": "common-linux common-glibc", 53 "linux-gnux32": "common-linux common-glibc",
54 "linux-gnun32": "common-linux common-glibc",
54 "linux-gnueabi": "common-linux common-glibc", 55 "linux-gnueabi": "common-linux common-glibc",
55 "linux-gnuspe": "common-linux common-glibc", 56 "linux-gnuspe": "common-linux common-glibc",
56 "linux-uclibc": "common-linux common-uclibc", 57 "linux-uclibc": "common-linux common-uclibc",
@@ -66,6 +67,10 @@ def siteinfo_data(d):
66 "arm-linux-uclibceabi": "arm-linux-uclibc", 67 "arm-linux-uclibceabi": "arm-linux-uclibc",
67 "armeb-linux-gnueabi": "armeb-linux", 68 "armeb-linux-gnueabi": "armeb-linux",
68 "armeb-linux-uclibceabi": "armeb-linux-uclibc", 69 "armeb-linux-uclibceabi": "armeb-linux-uclibc",
70 "mips-linux-gnun32": "mips-linux",
71 "mipsel-linux-gnun32": "mipsel-linux",
72 "mips64-linux-gnun32": "mips-linux",
73 "mips64el-linux-gnun32": "mipsel-linux",
69 "powerpc-linux": "powerpc32-linux", 74 "powerpc-linux": "powerpc32-linux",
70 "powerpc-linux-uclibc": "powerpc-linux powerpc32-linux", 75 "powerpc-linux-uclibc": "powerpc-linux powerpc32-linux",
71 "powerpc-linux-gnuspe": "powerpc-linux powerpc32-linux", 76 "powerpc-linux-gnuspe": "powerpc-linux powerpc32-linux",
diff --git a/meta/conf/machine/include/mips/arch-mips.inc b/meta/conf/machine/include/mips/arch-mips.inc
index 9f12920848..c390ff9206 100644
--- a/meta/conf/machine/include/mips/arch-mips.inc
+++ b/meta/conf/machine/include/mips/arch-mips.inc
@@ -17,6 +17,7 @@ TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "o32", "-mabi=32", "", d)}
17 17
18TUNEVALID[n32] = "MIPS64 n32 ABI" 18TUNEVALID[n32] = "MIPS64 n32 ABI"
19TUNECONFLICTS[n32] = "o32 n64" 19TUNECONFLICTS[n32] = "o32 n64"
20ABIEXTENSION .= "${@bb.utils.contains("TUNE_FEATURES", "n32", "n32", "" ,d)}"
20TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "n32", "-mabi=n32", "", d)}" 21TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "n32", "-mabi=n32", "", d)}"
21 22
22TUNEVALID[n64] = "MIPS64 n64 ABI" 23TUNEVALID[n64] = "MIPS64 n64 ABI"