gallium: replace assertion with conditional/recovery code
[mesa.git] / bin / mklib
index ad8419ebefe21c6aa99e23c719625b0329844b15..031e049c615584ea026de641d30aa3e96e30518e 100755 (executable)
--- a/bin/mklib
+++ b/bin/mklib
@@ -100,6 +100,13 @@ do
        -L*)
            DEPS="$DEPS $1"
            ;;
+       -pthread)
+           # this is a special case (see bugzilla 10876)
+           DEPS="$DEPS $1"
+           ;;
+       '-pthread')
+           DEPS="$DEPS -pthread"
+           ;;
        '-cplusplus')
            CPLUSPLUS=1
            ;;
@@ -180,7 +187,7 @@ fi
 #
 case $ARCH in
 
-    'Linux' | 'OpenBSD')
+    'Linux' | 'OpenBSD' | 'GNU' | GNU/*)
        # we assume gcc
 
        if [ "x$LINK" = "x" ] ; then
@@ -195,8 +202,13 @@ case $ARCH in
        if [ $NOPREFIX = 1 ] ; then
            # No "lib" or ".so" part
            echo "mklib: Making" $ARCH "shared library: " ${LIBNAME}
-           #OPTS="-shared -Wl,-soname,${LIBNAME}"  # soname???
-           OPTS="-shared"
+           case $ARCH in 'Linux' | 'GNU' | GNU/*)
+               OPTS="-Xlinker -Bsymbolic -shared"
+           ;;
+           *)
+               OPTS="-shared"
+           ;;
+           esac
 
            # Check if objects are 32-bit and we're running in 64-bit
            # environment.  If so, pass -m32 flag to linker.
@@ -212,26 +224,29 @@ case $ARCH in
             # finish up
             FINAL_LIBS="${LIBNAME}"
         elif [ $STATIC = 1 ] ; then
-           LIBNAME="lib${LIBNAME}"     # prefix with "lib"
-            echo "mklib: Making" $ARCH "static library: " ${LIBNAME}.a
+            LIBNAME="lib${LIBNAME}.a"     # prefix with "lib", suffix with ".a"
+            echo "mklib: Making" $ARCH "static library: " ${LIBNAME}
             LINK="ar"
             OPTS="-ru"
+            rm -f ${LIBNAME}
             # make lib
-            ${LINK} ${OPTS} ${LIBNAME}.a ${OBJECTS}
-           ranlib ${LIBNAME}.a
+            ${LINK} ${OPTS} ${LIBNAME} ${OBJECTS}
+            ranlib ${LIBNAME}
             # finish up
-            FINAL_LIBS=${LIBNAME}.a
+            FINAL_LIBS=${LIBNAME}
         else
            LIBNAME="lib${LIBNAME}"     # prefix with "lib"
-           if [ $ARCH = 'Linux' ] ; then
+           case $ARCH in 'Linux' | 'GNU' | GNU/*)
                OPTS="-Xlinker -Bsymbolic -shared -Wl,-soname,${LIBNAME}.so.${MAJOR}"
-           else
+           ;;
+           *)
                OPTS="-shared -Wl,-soname,${LIBNAME}.so.${MAJOR}"
-           fi
+           ;;
+           esac
            if [ $EXPORTS ] ; then
                #OPTS="${OPTS} -Xlinker --retain-symbols-file ${EXPORTS}"
                # Make the 'exptmp' file for --version-script option
-               echo "VERSION_${MAJOR}.${MINOR} {" > exptmp
+               echo "{" > exptmp
                echo "global:" >> exptmp
                sed 's/$/;/' ${EXPORTS} >> exptmp
                echo "local:" >> exptmp
@@ -281,7 +296,9 @@ case $ARCH in
            ar -ruv ${LIBNAME} ${OBJECTS}
            FINAL_LIBS=${LIBNAME}
        else
-           LIBNAME="lib${LIBNAME}.so"
+           if [ $NOPREFIX = 0 ] ; then
+               LIBNAME="lib${LIBNAME}.so"
+           fi
            echo "mklib: Making SunOS shared library: " ${LIBNAME}
 
            if [ "x$LINK" = "x" ] ; then
@@ -305,8 +322,8 @@ case $ARCH in
            fi
 
            # linker options
-           if [ ${LINK} = "ld" ] ; then
-               # SunOS linker, -G to make shared libs
+           if [ ${LINK} = "ld" -o ${LINK} = "cc" -o ${LINK} = "CC" ] ; then
+               # SunOS tools, -G to make shared libs
                OPTS="-G"
            else
                # gcc linker
@@ -331,9 +348,14 @@ case $ARCH in
 
            # for debug:
            #echo "mklib: linker is" ${LINK} ${OPTS}
-           rm -f ${LIBNAME}.${MAJOR} ${LIBNAME}
-           ${LINK} ${OPTS} -o ${LIBNAME}.${MAJOR} ${OBJECTS} ${DEPS}
-           ln -s ${LIBNAME}.${MAJOR} ${LIBNAME}
+           if [ $NOPREFIX = 1 ] ; then
+               rm -f ${LIBNAME}
+               ${LINK} ${OPTS} -o ${LIBNAME} ${OBJECTS} ${DEPS}
+           else
+               rm -f ${LIBNAME}.${MAJOR} ${LIBNAME}
+               ${LINK} ${OPTS} -o ${LIBNAME}.${MAJOR} ${OBJECTS} ${DEPS}
+               ln -s ${LIBNAME}.${MAJOR} ${LIBNAME}
+           fi
            FINAL_LIBS="${LIBNAME}.${MAJOR} ${LIBNAME}"
        fi
        ;;
@@ -404,15 +426,15 @@ case $ARCH in
            # examine first object to determine ABI
            set ${OBJECTS}
            ABI_O32=`file $1 | grep 'ELF 32-bit'`
-           ABI_N32=`file $1 | grep 'ELF N32-bit'`
+           ABI_N32=`file $1 | grep 'ELF N32'`
            ABI_N64=`file $1 | grep 'ELF 64-bit'`
-           if [ ${ABI_O32} ] ; then
+           if [ "${ABI_O32}" ] ; then
                OPTS="-32 -shared -all"
                ABI="o32-bit"
-           elif [ ${ABI_N32} ] ; then
+           elif [ "${ABI_N32}" ] ; then
                OPTS="-n32 -shared -all"
                ABI="n32-bit"
-           elif [ ${ABI_N64} ] ; then
+           elif [ "${ABI_N64}" ] ; then
                OPTS="-64 -shared -all"
                ABI="64-bit"
            else
@@ -461,31 +483,27 @@ case $ARCH in
        fi
        ;;
 
-    'AIX' | 'AIX64')
-       if [ $ARCH = "AIX64" ] ; then
+    'AIX' )
+       # examine first object to determine ABI
+       set ${OBJECTS}
+       ABI_64=`file $1 | grep '64-bit'`
+       if [ "${ABI_64}" ] ; then
            X64="-X64"
+           Q64="-q64"
+           OFILE=shr_64.o
+       else
+           OFILE=shr.o  #Want to be consistent with the IBM libGL.a
        fi
 
-        if [ $STATIC = 1 ] ; then
-            LIBNAME="lib${LIBNAME}.a"
-            echo "mklib: Making AIX static library: " ${LIBNAME}
-            ar -ruv ${X64} ${LIBNAME} ${OBJECTS}
-            FINAL_LIBS=${LIBNAME}
-        else
-           # We make both .a (normal shared lib) and .so (which can be
-           # loaded with dlopen).
+       if [ $STATIC = 1 ] ; then
+           LIBNAME="lib${LIBNAME}.a"
+           echo "mklib: Making AIX static library: " ${LIBNAME}
+           ar -ruv ${X64} ${LIBNAME} ${OBJECTS}
+           FINAL_LIBS=${LIBNAME}
+       else
            EXPFILE="lib${LIBNAME}.exp"
-           if [ $ARCH = "AIX64" ] ; then
-               OFILE=shr_64.o
-           else
-               OFILE=shr.o  #Want to be consistent with the IBM libGL.a
-           fi
            LIBNAME="lib${LIBNAME}.a"  # shared objects are still stored in the .a libraries
-           if [ $ARCH = "AIX64" ] ; then
-               OPTS="-bE:${EXPFILE} -bM:SRE -bnoentry -q64"
-           else
-               OPTS="-bE:${EXPFILE} -bM:SRE -bnoentry"
-           fi
+           OPTS="-bE:${EXPFILE} -bM:SRE -bnoentry ${Q64}"
            rm -f ${EXPFILE} ${OFILE}
            NM="/bin/nm -eC ${X64}"
            echo "#! /usr/lib/${LIBNAME}" > ${EXPFILE}
@@ -571,12 +589,12 @@ case $ARCH in
 
            # examine first object to determine ABI
            set ${OBJECTS}
-           ABI_PPC=`file $1 | grep 'object ppct'`
+           ABI_PPC=`file $1 | grep 'object ppc'`
            ABI_I386=`file $1 | grep 'object i386'`
-           if [ ${ABI_PPC} ] ; then
+           if [ "${ABI_PPC}" ] ; then
                OPTS="${OPTS} -arch ppc"
            fi
-           if [ ${ABI_I386} ] ; then
+           if [ "${ABI_I386}" ] ; then
                OPTS="${OPTS} -arch i386"
            fi