fix glXChooseFBConfig bug 890167
[mesa.git] / bin / mklib
index 8e393ecd3ac5ef90b2411dd005f4945506516deb..2678806516cca34c792821be3cfc137724345eec 100755 (executable)
--- a/bin/mklib
+++ b/bin/mklib
@@ -8,7 +8,8 @@
 # Usage:
 #   mklib [options] objects ...
 # Options:
-#   -o LIBRARY    specifies the name of resulting library ("GL" for example)
+#   -o LIBRARY    specifies the name of resulting library
+#                 ("-o GL" for example, might result in "libGL.so" being made)
 #   -major N      specifies major version number (default is 1)
 #   -minor N      specifies minor version number (default is 0)
 #   -patch N      specifies patch version number (default is 0)
@@ -108,11 +109,12 @@ fi
 #
 case $ARCH in
 
-    'Linux')
+    'Linux' | 'OpenBSD')
+       # GCC-based environment
        LIBNAME="lib${LIBNAME}"     # prefix with "lib"
 
         if [ $STATIC = 1 ] ; then
-            echo "mklib: Making Linux static library: " ${LIBNAME}.a
+            echo "mklib: Making" $ARCH "static library: " ${LIBNAME}.a
             LINK="ar"
             OPTS="-ruv"
             # make lib
@@ -120,10 +122,14 @@ case $ARCH in
             # finish up
             FINAL_LIBS="${LIBNAME}.a"
         else
-            OPTS="-Xlinker -Bsymbolic -shared -Wl,-soname,${LIBNAME}.so.${MAJOR}"
+           if [ $ARCH = 'Linux' ] ; then
+               OPTS="-Xlinker -Bsymbolic -shared -Wl,-soname,${LIBNAME}.so.${MAJOR}"
+           else
+               OPTS="-shared -Wl,-soname,${LIBNAME}.so.${MAJOR}"
+           fi
             VERSION="${MAJOR}.${MINOR}.${PATCH}"
 
-            echo "mklib: Making Linux shared library: " ${LIBNAME}.so.${VERSION}
+            echo "mklib: Making " $ARCH " shared library: " ${LIBNAME}.so.${VERSION}
 
             if [ $CPLUSPLUS = 1 ] ; then
                 LINK="g++"
@@ -149,32 +155,49 @@ case $ARCH in
     'SunOS')
        LIBNAME="lib${LIBNAME}.so"
        echo "mklib: Making SunOS shared library: " ${LIBNAME}
-       OPTS="-G"
+       # XXX OPTS for gcc should be -shared, but that doesn't work.
+       # Using -G does work though.
        if [ $CPLUSPLUS = 1 ] ; then
-           # link for C++
+           # determine linker and options for C++ code
            if [ "x${CXX}" = "xg++" ] ; then
+               # use g++
                LINK="g++"
+               OPTS="-G"
            elif [ "x${CXX}" = "xCC" ] ; then
+               # use Sun CC
                LINK="CC"
+               OPTS="-G"
+           elif [ "x${CXX}" = "xc++" ] ; then
+               # use Sun c++
+               LINK="c++"
+               OPTS="-G"
            elif [ `which c++` ] ; then
+               # use Sun c++
                LINK="c++"
+               OPTS="-G"
            elif [ `type g++` ] ; then
+               # use g++
                LINK="g++"
+               OPTS="-G"
            else
                echo "mklib: warning: can't find C++ comiler, trying CC."
                LINK="CC"
+               OPTS="-G"
            fi
        elif [ "x${CC}" = "xgcc" ] ; then
            # use gcc for linking
            LINK="gcc"
+           OPTS="-G"
        else
            # use native Sun linker
            LINK="ld"
+           OPTS="-G"
        fi
-       echo "mklib: linker is " ${LINK}
-       rm -f ${LIBNAME}
-       ${LINK} ${OPTS} -o ${LIBNAME} ${OBJECTS} ${DEPS}
-       FINAL_LIBS=${LIBNAME}
+       echo "mklib: linker is" ${LINK} ${OPTS}
+       rm -f ${LIBNAME}.${MAJOR} ${LIBNAME}
+       ${LINK} ${OPTS} -o ${LIBNAME}.${MAJOR} ${OBJECTS} ${DEPS}
+       ln -s ${LIBNAME}.${MAJOR} ${LIBNAME}
+       FINAL_LIBS="${LIBNAME}.${MAJOR} ${LIBNAME}"
        ;;
 
     'FreeBSD')
@@ -189,18 +212,6 @@ case $ARCH in
        FINAL_LIBS="${SHLIB} ${STLIB}"
        ;;
 
-    'OpenBSD')
-       LIBNAME="lib${LIBNAME}"
-       VERSION="${MAJOR}.${MINOR}"
-       echo "Building OpenBSD PIC library: " ${LIBNAME}
-       rm -f ${LIBNAME}_pic.a ${LIBNAME}.so.${VERSION}
-       ar cq ${LIBNAME}_pic.a ${OBJECTS}
-       ranlib ${LIBNAME}_pic.a
-       ld -x -Bshareable -Bforcearchive -o ${LIBNAME}.so.${VERSION} ${LIBNAME}_pic.a
-       ln -s ${LIBNAME}.so.${VERSION} ${LIBNAME}.so
-       FINAL_LIBS="${LIBNAME}_pic.a ${LIBNAME}.so.${VERSION} ${LIBNAME}.so"
-       ;;
-
     'NetBSD')
        LIBNAME="lib${LIBNAME}"
        echo "mklib: Making NetBSD PIC shared library: " ${LIBNAME}
