13585b293SGarrett Wollman# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 27f3dea24SPeter Wemm# $FreeBSD$ 33585b293SGarrett Wollman# 4afe61c15SRodney W. Grimes 52bdaf7e8SRuslan Ermilov.include <bsd.init.mk> 6afe61c15SRodney W. Grimes 721e27456SBryan Drewery.if defined(LIB_CXX) || defined(SHLIB_CXX) 8215d02b7SBryan Drewery_LD= ${CXX} 9215d02b7SBryan Drewery.else 10215d02b7SBryan Drewery_LD= ${CC} 11215d02b7SBryan Drewery.endif 1221e27456SBryan Drewery.if defined(LIB_CXX) 1321e27456SBryan DreweryLIB= ${LIB_CXX} 1421e27456SBryan Drewery.endif 1521e27456SBryan Drewery.if defined(SHLIB_CXX) 1621e27456SBryan DrewerySHLIB= ${SHLIB_CXX} 1721e27456SBryan Drewery.endif 18215d02b7SBryan Drewery 195551c573SBaptiste DaroussinLIB_PRIVATE= ${PRIVATELIB:Dprivate} 20f67eb0dcSJohn Polstra# Set up the variables controlling shared libraries. After this section, 21f67eb0dcSJohn Polstra# SHLIB_NAME will be defined only if we are to create a shared library. 22f67eb0dcSJohn Polstra# SHLIB_LINK will be defined only if we are to create a link to it. 23f67eb0dcSJohn Polstra# INSTALL_PIC_ARCHIVE will be defined only if we are to create a PIC archive. 24ab7a2947SRuslan Ermilov.if defined(NO_PIC) 25f67eb0dcSJohn Polstra.undef SHLIB_NAME 26f67eb0dcSJohn Polstra.undef INSTALL_PIC_ARCHIVE 27f67eb0dcSJohn Polstra.else 2810717e2eSDag-Erling Smørgrav.if !defined(SHLIB) && defined(LIB) 2910717e2eSDag-Erling SmørgravSHLIB= ${LIB} 3010717e2eSDag-Erling Smørgrav.endif 3110717e2eSDag-Erling Smørgrav.if !defined(SHLIB_NAME) && defined(SHLIB) && defined(SHLIB_MAJOR) 325551c573SBaptiste DaroussinSHLIB_NAME= lib${LIB_PRIVATE}${SHLIB}.so.${SHLIB_MAJOR} 3342c0ad02SRuslan Ermilov.endif 3465d2bdc6SRuslan Ermilov.if defined(SHLIB_NAME) && !empty(SHLIB_NAME:M*.so.*) 3542c0ad02SRuslan ErmilovSHLIB_LINK?= ${SHLIB_NAME:R} 36f67eb0dcSJohn Polstra.endif 37f67eb0dcSJohn PolstraSONAME?= ${SHLIB_NAME} 38e782d0b5SPeter Wemm.endif 39e782d0b5SPeter Wemm 4041f89315SRuslan Ermilov.if defined(CRUNCH_CFLAGS) 413c9b8563SGordon TetlowCFLAGS+= ${CRUNCH_CFLAGS} 4241f89315SRuslan Ermilov.endif 433c9b8563SGordon Tetlow 444df1f59eSWarner Losh.if ${MK_ASSERT_DEBUG} == "no" 454df1f59eSWarner LoshCFLAGS+= -DNDEBUG 46e2e1ab1cSDavid E. O'BrienNO_WERROR= 474df1f59eSWarner Losh.endif 484df1f59eSWarner Losh 49e82b0b99SJordan K. Hubbard.if defined(DEBUG_FLAGS) 50e82b0b99SJordan K. HubbardCFLAGS+= ${DEBUG_FLAGS} 51770ac3b2SJohn Birrell 52e977d70fSMark Johnston.if ${MK_CTF} != "no" && ${DEBUG_FLAGS:M-g} != "" 53770ac3b2SJohn BirrellCTFFLAGS+= -g 54770ac3b2SJohn Birrell.endif 550d947ed1SEd Maste.else 56afe61c15SRodney W. GrimesSTRIP?= -s 57e82b0b99SJordan K. Hubbard.endif 58afe61c15SRodney W. Grimes 596c2fad0aSBaptiste Daroussin.if ${SHLIBDIR:M*lib32*} 606c2fad0aSBaptiste DaroussinTAGS+= lib32 616c2fad0aSBaptiste Daroussin.endif 626c2fad0aSBaptiste Daroussin 63dc6d22c9SBaptiste Daroussin.if defined(NO_ROOT) 64dc6d22c9SBaptiste Daroussin.if !defined(TAGS) || ! ${TAGS:Mpackage=*} 65ef3290ceSBaptiste DaroussinTAGS+= package=${PACKAGE:Uruntime} 66dc6d22c9SBaptiste Daroussin.endif 67dc6d22c9SBaptiste DaroussinTAG_ARGS= -T ${TAGS:[*]:S/ /,/g} 68dc6d22c9SBaptiste Daroussin.endif 69dc6d22c9SBaptiste Daroussin 7042f8c5b5SEd Maste.if ${MK_DEBUG_FILES} != "no" && empty(DEBUG_FLAGS:M-g) && \ 7142f8c5b5SEd Maste empty(DEBUG_FLAGS:M-gdwarf*) 7271b259d4SGlen BarberSHARED_CFLAGS+= -g 7371b259d4SGlen BarberSHARED_CXXFLAGS+= -g 7442f8c5b5SEd MasteCTFFLAGS+= -g 7542f8c5b5SEd Maste.endif 7642f8c5b5SEd Maste 771a5ed802SBruce Evans.include <bsd.libnames.mk> 781a5ed802SBruce Evans 79afe61c15SRodney W. Grimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries 80f92bdbd0SJohn Polstra# .So used for PIC object files 81afe61c15SRodney W. Grimes.SUFFIXES: 826d67f694SDimitry Andric.SUFFIXES: .out .o .po .So .S .asm .s .c .cc .cpp .cxx .C .f .y .l .ln 83766f7d6eSMark Murray 842a53f3fbSRuslan Ermilov.if !defined(PICFLAG) 8525faff34SWarner Losh.if ${MACHINE_CPUARCH} == "sparc64" 862a53f3fbSRuslan ErmilovPICFLAG=-fPIC 872a53f3fbSRuslan Ermilov.else 882a53f3fbSRuslan ErmilovPICFLAG=-fpic 892a53f3fbSRuslan Ermilov.endif 902a53f3fbSRuslan Ermilov.endif 912a53f3fbSRuslan Ermilov 9206d6e4fcSTom RhodesPO_FLAG=-pg 9306d6e4fcSTom Rhodes 94*5852ae2dSBryan Drewery.c.o: 952ba29593SDag-Erling Smørgrav ${CC} ${STATIC_CFLAGS} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 9678e7e3ecSMax Khon ${CTFCONVERT_CMD} 972ba29593SDag-Erling Smørgrav 98*5852ae2dSBryan Drewery.c.po: 992ba29593SDag-Erling Smørgrav ${CC} ${PO_FLAG} ${STATIC_CFLAGS} ${PO_CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 10078e7e3ecSMax Khon ${CTFCONVERT_CMD} 101afe61c15SRodney W. Grimes 102*5852ae2dSBryan Drewery.c.So: 1032ba29593SDag-Erling Smørgrav ${CC} ${PICFLAG} -DPIC ${SHARED_CFLAGS} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 10478e7e3ecSMax Khon ${CTFCONVERT_CMD} 1053585b293SGarrett Wollman 106*5852ae2dSBryan Drewery.cc.o .C.o .cpp.o .cxx.o: 1072ba29593SDag-Erling Smørgrav ${CXX} ${STATIC_CXXFLAGS} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 1082ba29593SDag-Erling Smørgrav 109*5852ae2dSBryan Drewery.cc.po .C.po .cpp.po .cxx.po: 1102ba29593SDag-Erling Smørgrav ${CXX} ${PO_FLAG} ${STATIC_CXXFLAGS} ${PO_CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 1113585b293SGarrett Wollman 112*5852ae2dSBryan Drewery.cc.So .C.So .cpp.So .cxx.So: 1132ba29593SDag-Erling Smørgrav ${CXX} ${PICFLAG} -DPIC ${SHARED_CXXFLAGS} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 1143585b293SGarrett Wollman 115*5852ae2dSBryan Drewery.f.po: 1169c8ff5b5SJohn Polstra ${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 11778e7e3ecSMax Khon ${CTFCONVERT_CMD} 1183585b293SGarrett Wollman 119*5852ae2dSBryan Drewery.f.So: 1203585b293SGarrett Wollman ${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 12178e7e3ecSMax Khon ${CTFCONVERT_CMD} 1223585b293SGarrett Wollman 123*5852ae2dSBryan Drewery.s.po .s.So: 124f79d11b7SRuslan Ermilov ${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC} 12578e7e3ecSMax Khon ${CTFCONVERT_CMD} 1263585b293SGarrett Wollman 127*5852ae2dSBryan Drewery.asm.po: 1289160419cSBryan Drewery ${CC:N${CCACHE_BIN}} -x assembler-with-cpp -DPROF ${PO_CFLAGS} \ 1299160419cSBryan Drewery ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET} 13078e7e3ecSMax Khon ${CTFCONVERT_CMD} 131d58e932fSRuslan Ermilov 132*5852ae2dSBryan Drewery.asm.So: 1339160419cSBryan Drewery ${CC:N${CCACHE_BIN}} -x assembler-with-cpp ${PICFLAG} -DPIC \ 1349160419cSBryan Drewery ${CFLAGS} ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET} 13578e7e3ecSMax Khon ${CTFCONVERT_CMD} 136d58e932fSRuslan Ermilov 137*5852ae2dSBryan Drewery.S.po: 1389160419cSBryan Drewery ${CC:N${CCACHE_BIN}} -DPROF ${PO_CFLAGS} ${ACFLAGS} -c ${.IMPSRC} \ 1399160419cSBryan Drewery -o ${.TARGET} 14078e7e3ecSMax Khon ${CTFCONVERT_CMD} 1413585b293SGarrett Wollman 142*5852ae2dSBryan Drewery.S.So: 1439160419cSBryan Drewery ${CC:N${CCACHE_BIN}} ${PICFLAG} -DPIC ${CFLAGS} ${ACFLAGS} \ 1449160419cSBryan Drewery -c ${.IMPSRC} -o ${.TARGET} 14578e7e3ecSMax Khon ${CTFCONVERT_CMD} 1463585b293SGarrett Wollman 1472442cc58SDag-Erling Smørgrav_LIBDIR:=${LIBDIR} 1482442cc58SDag-Erling Smørgrav_SHLIBDIR:=${SHLIBDIR} 1492442cc58SDag-Erling Smørgrav 1500d1fce25SEd Maste.if defined(SHLIB_NAME) 15142f8c5b5SEd Maste.if ${MK_DEBUG_FILES} != "no" 15242f8c5b5SEd MasteSHLIB_NAME_FULL=${SHLIB_NAME}.full 15342f8c5b5SEd Maste# Use ${DEBUGDIR} for base system debug files, else .debug subdirectory 1542442cc58SDag-Erling Smørgrav.if ${_SHLIBDIR} == "/boot" ||\ 15542f8c5b5SEd Maste ${SHLIBDIR:C%/lib(/.*)?$%/lib%} == "/lib" ||\ 15629f29742SBryan Drewery ${SHLIBDIR:C%/usr/(tests/)?lib(32|exec)?(/.*)?%/usr/lib%} == "/usr/lib" 1572442cc58SDag-Erling SmørgravDEBUGFILEDIR=${DEBUGDIR}${_SHLIBDIR} 15842f8c5b5SEd Maste.else 1592442cc58SDag-Erling SmørgravDEBUGFILEDIR=${_SHLIBDIR}/.debug 160a324b0f0SBryan Drewery.endif 161a324b0f0SBryan Drewery.if !exists(${DESTDIR}${DEBUGFILEDIR}) 16242f8c5b5SEd MasteDEBUGMKDIR= 16342f8c5b5SEd Maste.endif 1640d1fce25SEd Maste.else 1650d1fce25SEd MasteSHLIB_NAME_FULL=${SHLIB_NAME} 1660d1fce25SEd Maste.endif 1670d1fce25SEd Maste.endif 1680d1fce25SEd Maste 1692da4e470SAlexander Kabaev.include <bsd.symver.mk> 170ab52e991SDaniel Eischen 171046f4ebaSAlexander Kabaev# Allow libraries to specify their own version map or have it 1722da4e470SAlexander Kabaev# automatically generated (see bsd.symver.mk above). 173dc9f26d3SRuslan Ermilov.if ${MK_SYMVER} == "yes" && !empty(VERSION_MAP) 1740d1fce25SEd Maste${SHLIB_NAME_FULL}: ${VERSION_MAP} 175ab52e991SDaniel EischenLDFLAGS+= -Wl,--version-script=${VERSION_MAP} 176ab52e991SDaniel Eischen.endif 177ab52e991SDaniel Eischen 1784d7d5e7cSRuslan Ermilov.if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME) 1794d7d5e7cSRuslan ErmilovOBJS+= ${SRCS:N*.h:R:S/$/.o/} 180491b2960SBryan DreweryCLEANFILES+= ${OBJS} ${STATICOBJS} 1814d7d5e7cSRuslan Ermilov.endif 1824d7d5e7cSRuslan Ermilov 1832a53f3fbSRuslan Ermilov.if defined(LIB) && !empty(LIB) 1845551c573SBaptiste Daroussin_LIBS= lib${LIB_PRIVATE}${LIB}.a 185afe61c15SRodney W. Grimes 186*5852ae2dSBryan Drewerylib${LIB_PRIVATE}${LIB}.a: ${OBJS} ${STATICOBJS} 187f45b036fSPeter Wemm @${ECHO} building static ${LIB} library 1882a53f3fbSRuslan Ermilov @rm -f ${.TARGET} 18960c07d1cSRui Paulo ${AR} ${ARFLAGS} ${.TARGET} `NM='${NM}' NMFLAGS='${NMFLAGS}' lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD} 190f1c8f60bSDag-Erling Smørgrav ${RANLIB} ${RANLIBFLAGS} ${.TARGET} 1914d7d5e7cSRuslan Ermilov.endif 192afe61c15SRodney W. Grimes 1932a53f3fbSRuslan Ermilov.if !defined(INTERNALLIB) 1942a53f3fbSRuslan Ermilov 1955740a2b6SRuslan Ermilov.if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB) 1965551c573SBaptiste Daroussin_LIBS+= lib${LIB_PRIVATE}${LIB}_p.a 1972a53f3fbSRuslan ErmilovPOBJS+= ${OBJS:.o=.po} ${STATICOBJS:.o=.po} 19810f696a5SBryan DreweryDEPENDOBJS+= ${POBJS} 199491b2960SBryan DreweryCLEANFILES+= ${POBJS} 2002a53f3fbSRuslan Ermilov 201*5852ae2dSBryan Drewerylib${LIB_PRIVATE}${LIB}_p.a: ${POBJS} 20280c02d59SBruce Evans @${ECHO} building profiled ${LIB} library 2032a53f3fbSRuslan Ermilov @rm -f ${.TARGET} 20460c07d1cSRui Paulo ${AR} ${ARFLAGS} ${.TARGET} `NM='${NM}' NMFLAGS='${NMFLAGS}' lorder ${POBJS} | tsort -q` ${ARADD} 205f1c8f60bSDag-Erling Smørgrav ${RANLIB} ${RANLIBFLAGS} ${.TARGET} 20686af0db9SBruce Evans.endif 2073585b293SGarrett Wollman 2084d7d5e7cSRuslan Ermilov.if defined(SHLIB_NAME) || \ 2094d7d5e7cSRuslan Ermilov defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 210f92bdbd0SJohn PolstraSOBJS+= ${OBJS:.o=.So} 21110f696a5SBryan DreweryDEPENDOBJS+= ${SOBJS} 212491b2960SBryan DreweryCLEANFILES+= ${SOBJS} 2134d7d5e7cSRuslan Ermilov.endif 2148c05a446SPeter Wemm 215f67eb0dcSJohn Polstra.if defined(SHLIB_NAME) 2162a53f3fbSRuslan Ermilov_LIBS+= ${SHLIB_NAME} 2172a53f3fbSRuslan Ermilov 218ee05c0f1SBryan DrewerySOLINKOPTS+= -shared -Wl,-x 21970d099afSBaptiste Daroussin.if defined(LD_FATAL_WARNINGS) && ${LD_FATAL_WARNINGS} == "no" 22070d099afSBaptiste DaroussinSOLINKOPTS+= -Wl,--no-fatal-warnings 22170d099afSBaptiste Daroussin.else 22270d099afSBaptiste DaroussinSOLINKOPTS+= -Wl,--fatal-warnings 22370d099afSBaptiste Daroussin.endif 22470d099afSBaptiste DaroussinSOLINKOPTS+= -Wl,--warn-shared-textrel 225bd4632e6SKonstantin Belousov 226c2c48445SRui Paulo.if target(beforelinking) 227593c0b49SMark Johnstonbeforelinking: ${SOBJS} 228593c0b49SMark Johnston${SHLIB_NAME_FULL}: beforelinking 229c2c48445SRui Paulo.endif 230f187ca8cSSimon J. Gerraty 231f187ca8cSSimon J. Gerraty.if defined(SHLIB_LINK) 232f187ca8cSSimon J. Gerraty.if defined(SHLIB_LDSCRIPT) && !empty(SHLIB_LDSCRIPT) && exists(${.CURDIR}/${SHLIB_LDSCRIPT}) 233*5852ae2dSBryan Drewery${SHLIB_LINK:R}.ld: ${.CURDIR}/${SHLIB_LDSCRIPT} 2341b337a34SBryan Drewery sed -e 's,@@SHLIB@@,${_SHLIBDIR}/${SHLIB_NAME},g' \ 2351b337a34SBryan Drewery -e 's,@@LIBDIR@@,${_LIBDIR},g' \ 236f187ca8cSSimon J. Gerraty ${.ALLSRC} > ${.TARGET} 237f187ca8cSSimon J. Gerraty 238f187ca8cSSimon J. Gerraty${SHLIB_NAME_FULL}: ${SHLIB_LINK:R}.ld 239491b2960SBryan DreweryCLEANFILES+= ${SHLIB_LINK:R}.ld 240f187ca8cSSimon J. Gerraty.endif 241491b2960SBryan DreweryCLEANFILES+= ${SHLIB_LINK} 242f187ca8cSSimon J. Gerraty.endif 243f187ca8cSSimon J. Gerraty 244*5852ae2dSBryan Drewery${SHLIB_NAME_FULL}: ${SOBJS} 245f67eb0dcSJohn Polstra @${ECHO} building shared library ${SHLIB_NAME} 246e97696b5SEd Maste @rm -f ${SHLIB_NAME} ${SHLIB_LINK} 247f187ca8cSSimon J. Gerraty.if defined(SHLIB_LINK) && !commands(${SHLIB_LINK:R}.ld) 248dc6d22c9SBaptiste Daroussin @${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},development} ${SHLIB_NAME} ${SHLIB_LINK} 249f67eb0dcSJohn Polstra.endif 2509160419cSBryan Drewery ${_LD:N${CCACHE_BIN}} ${LDFLAGS} ${SSP_CFLAGS} ${SOLINKOPTS} \ 2511340597dSRuslan Ermilov -o ${.TARGET} -Wl,-soname,${SONAME} \ 25260c07d1cSRui Paulo `NM='${NM}' NMFLAGS='${NMFLAGS}' lorder ${SOBJS} | tsort -q` ${LDADD} 25383cb5baeSMax Khon.if ${MK_CTF} != "no" 254cd49c2e8SMax Khon ${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${SOBJS} 255cd49c2e8SMax Khon.endif 256e97696b5SEd Maste 25742f8c5b5SEd Maste.if ${MK_DEBUG_FILES} != "no" 25842f8c5b5SEd MasteCLEANFILES+= ${SHLIB_NAME_FULL} ${SHLIB_NAME}.debug 259*5852ae2dSBryan Drewery${SHLIB_NAME}: ${SHLIB_NAME_FULL} ${SHLIB_NAME}.debug 26042f8c5b5SEd Maste ${OBJCOPY} --strip-debug --add-gnu-debuglink=${SHLIB_NAME}.debug \ 261593c0b49SMark Johnston ${SHLIB_NAME_FULL} ${.TARGET} 262e97696b5SEd Maste 263*5852ae2dSBryan Drewery${SHLIB_NAME}.debug: ${SHLIB_NAME_FULL} 264593c0b49SMark Johnston ${OBJCOPY} --only-keep-debug ${SHLIB_NAME_FULL} ${.TARGET} 265e97696b5SEd Maste.endif 26622f3da67SMark Johnston.endif #defined(SHLIB_NAME) 2673585b293SGarrett Wollman 268e1fe3dbaSRuslan Ermilov.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && ${MK_TOOLCHAIN} != "no" 2695551c573SBaptiste Daroussin_LIBS+= lib${LIB_PRIVATE}${LIB}_pic.a 2702a53f3fbSRuslan Ermilov 271*5852ae2dSBryan Drewerylib${LIB_PRIVATE}${LIB}_pic.a: ${SOBJS} 27280c02d59SBruce Evans @${ECHO} building special pic ${LIB} library 2732a53f3fbSRuslan Ermilov @rm -f ${.TARGET} 274b322948eSBryan Drewery ${AR} ${ARFLAGS} ${.TARGET} ${SOBJS} ${ARADD} 275f1c8f60bSDag-Erling Smørgrav ${RANLIB} ${RANLIBFLAGS} ${.TARGET} 27686af0db9SBruce Evans.endif 277afe61c15SRodney W. Grimes 278ab7a2947SRuslan Ermilov.if defined(WANT_LINT) && !defined(NO_LINT) && defined(LIB) && !empty(LIB) 2792a53f3fbSRuslan ErmilovLINTLIB= llib-l${LIB}.ln 2802a53f3fbSRuslan Ermilov_LIBS+= ${LINTLIB} 2812a53f3fbSRuslan ErmilovLINTOBJS+= ${SRCS:M*.c:.c=.ln} 282491b2960SBryan DreweryCLEANFILES+= ${LINTOBJS} 2832a53f3fbSRuslan Ermilov 284*5852ae2dSBryan Drewery${LINTLIB}: ${LINTOBJS} 2852a53f3fbSRuslan Ermilov @${ECHO} building lint library ${.TARGET} 2862a53f3fbSRuslan Ermilov @rm -f ${.TARGET} 287766f7d6eSMark Murray ${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} 288766f7d6eSMark Murray.endif 289afe61c15SRodney W. Grimes 29084aac273SHartmut Brandt.endif # !defined(INTERNALLIB) 2912a53f3fbSRuslan Ermilov 2927750ad47SMarcel Moolenaar.if defined(_SKIP_BUILD) 2937750ad47SMarcel Moolenaarall: 2947750ad47SMarcel Moolenaar.else 295491b2960SBryan Drewery.if defined(_LIBS) && !empty(_LIBS) 2962a53f3fbSRuslan Ermilovall: ${_LIBS} 297491b2960SBryan DreweryCLEANFILES+= ${_LIBS} 298491b2960SBryan Drewery.endif 2992a53f3fbSRuslan Ermilov 300740e5b17SBryan Drewery.if ${MK_MAN} != "no" && !defined(LIBRARIES_ONLY) 301f1702f87SBryan Dreweryall: all-man 302afe61c15SRodney W. Grimes.endif 3037750ad47SMarcel Moolenaar.endif 304afe61c15SRodney W. Grimes 305fcccc50bSBruce Evans_EXTRADEPEND: 306a399b3b4SRuslan Ermilov.if !defined(NO_EXTRADEPEND) && defined(SHLIB_NAME) 307e3ace70eSBruce Evans.if defined(DPADD) && !empty(DPADD) 30837fd8bc2SJohn Baldwin echo ${SHLIB_NAME_FULL}: ${DPADD} >> ${DEPENDFILE} 3098c05a446SPeter Wemm.endif 3108c05a446SPeter Wemm.endif 311afe61c15SRodney W. Grimes 312afe61c15SRodney W. Grimes.if !target(install) 313afe61c15SRodney W. Grimes 314c33bd5d6SRuslan Ermilov.if defined(PRECIOUSLIB) 31500fbd407SRuslan Ermilov.if !defined(NO_FSCHG) 316c59ae063SGarrett WollmanSHLINSTALLFLAGS+= -fschg 317c59ae063SGarrett Wollman.endif 318c33bd5d6SRuslan ErmilovSHLINSTALLFLAGS+= -S 319c33bd5d6SRuslan Ermilov.endif 320c59ae063SGarrett Wollman 321e902c1bbSTim Vanderhoek_INSTALLFLAGS:= ${INSTALLFLAGS} 322e902c1bbSTim Vanderhoek.for ie in ${INSTALLFLAGS_EDIT} 323e902c1bbSTim Vanderhoek_INSTALLFLAGS:= ${_INSTALLFLAGS${ie}} 324e902c1bbSTim Vanderhoek.endfor 3251a66233dSRuslan Ermilov_SHLINSTALLFLAGS:= ${SHLINSTALLFLAGS} 326e902c1bbSTim Vanderhoek.for ie in ${INSTALLFLAGS_EDIT} 327e902c1bbSTim Vanderhoek_SHLINSTALLFLAGS:= ${_SHLINSTALLFLAGS${ie}} 328e902c1bbSTim Vanderhoek.endfor 329e902c1bbSTim Vanderhoek 3304d7d5e7cSRuslan Ermilov.if !defined(INTERNALLIB) 331b25a566dSRuslan Ermilovrealinstall: _libinstall 332badb7c1cSRuslan Ermilov.ORDER: beforeinstall _libinstall 333b25a566dSRuslan Ermilov_libinstall: 3345551c573SBaptiste Daroussin.if defined(LIB) && !empty(LIB) && ${MK_INSTALLLIB} != "no" 335dc6d22c9SBaptiste Daroussin ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},development} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 33661c20fc7SBryan Drewery ${_INSTALLFLAGS} lib${LIB_PRIVATE}${LIB}.a ${DESTDIR}${_LIBDIR}/ 3372a53f3fbSRuslan Ermilov.endif 3385551c573SBaptiste Daroussin.if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB) 339dc6d22c9SBaptiste Daroussin ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},profile} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 34061c20fc7SBryan Drewery ${_INSTALLFLAGS} lib${LIB_PRIVATE}${LIB}_p.a ${DESTDIR}${_LIBDIR}/ 341afe61c15SRodney W. Grimes.endif 342a89bd620SDavid E. O'Brien.if defined(SHLIB_NAME) 343dc6d22c9SBaptiste Daroussin ${INSTALL} ${TAG_ARGS} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 344e902c1bbSTim Vanderhoek ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \ 34561c20fc7SBryan Drewery ${SHLIB_NAME} ${DESTDIR}${_SHLIBDIR}/ 34642f8c5b5SEd Maste.if ${MK_DEBUG_FILES} != "no" 34742f8c5b5SEd Maste.if defined(DEBUGMKDIR) 348b626f5a7SGlen Barber ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},debug} -d ${DESTDIR}${DEBUGFILEDIR}/ 34942f8c5b5SEd Maste.endif 350dc6d22c9SBaptiste Daroussin ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},debug} -o ${LIBOWN} -g ${LIBGRP} -m ${DEBUGMODE} \ 351facaa6eeSEd Maste ${_INSTALLFLAGS} \ 35261c20fc7SBryan Drewery ${SHLIB_NAME}.debug ${DESTDIR}${DEBUGFILEDIR}/ 353e97696b5SEd Maste.endif 3545551c573SBaptiste Daroussin.if defined(SHLIB_LINK) 355f187ca8cSSimon J. Gerraty.if commands(${SHLIB_LINK:R}.ld) 356dc6d22c9SBaptiste Daroussin ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},development} -S -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 357f187ca8cSSimon J. Gerraty ${_INSTALLFLAGS} ${SHLIB_LINK:R}.ld \ 3582442cc58SDag-Erling Smørgrav ${DESTDIR}${_LIBDIR}/${SHLIB_LINK} 359f051a5b3SColin Percival.for _SHLIB_LINK_LINK in ${SHLIB_LDSCRIPT_LINKS} 360f051a5b3SColin Percival ${INSTALL_SYMLINK} ${SHLIB_LINK} ${DESTDIR}${_LIBDIR}/${_SHLIB_LINK_LINK} 361f051a5b3SColin Percival.endfor 36251a65f35SJeremie Le Hen.else 3632442cc58SDag-Erling Smørgrav.if ${_SHLIBDIR} == ${_LIBDIR} 364a0b88a5dSBaptiste Daroussin.if ${SHLIB_LINK:Mlib*} 365b5ff185eSBaptiste Daroussin ${INSTALL_RSYMLINK} ${TAG_ARGS:D${TAG_ARGS},development} ${SHLIB_NAME} ${DESTDIR}${_LIBDIR}/${SHLIB_LINK} 366be01c222SRuslan Ermilov.else 367b5ff185eSBaptiste Daroussin ${INSTALL_RSYMLINK} ${TAG_ARGS} ${DESTDIR}${_SHLIBDIR}/${SHLIB_NAME} \ 3682442cc58SDag-Erling Smørgrav ${DESTDIR}${_LIBDIR}/${SHLIB_LINK} 369a0b88a5dSBaptiste Daroussin.endif 370a0b88a5dSBaptiste Daroussin.else 371a0b88a5dSBaptiste Daroussin.if ${SHLIB_LINK:Mlib*} 372a2fef6b9SBaptiste Daroussin ${INSTALL_RSYMLINK} ${TAG_ARGS:D${TAG_ARGS},development} ${DESTDIR}${_SHLIBDIR}/${SHLIB_NAME} \ 373a2fef6b9SBaptiste Daroussin ${DESTDIR}${_LIBDIR}/${SHLIB_LINK} 374a0b88a5dSBaptiste Daroussin.else 375a2fef6b9SBaptiste Daroussin ${INSTALL_RSYMLINK} ${TAG_ARGS} ${DESTDIR}${_SHLIBDIR}/${SHLIB_NAME} \ 376a0b88a5dSBaptiste Daroussin ${DESTDIR}${_LIBDIR}/${SHLIB_LINK} 377a0b88a5dSBaptiste Daroussin.endif 3782442cc58SDag-Erling Smørgrav.if exists(${DESTDIR}${_LIBDIR}/${SHLIB_NAME}) 3792442cc58SDag-Erling Smørgrav -chflags noschg ${DESTDIR}${_LIBDIR}/${SHLIB_NAME} 3802442cc58SDag-Erling Smørgrav rm -f ${DESTDIR}${_LIBDIR}/${SHLIB_NAME} 381be01c222SRuslan Ermilov.endif 382eb7f25e1SPeter Wemm.endif 38351a65f35SJeremie Le Hen.endif # SHLIB_LDSCRIPT 38451a65f35SJeremie Le Hen.endif # SHLIB_LINK 38551a65f35SJeremie Le Hen.endif # SHIB_NAME 3865551c573SBaptiste Daroussin.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && ${MK_TOOLCHAIN} != "no" 387dc6d22c9SBaptiste Daroussin ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},development} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 38861c20fc7SBryan Drewery ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${_LIBDIR}/ 3893585b293SGarrett Wollman.endif 390ab7a2947SRuslan Ermilov.if defined(WANT_LINT) && !defined(NO_LINT) && defined(LIB) && !empty(LIB) 391dc6d22c9SBaptiste Daroussin ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},development} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 39261c20fc7SBryan Drewery ${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR}/ 393c7b111cbSRuslan Ermilov.endif 39484aac273SHartmut Brandt.endif # !defined(INTERNALLIB) 395c7b111cbSRuslan Ermilov 396afd9b463SBrooks Davis.if !defined(LIBRARIES_ONLY) 397b9f5e422SAlexey Zelkin.include <bsd.nls.mk> 398af2dc868SRuslan Ermilov.include <bsd.files.mk> 3995d862037SRuslan Ermilov.include <bsd.incs.mk> 4009b4f4918SBaptiste Daroussin.include <bsd.confs.mk> 401afd9b463SBrooks Davis.endif 402afd9b463SBrooks Davis 40384f94a79SRuslan Ermilov.include <bsd.links.mk> 404afe61c15SRodney W. Grimes 405dda3ce5aSBrooks Davis.if ${MK_MAN} != "no" && !defined(LIBRARIES_ONLY) 406f1702f87SBryan Dreweryrealinstall: maninstall 407f1702f87SBryan Drewery.ORDER: beforeinstall maninstall 408b90dab70SRuslan Ermilov.endif 409b90dab70SRuslan Ermilov 410afe61c15SRodney W. Grimes.endif 411afe61c15SRodney W. Grimes 412afe61c15SRodney W. Grimes.if !target(lint) 413b25a566dSRuslan Ermilovlint: ${SRCS:M*.c} 4145741a42fSMark Murray ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} 415afe61c15SRodney W. Grimes.endif 416afe61c15SRodney W. Grimes 417afd9b463SBrooks Davis.if ${MK_MAN} != "no" && !defined(LIBRARIES_ONLY) 418afe61c15SRodney W. Grimes.include <bsd.man.mk> 419918fb560SRuslan Ermilov.endif 4203585b293SGarrett Wollman 4214d7d5e7cSRuslan Ermilov.if defined(LIB) && !empty(LIB) 422d7beff08SBryan DreweryOBJS_DEPEND_GUESS+= ${SRCS:M*.h} 4236b14fdfaSRuslan Ermilov.for _S in ${SRCS:N*.[hly]} 424d7beff08SBryan DreweryOBJS_DEPEND_GUESS.${_S:R}.po= ${_S} 4256b14fdfaSRuslan Ermilov.endfor 4264d7d5e7cSRuslan Ermilov.endif 4274d7d5e7cSRuslan Ermilov.if defined(SHLIB_NAME) || \ 4284d7d5e7cSRuslan Ermilov defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 4296b14fdfaSRuslan Ermilov.for _S in ${SRCS:N*.[hly]} 430d7beff08SBryan DreweryOBJS_DEPEND_GUESS.${_S:R}.So= ${_S} 4316b14fdfaSRuslan Ermilov.endfor 43214172e46SBruce Evans.endif 43314172e46SBruce Evans 434d7beff08SBryan Drewery.include <bsd.dep.mk> 435aae63957SBryan Drewery.include <bsd.clang-analyze.mk> 436cd9a2f5cSJordan K. Hubbard.include <bsd.obj.mk> 437d510ecb4SKris Kennaway.include <bsd.sys.mk> 438