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