summaryrefslogtreecommitdiffstats
path: root/bin/mklib.aix
blob: fa7f050ddbf2e8e6a76ef4b60cab049ec547ace6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#!/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>