Add license/copyright.
authorBrian Paul <brian.paul@tungstengraphics.com>
Mon, 25 Jul 2005 23:49:50 +0000 (23:49 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Mon, 25 Jul 2005 23:49:50 +0000 (23:49 +0000)
Add -h/--help option for usage.
Minor clean-ups.

bin/mklib

index 06436ff388f544f10c8ac4316771b43f0788a738..9bb179f19d1fb9b71d751ea6d0ba471f7fb052b3 100755 (executable)
--- a/bin/mklib
+++ b/bin/mklib
@@ -1,36 +1,53 @@
 #!/bin/sh
 
 # Make a shared library.
-# Basically do a switch/case depending on the OS and make a shared (or static)
-# library conforming to that OS.
-
-
-# Usage:
-#   mklib [options] objects ...
-# Options:
-#   -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)
-#   -lLIBRARY     specifies a dependency on LIBRARY
-#   -LDIR         search in DIR for library dependencies
-#   -linker L     explicity specify the linker program to use (ex: gcc, g++)
-#                 Not observed on all systems at this time.
-#   -cplusplus    link with C++ runtime
-#   -static       make a static library (default is dynamic/shared)
-#   -install DIR  pu resulting library file(s) in DIR
-#   -arch ARCH    override using `uname` to determine architecture
-#   -archopt OPT  specify an extra achitecture-specific option OPT
-#   -noprefix     don't prefix library name with "lib" nor add any suffix
-#   -exports FILE only export the symbols listed in FILE
+# This script should be useful for projects other than Mesa.
+# Improvements/fixes are welcome.
+
+
+# Copyright (C) 1999-2005  Brian Paul   All Rights Reserved.
 #
-# The library name should just be "GL" or "GLU", etc.  The 'lib' prefix
-# will be added here if needed, as well as the ".so" or ".a" suffix,
-# etc (unless the -noprefix option is used).
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
 #
-# objects should be:  foo.o bar.o etc.o
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
 #
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+# BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+function usage()
+{
+    echo 'Usage: mklib [options] objects'
+    echo 'Create a shared library from object files.'
+    echo '  -o LIBRARY    specifies the name of the resulting library, without'
+    echo '                the leading "lib" or any suffix.'
+    echo '                (eg: "-o GL" might result in "libGL.so" being made)'
+    echo '  -major N      specifies major version number (default is 1)'
+    echo '  -minor N      specifies minor version number (default is 0)'
+    echo '  -patch N      specifies patch version number (default is 0)'
+    echo '  -lLIBRARY     specifies a dependency on LIBRARY'
+    echo '  -LDIR         search in DIR for library dependencies'
+    echo '  -linker L     explicity specify the linker program to use (eg: gcc, g++)'
+    echo '                Not observed on all systems at this time.'
+    echo '  -cplusplus    link with C++ runtime'
+    echo '  -static       make a static library (default is dynamic/shared)'
+    echo '  -install DIR  put resulting library file(s) in DIR'
+    echo '  -arch ARCH    override using `uname` to determine host system'
+    echo '  -archopt OPT  specify an extra achitecture-specific option OPT'
+    echo "  -noprefix     don't prefix library name with 'lib' nor add any suffix"
+    echo '  -exports FILE only export the symbols listed in FILE'
+    echo '  -h, --help    display this information and exit'
+}
 
 
 #
@@ -57,27 +74,74 @@ EXPORTS=""
 while true
 do
     case $1 in
-       '-o')         shift 1; LIBNAME=$1;;
-       '-major')     shift 1; MAJOR=$1;;
-       '-minor')     shift 1; MINOR=$1;;
-       '-patch')     shift 1; PATCH=$1;;
-       '-linker')    shift 1; LINK=$1;;
-       -l*)          DEPS="$DEPS $1";;
-       -L*)          DEPS="$DEPS $1";;
-       '-cplusplus') CPLUSPLUS=1;;
-       '-static')    STATIC=1;;
-       '-install')   shift 1; INSTALLDIR=$1;;
-       '-arch')      shift 1; ARCH=$1;;
-       '-archopt')   shift 1; ARCHOPT=$1;;
-       '-noprefix')  NOPREFIX=1;;
-       '-exports')   shift 1; EXPORTS=$1;;
-       -*)           echo "mklib: Unknown option: " $1 ; exit 1;;
-       *) break
+       '-h' | '--help')
+           usage;
+           exit 1
+           ;;
+       '-o')
+           shift 1;
+           LIBNAME=$1
+           ;;
+       '-major')
+           shift 1;
+           MAJOR=$1
+           ;;
+       '-minor')
+           shift 1;
+           MINOR=$1
+           ;;
+       '-patch')
+           shift 1;
+           PATCH=$1
+           ;;
+       '-linker')
+           shift 1;
+           LINK=$1
+           ;;
+       -l*)
+           DEPS="$DEPS $1"
+           ;;
+       -L*)
+           DEPS="$DEPS $1"
+           ;;
+       '-cplusplus')
+           CPLUSPLUS=1
+           ;;
+       '-static')
+           STATIC=1
+           ;;
+       '-install')
+           shift 1;
+           INSTALLDIR=$1
+           ;;
+       '-arch')
+           shift 1;
+           ARCH=$1
+           ;;
+       '-archopt')
+           shift 1;
+           ARCHOPT=$1
+           ;;
+       '-noprefix')
+           NOPREFIX=1
+           ;;
+       '-exports')
+           shift 1;
+           EXPORTS=$1
+           ;;
+       -*)
+           echo "mklib: Unknown option: " $1 ;
+           exit 1
+           ;;
+       *)
+           # This should be the first object file, stop parsing
+           break
     esac
     shift 1
 done
 OBJECTS=$@
 
+
 if [ ${ARCH} = "auto" ] ; then
     ARCH=`uname`
 fi
@@ -476,6 +540,8 @@ case $ARCH in
 
     'icc')
        # Intel C compiler
+       # This should get merged into the Linux code, above, since this isn't
+       # really a different architecture.
        LIBNAME="lib${LIBNAME}"     # prefix with "lib"
 
         if [ $STATIC = 1 ] ; then
@@ -593,7 +659,7 @@ case $ARCH in
            ar rv ${LIBNAME} ${OBJECTS}
            FINAL_LIBS="${LIBNAME}"
        else
-           LIBNAME="lib${LIBNAME}.so"  # prefix with "lib"
+           LIBNAME="lib${LIBNAME}.so"  # prefix with "lib", suffix with ".so"
            echo "mklib: Making shared library for example arch: " ${LIBNAME}
            ld -o ${LIBNAME} ${OBJECTS} ${DEPS}
            FINAL_LIBS="${LIBNAME}"