| #!/bin/ksh |
| |
| # Make an AIX shared library (tricky!!!) |
| # Based on a script from Athanasios G. Gaitatzes (gaitat@vnet.ibm.com) |
| # Improved by Greg Thompson <gregt@visix.com> -gt |
| |
| #--identification------------------------------------------------------ |
| |
| # $Id: mklib.aix,v 1.2 1999/09/15 15:10:20 brianp Exp $ |
| |
| # $Log: mklib.aix,v $ |
| # Revision 1.2 1999/09/15 15:10:20 brianp |
| # added third, tiny version number to arguments |
| # |
| # Revision 1.1 1999/08/19 13:52:56 brianp |
| # initial check-in (post-crash) |
| # |
| |
| |
| #--common-------------------------------------------------------------- |
| |
| LIBRARY=$1 |
| shift 1 |
| |
| MAJOR=$1 |
| shift 1 |
| |
| MINOR=$1 |
| shift 1 |
| |
| TINY=$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 |
| # (adesanya@afsmail.cern.ch) and Patrick Brown (pbrown@austin.ibm.com) |
| 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 ssclift@mach.me.queensu.ca (Simon Clift) |
| # Robustified symbol extraction for AIX 3 and 4 |
| # Greg Thompson <gregt@visix.com> |
| |