bsd.lib.mk revision 41562
1139823Simp#	from: @(#)bsd.lib.mk	5.26 (Berkeley) 5/2/91
2189592Sbms#	$Id: bsd.lib.mk,v 1.81 1998/11/18 00:48:11 jdp Exp $
31541Srgrimes#
41541Srgrimes
51541Srgrimes.if !target(__initialized__)
61541Srgrimes__initialized__:
71541Srgrimes.if exists(${.CURDIR}/../Makefile.inc)
81541Srgrimes.include "${.CURDIR}/../Makefile.inc"
91541Srgrimes.endif
101541Srgrimes.endif
111541Srgrimes
121541Srgrimes.if exists(${.CURDIR}/shlib_version)
131541SrgrimesSHLIB_MAJOR != . ${.CURDIR}/shlib_version ; echo $$major
141541Srgrimes.if ${OBJFORMAT} == aout
151541SrgrimesSHLIB_MINOR != . ${.CURDIR}/shlib_version ; echo $$minor
161541Srgrimes.endif
171541Srgrimes.endif
181541Srgrimes
191541Srgrimes.if !defined(NOPIC) && ${OBJFORMAT} == elf
201541SrgrimesSONAME?=	lib${LIB}.so.${SHLIB_MAJOR}
211541Srgrimes.endif
221541Srgrimes
231541Srgrimes.if defined(DESTDIR)
241541SrgrimesCFLAGS+= -I${DESTDIR}/usr/include
251541SrgrimesCXXINCLUDES+= -I${DESTDIR}/usr/include/g++
261541Srgrimes.endif
271541Srgrimes
281541Srgrimes.if defined(DEBUG_FLAGS)
291541SrgrimesCFLAGS+= ${DEBUG_FLAGS}
301541Srgrimes.endif
311541Srgrimes
321541Srgrimes.if !defined(DEBUG_FLAGS)
331541SrgrimesSTRIP?=	-s
341541Srgrimes.endif
351541Srgrimes
361541Srgrimes.if ${OBJFORMAT} != aout || make(checkdpadd)
372531Swollman.include <bsd.libnames.mk>
382531Swollman.endif
39189592Sbms
402531Swollman.MAIN: all
412531Swollman
422531Swollman# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
439209Swollman# .so used for PIC object files
4414622Sfenner.SUFFIXES:
45189592Sbms.SUFFIXES: .out .o .po .so .s .S .c .cc .cpp .cxx .m .C .f .y .l
462531Swollman
4714622Sfenner.c.o:
482531Swollman	${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
491541Srgrimes	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
50172467Ssilby	@mv ${.TARGET}.tmp ${.TARGET}
51172467Ssilby
52172467Ssilby.c.po:
531541Srgrimes	${CC} -pg ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
541549Srgrimes	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
55189592Sbms	@mv ${.TARGET}.tmp ${.TARGET}
5629024Sbde
571541Srgrimes.c.so:
581541Srgrimes	${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
591541Srgrimes	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
6012296Sphk	@mv ${.TARGET}.tmp ${.TARGET}
616472Swollman
62181803Sbz.cc.o .C.o .cpp.o .cxx.o:
63189592Sbms	${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
64189592Sbms	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
651541Srgrimes	@mv ${.TARGET}.tmp ${.TARGET}
661541Srgrimes
67189592Sbms.cc.po .C.po .cpp.po .cxx.po:
68185571Sbz	${CXX} -pg ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
691541Srgrimes	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
701541Srgrimes	@mv ${.TARGET}.tmp ${.TARGET}
711541Srgrimes
721541Srgrimes.cc.so .C.so .cpp.so .cxx.so:
731541Srgrimes	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
741541Srgrimes	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
75152592Sandre	@mv ${.TARGET}.tmp ${.TARGET}
761541Srgrimes
771541Srgrimes.f.o:
78185571Sbz	${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 
791541Srgrimes	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
8060105Sjlemon	@mv ${.TARGET}.tmp ${.TARGET}
8160105Sjlemon
82163606Srwatson.f.po:
83163606Srwatson	${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 
84189592Sbms	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
85191657Sbms	@mv ${.TARGET}.tmp ${.TARGET}
86189592Sbms
8730309Sphk.f.so:
88189592Sbms	${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
89189592Sbms	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
90189592Sbms	@mv ${.TARGET}.tmp ${.TARGET}
91189592Sbms
92189592Sbms.m.o:
93189592Sbms	${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET}
94189592Sbms	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
95189592Sbms	@mv ${.TARGET}.tmp ${.TARGET}
96189592Sbms
97193231Sbms.m.po:
98193231Sbms	${OBJC} ${OBJCFLAGS} -pg -c ${.IMPSRC} -o ${.TARGET}
99189592Sbms	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
100189592Sbms	@mv ${.TARGET}.tmp ${.TARGET}
101189592Sbms
102189592Sbms.m.so:
103189592Sbms	${OBJC} ${PICFLAG} -DPIC ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET}
104189592Sbms	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
105189592Sbms	@mv ${.TARGET}.tmp ${.TARGET}
106189592Sbms
107189592Sbms.s.o:
108189592Sbms	${CC} -x assembler-with-cpp ${CFLAGS:M-[BID]*} ${AINC} -c \
109189592Sbms	    ${.IMPSRC} -o ${.TARGET}
110189592Sbms	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
111189592Sbms	@mv ${.TARGET}.tmp ${.TARGET}
112189592Sbms
113189592Sbms.s.po:
114189592Sbms	${CC} -x assembler-with-cpp -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c \
115185088Szec	    ${.IMPSRC} -o ${.TARGET}
116189592Sbms	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
117189592Sbms	@mv ${.TARGET}.tmp ${.TARGET}
118189592Sbms
119189592Sbms.s.so:
120189592Sbms	${CC} -x assembler-with-cpp -fpic -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c \
121189592Sbms	    ${.IMPSRC} -o ${.TARGET}
122189592Sbms	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
123189592Sbms	@mv ${.TARGET}.tmp ${.TARGET}
124189592Sbms
125189592Sbms.S.o:
126189592Sbms	${CC} ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET}
127189592Sbms	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
128189592Sbms	@mv ${.TARGET}.tmp ${.TARGET}
129189592Sbms
130189592Sbms.S.po:
131189592Sbms	${CC} -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET}
132189592Sbms	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
133189592Sbms	@mv ${.TARGET}.tmp ${.TARGET}
134189592Sbms
135189592Sbms.S.so:
136189592Sbms	${CC} -fpic -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET}
137189592Sbms	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
138189592Sbms	@mv ${.TARGET}.tmp ${.TARGET}
139189592Sbms
1402531Swollman.if !defined(INTERNALLIB) || defined(INTERNALSTATICLIB)
141189592Sbms.if !defined(NOPROFILE) && !defined(INTERNALLIB)
142189592Sbms_LIBS=lib${LIB}.a lib${LIB}_p.a
14312296Sphk.else
144193219Srwatson_LIBS=lib${LIB}.a
145193219Srwatson.endif
146193219Srwatson.endif
147193219Srwatson
148193219Srwatson.if !defined(NOPIC)
149193219Srwatson.if ${OBJFORMAT} == aout
150193219Srwatson.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
151130333Srwatson_LIBS+=lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
152189592Sbms.endif
153189592Sbms.else
154189592Sbms.if defined(SHLIB_MAJOR)
155189592Sbms_LIBS+=lib${LIB}.so.${SHLIB_MAJOR}
156189592Sbms.endif
157189592Sbms.endif
158189592Sbms.if defined(INSTALL_PIC_ARCHIVE)
159189592Sbms_LIBS+=lib${LIB}_pic.a
160189592Sbms.endif
161189592Sbms.endif
162189592Sbms
163191264Sbms.if !defined(PICFLAG)
164191264SbmsPICFLAG=-fpic
165189592Sbms.endif
166189592Sbms
167189592Sbmsall: objwarn ${_LIBS} all-man _SUBDIR # llib-l${LIB}.ln
168189592Sbms
169189592SbmsOBJS+=	${SRCS:N*.h:R:S/$/.o/g}
170189592Sbms
171189592Sbmslib${LIB}.a:: ${OBJS}
172189592Sbms	@${ECHO} building standard ${LIB} library
173189592Sbms	@rm -f lib${LIB}.a
174189592Sbms	@${AR} cq lib${LIB}.a `lorder ${OBJS} | tsort -q` ${ARADD}
175189592Sbms	${RANLIB} lib${LIB}.a
176189592Sbms
177189592SbmsPOBJS+=	${OBJS:.o=.po}
178189592Sbms.if !defined(NOPROFILE)
179189592Sbmslib${LIB}_p.a:: ${POBJS}
180189592Sbms	@${ECHO} building profiled ${LIB} library
181189592Sbms	@rm -f lib${LIB}_p.a
182189592Sbms	@${AR} cq lib${LIB}_p.a `lorder ${POBJS} | tsort -q` ${ARADD}
183189592Sbms	${RANLIB} lib${LIB}_p.a
184189592Sbms.endif
185189931Sbms
186189931Sbms.if defined(DESTDIR)
187189931SbmsLDDESTDIRENV?=	LIBRARY_PATH=${DESTDIR}${SHLIBDIR}:${DESTDIR}${LIBDIR}
188189931Sbms.endif
189189931Sbms
190130333SrwatsonSOBJS+= ${OBJS:.o=.so}
191189592Sbms
192189592Sbms.if !defined(NOPIC)
193189592Sbms.if ${OBJFORMAT} == aout
194189592Sbmslib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: ${SOBJS}
195189592Sbms	@${ECHO} building shared ${LIB} library \(version ${SHLIB_MAJOR}.${SHLIB_MINOR}\)
196189592Sbms	@rm -f lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
197189592Sbms	@${LDDESTDIRENV} ${CC} -shared -Wl,-x -Wl,-assert -Wl,pure-text \
198189592Sbms	    -o lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
199189592Sbms	    `lorder ${SOBJS} | tsort -q` ${LDDESTDIR} ${LDADD}
200189592Sbms.else
201189592Sbmslib${LIB}.so.${SHLIB_MAJOR}: ${SOBJS}
202189592Sbms	@${ECHO} building shared ${LIB} library \(version ${SHLIB_MAJOR}\)
203189592Sbms	@rm -f lib${LIB}.so.${SHLIB_MAJOR} lib${LIB}.so
204189592Sbms	@ln -sf lib${LIB}.so.${SHLIB_MAJOR} lib${LIB}.so
205189592Sbms	@${LDDESTDIRENV} ${CC} -shared -Wl,-x \
206189592Sbms	    -o lib${LIB}.so.${SHLIB_MAJOR} -Wl,-soname,${SONAME} \
207189592Sbms	    `lorder ${SOBJS} | tsort -q` ${LDDESTDIR} ${LDADD}
208189592Sbms.endif
209189592Sbms
210189592Sbmslib${LIB}_pic.a:: ${SOBJS}
211189592Sbms	@${ECHO} building special pic ${LIB} library
212189592Sbms	@rm -f lib${LIB}_pic.a
213189592Sbms	@${AR} cq lib${LIB}_pic.a ${SOBJS} ${ARADD}
214189592Sbms	${RANLIB} lib${LIB}_pic.a
215185088Szec.endif
216189592Sbms
217189592Sbmsllib-l${LIB}.ln: ${SRCS}
218189592Sbms	${LINT} -C${LIB} ${CFLAGS} ${.ALLSRC:M*.c}
219189592Sbms
220130333Srwatson.if !target(clean)
221189592Sbmsclean:	_SUBDIR
222189592Sbms	rm -f a.out ${OBJS} ${OBJS:S/$/.tmp/} ${CLEANFILES}
223189592Sbms	rm -f lib${LIB}.a # llib-l${LIB}.ln
224189592Sbms	rm -f ${POBJS} ${POBJS:S/$/.tmp/} lib${LIB}_p.a
225189592Sbms	rm -f ${SOBJS} ${SOBJS:S/$/.tmp/} lib${LIB}.so.* lib${LIB}.so \
226189592Sbms	    lib${LIB}_pic.a
227189592Sbms.if defined(CLEANDIRS) && !empty(CLEANDIRS)
228189592Sbms	rm -rf ${CLEANDIRS}
229189592Sbms.endif
230189592Sbms.endif
231189592Sbms
232189592Sbms_EXTRADEPEND:
233189592Sbms	@TMP=_depend$$$$; \
234130333Srwatson	sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.so:/' < ${DEPENDFILE} \
235189592Sbms	    > $$TMP; \
236130333Srwatson	mv $$TMP ${DEPENDFILE}
237189592Sbms.if !defined(NOEXTRADEPEND) && !defined(NOPIC)
238189592Sbms.if ${OBJFORMAT} == aout
239189592Sbms	echo lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: \
240189592Sbms	    `${LDDESTDIRENV} ${CC} -shared -Wl,-f ${LDDESTDIR} ${LDADD}` \
241189592Sbms	    >> ${DEPENDFILE}
242189592Sbms.else
243189592Sbms.if defined(DPADD) && !empty(DPADD)
244189592Sbms	echo lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: \
245189592Sbms	    ${DPADD} >> ${DEPENDFILE}
246189592Sbms.endif
247189592Sbms.endif
248189592Sbms.endif
249189592Sbms
250189592Sbms.if !target(install)
251189592Sbms.if !target(beforeinstall)
252189592Sbmsbeforeinstall:
253189592Sbms.endif
254189592Sbms
255189592Sbms.if defined(PRECIOUSLIB)
256189592SbmsSHLINSTALLFLAGS+= -fschg
257189592Sbms.endif
258189592Sbms
259189592Sbmsrealinstall: beforeinstall
260189592Sbms.if !defined(INTERNALLIB)
261189592Sbms	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
262189592Sbms	    ${INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR}
263189592Sbms.if !defined(NOPROFILE)
264189592Sbms	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
265130333Srwatson	    ${INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR}
266189592Sbms.endif
267189592Sbms.endif
268189592Sbms.if !defined(NOPIC)
269189592Sbms.if ${OBJFORMAT} == aout
270189592Sbms.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
2711541Srgrimes	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
272189592Sbms	    ${INSTALLFLAGS} ${SHLINSTALLFLAGS} \
273189592Sbms	    lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
274189592Sbms	    ${DESTDIR}${SHLIBDIR}
275189592Sbms.endif
276189592Sbms.else
277189592Sbms.if defined(SHLIB_MAJOR)
278189592Sbms	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
279189592Sbms	    ${INSTALLFLAGS} ${SHLINSTALLFLAGS} \
280189592Sbms	    lib${LIB}.so.${SHLIB_MAJOR} \
281189592Sbms	    ${DESTDIR}${SHLIBDIR}
282189592Sbms	ln ${LN_FLAGS} -sf lib${LIB}.so.${SHLIB_MAJOR} \
283189592Sbms	    ${DESTDIR}${SHLIBDIR}/lib${LIB}.so
284189592Sbms.endif
285189592Sbms.endif
286189592Sbms.if defined(INSTALL_PIC_ARCHIVE)
287189592Sbms	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
288189592Sbms	    ${INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
289189592Sbms.endif
290189592Sbms.endif
291189592Sbms.if defined(LINKS) && !empty(LINKS)
292189592Sbms	@set ${LINKS}; \
293189592Sbms	while test $$# -ge 2; do \
294189592Sbms		l=${DESTDIR}$$1; \
295189592Sbms		shift; \
296189592Sbms		t=${DESTDIR}$$1; \
297189592Sbms		shift; \
298189592Sbms		${ECHO} $$t -\> $$l; \
299119180Srwatson		rm -f $$t; \
300119180Srwatson		ln ${LN_FLAGS} $$l $$t; \
301189592Sbms	done; true
302189592Sbms.endif
303189592Sbms
304189592Sbmsinstall: afterinstall _SUBDIR
305189592Sbms.if !defined(NOMAN)
306189592Sbmsafterinstall: realinstall maninstall
307189592Sbms.else
308189592Sbmsafterinstall: realinstall
309189592Sbms.endif
3101541Srgrimes.endif
31114622Sfenner
312189592Sbms.if !target(regress)
313189592Sbmsregress:
314189592Sbms.endif
315189592Sbms
316189592SbmsDISTRIBUTION?=	bin
317189592Sbms.if !target(distribute)
318189592Sbmsdistribute:	_SUBDIR
319189592Sbms.for dist in ${DISTRIBUTION}
320189592Sbms	cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${dist} SHARED=copies
321189592Sbms.endfor
322189592Sbms.endif
323189592Sbms
324189592Sbms.if !target(lint)
325189592Sbmslint:
326189592Sbms.endif
327189592Sbms
328189592Sbms.if !defined(NOMAN)
329189592Sbms.include <bsd.man.mk>
330191548Szec.elif !target(maninstall)
331189592Sbmsmaninstall:
332189592Sbmsall-man:
333189592Sbms.endif
334189592Sbms
335189592Sbms.include <bsd.dep.mk>
336189592Sbms
337189592Sbms.if !exists(${DEPENDFILE})
338189592Sbms${OBJS} ${POBJS} ${SOBJS}: ${SRCS:M*.h}
339189592Sbms.endif
340189592Sbms
341189592Sbms.include <bsd.obj.mk>
342189592Sbms