1*7f2fe78bSCy Schubert### config/lib.in 2*7f2fe78bSCy Schubert# *** keep this in sync with libnover.in 3*7f2fe78bSCy Schubert# 4*7f2fe78bSCy Schubert# Makefile fragment that creates static, shared, and profiled libraries. 5*7f2fe78bSCy Schubert# 6*7f2fe78bSCy Schubert# The following variables must be set in the Makefile.in: 7*7f2fe78bSCy Schubert# 8*7f2fe78bSCy Schubert# LIBBASE library name without "lib" or extension 9*7f2fe78bSCy Schubert# LIBMAJOR library major version 10*7f2fe78bSCy Schubert# LIBMINOR library minor version 11*7f2fe78bSCy Schubert# SHLIB_EXPDEPS list of libraries that this one has explicit 12*7f2fe78bSCy Schubert# dependencies on, pref. in the form libfoo$(SHLIBEXT) 13*7f2fe78bSCy Schubert# SHLIB_EXPLIBS list of libraries that this one has explicit 14*7f2fe78bSCy Schubert# dependencies on, in "-lfoo" form. 15*7f2fe78bSCy Schubert# RELDIR path to this directory relative to $(TOPLIBD) 16*7f2fe78bSCy Schubert# 17*7f2fe78bSCy Schubert# Makefile.in can also override the defaults for SHLIB_DIRS, 18*7f2fe78bSCy Schubert# SHLIB_RDIRS, and STOBJLISTS from pre.in. 19*7f2fe78bSCy Schubert 20*7f2fe78bSCy SchubertLIBPREFIX=lib 21*7f2fe78bSCy Schubert 22*7f2fe78bSCy SchubertSHOBJLISTS=$(STOBJLISTS:.ST=.SH) 23*7f2fe78bSCy SchubertPFOBJLISTS=$(STOBJLISTS:.ST=.PF) 24*7f2fe78bSCy Schubert 25*7f2fe78bSCy Schubertdummy-target-1 $(SUBDIROBJLISTS) $(SUBDIROBJLISTS:.ST=.SH) $(SUBDIROBJLISTS:.ST=.PF): all-recurse 26*7f2fe78bSCy Schubert 27*7f2fe78bSCy Schubert# Gets invoked as $(PARSE_OBJLISTS) list-of-OBJS.*-files 28*7f2fe78bSCy SchubertPARSE_OBJLISTS= set -x && $(PERL) -p -e 'BEGIN { $$SIG{__WARN__} = sub {die @_} }; $$e=$$ARGV; $$e =~ s/OBJS\...$$//; s/^/ /; s/ $$//; s/ / $$e/g;' 29*7f2fe78bSCy Schubert 30*7f2fe78bSCy Schubertlib$(LIBBASE)$(STLIBEXT): $(STOBJLISTS) 31*7f2fe78bSCy Schubert $(RM) $@ 32*7f2fe78bSCy Schubert @echo "building static $(LIBBASE) library" 33*7f2fe78bSCy Schubert set -x; objlist=`$(PARSE_OBJLISTS) $(STOBJLISTS)` && $(AR) cq $@ $$objlist 34*7f2fe78bSCy Schubert $(RANLIB) $@ 35*7f2fe78bSCy Schubert 36*7f2fe78bSCy Schubertlib$(LIBBASE)$(SHLIBVEXT): $(SHOBJLISTS) $(SHLIB_EXPDEPS) $(SHLIB_EXPORT_FILE_DEP) 37*7f2fe78bSCy Schubert $(RM) $@ 38*7f2fe78bSCy Schubert @echo "building shared $(LIBBASE) library ($(LIBMAJOR).$(LIBMINOR))" 39*7f2fe78bSCy Schubert set -x; objlist=`$(PARSE_OBJLISTS) $(SHOBJLISTS)` && $(MAKE_SHLIB_COMMAND) 40*7f2fe78bSCy Schubert 41*7f2fe78bSCy Schubertlib$(LIBBASE)$(SHLIBSEXT): lib$(LIBBASE)$(SHLIBVEXT) 42*7f2fe78bSCy Schubert $(RM) $@ 43*7f2fe78bSCy Schubert $(LN_S) lib$(LIBBASE)$(SHLIBVEXT) $@ 44*7f2fe78bSCy Schubertlib$(LIBBASE)$(SHLIBEXT): lib$(LIBBASE)$(SHLIBVEXT) 45*7f2fe78bSCy Schubert $(RM) $@ 46*7f2fe78bSCy Schubert $(LN_S) lib$(LIBBASE)$(SHLIBVEXT) $@ 47*7f2fe78bSCy Schubert 48*7f2fe78bSCy Schubertbinutils.versions: $(SHLIB_EXPORT_FILE) Makefile 49*7f2fe78bSCy Schubert base=`echo "$(LIBBASE)" | sed -e 's/-/_/'`; \ 50*7f2fe78bSCy Schubert echo > binutils.versions "$${base}_$(LIBMAJOR)_MIT {" 51*7f2fe78bSCy Schubert sed >> binutils.versions < $(SHLIB_EXPORT_FILE) "s/$$/;/" 52*7f2fe78bSCy Schubert echo >> binutils.versions "};" 53*7f2fe78bSCy Schubert echo >> binutils.versions "HIDDEN { local: __*; _rest*; _save*; *; };" 54*7f2fe78bSCy Schubert 55*7f2fe78bSCy Schubertdarwin.exports: $(SHLIB_EXPORT_FILE) Makefile 56*7f2fe78bSCy Schubert sed > darwin-exports.tmp < $(SHLIB_EXPORT_FILE) "s/^/_/" 57*7f2fe78bSCy Schubert $(MV) darwin-exports.tmp darwin.exports 58*7f2fe78bSCy Schubert 59*7f2fe78bSCy Schubertosf1.exports: $(SHLIB_EXPORT_FILE) Makefile 60*7f2fe78bSCy Schubert $(RM) osf1.tmp osf1.exports 61*7f2fe78bSCy Schubert sed "s/^/-exported_symbol /" < $(SHLIB_EXPORT_FILE) > osf1.tmp 62*7f2fe78bSCy Schubert for f in . $(LIBINITFUNC); do \ 63*7f2fe78bSCy Schubert if test "$$f" != "." ; then \ 64*7f2fe78bSCy Schubert echo " -init $$f"__auxinit >> osf1.tmp; \ 65*7f2fe78bSCy Schubert else :; fi; \ 66*7f2fe78bSCy Schubert done 67*7f2fe78bSCy Schubert a=""; \ 68*7f2fe78bSCy Schubert for f in . $(LIBFINIFUNC); do \ 69*7f2fe78bSCy Schubert if test "$$f" != "." ; then \ 70*7f2fe78bSCy Schubert a="-fini $$f $$a"; \ 71*7f2fe78bSCy Schubert else :; fi; \ 72*7f2fe78bSCy Schubert done; echo " $$a" >> osf1.tmp 73*7f2fe78bSCy Schubert mv -f osf1.tmp osf1.exports 74*7f2fe78bSCy Schubert 75*7f2fe78bSCy Schuberthpux.exports: $(SHLIB_EXPORT_FILE) Makefile 76*7f2fe78bSCy Schubert $(RM) hpux.tmp hpux.exports 77*7f2fe78bSCy Schubert sed "s/^/+e /" < $(SHLIB_EXPORT_FILE) > hpux.tmp 78*7f2fe78bSCy Schubert a=""; \ 79*7f2fe78bSCy Schubert for f in . $(LIBFINIFUNC); do \ 80*7f2fe78bSCy Schubert if test "$$f" != .; then \ 81*7f2fe78bSCy Schubert a="+I $${f}__auxfini $$a"; \ 82*7f2fe78bSCy Schubert else :; fi; \ 83*7f2fe78bSCy Schubert done; echo "$$a" >> hpux.tmp 84*7f2fe78bSCy Schubert echo "+e errno" >> hpux.tmp 85*7f2fe78bSCy Schubert base=`echo "$(LIBBASE)" | sed -e 's/-/_/'`; \ 86*7f2fe78bSCy Schubert echo "+e _GLOBAL__FD_lib$${base}_$(LIBMAJOR)_$(LIBMINOR)" >> hpux.tmp; \ 87*7f2fe78bSCy Schubert echo "+e _GLOBAL__FI_lib$${base}_$(LIBMAJOR)_$(LIBMINOR)" >> hpux.tmp 88*7f2fe78bSCy Schubert mv -f hpux.tmp hpux.exports 89*7f2fe78bSCy Schubert 90*7f2fe78bSCy Schubertlib$(LIBBASE)$(PFLIBEXT): $(PFOBJLISTS) 91*7f2fe78bSCy Schubert $(RM) $@ 92*7f2fe78bSCy Schubert @echo "building profiled $(LIBBASE) library" 93*7f2fe78bSCy Schubert set -x; objlist=`$(PARSE_OBJLISTS) $(PFOBJLISTS)` && $(AR) cq $@ $$objlist 94*7f2fe78bSCy Schubert $(RANLIB) $@ 95*7f2fe78bSCy Schubert 96*7f2fe78bSCy Schubert$(TOPLIBD)/lib$(LIBBASE)$(STLIBEXT): lib$(LIBBASE)$(STLIBEXT) 97*7f2fe78bSCy Schubert $(RM) $@ 98*7f2fe78bSCy Schubert (cd $(TOPLIBD) && $(LN_S) $(RELDIR)/lib$(LIBBASE)$(STLIBEXT) .) 99*7f2fe78bSCy Schubert$(TOPLIBD)/lib$(LIBBASE)$(SHLIBEXT): lib$(LIBBASE)$(SHLIBEXT) 100*7f2fe78bSCy Schubert $(RM) $@ 101*7f2fe78bSCy Schubert (cd $(TOPLIBD) && $(LN_S) $(RELDIR)/lib$(LIBBASE)$(SHLIBEXT) .) 102*7f2fe78bSCy Schubert$(TOPLIBD)/lib$(LIBBASE)$(SHLIBSEXT): lib$(LIBBASE)$(SHLIBSEXT) 103*7f2fe78bSCy Schubert $(RM) $@ 104*7f2fe78bSCy Schubert (cd $(TOPLIBD) && $(LN_S) $(RELDIR)/lib$(LIBBASE)$(SHLIBSEXT) .) 105*7f2fe78bSCy Schubert$(TOPLIBD)/lib$(LIBBASE)$(SHLIBVEXT): lib$(LIBBASE)$(SHLIBVEXT) 106*7f2fe78bSCy Schubert $(RM) $@ 107*7f2fe78bSCy Schubert (cd $(TOPLIBD) && $(LN_S) $(RELDIR)/lib$(LIBBASE)$(SHLIBVEXT) .) 108*7f2fe78bSCy Schubert$(TOPLIBD)/lib$(LIBBASE)$(PFLIBEXT): lib$(LIBBASE)$(PFLIBEXT) 109*7f2fe78bSCy Schubert $(RM) $@ 110*7f2fe78bSCy Schubert (cd $(TOPLIBD) && $(LN_S) $(RELDIR)/lib$(LIBBASE)$(PFLIBEXT) .) 111*7f2fe78bSCy Schubert 112*7f2fe78bSCy Schubertall-libs: $(LIBLIST) 113*7f2fe78bSCy Schubertall-liblinks: $(LIBLINKS) 114*7f2fe78bSCy Schubert 115*7f2fe78bSCy Schubertclean-libs: 116*7f2fe78bSCy Schubert $(RM) lib$(LIBBASE)$(STLIBEXT) 117*7f2fe78bSCy Schubert $(RM) lib$(LIBBASE)$(SHLIBVEXT) 118*7f2fe78bSCy Schubert $(RM) lib$(LIBBASE)$(SHLIBSEXT) 119*7f2fe78bSCy Schubert $(RM) lib$(LIBBASE)$(SHLIBEXT) 120*7f2fe78bSCy Schubert $(RM) lib$(LIBBASE)$(PFLIBEXT) 121*7f2fe78bSCy Schubert $(RM) binutils.versions osf1.exports darwin.exports hpux.exports 122*7f2fe78bSCy Schubert 123*7f2fe78bSCy Schubertclean-liblinks: 124*7f2fe78bSCy Schubert $(RM) $(TOPLIBD)/lib$(LIBBASE)$(STLIBEXT) 125*7f2fe78bSCy Schubert $(RM) $(TOPLIBD)/lib$(LIBBASE)$(SHLIBVEXT) 126*7f2fe78bSCy Schubert $(RM) $(TOPLIBD)/lib$(LIBBASE)$(SHLIBSEXT) 127*7f2fe78bSCy Schubert $(RM) $(TOPLIBD)/lib$(LIBBASE)$(SHLIBEXT) 128*7f2fe78bSCy Schubert $(RM) $(TOPLIBD)/lib$(LIBBASE)$(PFLIBEXT) 129*7f2fe78bSCy Schubert 130*7f2fe78bSCy Schubertinstall-libs: $(LIBINSTLIST) 131*7f2fe78bSCy Schubertinstall-static: 132*7f2fe78bSCy Schubert $(RM) $(DESTDIR)$(KRB5_LIBDIR)/lib$(LIBBASE)$(STLIBEXT) 133*7f2fe78bSCy Schubert $(INSTALL_DATA) lib$(LIBBASE)$(STLIBEXT) $(DESTDIR)$(KRB5_LIBDIR) 134*7f2fe78bSCy Schubert $(RANLIB) $(DESTDIR)$(KRB5_LIBDIR)/lib$(LIBBASE)$(STLIBEXT) 135*7f2fe78bSCy Schubertinstall-shared: 136*7f2fe78bSCy Schubert $(RM) $(DESTDIR)$(KRB5_LIBDIR)/lib$(LIBBASE)$(SHLIBVEXT) 137*7f2fe78bSCy Schubert $(RM) $(DESTDIR)$(KRB5_LIBDIR)/lib$(LIBBASE)$(SHLIBEXT) 138*7f2fe78bSCy Schubert $(INSTALL_SHLIB) lib$(LIBBASE)$(SHLIBVEXT) $(DESTDIR)$(KRB5_LIBDIR) 139*7f2fe78bSCy Schubert (cd $(DESTDIR)$(KRB5_LIBDIR) && $(LN_S) lib$(LIBBASE)$(SHLIBVEXT) \ 140*7f2fe78bSCy Schubert lib$(LIBBASE)$(SHLIBEXT)) 141*7f2fe78bSCy Schubertinstall-shlib-soname: install-shared 142*7f2fe78bSCy Schubert $(RM) $(DESTDIR)$(KRB5_LIBDIR)/lib$(LIBBASE)$(SHLIBSEXT) 143*7f2fe78bSCy Schubert (cd $(DESTDIR)$(KRB5_LIBDIR) && $(LN_S) lib$(LIBBASE)$(SHLIBVEXT) \ 144*7f2fe78bSCy Schubert lib$(LIBBASE)$(SHLIBSEXT)) 145*7f2fe78bSCy Schubertinstall-profiled: 146*7f2fe78bSCy Schubert $(RM) $(DESTDIR)$(KRB5_LIBDIR)/lib$(LIBBASE)$(PFLIBEXT) 147*7f2fe78bSCy Schubert $(INSTALL_DATA) lib$(LIBBASE)$(PFLIBEXT) $(DESTDIR)$(KRB5_LIBDIR) 148*7f2fe78bSCy Schubert $(RANLIB) $(DESTDIR)$(KRB5_LIBDIR)/lib$(LIBBASE)$(PFLIBEXT) 149*7f2fe78bSCy Schubert 150*7f2fe78bSCy SchubertMakefile: $(top_srcdir)/config/lib.in 151*7f2fe78bSCy Schubert$(BUILDTOP)/config.status: $(top_srcdir)/config/shlib.conf 152*7f2fe78bSCy Schubert 153*7f2fe78bSCy Schubert# Use the following if links need to be made to $(TOPLIBD): 154*7f2fe78bSCy Schubert# all-unix: all-liblinks 155*7f2fe78bSCy Schubert# install-unix: install-libs 156*7f2fe78bSCy Schubert# clean-unix:: clean-liblinks clean-libs 157*7f2fe78bSCy Schubert 158*7f2fe78bSCy Schubert# Use the following if links need not be made: 159*7f2fe78bSCy Schubert# all-unix: all-libs 160*7f2fe78bSCy Schubert# install-unix: install-libs 161*7f2fe78bSCy Schubert# clean-unix:: clean-libs 162*7f2fe78bSCy Schubert 163*7f2fe78bSCy Schubert### 164*7f2fe78bSCy Schubert### end config/lib.in 165