diff options
author | Brian Paul <[email protected]> | 1999-08-19 13:52:56 +0000 |
---|---|---|
committer | Brian Paul <[email protected]> | 1999-08-19 13:52:56 +0000 |
commit | 2d550f6ff1afa3189874c99cfe4125362ee76797 (patch) | |
tree | 57a8ad3b79c027a88e7ed2f0ca27844bd82eb5c1 /bin/mklib.aix | |
parent | 5a41d02502185b0716c1006bfe79ce0504fcee85 (diff) |
initial check-in (post-crash)
Diffstat (limited to 'bin/mklib.aix')
-rwxr-xr-x | bin/mklib.aix | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/bin/mklib.aix b/bin/mklib.aix new file mode 100755 index 00000000000..da8f642f852 --- /dev/null +++ b/bin/mklib.aix @@ -0,0 +1,154 @@ +#!/bin/ksh + +# Make an AIX shared library (tricky!!!) +# Based on a script from Athanasios G. Gaitatzes ([email protected]) +# Improved by Greg Thompson <[email protected]> -gt + +#--identification------------------------------------------------------ + +# $Id: mklib.aix,v 1.1 1999/08/19 13:52:56 brianp Exp $ + +# $Log: mklib.aix,v $ +# Revision 1.1 1999/08/19 13:52:56 brianp +# initial check-in (post-crash) +# + + +#--common-------------------------------------------------------------- + +# Usage: mklib libname major minor file.o ... +# +# First argument is name of output library (LIBRARY) +# Second arg is major version number (MAJOR) +# Third arg is minor version number (MINOR) +# Rest of arguments are object files (OBJECTS) + +LIBRARY=$1 +shift 1 + +MAJOR=$1 +shift 1 + +MINOR=$1 +shift 1 + +OBJECTS=$* + +#--platform------------------------------------------------------------ + +# BASENAME = LIBRARY without .a suffix +BASENAME=`echo ${LIBRARY} | sed "s/\.a//g"` + +# Name of exports file +EXPFILE=${BASENAME}.exp + +# Name of temporary shared lib file +OFILE=shr.o +####OFILE=${BASENAME}.o + + +# Remove any old files from previous make +rm -f ${LIBRARY} ${EXPFILE} ${OFILE} + +# Pick a way to use nm -gt +NM=${NM-/bin/nm -eC} + +# Determine which version of AIX this is +AIXVERSION=`uname -v` + +# Pick a way to tell the linker there's no entrypoint -gt +case ${AIXVERSION} +{ + 3*) + ENTRY='-e _nostart' + ;; + 4*) + ENTRY=-bnoentry + ;; + *) + echo "Error in mklib.aix!" + exit 1 + ;; +} + + +# Other libraries which we may be dependent on. Since we make the libraries +# in the order libGL.a, libaGLU.a, libglut.a just depends on its predecessor. +# modified to make otherlibs in the form of -lfoo -gt +OTHERLIBS=`ls ../lib/*.a | sed "s/..\/lib\/lib/-l/g" | sed "s/\.a//g"` + +##echo OTHERLIBS are ${OTHERLIBS} + + +# Make exports (.exp) file header +echo "#! ${LIBRARY}" > ${EXPFILE} + +# Append list of exported symbols to exports file -gt +case ${AIXVERSION} +{ + 3*) + ${NM} ${OBJECTS} | awk -F'|' '{ + if ($3 != "extern" || substr($7,1,1) == " ") continue + sub (" *", "", $1); sub (" *", "", $7) + if ( (($7 == ".text") || ($7 == ".data") || ($7 == ".bss")) \ + && ( substr($1,1,1) != ".")) { + if (substr ($1, 1, 7) != "__sinit" && + substr ($1, 1, 7) != "__sterm") { + if (substr ($1, 1, 5) == "__tf1") + print (substr ($1, 7)) + else if (substr ($1, 1, 5) == "__tf9") + print (substr ($1, 15)) + else + print $1 + } + } + }' | sort -u >> ${EXPFILE} + ;; + + 4*) + ${NM} ${OBJECTS} | awk '{ + if ((($2 == "T") || ($2 == "D") || ($2 == "B")) \ + && ( substr($1,1,1) != ".")) { + if (substr ($1, 1, 7) != "__sinit" && + substr ($1, 1, 7) != "__sterm") { + if (substr ($1, 1, 5) == "__tf1") + print (substr ($1, 7)) + else if (substr ($1, 1, 5) == "__tf9") + print (substr ($1, 15)) + else + print $1 + } + } + }' | sort -u >> ${EXPFILE} + ;; +} + + +# This next line is a hack to allow full compatibility with IBM's OpenGL +# libraries. IBM mistakenly exports glLoadIdentity from the libGLU.a +# library. We have to do the same thing. Problem reported by Yemi Adesanya +# ([email protected]) and Patrick Brown ([email protected]) +if [ "${BASENAME}" = libGLU ] ; then + echo "glLoadIdentity" >> ${EXPFILE} +fi + + +# Make the shared lib file +cc -o ${OFILE} ${OBJECTS} -L../lib ${OTHERLIBS} -lX11 -lXext -lXmu -lXi -lm -lc -bE:${EXPFILE} -bM:SRE ${ENTRY} + + +# Make the .a file +ar ruv ${LIBRARY} ${OFILE} + +# Put exports file in Mesa lib directory +mv ${EXPFILE} ../lib + +# Remove OFILE +rm -f ${OFILE} + + +#NOTES +# AIX 4.x /usr/bin/nm -B patch from [email protected] (Simon Clift) +# Robustified symbol extraction for AIX 3 and 4 +# Greg Thompson <[email protected]> + |