bsd.lib.mk revision 36673
10Sduke# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 29703Schegar# $Id: bsd.lib.mk,v 1.73 1998/06/04 15:15:38 peter Exp $ 30Sduke# 40Sduke 50Sduke.if exists(${.CURDIR}/../Makefile.inc) 60Sduke.include "${.CURDIR}/../Makefile.inc" 70Sduke.endif 80Sduke 90Sduke# Default executable format 100Sduke.if ${MACHINE} == "alpha" 110SdukeBINFORMAT?= elf 120Sduke.else 130SdukeBINFORMAT?= aout 140Sduke.endif 150Sduke 160Sduke.if exists(${.CURDIR}/shlib_version) 170SdukeSHLIB_MAJOR != . ${.CURDIR}/shlib_version ; echo $$major 180Sduke.if ${BINFORMAT} == aout 191472StrimsSHLIB_MINOR != . ${.CURDIR}/shlib_version ; echo $$minor 201472Strims.endif 211472Strims.endif 220Sduke 230Sduke.if !defined(NOPIC) && ${BINFORMAT} == elf 240SdukeSONAME?= lib${LIB}.so.${SHLIB_MAJOR} 251879Sstefank.endif 261879Sstefank 271879Sstefank.if defined(DESTDIR) 281879SstefankCFLAGS+= -I${DESTDIR}/usr/include 291879SstefankCXXINCLUDES+= -I${DESTDIR}/usr/include/g++ 301879Sstefank.endif 311879Sstefank 321879Sstefank.if defined(DEBUG_FLAGS) 331879SstefankCFLAGS+= ${DEBUG_FLAGS} 341879Sstefank.endif 351879Sstefank 360Sduke.if !defined(DEBUG_FLAGS) 379703SchegarSTRIP?= -s 380Sduke.endif 390Sduke 400Sduke.if ${BINFORMAT} != aout || make(checkdpadd) 410Sduke.include <bsd.libnames.mk> 420Sduke.endif 430Sduke 440Sduke.MAIN: all 450Sduke 460Sduke# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries 470Sduke# .so used for PIC object files 480Sduke.SUFFIXES: 490Sduke.SUFFIXES: .out .o .po .so .s .S .c .cc .cpp .cxx .m .C .f .y .l 500Sduke 510Sduke.c.o: 520Sduke ${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 530Sduke @${LD} -O ${.TARGET} -x -r ${.TARGET} 540Sduke 550Sduke.c.po: 560Sduke ${CC} -pg ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 570Sduke @${LD} -O ${.TARGET} -X -r ${.TARGET} 580Sduke 590Sduke.c.so: 600Sduke ${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 610Sduke @${LD} -O ${.TARGET} -x -r ${.TARGET} 620Sduke 630Sduke.cc.o .C.o .cpp.o .cxx.o: 640Sduke ${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 650Sduke @${LD} -O ${.TARGET} -x -r ${.TARGET} 660Sduke 670Sduke.cc.po .C.po .cpp.po .cxx.po: 680Sduke ${CXX} -pg ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 690Sduke @${LD} -O ${.TARGET} -X -r ${.TARGET} 700Sduke 710Sduke.cc.so .C.so .cpp.so .cxx.so: 720Sduke ${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 730Sduke @${LD} -O ${.TARGET} -x -r ${.TARGET} 740Sduke 750Sduke.f.o: 760Sduke ${FC} ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 770Sduke @${LD} -O ${.TARGET} -x -r ${.TARGET} 780Sduke 790Sduke.f.po: 800Sduke ${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 810Sduke @${LD} -O ${.TARGET} -X -r ${.TARGET} 820Sduke 830Sduke.f.so: 840Sduke ${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 850Sduke @${LD} -O ${.TARGET} -x -r ${.TARGET} 860Sduke 870Sduke.m.o: 880Sduke ${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET} 890Sduke @${LD} -O ${.TARGET} -x -r ${.TARGET} 900Sduke 910Sduke.m.po: 920Sduke ${OBJC} ${OBJCFLAGS} -pg -c ${.IMPSRC} -o ${.TARGET} 930Sduke @${LD} -O ${.TARGET} -X -r ${.TARGET} 940Sduke 950Sduke.m.so: 960Sduke ${OBJC} ${PICFLAG} -DPIC ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET} 970Sduke @${LD} -O ${.TARGET} -x -r ${.TARGET} 980Sduke 990Sduke.s.o: 1000Sduke ${CC} -x assembler-with-cpp ${CFLAGS:M-[BID]*} ${AINC} -c \ 1010Sduke ${.IMPSRC} -o ${.TARGET} 1020Sduke @${LD} -O ${.TARGET} -x -r ${.TARGET} 1037708Sdsamersoff 1047708Sdsamersoff.s.po: 1057708Sdsamersoff ${CC} -x assembler-with-cpp -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c \ 1067708Sdsamersoff ${.IMPSRC} -o ${.TARGET} 1077708Sdsamersoff @${LD} -O ${.TARGET} -X -r ${.TARGET} 1080Sduke 1090Sduke.s.so: 1100Sduke ${CC} -x assembler-with-cpp -fpic -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c \ 1110Sduke ${.IMPSRC} -o ${.TARGET} 1120Sduke @${LD} -O ${.TARGET} -x -r ${.TARGET} 1130Sduke 1140Sduke.S.o: 1150Sduke ${CC} ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 1160Sduke @${LD} -O ${.TARGET} -x -r ${.TARGET} 1170Sduke 1180Sduke.S.po: 1190Sduke ${CC} -DPROF ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 1200Sduke @${LD} -O ${.TARGET} -X -r ${.TARGET} 1210Sduke 1220Sduke.S.so: 1230Sduke ${CC} -fpic -DPIC ${CFLAGS:M-[BID]*} ${AINC} -c ${.IMPSRC} -o ${.TARGET} 1240Sduke @${LD} -O ${.TARGET} -x -r ${.TARGET} 1250Sduke 1260Sduke.if !defined(INTERNALLIB) || defined(INTERNALSTATICLIB) 1270Sduke.if !defined(NOPROFILE) && !defined(INTERNALLIB) 1280Sduke_LIBS=lib${LIB}.a lib${LIB}_p.a 1290Sduke.else 1300Sduke_LIBS=lib${LIB}.a 1310Sduke.endif 1320Sduke.endif 1330Sduke 1340Sduke.if !defined(NOPIC) 1350Sduke.if ${BINFORMAT} == aout 1360Sduke.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR) 1370Sduke_LIBS+=lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} 1380Sduke.endif 1390Sduke.else 1400Sduke.if defined(SHLIB_MAJOR) 1410Sduke_LIBS+=lib${LIB}.so.${SHLIB_MAJOR} 1420Sduke.endif 1430Sduke.endif 1440Sduke.if defined(INSTALL_PIC_ARCHIVE) 1450Sduke_LIBS+=lib${LIB}_pic.a 1460Sduke.endif 1470Sduke.endif 1480Sduke 1490Sduke.if !defined(PICFLAG) 1504614SccheungPICFLAG=-fpic 1510Sduke.endif 1520Sduke 1530Sdukeall: objwarn ${_LIBS} all-man _SUBDIR # llib-l${LIB}.ln 1540Sduke 1550SdukeOBJS+= ${SRCS:N*.h:R:S/$/.o/g} 1564614Sccheung 1574614Sccheunglib${LIB}.a:: ${OBJS} 1580Sduke @${ECHO} building standard ${LIB} library 1590Sduke @rm -f lib${LIB}.a 1600Sduke @${AR} cq lib${LIB}.a `lorder ${OBJS} | tsort -q` ${ARADD} 1610Sduke ${RANLIB} lib${LIB}.a 1624614Sccheung 1634614Sccheung.if !defined(NOPROFILE) 1640SdukePOBJS+= ${OBJS:.o=.po} 1650Sdukelib${LIB}_p.a:: ${POBJS} 1660Sduke @${ECHO} building profiled ${LIB} library 1670Sduke @rm -f lib${LIB}_p.a 1680Sduke @${AR} cq lib${LIB}_p.a `lorder ${POBJS} | tsort -q` ${ARADD} 1690Sduke ${RANLIB} lib${LIB}_p.a 1700Sduke.endif 1710Sduke 1720Sduke.if defined(DESTDIR) 1730SdukeLDDESTDIRENV?= LIBRARY_PATH=${DESTDIR}${SHLIBDIR}:${DESTDIR}${LIBDIR} 1740Sduke.endif 1750Sduke 1760Sduke.if !defined(NOPIC) 1770SdukeSOBJS+= ${OBJS:.o=.so} 1780Sduke 1790Sduke.if ${BINFORMAT} == aout 1800Sdukelib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: ${SOBJS} 1810Sduke @${ECHO} building shared ${LIB} library \(version ${SHLIB_MAJOR}.${SHLIB_MINOR}\) 1820Sduke @rm -f lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} 1830Sduke @${LDDESTDIRENV} ${CC} -shared -Wl,-x -Wl,-assert -Wl,pure-text \ 1840Sduke -o lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ 1850Sduke `lorder ${SOBJS} | tsort -q` ${LDDESTDIR} ${LDADD} 1860Sduke.else 1870Sdukelib${LIB}.so.${SHLIB_MAJOR}: ${SOBJS} 1880Sduke @${ECHO} building shared ${LIB} library \(version ${SHLIB_MAJOR}\) 1890Sduke @rm -f lib${LIB}.so.${SHLIB_MAJOR} 1900Sduke @${LDDESTDIRENV} ${CC} -shared -Wl,-x \ 1910Sduke -o lib${LIB}.so.${SHLIB_MAJOR} -Wl,-soname,${SONAME} \ 1920Sduke `lorder ${SOBJS} | tsort -q` ${LDDESTDIR} ${LDADD} 1930Sduke.endif 1940Sduke 1950Sdukelib${LIB}_pic.a:: ${SOBJS} 1960Sduke @${ECHO} building special pic ${LIB} library 1970Sduke @rm -f lib${LIB}_pic.a 1980Sduke @${AR} cq lib${LIB}_pic.a ${SOBJS} ${ARADD} 1990Sduke ${RANLIB} lib${LIB}_pic.a 2000Sduke.endif 2010Sduke 2020Sdukellib-l${LIB}.ln: ${SRCS} 2030Sduke ${LINT} -C${LIB} ${CFLAGS} ${.ALLSRC:M*.c} 2040Sduke 2050Sduke.if !target(clean) 2060Sdukeclean: _SUBDIR 2070Sduke rm -f a.out ${OBJS} ${CLEANFILES} 2080Sduke rm -f lib${LIB}.a # llib-l${LIB}.ln 2090Sduke rm -f ${POBJS} lib${LIB}_p.a 2100Sduke.if defined(SOBJS) && !empty(SOBJS) 2110Sduke rm -f ${SOBJS} 2120Sduke.endif 2130Sduke rm -f lib${LIB}.so.*.* lib${LIB}_pic.a 2140Sduke.if defined(CLEANDIRS) && !empty(CLEANDIRS) 2150Sduke rm -rf ${CLEANDIRS} 2160Sduke.endif 2170Sduke.endif 2180Sduke 2190Sduke_EXTRADEPEND: 2200Sduke @TMP=_depend$$$$; \ 2210Sduke sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.so:/' < ${DEPENDFILE} \ 2220Sduke > $$TMP; \ 2230Sduke mv $$TMP ${DEPENDFILE} 2240Sduke.if !defined(NOEXTRADEPEND) && !defined(NOPIC) 2250Sduke.if ${BINFORMAT} == aout 2260Sduke echo lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: \ 2270Sduke `${LDDESTDIRENV} ${CC} -shared -Wl,-f ${LDDESTDIR} ${LDADD}` \ 2280Sduke >> ${DEPENDFILE} 2290Sduke.else 2300Sduke.if defined(DPADD) && !empty(DPADD) 2310Sduke echo lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: \ 2320Sduke ${DPADD} >> ${DEPENDFILE} 2330Sduke.endif 2340Sduke.endif 2350Sduke.endif 2360Sduke 2370Sduke.if !target(install) 2380Sduke.if !target(beforeinstall) 2390Sdukebeforeinstall: 2400Sduke.endif 2410Sduke 2420Sduke.if defined(PRECIOUSLIB) 2430SdukeSHLINSTALLFLAGS+= -fschg 2440Sduke.endif 2450Sduke 2460Sdukerealinstall: beforeinstall 2470Sduke.if !defined(INTERNALLIB) 2480Sduke ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 2490Sduke ${INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR} 2500Sduke.if !defined(NOPROFILE) 2510Sduke ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 2520Sduke ${INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR} 2530Sduke.endif 2540Sduke.endif 2550Sduke.if !defined(NOPIC) 2560Sduke.if ${BINFORMAT} == aout 2570Sduke.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR) 2580Sduke ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 2590Sduke ${INSTALLFLAGS} ${SHLINSTALLFLAGS} \ 2600Sduke lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ 2610Sduke ${DESTDIR}${SHLIBDIR} 2620Sduke.endif 2630Sduke.else 2640Sduke.if defined(SHLIB_MAJOR) 2650Sduke ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 2660Sduke ${INSTALLFLAGS} ${SHLINSTALLFLAGS} \ 2670Sduke lib${LIB}.so.${SHLIB_MAJOR} \ 2680Sduke ${DESTDIR}${SHLIBDIR} 2690Sduke ln ${LN_FLAGS} -sf lib${LIB}.so.${SHLIB_MAJOR} \ 2700Sduke ${DESTDIR}${SHLIBDIR}/lib${LIB}.so 2710Sduke.endif 2720Sduke.endif 2730Sduke.if defined(INSTALL_PIC_ARCHIVE) 2740Sduke ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 2750Sduke ${INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR} 2760Sduke.endif 2770Sduke.endif 2780Sduke.if defined(LINKS) && !empty(LINKS) 2790Sduke @set ${LINKS}; \ 2800Sduke while test $$# -ge 2; do \ 2810Sduke l=${DESTDIR}$$1; \ 2820Sduke shift; \ 2830Sduke t=${DESTDIR}$$1; \ 2840Sduke shift; \ 2850Sduke ${ECHO} $$t -\> $$l; \ 2860Sduke rm -f $$t; \ 2870Sduke ln ${LN_FLAGS} $$l $$t; \ 2880Sduke done; true 2890Sduke.endif 2900Sduke 2910Sdukeinstall: afterinstall _SUBDIR 2920Sduke.if !defined(NOMAN) 2930Sdukeafterinstall: realinstall maninstall 2940Sduke.else 2950Sdukeafterinstall: realinstall 2960Sduke.endif 2970Sduke.endif 2988638Sbpittore 2998638Sbpittore.if !target(regress) 3000Sdukeregress: 3010Sduke.endif 3020Sduke 3038638SbpittoreDISTRIBUTION?= bin 3048638Sbpittore.if !target(distribute) 3058638Sbpittoredistribute: _SUBDIR 3068638Sbpittore.for dist in ${DISTRIBUTION} 3078638Sbpittore cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${dist} SHARED=copies 3088638Sbpittore.endfor 3090Sduke.endif 3100Sduke 3110Sduke.if !target(lint) 3120Sdukelint: 3130Sduke.endif 3140Sduke 3150Sduke.if !defined(NOMAN) 3160Sduke.include <bsd.man.mk> 3170Sduke.elif !target(maninstall) 3180Sdukemaninstall: 3190Sdukeall-man: 3200Sduke.endif 3210Sduke 3220Sduke.include <bsd.dep.mk> 3230Sduke 3240Sduke.if !exists(${DEPENDFILE}) 3250Sduke${OBJS} ${POBJS} ${SOBJS}: ${SRCS:M*.h} 3260Sduke.endif 327 328.include <bsd.obj.mk> 329