2 # *** keep this in sync with libnover.in
4 # Makefile fragment that creates static, shared, and profiled libraries.
6 # The following variables must be set in the Makefile.in:
8 # LIBBASE library name without "lib" or extension
9 # LIBMAJOR library major version
10 # LIBMINOR library minor version
11 # STOBJLISTS list of files, each of which is an OBJS.ST created by
12 # libobj.in; *DO NOT* use ./OBJS.ST for the current
13 # directory as that will cause some makes to lose.
14 # SHLIB_EXPDEPS list of libraries that this one has explicit
15 # dependencies on, pref. in the form libfoo$(SHLIBEXT)
16 # SHLIB_EXPLIBS list of libraries that this one has explicit
17 # dependencies on, in "-lfoo" form.
18 # SHLIB_DIRS list of directories where $(SHLIB_EXPLIBS) can be
19 # found, in the form -Ldir1 -Ldir2 ...
20 # since there are very few systems where -L is the
21 # wrong thing (notable exception of SunOS but we
23 # SHLIB_RDIRS rpath directories to search; given in the
25 # RELDIR path to this directory relative to $(TOPLIBD)
29 # STOBJLISTS=dir1/OBJS.ST dir2/OBJS.ST etc...
30 SHOBJLISTS=$(STOBJLISTS:.ST=.SH)
31 PFOBJLISTS=$(STOBJLISTS:.ST=.PF)
33 dummy-target-1 $(SUBDIROBJLISTS) $(SUBDIROBJLISTS:.ST=.SH) $(SUBDIROBJLISTS:.ST=.PF): all-recurse
35 # Gets invoked as $(PARSE_OBJLISTS) list-of-OBJS.*-files
36 PARSE_OBJLISTS= set -x && $(PERL) -p -e 'BEGIN { $$SIG{__WARN__} = sub {die @_} }; $$e=$$ARGV; $$e =~ s/OBJS\...$$//; s/^/ /; s/ $$//; s/ / $$e/g;'
38 lib$(LIBBASE)$(STLIBEXT): $(STOBJLISTS)
40 @echo "building static $(LIBBASE) library"
41 set -x; objlist=`$(PARSE_OBJLISTS) $(STOBJLISTS)` && $(AR) cq $@ $$objlist
44 lib$(LIBBASE)$(SHLIBVEXT): $(SHOBJLISTS) $(SHLIB_EXPDEPS) $(SHLIB_EXPORT_FILE_DEP)
46 @echo "building shared $(LIBBASE) library ($(LIBMAJOR).$(LIBMINOR))"
47 set -x; objlist=`$(PARSE_OBJLISTS) $(SHOBJLISTS)` && $(MAKE_SHLIB_COMMAND)
49 lib$(LIBBASE)$(SHLIBSEXT): lib$(LIBBASE)$(SHLIBVEXT)
51 $(LN_S) lib$(LIBBASE)$(SHLIBVEXT) $@
52 lib$(LIBBASE)$(SHLIBEXT): lib$(LIBBASE)$(SHLIBVEXT)
54 $(LN_S) lib$(LIBBASE)$(SHLIBVEXT) $@
56 binutils.versions: $(SHLIB_EXPORT_FILE) Makefile
57 echo > binutils.versions "$(LIBBASE)_$(LIBMAJOR)_MIT {"
58 sed >> binutils.versions < $(SHLIB_EXPORT_FILE) "s/$$/;/"
59 echo >> binutils.versions "};"
60 echo >> binutils.versions "HIDDEN { local: __*; _rest*; _save*; *; };"
62 darwin.exports: $(SHLIB_EXPORT_FILE) Makefile
63 sed > darwin-exports.tmp < $(SHLIB_EXPORT_FILE) "s/^/_/"
64 $(MV) darwin-exports.tmp darwin.exports
66 osf1.exports: $(SHLIB_EXPORT_FILE) Makefile
67 $(RM) osf1.tmp osf1.exports
68 sed "s/^/-exported_symbol /" < $(SHLIB_EXPORT_FILE) > osf1.tmp
69 for f in . $(LIBINITFUNC); do \
70 if test "$$f" != "." ; then \
71 echo " -init $$f"__auxinit >> osf1.tmp; \
75 for f in . $(LIBFINIFUNC); do \
76 if test "$$f" != "." ; then \
79 done; echo " $$a" >> osf1.tmp
80 mv -f osf1.tmp osf1.exports
82 hpux10.exports: $(SHLIB_EXPORT_FILE) Makefile
83 $(RM) hpux10.tmp hpux10.exports
84 sed "s/^/+e /" < $(SHLIB_EXPORT_FILE) > hpux10.tmp
86 for f in . $(LIBFINIFUNC); do \
87 if test "$$f" != .; then \
88 a="+I $${f}__auxfini $$a"; \
90 done; echo "$$a" >> hpux10.tmp
91 echo "+e errno" >> hpux10.tmp
92 echo "+e _GLOBAL__FD_lib$(LIBBASE)_$(LIBMAJOR)_$(LIBMINOR)" >> hpux10.tmp
93 echo "+e _GLOBAL__FI_lib$(LIBBASE)_$(LIBMAJOR)_$(LIBMINOR)" >> hpux10.tmp
94 mv -f hpux10.tmp hpux10.exports
96 lib$(LIBBASE)$(PFLIBEXT): $(PFOBJLISTS)
98 @echo "building profiled $(LIBBASE) library"
99 set -x; objlist=`$(PARSE_OBJLISTS) $(PFOBJLISTS)` && $(AR) cq $@ $$objlist
102 $(TOPLIBD)/lib$(LIBBASE)$(STLIBEXT): lib$(LIBBASE)$(STLIBEXT)
104 (cd $(TOPLIBD) && $(LN_S) $(RELDIR)/lib$(LIBBASE)$(STLIBEXT) .)
105 $(TOPLIBD)/lib$(LIBBASE)$(SHLIBEXT): lib$(LIBBASE)$(SHLIBEXT)
107 (cd $(TOPLIBD) && $(LN_S) $(RELDIR)/lib$(LIBBASE)$(SHLIBEXT) .)
108 $(TOPLIBD)/lib$(LIBBASE)$(SHLIBSEXT): lib$(LIBBASE)$(SHLIBSEXT)
110 (cd $(TOPLIBD) && $(LN_S) $(RELDIR)/lib$(LIBBASE)$(SHLIBSEXT) .)
111 $(TOPLIBD)/lib$(LIBBASE)$(SHLIBVEXT): lib$(LIBBASE)$(SHLIBVEXT)
113 (cd $(TOPLIBD) && $(LN_S) $(RELDIR)/lib$(LIBBASE)$(SHLIBVEXT) .)
114 $(TOPLIBD)/lib$(LIBBASE)$(PFLIBEXT): lib$(LIBBASE)$(PFLIBEXT)
116 (cd $(TOPLIBD) && $(LN_S) $(RELDIR)/lib$(LIBBASE)$(PFLIBEXT) .)
119 all-liblinks: $(LIBLINKS)
122 $(RM) lib$(LIBBASE)$(STLIBEXT)
123 $(RM) lib$(LIBBASE)$(SHLIBVEXT)
124 $(RM) lib$(LIBBASE)$(SHLIBSEXT)
125 $(RM) lib$(LIBBASE)$(SHLIBEXT)
126 $(RM) lib$(LIBBASE)$(PFLIBEXT)
127 $(RM) binutils.versions osf1.exports darwin.exports hpux10.exports
130 $(RM) $(TOPLIBD)/lib$(LIBBASE)$(STLIBEXT)
131 $(RM) $(TOPLIBD)/lib$(LIBBASE)$(SHLIBVEXT)
132 $(RM) $(TOPLIBD)/lib$(LIBBASE)$(SHLIBSEXT)
133 $(RM) $(TOPLIBD)/lib$(LIBBASE)$(SHLIBEXT)
134 $(RM) $(TOPLIBD)/lib$(LIBBASE)$(PFLIBEXT)
136 install-libs: $(LIBINSTLIST)
138 $(RM) $(DESTDIR)$(KRB5_LIBDIR)/lib$(LIBBASE)$(STLIBEXT)
139 $(INSTALL_DATA) lib$(LIBBASE)$(STLIBEXT) $(DESTDIR)$(KRB5_LIBDIR)
140 $(RANLIB) $(DESTDIR)$(KRB5_LIBDIR)/lib$(LIBBASE)$(STLIBEXT)
142 $(RM) $(DESTDIR)$(KRB5_LIBDIR)/lib$(LIBBASE)$(SHLIBVEXT)
143 $(RM) $(DESTDIR)$(KRB5_LIBDIR)/lib$(LIBBASE)$(SHLIBEXT)
144 $(INSTALL_SHLIB) lib$(LIBBASE)$(SHLIBVEXT) $(DESTDIR)$(KRB5_LIBDIR)
145 (cd $(DESTDIR)$(KRB5_LIBDIR) && $(LN_S) lib$(LIBBASE)$(SHLIBVEXT) \
146 lib$(LIBBASE)$(SHLIBEXT))
147 install-shlib-soname: install-shared
148 $(RM) $(DESTDIR)$(KRB5_LIBDIR)/lib$(LIBBASE)$(SHLIBSEXT)
149 (cd $(DESTDIR)$(KRB5_LIBDIR) && $(LN_S) lib$(LIBBASE)$(SHLIBVEXT) \
150 lib$(LIBBASE)$(SHLIBSEXT))
152 $(RM) $(DESTDIR)$(KRB5_LIBDIR)/lib$(LIBBASE)$(PFLIBEXT)
153 $(INSTALL_DATA) lib$(LIBBASE)$(PFLIBEXT) $(DESTDIR)$(KRB5_LIBDIR)
154 $(RANLIB) $(DESTDIR)$(KRB5_LIBDIR)/lib$(LIBBASE)$(PFLIBEXT)
156 Makefile: $(SRCTOP)/config/lib.in
157 $(thisconfigdir)/config.status: $(SRCTOP)/config/shlib.conf
159 # Use the following if links need to be made to $(TOPLIBD):
160 # all-unix:: all-liblinks
161 # install-unix:: install-libs
162 # clean-unix:: clean-liblinks clean-libs
164 # Use the following if links need not be made:
165 # all-unix:: all-libs
166 # install-unix:: install-libs
167 # clean-unix:: clean-libs
170 ### end config/lib.in