d08b5df7bb9dfa9fd6988a94cebe799eb32ed15c
[krb5.git] / src / config / shlib.conf
1 # This shell script fragment should set a bunch of variables:
2 #
3 # CC_LINK_STATIC: How to link a program if we're only building static
4 #  libraries for krb5 (but may use other shared libs, and there may
5 #  be a shared krb5 lib already installed that we shouldn't use).
6 # CC_LINK_SHARED: How to link a program if we're building shared
7 #  libraries.
8 # CXX_LINK_STATIC, CXX_LINK_SHARED: Variants for C++.
9 # STLIBEXT: Static library extension.
10 # SHLIBEXT: Shared library extension.
11 # SHLIBVEXT: Shared library extension, with major version.
12 # SHLIBSEXT: Shared library extension, with full version.
13 # (... finish documenting these ...)
14
15 #
16 # Set up some defaults.
17 #
18 STLIBEXT=.a
19 # Default to being unable to build shared libraries.
20 SHLIBEXT=.so-nobuild
21 SHLIBVEXT=.so.v-nobuild
22 SHLIBSEXT=.so.s-nobuild
23 # Most systems support profiled libraries.
24 PFLIBEXT=_p.a
25 # Most systems install shared libs as mode 644, etc. while hpux wants 755
26 INSTALL_SHLIB='$(INSTALL_DATA)'
27 # Most systems use the same objects for shared libraries and dynamically
28 # loadable objects.
29 DYNOBJEXT='$(SHLIBEXT)'
30 MAKE_DYNOBJ_COMMAND='$(MAKE_SHLIB_COMMAND)'
31 DYNOBJ_EXPDEPS='$(SHLIB_EXPDEPS)'
32 DYNOBJ_EXPFLAGS='$(SHLIB_EXPFLAGS)'
33 #
34 use_linker_init_option=no
35 use_linker_fini_option=no
36
37 STOBJEXT=.o
38 SHOBJEXT=.so
39 PFOBJEXT=.po
40 # Default for systems w/o shared libraries
41 CC_LINK_STATIC='$(CC) $(PROG_LIBPATH) $(CFLAGS) $(LDFLAGS)'
42 CXX_LINK_STATIC='$(CXX) $(PROG_LIBPATH) $(CXXFLAGS) $(LDFLAGS)'
43 #
44 SHLIB_EXPORT_FILE_DEP='$(SHLIB_EXPORT_FILE)'
45 # This will do for most platforms, and we'll substitute for
46 # LDCOMBINE, SHLIB_EXPFLAGS, and LDCOMBINE_TAIL below.
47 MAKE_SHLIB_COMMAND=x
48 INIT_FINI_PREP=:
49
50 # Default to static or shared libraries?
51 default_static=no
52 default_shared=yes
53
54 # Set up architecture-specific variables.
55 case $krb5_cv_host in
56 alpha*-dec-osf*)
57         SHLIBVEXT='.so.$(LIBMAJOR).$(LIBMINOR)'
58         SHLIBSEXT='.so.$(LIBMAJOR)'
59         SHLIBEXT=.so
60         # Alpha OSF/1 doesn't need separate PIC objects
61         SHOBJEXT=.o
62         INIT_FINI_PREP=initfini=
63         LDCOMBINE='$(CC) $(CFLAGS) $(PTHREAD_CFLAGS) -shared -Wl,-expect_unresolved -Wl,\* -Wl,-update_registry -Wl,$(BUILDTOP)/so_locations -Wl,-soname -Wl,$(LIBPREFIX)$(LIBBASE)$(SHLIBSEXT) -Wl,-hidden -Wl,-input,osf1.exports $$initfini'
64         SHLIB_EXPORT_FILE_DEP=osf1.exports
65         use_linker_init_option=yes
66         use_linker_fini_option=yes
67         EXTRA_FILES="$EXTRA_FILES export"
68         SHLIB_RPATH_FLAGS='-rpath $(SHLIB_RDIRS)'
69         SHLIB_EXPFLAGS='$(SHLIB_RPATH_FLAGS) $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
70         PROFFLAGS=-pg
71         RPATH_FLAG='-Wl,-rpath -Wl,'
72         PROG_RPATH_FLAGS='$(RPATH_FLAG)$(PROG_RPATH)'
73         CC_LINK_SHARED='$(CC) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CFLAGS) $(PTHREAD_CFLAGS) $(LDFLAGS)'
74         CXX_LINK_SHARED='$(CXX) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CXXFLAGS) $(PTHREAD_CFLAGS) $(LDFLAGS)'
75         if test "$ac_cv_c_compiler_gnu" = yes \
76                 && test "$krb5_cv_prog_gnu_ld" = yes; then
77                 # Really should check for gnu ld vs system ld, too.
78                 CC_LINK_STATIC='$(CC) $(PROG_LIBPATH) $(CFLAGS) $(PTHREAD_CFLAGS) $(LDFLAGS)'
79         else
80                 # Need -oldstyle_liblookup to avoid picking up shared libs from
81                 # other builds.  OSF/1 / Tru64 ld programs look through the entire
82                 # library path for shared libs prior to looking through the
83                 # entire library path for static libs.
84                 CC_LINK_STATIC='$(CC) $(PROG_LIBPATH) -Wl,-oldstyle_liblookup $(CFLAGS) $(PTHREAD_CFLAGS) $(LDFLAGS)'
85         fi
86         if test "$ac_cv_cxx_compiler_gnu" = yes \
87                 && test "$krb5_cv_prog_gnu_ld" = yes; then
88                 # Really should check for gnu ld vs system ld, too.
89                 CXX_LINK_STATIC='$(CXX) $(PROG_LIBPATH) $(CXXFLAGS) $(PTHREAD_CFLAGS) $(LDFLAGS)'
90         else
91                 # Need -oldstyle_liblookup to avoid picking up shared libs from
92                 # other builds.  OSF/1 / Tru64 ld programs look through the entire
93                 # library path for shared libs prior to looking through the
94                 # entire library path for static libs.
95                 CXX_LINK_STATIC='$(CXX) $(PROG_LIBPATH) -Wl,-oldstyle_liblookup $(CXXFLAGS) $(PTHREAD_CFLAGS) $(LDFLAGS)'
96         fi
97         # _RLD_ROOT hack needed to repoint "root" directory for purposes
98         # of searching for shared libs, since RPATHs take precedence over
99         # LD_LIBRARY_PATH.
100         RUN_ENV='LD_LIBRARY_PATH=`echo $(PROG_LIBPATH) | sed -e "s/-L//g" -e "s/ /:/g"`$${LD_LIBRARY_PATH+:$$LD_LIBRARY_PATH}; export LD_LIBRARY_PATH; _RLD_ROOT=$(FAKEDEST):$${_RLD_ROOT+$$_RLD_ROOT}$${_RLD_ROOT-/}; export _RLD_ROOT;'
101         ;;
102
103 # HPUX *seems* to work under 10.20.
104
105 # Note: "-Wl,+s" when building executables enables the use of the
106 # SHLIB_PATH environment variable for finding shared libraries 
107 # in non-standard directories.  If a non-standard search-path for
108 #  shared libraries is compiled into the executable (using 
109 # -Wl,+b,$KRB5_SHLIBDIR), then the order of "-Wl,+b,..." and "-Wl,+s" 
110 # on the commandline of the linker will determine which path
111 # (compiled-in or SHLIB_PATH) will be searched first.
112 #
113 # +I initproc routine gets called at load and unload time for
114 #    shl_load calls, but appears to never be called for link-time
115 #    specified libraries.
116 # +e sym exports symbol and supposedly prevents other symbols
117 #    from being exported, according to the man page, but the
118 #    latter bit doesn't actually seem to work
119 # -O +dpv should display any routines eliminated as unused, but -b
120 #         apparently turns that off
121 *-*-hpux*)
122         INSTALL_SHLIB='$(INSTALL)'
123         SHLIBEXT=.sl
124         SHLIBVEXT='.$(LIBMAJOR).$(LIBMINOR)'
125         SHLIBSEXT='.$(LIBMAJOR)'
126         RPATH_FLAG='-Wl,+b,'
127         if test "$ac_cv_c_compiler_gnu" = yes; then
128                 PICFLAGS=-fPIC
129                 SHLIB_RPATH_FLAGS='-Wl,+b,$(SHLIB_RDIRS)'
130                 SHLIB_EXPFLAGS='-Wl,+s $(SHLIB_RPATH_FLAGS) $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
131                 LDCOMBINE='gcc -fPIC -shared -Wl,+h,$(LIBPREFIX)$(LIBBASE)$(SHLIBSEXT) -Wl,-c,hpux10.exports'
132         else
133                 PICFLAGS=+z
134                 SHLIB_RPATH_FLAGS='+b $(SHLIB_RDIRS)'
135                 SHLIB_EXPFLAGS='+s $(SHLIB_RPATH_FLAGS) $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
136                 LDCOMBINE='ld -b +h $(LIBPREFIX)$(LIBBASE)$(SHLIBSEXT) -c hpux10.exports'
137         fi
138         PROG_RPATH_FLAGS='$(RPATH_FLAG)$(PROG_RPATH)'
139         CC_LINK_SHARED='$(CC) $(PROG_LIBPATH) -Wl,+s $(PROG_RPATH_FLAGS) $(CFLAGS) $(LDFLAGS)'
140         CC_LINK_STATIC='$(CC) $(PROG_LIBPATH) $(CFLAGS) $(LDFLAGS)'
141         CXX_LINK_SHARED='$(CXX) $(PROG_LIBPATH) -Wl,+s $(PROG_RPATH_FLAGS) $(CXXFLAGS) $(LDFLAGS)'
142         CXX_LINK_STATIC='$(CXX) $(PROG_LIBPATH) $(CXXFLAGS) $(LDFLAGS)'
143         RUN_ENV='SHLIB_PATH=`echo $(PROG_LIBPATH) | sed -e "s/-L//g" -e "s/ /:/g"`; export SHLIB_PATH;'
144         SHLIB_EXPORT_FILE_DEP=hpux10.exports
145         # Do *not* set use_linker_init_option=yes here, because in the
146         # case where the library is specified at program link time, the
147         # initialization function appears not to get called, only for
148         # shl_load.  But for finalization functions, the shl_load case
149         # is the one we care about.
150         #
151         # Not setting use_linker_init_option here should cause compilation
152         # failures if the user tries to disable delayed initialization.
153         use_linker_fini_option=yes
154         ;;
155
156 mips-sgi-irix6.3)       # This is a Kludge; see below
157         SHLIBVEXT='.so.$(LIBMAJOR).$(LIBMINOR)'
158         SHLIBSEXT='.so.$(LIBMAJOR)'
159         SHLIBEXT=.so
160         SHOBJEXT=.o
161         # Kludge follows: (gcc makes n32 object files but ld expects o32, so we reeducate ld)
162         if test "$ac_cv_c_compiler_gnu" = yes; then
163                 LDCOMBINE='ld -n32 -shared -ignore_unresolved -update_registry $(BUILDTOP)/so_locations -soname $(LIBPREFIX)$(LIBBASE)$(SHLIBSEXT)'
164         else
165                 LDCOMBINE='ld -shared -ignore_unresolved -update_registry $(BUILDTOP)/so_locations -soname $(LIBPREFIX)$(LIBBASE)$(SHLIBSEXT)'
166         fi
167         SHLIB_RPATH_FLAGS='-rpath $(SHLIB_RDIRS)'
168         SHLIB_EXPFLAGS='$(SHLIB_RPATH_FLAGS) $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
169         # no gprof for Irix...
170         PROFFLAGS=-p
171         RPATH_FLAG='-Wl,-rpath -Wl,'
172         PROG_RPATH_FLAGS='$(RPATH_FLAG)$(PROG_RPATH)'
173         CC_LINK_SHARED='$(CC) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CFLAGS) $(LDFLAGS)'
174         CC_LINK_STATIC='$(CC) $(PROG_LIBPATH) $(CFLAGS) $(LDFLAGS)'
175         CXX_LINK_SHARED='$(CXX) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CXXFLAGS) $(LDFLAGS)'
176         CXX_LINK_STATIC='$(CXX) $(PROG_LIBPATH) $(CXXFLAGS) $(LDFLAGS)'
177         # This grossness is necessary due to the presence of *three*
178         # supported ABIs on Irix, and the precedence of the rpath over
179         # LD_LIBRARY*_PATH.  Like OSF/1, _RLD*_ROOT needs to be set to
180         # work around this lossage.
181         #
182         # Set the N32 and 64 variables first because the unqualified
183         # variables affect all three and can cause the sed command to fail.
184         #
185         # This loop is to reduce the clutter a slight bit.
186         add='`echo $(PROG_LIBPATH) | sed -e "s/-L//g" -e "s/ /:/g"`'
187         RUN_ENV=
188         for i in N32 64 ''; do
189                 RUN_ENV="${RUN_ENV+ $RUN_ENV}LD_LIBRARY${i}_PATH=$add\$\${LD_LIBRARY${i}_PATH+:\$\$LD_LIBRARY${i}_PATH}; export LD_LIBRARY${i}_PATH;"
190                 RUN_ENV="${RUN_ENV} _RLD${i}_ROOT=\$(FAKEDEST):\$\${_RLD${i}_ROOT+\$\${_RLD${i}_ROOT}}\$\${_RLD${i}_ROOT-/}; export _RLD${i}_ROOT;"
191         done
192         ;;
193
194 mips-sgi-irix*)
195         SHLIBVEXT='.so.$(LIBMAJOR).$(LIBMINOR)'
196         SHLIBSEXT='.so.$(LIBMAJOR)'
197         SHLIBEXT=.so
198         SHOBJEXT=.o
199         if test "$ac_cv_c_compiler_gnu" = yes; then
200                 LDCOMBINE_TAIL=""
201                 INIT_FINI_PREP="initfini="
202         else
203                 use_linker_init_option=yes
204                 use_linker_fini_option=yes
205                 INIT_FINI_PREP='initfini=; for f in . $(LIBINITFUNC); do if test $$f = .; then :; else initfini="$$initfini -Wl,-init,$${f}__auxinit"; fi; done; for f in . $(LIBFINIFUNC); do if test $$f = .; then :; else initfini="$$initfini -Wl,-fini,$${f}"; fi; done'
206                 LDCOMBINE_TAIL='-Wl,-exports_file -Wl,$(SHLIB_EXPORT_FILE)'
207         fi
208         opts='-Wl,-ignore_unresolved -Wl,-update_registry -Wl,$(BUILDTOP)/so_locations'
209
210         if test "$ac_cv_c_compiler_gnu" = yes \
211                 && test "$krb5_cv_prog_gnu_ld" = yes; then
212                 opts=''
213         fi
214         LDCOMBINE='$(CC) -shared '$opts' -Wl,-soname -Wl,$(LIBPREFIX)$(LIBBASE)$(SHLIBSEXT) $$initfini'
215         SHLIB_RPATH_FLAGS='-rpath $(SHLIB_RDIRS)'
216         SHLIB_EXPFLAGS='$(SHLIB_RPATH_FLAGS) $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
217         # no gprof for Irix...
218         PROFFLAGS=-p
219         RPATH_FLAG='-Wl,-rpath -Wl,'
220         PROG_RPATH_FLAGS='$(RPATH_FLAG)$(PROG_RPATH)'
221         CC_LINK_SHARED='$(CC) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CFLAGS) $(LDFLAGS)'
222         CC_LINK_STATIC='$(CC) $(PROG_LIBPATH) $(CFLAGS) $(LDFLAGS)'
223         CXX_LINK_SHARED='$(CXX) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CXXFLAGS) $(LDFLAGS)'
224         CXX_LINK_STATIC='$(CXX) $(PROG_LIBPATH) $(CXXFLAGS) $(LDFLAGS)'
225         # This grossness is necessary due to the presence of *three*
226         # supported ABIs on Irix, and the precedence of the rpath over
227         # LD_LIBRARY*_PATH.  Like OSF/1, _RLD*_ROOT needs to be set to
228         # work around this lossage.
229         #
230         # Set the N32 and 64 variables first because the unqualified
231         # variables affect all three and can cause the sed command to fail.
232         #
233         # This loop is to reduce the clutter a slight bit.
234         add='`echo $(PROG_LIBPATH) | sed -e "s/-L//g" -e "s/ /:/g"`'
235         RUN_ENV=
236         for i in N32 64 ''; do
237                 RUN_ENV="${RUN_ENV+ $RUN_ENV}LD_LIBRARY${i}_PATH=$add\$\${LD_LIBRARY${i}_PATH+:\$\$LD_LIBRARY${i}_PATH}; export LD_LIBRARY${i}_PATH;"
238                 RUN_ENV="${RUN_ENV} _RLD${i}_ROOT=\$(FAKEDEST):\$\${_RLD${i}_ROOT+\$\${_RLD${i}_ROOT}}\$\${_RLD${i}_ROOT-/}; export _RLD${i}_ROOT;"
239         done
240         ;;
241
242 # untested...
243 mips-sni-sysv4)
244         if test "$ac_cv_c_compiler_gnu" = yes; then
245                 PICFLAGS=-fpic
246                 LDCOMBINE='$(CC) -G -Wl,-h -Wl,$(LIBPREFIX)$(LIBBASE)$(SHLIBSEXT)'
247         else
248                 PICFLAGS=-Kpic
249                 LDCOMBINE='$(CC) -G -h $(LIBPREFIX)$(LIBBASE)$(SHLIBSEXT)'
250         fi
251         SHLIB_RPATH_FLAGS='-R$(SHLIB_RDIRS)'
252         SHLIB_EXPFLAGS='$(SHLIB_RPATH_FLAGS) $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
253         SHLIBEXT=.so
254         SHLIBVEXT='.so.$(LIBMAJOR).$(LIBMINOR)'
255         SHLIBSEXT='.so.$(LIBMAJOR)'
256         RPATH_FLAG=-R
257         PROG_RPATH_FLAGS='$(RPATH_FLAG)$(PROG_RPATH)'
258         CC_LINK_SHARED='$(CC) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CFLAGS) $(LDFLAGS)'
259         CC_LINK_STATIC='$(CC) $(PROG_LIBPATH) $(CFLAGS) $(LDFLAGS)'
260         CXX_LINK_SHARED='$(CXX) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CXXFLAGS) $(LDFLAGS)'
261         CXX_LINK_STATIC='$(CXX) $(PROG_LIBPATH) $(CXXFLAGS) $(LDFLAGS)'
262         RUN_ENV='LD_LIBRARY_PATH=`echo $(PROG_LIBPATH) | sed -e "s/-L//g" -e "s/ /:/g"`; export LD_LIBRARY_PATH;'
263         PROFFLAGS=-pg
264         ;;
265
266 mips-*-netbsd*)
267         PICFLAGS=-fPIC
268         SHLIBVEXT='.so.$(LIBMAJOR).$(LIBMINOR)'
269         SHLIBSEXT='.so.$(LIBMAJOR)'
270         SHLIBEXT=.so
271         LDCOMBINE='ld -shared -soname $(LIBPREFIX)$(LIBBASE)$(SHLIBSEXT)'
272         SHLIB_RPATH_FLAGS='-R$(SHLIB_RDIRS)'
273         SHLIB_EXPFLAGS='$(SHLIB_RPATH_FLAGS) $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
274         RPATH_FLAG='-Wl,-rpath -Wl,'
275         PROG_RPATH_FLAGS='$(RPATH_FLAG)$(PROG_RPATH)'
276         CC_LINK_SHARED='$(CC) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CFLAGS) $(LDFLAGS)'
277         CC_LINK_STATIC='$(CC) $(PROG_LIBPATH) $(CFLAGS) $(LDFLAGS)'
278         CXX_LINK_SHARED='$(CXX) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CXXFLAGS) $(LDFLAGS)'
279         CXX_LINK_STATIC='$(CXX) $(PROG_LIBPATH) $(CXXFLAGS) $(LDFLAGS)'
280         RUN_ENV='LD_LIBRARY_PATH=`echo $(PROG_LIBPATH) | sed -e "s/-L//g" -e "s/ /:/g"`; export LD_LIBRARY_PATH;'
281         PROFFLAGS=-pg
282         ;;
283
284 *-*-netbsd*)
285         PICFLAGS=-fPIC
286         SHLIBVEXT='.so.$(LIBMAJOR).$(LIBMINOR)'
287         SHLIBEXT=.so
288         LDCOMBINE='$(CC) -shared $(LDFLAGS)'
289         SHLIB_RPATH_FLAGS='-R$(SHLIB_RDIRS)'
290         SHLIB_EXPFLAGS='$(SHLIB_RPATH_FLAGS) $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
291         RPATH_FLAG=-R
292         PROG_RPATH_FLAGS='$(RPATH_FLAG)$(PROG_RPATH)'
293         CC_LINK_SHARED='$(CC) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CFLAGS) $(LDFLAGS)'
294         CC_LINK_STATIC='$(CC) $(PROG_LIBPATH) $(CFLAGS) $(LDFLAGS)'
295         CXX_LINK_SHARED='$(CXX) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CXXFLAGS) $(LDFLAGS)'
296         CXX_LINK_STATIC='$(CXX) $(PROG_LIBPATH) $(CXXFLAGS) $(LDFLAGS)'
297         RUN_ENV='LD_LIBRARY_PATH=`echo $(PROG_LIBPATH) | sed -e "s/-L//g" -e "s/ /:/g"`; export LD_LIBRARY_PATH;'
298         PROFFLAGS=-pg
299         ;;
300
301 *-*-freebsd*)
302         if test -x /usr/bin/objformat ; then
303                 objformat=`/usr/bin/objformat`
304         else
305                 objformat="aout"
306         fi
307         PICFLAGS=-fpic
308         if test "x$objformat" = "xelf" ; then
309                 SHLIBVEXT='.so.$(LIBMAJOR)'
310                 RPATH_FLAG='-Wl,-rpath -Wl,'
311         else
312                 RPATH_FLAG=-R
313                 SHLIBVEXT='.so.$(LIBMAJOR).$(LIBMINOR)'
314         fi
315         PROG_RPATH_FLAGS='$(RPATH_FLAG)$(PROG_RPATH)'
316         CC_LINK_SHARED='$(CC) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CFLAGS) $(LDFLAGS)'
317         CXX_LINK_SHARED='$(CXX) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CXXFLAGS) $(LDFLAGS)'
318         SHLIBEXT=.so
319         LDCOMBINE='ld -Bshareable'
320         SHLIB_RPATH_FLAGS='-R$(SHLIB_RDIRS)'
321         SHLIB_EXPFLAGS='$(SHLIB_RPATH_FLAGS) $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
322         CC_LINK_STATIC='$(CC) $(PROG_LIBPATH) $(CFLAGS) $(LDFLAGS)'
323         CXX_LINK_STATIC='$(CXX) $(PROG_LIBPATH) $(CXXFLAGS) $(LDFLAGS)'
324         RUN_ENV='LD_LIBRARY_PATH=`echo $(PROG_LIBPATH) | sed -e "s/-L//g" -e "s/ /:/g"`; export LD_LIBRARY_PATH;'
325         PROFFLAGS=-pg
326         ;;
327
328 *-*-openbsd*)
329         PICFLAGS=-fpic
330         SHLIBVEXT='.so.$(LIBMAJOR).$(LIBMINOR)'
331         SHLIBEXT=.so
332         LDCOMBINE='ld -Bshareable'
333         SHLIB_RPATH_FLAGS='-R$(SHLIB_RDIRS)'
334         SHLIB_EXPFLAGS='$(SHLIB_RPATH_FLAGS) $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
335         RPATH_FLAG=-R
336         PROG_RPATH_FLAGS='$(RPATH_FLAG)$(PROG_RPATH)'
337         CC_LINK_SHARED='$(CC) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CFLAGS) $(LDFLAGS)'
338         CC_LINK_STATIC='$(CC) $(PROG_LIBPATH) $(CFLAGS) $(LDFLAGS)'
339         CXX_LINK_SHARED='$(CXX) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CXXFLAGS) $(LDFLAGS)'
340         CXX_LINK_STATIC='$(CXX) $(PROG_LIBPATH) $(CXXFLAGS) $(LDFLAGS)'
341         RUN_ENV='LD_LIBRARY_PATH=`echo $(PROG_LIBPATH) | sed -e "s/-L//g" -e "s/ /:/g"`; export LD_LIBRARY_PATH;'
342         PROFFLAGS=-pg
343         ;;
344
345 *-*-darwin* | *-*-rhapsody*)
346         SHLIBVEXT='.$(LIBMAJOR).$(LIBMINOR).dylib'
347         SHLIBSEXT='.$(LIBMAJOR).dylib'
348         SHLIB_EXPFLAGS='$(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
349         SHLIBEXT=.dylib
350         DYNOBJEXT=.so
351         SHLIB_EXPORT_FILE_DEP=darwin.exports
352         LDCOMBINE='$(CC) -undefined error -dead_strip -dynamiclib -compatibility_version $(LIBMAJOR) -current_version $(LIBMAJOR).$(LIBMINOR) -install_name "$(KRB5_LIBDIR)/$(LIBPREFIX)$(LIBBASE)$(SHLIBVEXT)" -exported_symbols_list darwin.exports $(CFLAGS) $(LDFLAGS)'
353         # The -dylib_file option tells the linker where to find indirect dependent
354         # libraries, without adding them to the dependency list.  We need this because
355         # the direct dependent libraries contain the pathname where the indirect
356         # dependent libraries will be installed (but haven't been yet).
357         LDCOMBINE_TAIL=""
358         for lib in libkrb5support.1.1.dylib libkadm5srv.5.1.dylib libkdb5.4.0.dylib; do
359             LDCOMBINE_TAIL="$LDCOMBINE_TAIL -dylib_file \"\$(KRB5_LIBDIR)/$lib\":\$(TOPLIBD)/$lib"
360         done
361         MAKE_DYNOBJ_COMMAND='$(CC) -bundle $(CFLAGS) $(LDFLAGS) -o $@ $$objlist $(DYNOBJ_EXPFLAGS) -exported_symbols_list darwin.exports'" ${LDCOMBINE_TAIL}"
362         CC_LINK_SHARED='$(CC) $(PROG_LIBPATH) -dynamic $(CFLAGS) $(LDFLAGS)'
363         CC_LINK_STATIC='$(CC) $(PROG_LIBPATH) $(CFLAGS) $(LDFLAGS)'
364         CXX_LINK_SHARED='$(CXX) $(PROG_LIBPATH) -dynamic $(CXXFLAGS) $(LDFLAGS)'
365         CXX_LINK_STATIC='$(CXX) $(PROG_LIBPATH) $(CXXFLAGS) $(LDFLAGS)'
366         RUN_ENV='DYLD_LIBRARY_PATH=`echo $(PROG_LIBPATH) | sed -e "s/-L//g" -e "s/ /:/g"`; export DYLD_LIBRARY_PATH;'
367         ;;
368
369 *-*-solaris*)
370         if test "$ac_cv_c_compiler_gnu" = yes; then
371                 PICFLAGS=-fPIC
372                 LDCOMBINE='$(CC) $(CFLAGS) -shared -h $(LIBPREFIX)$(LIBBASE)$(SHLIBSEXT)'
373         else
374                 PICFLAGS=-KPIC
375                 # Solaris cc doesn't default to stuffing the SONAME field...
376                 LDCOMBINE='$(CC) $(CFLAGS) -dy -G -z text -h $(LIBPREFIX)$(LIBBASE)$(SHLIBSEXT) $$initfini'
377                 #
378                 case $krb5_cv_host in
379                 *-*-solaris2.[1-7] | *-*-solaris2.[1-7].*)
380                     # Did Solaris 7 and earlier have a linker option for this?
381                     ;;
382                 *)
383                     INIT_FINI_PREP='initfini=; for f in . $(LIBINITFUNC); do if test $$f = .; then :; else initfini="$$initfini -Wl,-z,initarray=$${f}__auxinit"; fi; done; for f in . $(LIBFINIFUNC); do if test $$f = .; then :; else initfini="$$initfini -Wl,-z,finiarray=$$f"; fi; done'
384                     use_linker_init_option=yes
385                     use_linker_fini_option=yes
386                     ;;
387                 esac
388         fi
389         LDCOMBINE_TAIL='$(LDFLAGS)'
390         SHLIBVEXT='.so.$(LIBMAJOR).$(LIBMINOR)'
391         SHLIBSEXT='.so.$(LIBMAJOR)'
392         SHLIBEXT=.so
393         SHLIB_RPATH_FLAGS='-R$(SHLIB_RDIRS)'
394         SHLIB_EXPFLAGS='$(SHLIB_RPATH_FLAGS) $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
395         PROFFLAGS=-pg
396         RPATH_FLAG=-R
397         PROG_RPATH_FLAGS='$(RPATH_FLAG)$(PROG_RPATH)'
398         CC_LINK_SHARED='$(PURE) $(CC) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CFLAGS) $(LDFLAGS)'
399         CC_LINK_STATIC='$(PURE) $(CC) $(PROG_LIBPATH) $(CFLAGS) $(LDFLAGS)'
400         CXX_LINK_SHARED='$(PURE) $(CXX) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CXXFLAGS) $(LDFLAGS)'
401         CXX_LINK_STATIC='$(PURE) $(CXX) $(PROG_LIBPATH) $(CXXFLAGS) $(LDFLAGS)'
402         RUN_ENV='LD_LIBRARY_PATH=`echo $(PROG_LIBPATH) | sed -e "s/-L//g" -e "s/ /:/g"`; export LD_LIBRARY_PATH;'
403         ;;
404
405 *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu)
406         PICFLAGS=-fPIC
407         SHLIBVEXT='.so.$(LIBMAJOR).$(LIBMINOR)'
408         SHLIBSEXT='.so.$(LIBMAJOR)'
409         SHLIBEXT=.so
410         # Linux ld doesn't default to stuffing the SONAME field...
411         # Use objdump -x to examine the fields of the library
412         LDCOMBINE='$(CC) -shared -fPIC -Wl,-h,$(LIBPREFIX)$(LIBBASE)$(SHLIBSEXT),--no-undefined $(LDFLAGS)'
413         # 
414         LDCOMBINE_TAIL='-Wl,--version-script binutils.versions && $(PERL) -w $(top_srcdir)/util/export-check.pl $(SHLIB_EXPORT_FILE) $@'
415         SHLIB_EXPORT_FILE_DEP=binutils.versions
416         # For cases where we do have dependencies on other libraries
417         # built in this tree...
418         SHLIB_RPATH_FLAGS='-Wl,-R$(SHLIB_RDIRS)'
419         SHLIB_EXPFLAGS='$(SHLIB_RPATH_FLAGS) $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
420         PROFFLAGS=-pg
421         RPATH_FLAG='-Wl,-rpath -Wl,'
422         PROG_RPATH_FLAGS='$(RPATH_FLAG)$(PROG_RPATH)'
423         CC_LINK_SHARED='$(CC) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CFLAGS) $(LDFLAGS)'
424         CC_LINK_STATIC='$(CC) $(PROG_LIBPATH) $(CFLAGS) $(LDFLAGS)'
425         CXX_LINK_SHARED='$(CXX) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CXXFLAGS) $(LDFLAGS)'
426         CXX_LINK_STATIC='$(CXX) $(PROG_LIBPATH) $(CXXFLAGS) $(LDFLAGS)'
427         RUN_ENV='LD_LIBRARY_PATH=`echo $(PROG_LIBPATH) | sed -e "s/-L//g" -e "s/ /:/g"`; export LD_LIBRARY_PATH; '
428
429         ## old version:
430         # Linux libc does weird stuff at shlib link time, must be
431         # explicitly listed here.  This also makes it get used even
432         # for the libraries marked as not having any dependencies; while
433         # that's not strictly correct, the resulting behavior -- not adding
434         # extra -R directories -- is still what we want.
435         #LDCOMBINE='ld -shared -h $(LIBPREFIX)$(LIBBASE)$(SHLIBSEXT)'
436         #LDCOMBINE_TAIL="-lc"
437         #SHLIB_EXPFLAGS='-R$(SHLIB_RDIRS) $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
438
439         ;;
440
441 *-*-bsdi4*)
442         PICFLAGS=-fpic
443         SHLIBVEXT='.so.$(LIBMAJOR)'
444         SHLIBEXT=.so
445         LDCOMBINE='ld -Bshareable'
446         SHLIB_RPATH_FLAGS='-R$(SHLIB_RDIRS)'
447         SHLIB_EXPFLAGS='$(SHLIB_RPATH_FLAGS) $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
448         PROG_RPATH_FLAGS='-Wl,-rpath,$(PROG_RPATH)'
449         CC_LINK_SHARED='$(CC) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS)'
450         CC_LINK_STATIC='$(CC) $(PROG_LIBPATH)'
451         CXX_LINK_SHARED='$(CXX) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS)'
452         CXX_LINK_STATIC='$(CXX) $(PROG_LIBPATH)'
453         RUN_ENV='LD_LIBRARY_PATH=`echo $(PROG_LIBPATH) | sed -e "s/-L//g" -e "s/
454 /:/g"`; export LD_LIBRARY_PATH;'
455         PROFFLAGS=-pg
456         ;;
457
458 *-*-aix5*)
459         SHLIBVEXT='.so.$(LIBMAJOR).$(LIBMINOR)'
460         SHLIBEXT=.so
461         # AIX doesn't need separate PIC objects
462         SHOBJEXT=.o
463         SHLIB_EXPFLAGS='  $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
464         PROFFLAGS=-pg
465         if test "$ac_cv_c_compiler_gnu" = "yes" ; then
466           wl_prefix=-Wl,
467           RPATH_FLAG='-Wl,-blibpath:'
468           LDCOMBINE='$(CC) -shared -v -o $@ $$objlist -nostartfiles -Xlinker -bgcbypass:1 -Xlinker -bfilelist -Xlinker -bM:SRE -Xlinker -bE:$(SHLIB_EXPORT_FILE) -Xlinker -bernotok -Xlinker -brtl $(SHLIB_EXPFLAGS) -lc $$initfini'
469         else
470           wl_prefix=
471           RPATH_FLAG=-blibpath:
472           LDCOMBINE='/bin/ld -o $@ $$objlist -H512 -T512 -bnoentry -bgcbypass:1 -bnodelcsect -bfilelist -bM:SRE -bE:$(SHLIB_EXPORT_FILE) -bernotok -brtl $(SHLIB_EXPFLAGS) -lc $$initfini'
473         fi
474         # Assume initialization always delayed.
475         INIT_FINI_PREP="wl=${wl_prefix}; "'i=1; initfini=; for f in . $(LIBFINIFUNC); do if test $$f != .; then initfini="$$initfini $${wl}-binitfini::$$f:$$i"; else :; fi; i=`expr $$i + 1`; done'
476         use_linker_fini_option=yes
477         MAKE_SHLIB_COMMAND="${INIT_FINI_PREP} && ${LDCOMBINE}"
478         RPATH_TAIL=:/usr/lib:/lib
479         PROG_RPATH_FLAGS='$(RPATH_FLAG)$(PROG_RPATH):'"$RPATH_TAIL"
480         CC_LINK_SHARED='$(CC) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CFLAGS) $(LDFLAGS)'
481         CC_LINK_STATIC='$(CC) $(PROG_LIBPATH) $(CFLAGS) $(LDFLAGS)'
482         CXX_LINK_SHARED='$(CXX) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CXXFLAGS) $(LDFLAGS)'
483         CXX_LINK_STATIC='$(CXX) $(PROG_LIBPATH) $(CXXFLAGS) $(LDFLAGS)'
484         # $(PROG_RPATH) is here to handle things like a shared tcl library
485         RUN_ENV='LIBPATH=`echo $(PROG_LIBPATH) | sed -e "s/-L//g" -e "s/ /:/g"`:$(PROG_RPATH):/usr/lib:/usr/local/lib; export LIBPATH; '
486         ;;
487
488 *-*-aix4.*)
489         SHLIBVEXT='.a.$(LIBMAJOR).$(LIBMINOR)'
490         SHLIBEXT=.a
491         # AIX doesn't need separate PIC objects
492         SHOBJEXT=.o
493         SHLIB_EXPFLAGS='  $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
494         PROFFLAGS=-pg
495         # Dynamically loaded object can have whatever suffix, but don't
496         # make archives like for shared libraries.
497         DYNOBJEXT=.so
498         #
499         if test "$ac_cv_c_compiler_gnu" = "yes" ; then
500           wl_prefix=-Wl,
501           RPATH_FLAG='-Wl,-blibpath:'
502           LDCOMBINE='$(CC) -shared -v -o shr.o.$(LIBMAJOR).$(LIBMINOR) $$objlist -nostartfiles -Xlinker -bgcbypass:1 -Xlinker -bfilelist -Xlinker -bM:SRE -Xlinker -bE:$(SHLIB_EXPORT_FILE) -Xlinker -bernotok $(SHLIB_EXPFLAGS) -lc $$initfini'
503           LDCOMBINE_DYN='$(CC) -shared -v -o $@ $$objlist -nostartfiles -Xlinker -bgcbypass:1 -Xlinker -bfilelist -Xlinker -bM:SRE -Xlinker -bE:$(SHLIB_EXPORT_FILE) -Xlinker -bernotok $(SHLIB_EXPFLAGS) -lc $$initfini'
504         else
505           wl_prefix=
506           RPATH_FLAG=-blibpath:
507           LDCOMBINE='/bin/ld -o shr.o.$(LIBMAJOR).$(LIBMINOR) $$objlist -H512 -T512 -bnoentry -bgcbypass:1 -bnodelcsect -bfilelist -bM:SRE -bE:$(SHLIB_EXPORT_FILE) -bernotok $(SHLIB_EXPFLAGS) -lc $$initfini'
508           LDCOMBINE_DYN='/bin/ld -o $@ $$objlist -H512 -T512 -bnoentry -bgcbypass:1 -bnodelcsect -bfilelist -bM:SRE -bE:$(SHLIB_EXPORT_FILE) -bernotok $(SHLIB_EXPFLAGS) -lc $$initfini'
509         fi
510         # Assume initialization always delayed.
511         INIT_FINI_PREP="wl=${wl_prefix}; "'i=1; initfini=; for f in . $(LIBFINIFUNC); do if test $$f != .; then initfini="$$initfini $${wl}-binitfini::$$f:$$i"; else :; fi; i=`expr $$i + 1`; done'
512         use_linker_fini_option=yes
513         MAKE_SHLIB_COMMAND="${INIT_FINI_PREP} && ${LDCOMBINE}"' && ar cq $@ shr.o.$(LIBMAJOR).$(LIBMINOR) && chmod +x $@ && rm -f shr.o.$(LIBMAJOR).$(LIBMINOR)'
514         MAKE_DYNOBJ_COMMAND="${INIT_FINI_PREP} && ${LDCOMBINE_DYN}"
515         RPATH_TAIL=:/usr/lib:/lib
516         PROG_RPATH_FLAGS='$(RPATH_FLAG)$(PROG_RPATH):'"$RPATH_TAIL"
517         CC_LINK_SHARED='$(CC) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CFLAGS) $(LDFLAGS)'
518         CC_LINK_STATIC='$(CC) $(PROG_LIBPATH) $(CFLAGS) $(LDFLAGS)'
519         CXX_LINK_SHARED='$(CXX) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CXXFLAGS) $(LDFLAGS)'
520         CXX_LINK_STATIC='$(CXX) $(PROG_LIBPATH) $(CXXFLAGS) $(LDFLAGS)'
521         # $(PROG_RPATH) is here to handle things like a shared tcl library
522         RUN_ENV='LIBPATH=`echo $(PROG_LIBPATH) | sed -e "s/-L//g" -e "s/ /:/g"`:$(PROG_RPATH):/usr/lib:/usr/local/lib; export LIBPATH; '
523         ;;
524 esac
525
526 if test "${MAKE_SHLIB_COMMAND}" = "x" ; then
527   if test "${INIT_FINI_PREP}" != ":"; then
528     MAKE_SHLIB_COMMAND="${INIT_FINI_PREP} && ${LDCOMBINE} -o \$@ \$\$objlist \$(SHLIB_EXPFLAGS) ${LDCOMBINE_TAIL}"
529   else
530     MAKE_SHLIB_COMMAND="${LDCOMBINE} -o \$@ \$\$objlist \$(SHLIB_EXPFLAGS) ${LDCOMBINE_TAIL}"
531   fi
532 fi