bsd.lib.mk revision 4453
110216Sphk#	from: @(#)bsd.lib.mk	5.26 (Berkeley) 5/2/91
210216Sphk#	$Id: bsd.lib.mk,v 1.12 1994/11/14 04:55:40 bde Exp $
310216Sphk#
410216Sphk
5139825Simp.if exists(${.CURDIR}/../Makefile.inc)
6139825Simp.include "${.CURDIR}/../Makefile.inc"
710216Sphk.endif
810216Sphk
910216Sphk.if exists(${.CURDIR}/shlib_version)
1010216SphkSHLIB_MAJOR != . ${.CURDIR}/shlib_version ; echo $$major
1110216SphkSHLIB_MINOR != . ${.CURDIR}/shlib_version ; echo $$minor
1210216Sphk.endif
1310216Sphk
1410216Sphk.if defined(DESTDIR)
1510216SphkCFLAGS+= -I${DESTDIR}/usr/include
1610216SphkCXXINCLUDES+= -I${DESTDIR}/usr/include/${CXX}
1710216Sphk.endif
1810216Sphk
1910216Sphk.if defined(DEBUG_FLAGS)
2010216SphkCFLAGS+= ${DEBUG_FLAGS}
2110216Sphk.endif
2210216Sphk
2310216SphkINSTALL?=	install
2410216SphkRANTOUCH?=	${RANLIB} -t
2510216Sphk
2610216SphkLIBDIR?=	/usr/lib
2710216SphkLINTLIBDIR?=	/usr/libdata/lint
2810216SphkLIBGRP?=	bin
2910216SphkLIBOWN?=	bin
3010216SphkLIBMODE?=	444
3118444SbdeSHLIBDIR?=	${LIBDIR}
3254021Simp
3354021Simp.if !defined(DEBUG_FLAGS)
3431289SnateSTRIP?=	-s
3531289Snate.endif
3618444Sbde
3755206SpeterBINGRP?=	bin
3818444SbdeBINOWN?=	bin
3918444SbdeBINMODE?=	555
4018444Sbde
4118444Sbde.MAIN: all
4210216Sphk
4310216Sphk# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
4410216Sphk# .so used for PIC object files
4510216Sphk.SUFFIXES:
4610216Sphk.SUFFIXES: .out .o .po .so .s .S .c .cc .cxx .m .C .f .y .l
4756095Shosokawa
4810216Sphk.c.o:
4910216Sphk	${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
5010216Sphk	@${LD} -x -r ${.TARGET}
5154021Simp	@mv a.out ${.TARGET}
5243964Skuriyama
5365991Ssanpei.c.po:
5410216Sphk	${CC} -p ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
5510216Sphk	@${LD} -X -r ${.TARGET}
5610216Sphk	@mv a.out ${.TARGET}
5710216Sphk
5810216Sphk.c.so:
5910216Sphk	${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
6010216Sphk
6110216Sphk.cc.o .cxx.o .C.o:
6280438Simp	${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
6380438Simp	@${LD} -x -r ${.TARGET}
6480438Simp	@mv a.out ${.TARGET}
6580464Simp
6680464Simp.cc.po .C.po .cxx.o:
6780464Simp	${CXX} -p ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
6880464Simp	@${LD} -X -r ${.TARGET}
6980464Simp	@mv a.out ${.TARGET}
7080464Simp
7180464Simp.cc.so .C.so:
7280464Simp	${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
7380464Simp
7480464Simp.f.o:
7580464Simp	${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 
7680464Simp	@${LD} -x -r ${.TARGET}
7780464Simp	@mv a.out ${.TARGET}
7880464Simp
7980438Simp.f.po:
8080438Simp	${FC} -p ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 
8180438Simp	@${LD} -X -r ${.TARGET}
8280439Simp	@mv a.out ${.TARGET}
8380439Simp
8480439Simp.f.so:
8580439Simp	${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
8680438Simp
8780438Simp.s.o:
8880438Simp	${CPP} -E ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
8980438Simp	    ${AS} -o ${.TARGET}
9080438Simp	@${LD} -x -r ${.TARGET}
9180438Simp	@mv a.out ${.TARGET}
9280439Simp
9380439Simp.s.po:
9480439Simp	${CPP} -E -DPROF ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
9580439Simp	    ${AS} -o ${.TARGET}
9610216Sphk	@${LD} -X -r ${.TARGET}
9764878Sume	@mv a.out ${.TARGET}
9810216Sphk
9910216Sphk.s.so:
10010216Sphk	${CPP} -E -DPIC ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
10110216Sphk	   ${AS} -k -o ${.TARGET}
10212173Sphk
10310216Sphk.S.o:
10410216Sphk	${CPP} -E ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
10510216Sphk	    ${AS} -o ${.TARGET}
10610216Sphk
10710216Sphk.S.po:
10812173Sphk	${CPP} -E -DPROF ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
10910216Sphk	    ${AS} -o ${.TARGET}
11010216Sphk
11110216Sphk.S.so:
11210216Sphk	${CPP} -E -DPIC ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} | \
11310216Sphk	   ${AS} -k -o ${.TARGET}
11410216Sphk
11510216Sphk.m.po:
11610216Sphk	${CC} ${CFLAGS} -p -c ${.IMPSRC} -o ${.TARGET}
11710216Sphk	@${LD} -X -r ${.TARGET}
11810216Sphk	@mv a.out ${.TARGET}
11910216Sphk
12010216Sphk.m.o:
12112173Sphk	${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
12210216Sphk	@${LD} -X -r ${.TARGET}
12310216Sphk	@mv a.out ${.TARGET}
12410216Sphk
12510216Sphk.if !defined(INTERNALLIB) || defined(INTERNALSTATICLIB)
12612173Sphk.if !defined(NOPROFILE) && !defined(INTERNALLIB)
12710216Sphk_LIBS=lib${LIB}.a lib${LIB}_p.a
12810216Sphk.else
12910216Sphk_LIBS=lib${LIB}.a
13010216Sphk.endif
13110216Sphk.endif
13210216Sphk
13310216Sphk.if !defined(NOPIC)
13410216Sphk.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
13510216Sphk_LIBS+=lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
13610216Sphk.endif
137100484Simp.if defined(INSTALL_PIC_ARCHIVE)
138100484Simp_LIBS+=lib${LIB}_pic.a
13930720Snate.endif
14099943Simp.endif
14199943Simp
14299943Simp.if !defined(PICFLAG)
14399943SimpPICFLAG=-fpic
14499943Simp.endif
14599943Simp
14699943Simpall: ${_LIBS} # llib-l${LIB}.ln
14799943Simp
148100484SimpOBJS+=	${SRCS:N*.h:R:S/$/.o/g}
149100484Simp
150100484Simplib${LIB}.a:: ${OBJS}
151113946Simp	@${ECHO} building standard ${LIB} library
152113946Simp	@rm -f lib${LIB}.a
15399943Simp	@${AR} cTq lib${LIB}.a `lorder ${OBJS} | tsort` ${ARADD}
15499943Simp	${RANLIB} lib${LIB}.a
15599943Simp
15612173Sphk.if !defined(NOPROFILE)
15749352SimpPOBJS+=	${OBJS:.o=.po}
15810216Sphklib${LIB}_p.a:: ${POBJS}
15912173Sphk	@${ECHO} building profiled ${LIB} library
16010216Sphk	@rm -f lib${LIB}_p.a
16110216Sphk	@${AR} cTq lib${LIB}_p.a `lorder ${POBJS} | tsort` ${ARADD}
16212173Sphk	${RANLIB} lib${LIB}_p.a
16312173Sphk.endif
16410216Sphk
16510216Sphk.if defined(DESTDIR)
16610216SphkLDDESTDIR?=	-L${DESTDIR}/usr/lib
16712173Sphk.endif
16899943Simp
16999943Simp.if !defined(NOPIC)
17099943Simp.if defined(CPLUSPLUSLIB) && !make(clean) && !make(cleandir)
17199943SimpSOBJS+= ${DESTDIR}/usr/lib/c++rt0.o
17299943Simp.endif
17399943Simp
17412173SphkSOBJS+= ${OBJS:.o=.so}
17510216Sphklib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: ${SOBJS}
17610216Sphk	@${ECHO} building shared ${LIB} library \(version ${SHLIB_MAJOR}.${SHLIB_MINOR}\)
17710216Sphk	@rm -f lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
17810216Sphk	@${LD} -Bshareable \
17912173Sphk	    -o lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
18099943Simp	    ${SOBJS} ${LDDESTDIR} ${LDADD}
18199943Simp
18212173Sphklib${LIB}_pic.a:: ${SOBJS}
18310216Sphk	@${ECHO} building special pic ${LIB} library
18410216Sphk	@rm -f lib${LIB}_pic.a
18576500Simp	@${AR} cTq lib${LIB}_pic.a ${SOBJS} ${ARADD}
18665991Ssanpei	${RANLIB} lib${LIB}_pic.a
18765991Ssanpei.endif
18865991Ssanpei
18965991Ssanpeillib-l${LIB}.ln: ${SRCS}
19065991Ssanpei	${LINT} -C${LIB} ${CFLAGS} ${.ALLSRC:M*.c}
19165991Ssanpei
19265991Ssanpei.if !target(clean)
19365991Ssanpeiclean:
19465991Ssanpei	rm -f a.out Errs errs mklog ${CLEANFILES} ${OBJS}
19565991Ssanpei	rm -f lib${LIB}.a llib-l${LIB}.ln
19665991Ssanpei	rm -f ${POBJS} profiled/*.o lib${LIB}_p.a
19710216Sphk	rm -f ${SOBJS} shared/*.o
19810216Sphk	rm -f lib${LIB}.so.*.* lib${LIB}_pic.a
19910216Sphk.endif
20010216Sphk
20110216Sphk.if !target(cleandir)
20267650Simpcleandir:
20374807Simp	rm -f a.out Errs errs mklog ${CLEANFILES} ${OBJS}
20418444Sbde	rm -f lib${LIB}.a llib-l${LIB}.ln
20531289Snate	rm -f ${.CURDIR}/tags .depend
206	rm -f ${POBJS} profiled/*.o lib${LIB}_p.a
207	rm -f ${SOBJS} shared/*.o
208	rm -f lib${LIB}.so.*.* lib${LIB}_pic.a
209	cd ${.CURDIR}; rm -rf obj;
210.endif
211
212.if defined(SRCS)
213afterdepend:
214	@(TMP=/tmp/_depend$$$$; \
215	sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.so:/' < .depend > $$TMP; \
216	mv $$TMP .depend)
217.endif
218
219.if !target(install)
220.if !target(beforeinstall)
221beforeinstall:
222.endif
223
224.if defined(PRECIOUSLIB)
225SHLINSTALLFLAGS+= -fschg
226.endif
227
228realinstall: beforeinstall
229.if !defined(INTERNALLIB)
230	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
231	    ${INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR}
232	${RANTOUCH} ${DESTDIR}${LIBDIR}/lib${LIB}.a
233.if !defined(NOPROFILE)
234	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
235	    ${INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR}
236	${RANTOUCH} ${DESTDIR}${LIBDIR}/lib${LIB}_p.a
237.endif
238.endif
239.if !defined(NOPIC)
240.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
241	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
242	    ${INSTALLFLAGS} ${SHLINSTALLFLAGS} \
243	    lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
244	    ${DESTDIR}${SHLIBDIR}
245.endif
246.if defined(INSTALL_PIC_ARCHIVE)
247	${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
248	    ${INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
249	${RANTOUCH} ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a
250.endif
251.endif
252.if defined(LINKS) && !empty(LINKS)
253	@set ${LINKS}; \
254	while test $$# -ge 2; do \
255		l=${DESTDIR}$$1; \
256		shift; \
257		t=${DESTDIR}$$1; \
258		shift; \
259		${ECHO} $$t -\> $$l; \
260		rm -f $$t; \
261		ln $$l $$t; \
262	done; true
263.endif
264
265install: afterinstall
266.if !defined(NOMAN)
267afterinstall: realinstall maninstall
268.else
269afterinstall: realinstall
270.endif
271.endif
272
273DISTRIBUTION?=	bindist
274.if !target(distribute)
275distribute:
276	cd ${.CURDIR} ; $(MAKE) install DESTDIR=${RELEASEDIR}/${DISTRIBUTION} SHARED=copies
277.endif
278
279.if !target(lint)
280lint:
281.endif
282
283.if !target(tags)
284tags: ${SRCS}
285	-cd ${.CURDIR}; ctags -f /dev/stdout ${.ALLSRC:M*.c} | \
286	    sed "s;\${.CURDIR}/;;" > tags
287.endif
288
289.if !defined(NOMAN)
290.include <bsd.man.mk>
291.elif !target(maninstall)
292maninstall:
293.endif
294
295.if !target(obj)
296.if defined(NOOBJ)
297obj:
298.else
299obj:
300	@cd ${.CURDIR}; rm -rf obj; \
301	here=`pwd`; dest=/usr/obj`echo $$here | sed 's,^/usr/src,,'`; \
302	${ECHO} "$$here -> $$dest"; ln -s $$dest obj; \
303	if test -d /usr/obj -a ! -d $$dest; then \
304		mkdir -p $$dest; \
305	else \
306		true; \
307	fi;
308.endif
309.endif
310
311.include <bsd.dep.mk>
312