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