xref: /freebsd/crypto/krb5/src/config/lib.in (revision 7f2fe78b9dd5f51c821d771b63d2e096f6fd49e9)
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