[Mesa-dev] [PATCH] mklib: clean up abi flags for x86 targets

Mike Frysinger vapier at gentoo.org
Mon Sep 10 22:57:25 PDT 2012


The current code is duplicated in two places and relies on `uname` to
detect the flags.  This is no good for cross-compiling, and the current
logic uses -m64 for the x32 ABI which breaks things.

Unify the code in one place, avoid `uname` completely, and add support
for the new x32 ABI.

Signed-off-by: Mike Frysinger <vapier at gentoo.org>
---
 bin/mklib |   42 ++++++++++++++++++++++++------------------
 1 file changed, 24 insertions(+), 18 deletions(-)

diff --git a/bin/mklib b/bin/mklib
index 9bac29e..086b268 100755
--- a/bin/mklib
+++ b/bin/mklib
@@ -319,6 +319,25 @@ case $ARCH in
             fi
 	fi
 
+	# Check if objects are 32-bit and we're running in 64-bit
+	# environment.  If so, pass -m32 flag to linker.
+	add_abi_flag_to_opts() {
+	    case $(file $1) in
+		*32-bit*x86-64*)
+		    # x86_64 x32 ABI.
+		    OPTS="-mx32 ${OPTS}"
+		    ;;
+		*64-bit*x86-64*)
+		    # x86_64 64-bit ABI.
+		    OPTS="-m64 ${OPTS}"
+		    ;;
+		*32-bit*Intel*)
+		    # x86 32-bit ABI.
+		    OPTS="-m32 ${OPTS}"
+		    ;;
+	    esac
+	}
+
 	if [ $NOPREFIX = 1 ] ; then
 	    # No "lib" or ".so" part
 	    echo "mklib: Making" $ARCH "shared library: " ${LIBNAME}
@@ -330,15 +349,8 @@ case $ARCH in
 	    ;;
 	    esac
 
-	    # Check if objects are 32-bit and we're running in 64-bit
-	    # environment.  If so, pass -m32 flag to linker.
-	    set ${OBJECTS}
-	    ABI32=`file $1 | grep 32-bit`
-	    ARM=`file $1 | grep ARM`
-	    # Do not add "-m32" option for arm.
-            if [ -z "$ARM" -a "${ABI32}" -a `uname -m` = "x86_64" ] ; then
-		OPTS="-m32 ${OPTS}"
-	    fi
+	    # Check to see if we are building for a different ABI.
+	    add_abi_flag_to_opts ${OBJECTS}
 
             if [ "${ALTOPTS}" ] ; then
                 OPTS=${ALTOPTS}
@@ -389,15 +401,9 @@ case $ARCH in
 		# exptmp is removed below
 	    fi
 
-	    # Check if objects are 32-bit and we're running in 64-bit
-	    # environment.  If so, pass -m32 flag to linker.
-	    set ${OBJECTS}
-	    ABI32=`file $1 | grep 32-bit`
-            ARM=`file $1 | grep ARM`
-	    # Do not add "-m32" option for arm.
-            if [ -z "$ARM" -a "${ABI32}" -a `uname -m` = "x86_64" ] ; then
-		OPTS="-m32 ${OPTS}"
-	    fi
+	    # Check to see if we are building for a different ABI.
+	    add_abi_flag_to_opts ${OBJECTS}
+
             if [ "${ALTOPTS}" ] ; then
                 OPTS=${ALTOPTS}
             fi
-- 
1.7.9.7



More information about the mesa-dev mailing list