@@ -212,13 +223,13 @@ case $ARCH in
        FINAL_LIBS="${LIBNAME}_pic.a ${LIBNAME}.so.${VERSION}"
        ;;
 
-    'IRIX')
+    'IRIX' | 'IRIX64')
        LIBNAME="lib${LIBNAME}.so"  # prefix with "lib", suffix with ".so"
-       if [ $ARCHOPTS = "64" ] ; then
+       if [ $ARCHOPT = "64" ] ; then
            # 64-bit ABI
            OPTS="-64 -shared -all"
            echo "mklib: Making IRIX 64-bit shared library: " ${LIBNAME}
-       elif [ $ARCHOPTS = "o32" ] ; then
+       elif [ $ARCHOPT = "o32" ] ; then
            # old 32-bit ABI
            OPTS="-32 -shared -all"
            echo "mklib: Making IRIX o32-bit shared library: " ${LIBNAME}
@@ -227,16 +238,12 @@ case $ARCH in
            OPTS="-n32 -shared -all"
            echo "mklib: Making IRIX n32-bit shared library: " ${LIBNAME}
        fi
-       ld ${OPTS} -o ${LIBNAME} ${OBJECTS} ${DEPS}
-       FINAL_LIBS="${LIBNAME}"
-       ;;
-
-    'IRIX64')
-       LIBNAME="lib${LIBNAME}.so"  # prefix with "lib", suffix with ".so"
-       echo "mklib: Making IRIX64 library: " ${LIBNAME}
-       # 64-bit ABI
-       OPTS="-64 -shared -all"
-       ld ${OPTS} -o ${LIBNAME} ${OBJECTS} ${DEPS}
+       if [ $CPLUSPLUS = 1 ] ; then
+           LINK="CC"
+       else
+           LINK="ld"
+       fi
+       ${LINK} ${OPTS} -o ${LIBNAME} ${OBJECTS} ${DEPS}
        FINAL_LIBS="${LIBNAME}"
        ;;
 
@@ -320,6 +327,60 @@ case $ARCH in
        FINAL_LIBS="${LIBNAME}"
        ;;
 
+    'icc')
+       # Intel C compiler
+       LIBNAME="lib${LIBNAME}"     # prefix with "lib"
+
+        if [ $STATIC = 1 ] ; then
+            echo "mklib: Making Intel ICC static library: " ${LIBNAME}.a
+            LINK="ar"
+            OPTS="-ruv"
+            # make lib
+            ${LINK} ${OPTS} ${LIBNAME}.a ${OBJECTS}
+            # finish up
+            FINAL_LIBS="${LIBNAME}.a"
+        else
+            OPTS="-shared"
+            VERSION="${MAJOR}.${MINOR}.${PATCH}"
+
+            echo "mklib: Making Intel ICC shared library: " ${LIBNAME}.so.${VERSION}
+
+            if [ $CPLUSPLUS = 1 ] ; then
+                LINK="icc"
+            else
+                LINK="icc"
+            fi
+
+            # rm any old libs
+            rm -f ${LIBNAME}.so.${VERSION}
+            rm -f ${LIBNAME}.so.${MAJOR}
+            rm -f ${LIBNAME}.so
+
+            # make lib
+            ${LINK} ${OPTS} -o ${LIBNAME}.so.${VERSION} ${OBJECTS} ${DEPS}
+            # make usual symlinks
+            ln -s ${LIBNAME}.so.${VERSION} ${LIBNAME}.so.${MAJOR}
+            ln -s ${LIBNAME}.so.${MAJOR} ${LIBNAME}.so
+            # finish up
+            FINAL_LIBS="${LIBNAME}.so.${VERSION} ${LIBNAME}.so.${MAJOR} ${LIBNAME}.so"
+        fi
+       ;;
+
+    'aix-gcc')
+       # AIX with gcc
+       LIBNAME="lib${LIBNAME}.so"  # prefix with "lib", suffix with ".so"
+       echo "mklib: Making AIX GCC shared library: " ${LIBNAME}
+       # remove old lib
+       rm -f ${LIBNAME}
+       # make the lib
+       gcc -shared -Wl,-G ${OBJECTS} ${DEPS} -o ${LIBNAME}
+
+       # NOTE: the application linking with this library must specify
+       # the -Wl,-brtl flags to gcc
+
+       FINAL_LIBS=${LIBNAME}
+       ;;
+
     'example')
        # If you're adding support for a new architecture, you can
        # start with this:
@@ -335,7 +396,8 @@ case $ARCH in
        echo "mklib: WARNING: please update the bin/mklib script!"
        # XXX this is a total hack for Mesa - remove someday
        # fall-back to an old mklib.* script
-       ${MAKELIB} "lib${LIBNAME}.a" ${MAJOR} ${MINOR} ${PATCH} ${OBJECTS}
+       LIBNAME="lib${LIBNAME}.a"
+       ${TOP}/${MAKELIB} "lib${LIBNAME}.a" ${MAJOR} ${MINOR} ${PATCH} ${OBJECTS}
        FINAL_LIBS="${LIBNAME}"
        ;;
 esac