1 # This shell script fragment should set a bunch of variables:
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
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 ...)
16 # Set up some defaults.
19 # Default to being unable to build shared libraries.
21 SHLIBVEXT=.so.v-nobuild
22 SHLIBSEXT=.so.s-nobuild
23 # Most systems support profiled libraries.
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
29 DYNOBJEXT='$(SHLIBEXT)'
30 MAKE_DYNOBJ_COMMAND='$(MAKE_SHLIB_COMMAND)'
31 DYNOBJ_EXPDEPS='$(SHLIB_EXPDEPS)'
32 DYNOBJ_EXPFLAGS='$(SHLIB_EXPFLAGS)'
34 use_linker_init_option=no
35 use_linker_fini_option=no
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)'
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.
50 # Default to static or shared libraries?
54 # Set up architecture-specific variables.
57 SHLIBVEXT='.so.$(LIBMAJOR).$(LIBMINOR)'
58 SHLIBSEXT='.so.$(LIBMAJOR)'
60 # Alpha OSF/1 doesn't need separate PIC objects
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)'
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)'
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)'
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)'
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)'
97 # _RLD_ROOT hack needed to repoint "root" directory for purposes
98 # of searching for shared libs, since RPATHs take precedence over
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;'
103 # HPUX *seems* to work under 10.20.
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.
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
122 INSTALL_SHLIB='$(INSTALL)'
124 SHLIBVEXT='.$(LIBMAJOR).$(LIBMINOR)'
125 SHLIBSEXT='.$(LIBMAJOR)'
127 if test "$ac_cv_c_compiler_gnu" = yes; then
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'
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'
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.
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
156 mips-sgi-irix6.3) # This is a Kludge; see below
157 SHLIBVEXT='.so.$(LIBMAJOR).$(LIBMINOR)'
158 SHLIBSEXT='.so.$(LIBMAJOR)'
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)'
165 LDCOMBINE='ld -shared -ignore_unresolved -update_registry $(BUILDTOP)/so_locations -soname $(LIBPREFIX)$(LIBBASE)$(SHLIBSEXT)'
167 SHLIB_RPATH_FLAGS='-rpath $(SHLIB_RDIRS)'
168 SHLIB_EXPFLAGS='$(SHLIB_RPATH_FLAGS) $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
169 # no gprof for Irix...
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.
182 # Set the N32 and 64 variables first because the unqualified
183 # variables affect all three and can cause the sed command to fail.
185 # This loop is to reduce the clutter a slight bit.
186 add='`echo $(PROG_LIBPATH) | sed -e "s/-L//g" -e "s/ /:/g"`'
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;"
195 SHLIBVEXT='.so.$(LIBMAJOR).$(LIBMINOR)'
196 SHLIBSEXT='.so.$(LIBMAJOR)'
199 if test "$ac_cv_c_compiler_gnu" = yes; then
201 INIT_FINI_PREP="initfini="
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)'
208 opts='-Wl,-ignore_unresolved -Wl,-update_registry -Wl,$(BUILDTOP)/so_locations'
210 if test "$ac_cv_c_compiler_gnu" = yes \
211 && test "$krb5_cv_prog_gnu_ld" = yes; then
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...
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.
230 # Set the N32 and 64 variables first because the unqualified
231 # variables affect all three and can cause the sed command to fail.
233 # This loop is to reduce the clutter a slight bit.
234 add='`echo $(PROG_LIBPATH) | sed -e "s/-L//g" -e "s/ /:/g"`'
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;"
244 if test "$ac_cv_c_compiler_gnu" = yes; then
246 LDCOMBINE='$(CC) -G -Wl,-h -Wl,$(LIBPREFIX)$(LIBBASE)$(SHLIBSEXT)'
249 LDCOMBINE='$(CC) -G -h $(LIBPREFIX)$(LIBBASE)$(SHLIBSEXT)'
251 SHLIB_RPATH_FLAGS='-R$(SHLIB_RDIRS)'
252 SHLIB_EXPFLAGS='$(SHLIB_RPATH_FLAGS) $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
254 SHLIBVEXT='.so.$(LIBMAJOR).$(LIBMINOR)'
255 SHLIBSEXT='.so.$(LIBMAJOR)'
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;'
268 SHLIBVEXT='.so.$(LIBMAJOR).$(LIBMINOR)'
269 SHLIBSEXT='.so.$(LIBMAJOR)'
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;'
286 SHLIBVEXT='.so.$(LIBMAJOR).$(LIBMINOR)'
288 LDCOMBINE='$(CC) -shared $(LDFLAGS)'
289 SHLIB_RPATH_FLAGS='-R$(SHLIB_RDIRS)'
290 SHLIB_EXPFLAGS='$(SHLIB_RPATH_FLAGS) $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
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;'
302 if test -x /usr/bin/objformat ; then
303 objformat=`/usr/bin/objformat`
308 if test "x$objformat" = "xelf" ; then
309 SHLIBVEXT='.so.$(LIBMAJOR)'
310 RPATH_FLAG='-Wl,-rpath -Wl,'
313 SHLIBVEXT='.so.$(LIBMAJOR).$(LIBMINOR)'
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)'
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;'
330 SHLIBVEXT='.so.$(LIBMAJOR).$(LIBMINOR)'
332 LDCOMBINE='ld -Bshareable'
333 SHLIB_RPATH_FLAGS='-R$(SHLIB_RDIRS)'
334 SHLIB_EXPFLAGS='$(SHLIB_RPATH_FLAGS) $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
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;'
345 *-*-darwin* | *-*-rhapsody*)
346 SHLIBVEXT='.$(LIBMAJOR).$(LIBMINOR).dylib'
347 SHLIBSEXT='.$(LIBMAJOR).dylib'
348 SHLIB_EXPFLAGS='$(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
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).
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"
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;'
370 if test "$ac_cv_c_compiler_gnu" = yes; then
372 LDCOMBINE='$(CC) $(CFLAGS) -shared -h $(LIBPREFIX)$(LIBBASE)$(SHLIBSEXT)'
375 # Solaris cc doesn't default to stuffing the SONAME field...
376 LDCOMBINE='$(CC) $(CFLAGS) -dy -G -z text -h $(LIBPREFIX)$(LIBBASE)$(SHLIBSEXT) $$initfini'
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?
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
389 LDCOMBINE_TAIL='$(LDFLAGS)'
390 SHLIBVEXT='.so.$(LIBMAJOR).$(LIBMINOR)'
391 SHLIBSEXT='.so.$(LIBMAJOR)'
393 SHLIB_RPATH_FLAGS='-R$(SHLIB_RDIRS)'
394 SHLIB_EXPFLAGS='$(SHLIB_RPATH_FLAGS) $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
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;'
405 *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu)
407 SHLIBVEXT='.so.$(LIBMAJOR).$(LIBMINOR)'
408 SHLIBSEXT='.so.$(LIBMAJOR)'
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)'
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)'
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; '
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)'
443 SHLIBVEXT='.so.$(LIBMAJOR)'
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;'
459 SHLIBVEXT='.so.$(LIBMAJOR).$(LIBMINOR)'
461 # AIX doesn't need separate PIC objects
463 SHLIB_EXPFLAGS=' $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
465 if test "$ac_cv_c_compiler_gnu" = "yes" ; then
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'
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'
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; '
489 SHLIBVEXT='.a.$(LIBMAJOR).$(LIBMINOR)'
491 # AIX doesn't need separate PIC objects
493 SHLIB_EXPFLAGS=' $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
495 # Dynamically loaded object can have whatever suffix, but don't
496 # make archives like for shared libraries.
499 if test "$ac_cv_c_compiler_gnu" = "yes" ; then
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'
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'
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; '
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}"
530 MAKE_SHLIB_COMMAND="${LDCOMBINE} -o \$@ \$\$objlist \$(SHLIB_EXPFLAGS) ${LDCOMBINE_TAIL}"