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