]> code.ossystems Code Review - openembedded-core.git/commitdiff
insane.bbclass and friends: Fix sanity checks and multlib headers for n32
authorPeter Seebach <peter.seebach@windriver.com>
Tue, 23 Oct 2012 22:56:00 +0000 (17:56 -0500)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Sat, 27 Oct 2012 08:31:36 +0000 (09:31 +0100)
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.

Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
meta/classes/insane.bbclass
meta/classes/multilib_header.bbclass
meta/classes/siteinfo.bbclass
meta/conf/machine/include/mips/arch-mips.inc

index 29b122e31dcb3dc8fb0afae998731c17421700a8..2dc9ba31f7c1af76d0f4f9060c3b1f900329c5e0 100644 (file)
@@ -105,6 +105,10 @@ def package_qa_get_machine_dict():
             "linux-gnux32" :       {
                         "x86_64":     (62,     0,    0,          True,          32),
                       },
+            "linux-gnun32" :       {
+                        "mips64":       ( 8,     0,    0,          False,         32),
+                        "mipsel64":     ( 8,     0,    0,          True,          32),
+                      },
         }
 
 
index 867bce413430ca5e935546c861ef9ecf9cab8863..639ed4ba533de9532cf6a8445ae11147f5024207 100644 (file)
@@ -1,16 +1,29 @@
 inherit siteinfo
 
-# If applicable on the architecture, this routine will rename the header and add
-# a unique identifier to the name for the ABI/bitsize that is being used.  A wrapper will
-# be generated for the architecture that knows how to call all of the ABI variants for that
-# given architecture.
-#
-# TODO: mips64 n32 is not yet recognized in this code
-# when that is identified the name of the wrapped item should be "n32" and appropriately
-# determined int he if coding...
+# If applicable on the architecture, this routine will rename the header and
+# add a unique identifier to the name for the ABI/bitsize that is being used.
+# A wrapper will be generated for the architecture that knows how to call
+# all of the ABI variants for that given architecture.
 #
 oe_multilib_header() {
-       # Do nothing on ARM, only one ABI is supported at once
+        # We use
+        # For ARM: We don't support multilib builds.
+        # For MIPS: "n32" is a special case, which needs to be
+        # distinct from both 64-bit and 32-bit.
+        case ${TARGET_ARCH} in
+        arm*)   return
+                ;;
+        mips*)  case "${MIPSPKGSFX_ABI}" in
+                "-n32")
+                       ident=n32   
+                       ;;
+                *)     
+                       ident=${SITEINFO_BITS}
+                       ;;
+                esac
+                ;;
+        *)      ident=${SITEINFO_BITS}
+        esac
        if echo ${TARGET_ARCH} | grep -q arm; then
            return
        fi
@@ -20,7 +33,6 @@ oe_multilib_header() {
              continue
           fi
           stem=$(echo $each_header | sed 's#\.h$##')
-          ident=${SITEINFO_BITS}
           # if mips64/n32 set ident to n32
           mv ${D}/${includedir}/$each_header ${D}/${includedir}/${stem}-${ident}.h
 
index aab08676e89b47be5b23f0e4f7424026187be55c..e09d16a0fd8f119bff330d7f812edd40820561ed 100644 (file)
@@ -51,6 +51,7 @@ def siteinfo_data(d):
         "linux": "common-linux common-glibc",
         "linux-gnu": "common-linux common-glibc",
         "linux-gnux32": "common-linux common-glibc",
+        "linux-gnun32": "common-linux common-glibc",
         "linux-gnueabi": "common-linux common-glibc",
         "linux-gnuspe": "common-linux common-glibc",
         "linux-uclibc": "common-linux common-uclibc",
@@ -66,6 +67,10 @@ def siteinfo_data(d):
         "arm-linux-uclibceabi": "arm-linux-uclibc",
         "armeb-linux-gnueabi": "armeb-linux",
         "armeb-linux-uclibceabi": "armeb-linux-uclibc",
+        "mips-linux-gnun32": "mips-linux",
+        "mipsel-linux-gnun32": "mipsel-linux",
+        "mips64-linux-gnun32": "mips-linux",
+        "mips64el-linux-gnun32": "mipsel-linux",
         "powerpc-linux": "powerpc32-linux",
         "powerpc-linux-uclibc": "powerpc-linux powerpc32-linux",
         "powerpc-linux-gnuspe": "powerpc-linux powerpc32-linux",
index 9f12920848bd40cb674edcc20b263b8a10f79261..c390ff9206aa92ed6c5bdd0c34c5c55cf86c4e62 100644 (file)
@@ -17,6 +17,7 @@ TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "o32", "-mabi=32", "", d)}
 
 TUNEVALID[n32] = "MIPS64 n32 ABI"
 TUNECONFLICTS[n32] = "o32 n64"
+ABIEXTENSION .= "${@bb.utils.contains("TUNE_FEATURES", "n32", "n32", "" ,d)}"
 TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "n32", "-mabi=n32", "", d)}"
 
 TUNEVALID[n64] = "MIPS64 n64 ABI"