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 7215d02b7SBryan Drewery.if defined(LIB_CXX) 8215d02b7SBryan DreweryLIB= ${LIB_CXX} 9215d02b7SBryan Drewery_LD= ${CXX} 10215d02b7SBryan Drewery.else 11215d02b7SBryan Drewery_LD= ${CC} 12215d02b7SBryan Drewery.endif 13215d02b7SBryan Drewery 14f67eb0dcSJohn Polstra# Set up the variables controlling shared libraries. After this section, 15f67eb0dcSJohn Polstra# SHLIB_NAME will be defined only if we are to create a shared library. 16f67eb0dcSJohn Polstra# SHLIB_LINK will be defined only if we are to create a link to it. 17f67eb0dcSJohn Polstra# INSTALL_PIC_ARCHIVE will be defined only if we are to create a PIC archive. 18ab7a2947SRuslan Ermilov.if defined(NO_PIC) 19f67eb0dcSJohn Polstra.undef SHLIB_NAME 20f67eb0dcSJohn Polstra.undef INSTALL_PIC_ARCHIVE 21f67eb0dcSJohn Polstra.else 2210717e2eSDag-Erling Smørgrav.if !defined(SHLIB) && defined(LIB) 2310717e2eSDag-Erling SmørgravSHLIB= ${LIB} 2410717e2eSDag-Erling Smørgrav.endif 2510717e2eSDag-Erling Smørgrav.if !defined(SHLIB_NAME) && defined(SHLIB) && defined(SHLIB_MAJOR) 2610717e2eSDag-Erling SmørgravSHLIB_NAME= lib${SHLIB}.so.${SHLIB_MAJOR} 2742c0ad02SRuslan Ermilov.endif 2865d2bdc6SRuslan Ermilov.if defined(SHLIB_NAME) && !empty(SHLIB_NAME:M*.so.*) 2942c0ad02SRuslan ErmilovSHLIB_LINK?= ${SHLIB_NAME:R} 30f67eb0dcSJohn Polstra.endif 31f67eb0dcSJohn PolstraSONAME?= ${SHLIB_NAME} 32e782d0b5SPeter Wemm.endif 33e782d0b5SPeter Wemm 3441f89315SRuslan Ermilov.if defined(CRUNCH_CFLAGS) 353c9b8563SGordon TetlowCFLAGS+= ${CRUNCH_CFLAGS} 3641f89315SRuslan Ermilov.endif 373c9b8563SGordon Tetlow 384df1f59eSWarner Losh.if ${MK_ASSERT_DEBUG} == "no" 394df1f59eSWarner LoshCFLAGS+= -DNDEBUG 40e2e1ab1cSDavid E. O'BrienNO_WERROR= 414df1f59eSWarner Losh.endif 424df1f59eSWarner Losh 43e82b0b99SJordan K. Hubbard.if defined(DEBUG_FLAGS) 44e82b0b99SJordan K. HubbardCFLAGS+= ${DEBUG_FLAGS} 45770ac3b2SJohn Birrell 46e977d70fSMark Johnston.if ${MK_CTF} != "no" && ${DEBUG_FLAGS:M-g} != "" 47770ac3b2SJohn BirrellCTFFLAGS+= -g 48770ac3b2SJohn Birrell.endif 490d947ed1SEd Maste.else 50afe61c15SRodney W. GrimesSTRIP?= -s 51e82b0b99SJordan K. Hubbard.endif 52afe61c15SRodney W. Grimes 53*6c2fad0aSBaptiste Daroussin.if ${SHLIBDIR:M*lib32*} 54*6c2fad0aSBaptiste DaroussinTAGS+= lib32 55*6c2fad0aSBaptiste Daroussin.endif 56*6c2fad0aSBaptiste Daroussin 57dc6d22c9SBaptiste Daroussin.if defined(NO_ROOT) 58dc6d22c9SBaptiste Daroussin.if !defined(TAGS) || ! ${TAGS:Mpackage=*} 59ef3290ceSBaptiste DaroussinTAGS+= package=${PACKAGE:Uruntime} 60dc6d22c9SBaptiste Daroussin.endif 61dc6d22c9SBaptiste DaroussinTAG_ARGS= -T ${TAGS:[*]:S/ /,/g} 62dc6d22c9SBaptiste Daroussin.endif 63dc6d22c9SBaptiste Daroussin 6442f8c5b5SEd Maste.if ${MK_DEBUG_FILES} != "no" && empty(DEBUG_FLAGS:M-g) && \ 6542f8c5b5SEd Maste empty(DEBUG_FLAGS:M-gdwarf*) 6671b259d4SGlen BarberSHARED_CFLAGS+= -g 6771b259d4SGlen BarberSHARED_CXXFLAGS+= -g 6842f8c5b5SEd MasteCTFFLAGS+= -g 6942f8c5b5SEd Maste.endif 7042f8c5b5SEd Maste 711a5ed802SBruce Evans.include <bsd.libnames.mk> 721a5ed802SBruce Evans 73afe61c15SRodney W. Grimes# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries 74f92bdbd0SJohn Polstra# .So used for PIC object files 75afe61c15SRodney W. Grimes.SUFFIXES: 766d67f694SDimitry Andric.SUFFIXES: .out .o .po .So .S .asm .s .c .cc .cpp .cxx .C .f .y .l .ln 77766f7d6eSMark Murray 782a53f3fbSRuslan Ermilov.if !defined(PICFLAG) 7925faff34SWarner Losh.if ${MACHINE_CPUARCH} == "sparc64" 802a53f3fbSRuslan ErmilovPICFLAG=-fPIC 812a53f3fbSRuslan Ermilov.else 822a53f3fbSRuslan ErmilovPICFLAG=-fpic 832a53f3fbSRuslan Ermilov.endif 842a53f3fbSRuslan Ermilov.endif 852a53f3fbSRuslan Ermilov 8606d6e4fcSTom RhodesPO_FLAG=-pg 8706d6e4fcSTom Rhodes 882ba29593SDag-Erling Smørgrav.c.o: 892ba29593SDag-Erling Smørgrav ${CC} ${STATIC_CFLAGS} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 9078e7e3ecSMax Khon ${CTFCONVERT_CMD} 912ba29593SDag-Erling Smørgrav 92afe61c15SRodney W. Grimes.c.po: 932ba29593SDag-Erling Smørgrav ${CC} ${PO_FLAG} ${STATIC_CFLAGS} ${PO_CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 9478e7e3ecSMax Khon ${CTFCONVERT_CMD} 95afe61c15SRodney W. Grimes 96f92bdbd0SJohn Polstra.c.So: 972ba29593SDag-Erling Smørgrav ${CC} ${PICFLAG} -DPIC ${SHARED_CFLAGS} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} 9878e7e3ecSMax Khon ${CTFCONVERT_CMD} 993585b293SGarrett Wollman 10085d40046SDimitry Andric.cc.o .C.o .cpp.o .cxx.o: 1012ba29593SDag-Erling Smørgrav ${CXX} ${STATIC_CXXFLAGS} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 1022ba29593SDag-Erling Smørgrav 103c7cbe79eSDmitrij Tejblum.cc.po .C.po .cpp.po .cxx.po: 1042ba29593SDag-Erling Smørgrav ${CXX} ${PO_FLAG} ${STATIC_CXXFLAGS} ${PO_CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 1053585b293SGarrett Wollman 106f92bdbd0SJohn Polstra.cc.So .C.So .cpp.So .cxx.So: 1072ba29593SDag-Erling Smørgrav ${CXX} ${PICFLAG} -DPIC ${SHARED_CXXFLAGS} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} 1083585b293SGarrett Wollman 1093585b293SGarrett Wollman.f.po: 1109c8ff5b5SJohn Polstra ${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 11178e7e3ecSMax Khon ${CTFCONVERT_CMD} 1123585b293SGarrett Wollman 113f92bdbd0SJohn Polstra.f.So: 1143585b293SGarrett Wollman ${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC} 11578e7e3ecSMax Khon ${CTFCONVERT_CMD} 1163585b293SGarrett Wollman 117d58e932fSRuslan Ermilov.s.po .s.So: 118f79d11b7SRuslan Ermilov ${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC} 11978e7e3ecSMax Khon ${CTFCONVERT_CMD} 1203585b293SGarrett Wollman 121d58e932fSRuslan Ermilov.asm.po: 1225ada7d99SKonstantin Belousov ${CC} -x assembler-with-cpp -DPROF ${PO_CFLAGS} ${ACFLAGS} \ 1235ada7d99SKonstantin Belousov -c ${.IMPSRC} -o ${.TARGET} 12478e7e3ecSMax Khon ${CTFCONVERT_CMD} 125d58e932fSRuslan Ermilov 126d58e932fSRuslan Ermilov.asm.So: 1275ada7d99SKonstantin Belousov ${CC} -x assembler-with-cpp ${PICFLAG} -DPIC ${CFLAGS} ${ACFLAGS} \ 128d58e932fSRuslan Ermilov -c ${.IMPSRC} -o ${.TARGET} 12978e7e3ecSMax Khon ${CTFCONVERT_CMD} 130d58e932fSRuslan Ermilov 1313585b293SGarrett Wollman.S.po: 1325ada7d99SKonstantin Belousov ${CC} -DPROF ${PO_CFLAGS} ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET} 13378e7e3ecSMax Khon ${CTFCONVERT_CMD} 1343585b293SGarrett Wollman 135f92bdbd0SJohn Polstra.S.So: 1365ada7d99SKonstantin Belousov ${CC} ${PICFLAG} -DPIC ${CFLAGS} ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET} 13778e7e3ecSMax Khon ${CTFCONVERT_CMD} 1383585b293SGarrett Wollman 1399c851217SRui Pauloall: beforebuild .WAIT 1409c851217SRui Paulobeforebuild: objwarn 1412a53f3fbSRuslan Ermilov 1422442cc58SDag-Erling Smørgrav.if defined(PRIVATELIB) 1432442cc58SDag-Erling Smørgrav_LIBDIR:=${LIBPRIVATEDIR} 1442442cc58SDag-Erling Smørgrav_SHLIBDIR:=${LIBPRIVATEDIR} 1452442cc58SDag-Erling Smørgrav.else 1462442cc58SDag-Erling Smørgrav_LIBDIR:=${LIBDIR} 1472442cc58SDag-Erling Smørgrav_SHLIBDIR:=${SHLIBDIR} 1482442cc58SDag-Erling Smørgrav.endif 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" ||\ 15642f8c5b5SEd Maste ${SHLIBDIR:C%/usr/lib(32)?(/.*)?%/usr/lib%} == "/usr/lib" 1572442cc58SDag-Erling SmørgravDEBUGFILEDIR=${DEBUGDIR}${_SHLIBDIR} 15842f8c5b5SEd Maste.else 1592442cc58SDag-Erling SmørgravDEBUGFILEDIR=${_SHLIBDIR}/.debug 16042f8c5b5SEd MasteDEBUGMKDIR= 16142f8c5b5SEd Maste.endif 1620d1fce25SEd Maste.else 1630d1fce25SEd MasteSHLIB_NAME_FULL=${SHLIB_NAME} 1640d1fce25SEd Maste.endif 1650d1fce25SEd Maste.endif 1660d1fce25SEd Maste 1672da4e470SAlexander Kabaev.include <bsd.symver.mk> 168ab52e991SDaniel Eischen 169046f4ebaSAlexander Kabaev# Allow libraries to specify their own version map or have it 1702da4e470SAlexander Kabaev# automatically generated (see bsd.symver.mk above). 171dc9f26d3SRuslan Ermilov.if ${MK_SYMVER} == "yes" && !empty(VERSION_MAP) 1720d1fce25SEd Maste${SHLIB_NAME_FULL}: ${VERSION_MAP} 173ab52e991SDaniel EischenLDFLAGS+= -Wl,--version-script=${VERSION_MAP} 174ab52e991SDaniel Eischen.endif 175ab52e991SDaniel Eischen 1762442cc58SDag-Erling Smørgrav.if defined(USEPRIVATELIB) 177d029c3aaSBaptiste DaroussinLDFLAGS+= -rpath ${LIBPRIVATEDIR} 1782442cc58SDag-Erling Smørgrav.endif 1792442cc58SDag-Erling Smørgrav 1804d7d5e7cSRuslan Ermilov.if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME) 1814d7d5e7cSRuslan ErmilovOBJS+= ${SRCS:N*.h:R:S/$/.o/} 18249217bc5SSimon J. GerratyNOPATH_FILES+= ${OBJS} 1834d7d5e7cSRuslan Ermilov.endif 1844d7d5e7cSRuslan Ermilov 1852a53f3fbSRuslan Ermilov.if defined(LIB) && !empty(LIB) 1865aa23756SDavid E. O'Brien_LIBS= lib${LIB}.a 187afe61c15SRodney W. Grimes 1882a53f3fbSRuslan Ermilovlib${LIB}.a: ${OBJS} ${STATICOBJS} 189f45b036fSPeter Wemm @${ECHO} building static ${LIB} library 1902a53f3fbSRuslan Ermilov @rm -f ${.TARGET} 19137a60314SEitan Adler @${AR} ${ARFLAGS} ${.TARGET} `NM='${NM}' lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD} 192f1c8f60bSDag-Erling Smørgrav ${RANLIB} ${RANLIBFLAGS} ${.TARGET} 1934d7d5e7cSRuslan Ermilov.endif 194afe61c15SRodney W. Grimes 1952a53f3fbSRuslan Ermilov.if !defined(INTERNALLIB) 1962a53f3fbSRuslan Ermilov 1975740a2b6SRuslan Ermilov.if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB) 1982a53f3fbSRuslan Ermilov_LIBS+= lib${LIB}_p.a 1992a53f3fbSRuslan ErmilovPOBJS+= ${OBJS:.o=.po} ${STATICOBJS:.o=.po} 20049217bc5SSimon J. GerratyNOPATH_FILES+= ${POBJS} 2012a53f3fbSRuslan Ermilov 2022a53f3fbSRuslan Ermilovlib${LIB}_p.a: ${POBJS} 20380c02d59SBruce Evans @${ECHO} building profiled ${LIB} library 2042a53f3fbSRuslan Ermilov @rm -f ${.TARGET} 20537a60314SEitan Adler @${AR} ${ARFLAGS} ${.TARGET} `NM='${NM}' lorder ${POBJS} | tsort -q` ${ARADD} 206f1c8f60bSDag-Erling Smørgrav ${RANLIB} ${RANLIBFLAGS} ${.TARGET} 20786af0db9SBruce Evans.endif 2083585b293SGarrett Wollman 2094d7d5e7cSRuslan Ermilov.if defined(SHLIB_NAME) || \ 2104d7d5e7cSRuslan Ermilov defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 211f92bdbd0SJohn PolstraSOBJS+= ${OBJS:.o=.So} 21249217bc5SSimon J. GerratyNOPATH_FILES+= ${SOBJS} 2134d7d5e7cSRuslan Ermilov.endif 2148c05a446SPeter Wemm 215f67eb0dcSJohn Polstra.if defined(SHLIB_NAME) 2162a53f3fbSRuslan Ermilov_LIBS+= ${SHLIB_NAME} 2172a53f3fbSRuslan Ermilov 218bd4632e6SKonstantin BelousovSOLINKOPTS= -shared -Wl,-x 219bd4632e6SKonstantin Belousov.if !defined(ALLOW_SHARED_TEXTREL) 22070d099afSBaptiste Daroussin.if defined(LD_FATAL_WARNINGS) && ${LD_FATAL_WARNINGS} == "no" 22170d099afSBaptiste DaroussinSOLINKOPTS+= -Wl,--no-fatal-warnings 22270d099afSBaptiste Daroussin.else 22370d099afSBaptiste DaroussinSOLINKOPTS+= -Wl,--fatal-warnings 22470d099afSBaptiste Daroussin.endif 22570d099afSBaptiste DaroussinSOLINKOPTS+= -Wl,--warn-shared-textrel 226bd4632e6SKonstantin Belousov.endif 227bd4632e6SKonstantin Belousov 228c2c48445SRui Paulo.if target(beforelinking) 229593c0b49SMark Johnstonbeforelinking: ${SOBJS} 230593c0b49SMark Johnston${SHLIB_NAME_FULL}: beforelinking 231c2c48445SRui Paulo.endif 232593c0b49SMark Johnston${SHLIB_NAME_FULL}: ${SOBJS} 233f67eb0dcSJohn Polstra @${ECHO} building shared library ${SHLIB_NAME} 234e97696b5SEd Maste @rm -f ${SHLIB_NAME} ${SHLIB_LINK} 235f67eb0dcSJohn Polstra.if defined(SHLIB_LINK) 236dc6d22c9SBaptiste Daroussin @${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},development} ${SHLIB_NAME} ${SHLIB_LINK} 237f67eb0dcSJohn Polstra.endif 238215d02b7SBryan Drewery ${_LD} ${LDFLAGS} ${SSP_CFLAGS} ${SOLINKOPTS} \ 2391340597dSRuslan Ermilov -o ${.TARGET} -Wl,-soname,${SONAME} \ 2401340597dSRuslan Ermilov `NM='${NM}' lorder ${SOBJS} | tsort -q` ${LDADD} 24183cb5baeSMax Khon.if ${MK_CTF} != "no" 242cd49c2e8SMax Khon ${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${SOBJS} 243cd49c2e8SMax Khon.endif 244e97696b5SEd Maste 24542f8c5b5SEd Maste.if ${MK_DEBUG_FILES} != "no" 24642f8c5b5SEd MasteCLEANFILES+= ${SHLIB_NAME_FULL} ${SHLIB_NAME}.debug 24742f8c5b5SEd Maste${SHLIB_NAME}: ${SHLIB_NAME_FULL} ${SHLIB_NAME}.debug 24842f8c5b5SEd Maste ${OBJCOPY} --strip-debug --add-gnu-debuglink=${SHLIB_NAME}.debug \ 249593c0b49SMark Johnston ${SHLIB_NAME_FULL} ${.TARGET} 250e97696b5SEd Maste 25142f8c5b5SEd Maste${SHLIB_NAME}.debug: ${SHLIB_NAME_FULL} 252593c0b49SMark Johnston ${OBJCOPY} --only-keep-debug ${SHLIB_NAME_FULL} ${.TARGET} 253e97696b5SEd Maste.endif 25422f3da67SMark Johnston.endif #defined(SHLIB_NAME) 2553585b293SGarrett Wollman 256e1fe3dbaSRuslan Ermilov.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && ${MK_TOOLCHAIN} != "no" 2572a53f3fbSRuslan Ermilov_LIBS+= lib${LIB}_pic.a 2582a53f3fbSRuslan Ermilov 2592a53f3fbSRuslan Ermilovlib${LIB}_pic.a: ${SOBJS} 26080c02d59SBruce Evans @${ECHO} building special pic ${LIB} library 2612a53f3fbSRuslan Ermilov @rm -f ${.TARGET} 26237a60314SEitan Adler @${AR} ${ARFLAGS} ${.TARGET} ${SOBJS} ${ARADD} 263f1c8f60bSDag-Erling Smørgrav ${RANLIB} ${RANLIBFLAGS} ${.TARGET} 26486af0db9SBruce Evans.endif 265afe61c15SRodney W. Grimes 266ab7a2947SRuslan Ermilov.if defined(WANT_LINT) && !defined(NO_LINT) && defined(LIB) && !empty(LIB) 2672a53f3fbSRuslan ErmilovLINTLIB= llib-l${LIB}.ln 2682a53f3fbSRuslan Ermilov_LIBS+= ${LINTLIB} 2692a53f3fbSRuslan ErmilovLINTOBJS+= ${SRCS:M*.c:.c=.ln} 27049217bc5SSimon J. GerratyNOPATH_FILES+= ${LINTOBJS} 2712a53f3fbSRuslan Ermilov 272766f7d6eSMark Murray${LINTLIB}: ${LINTOBJS} 2732a53f3fbSRuslan Ermilov @${ECHO} building lint library ${.TARGET} 2742a53f3fbSRuslan Ermilov @rm -f ${.TARGET} 275766f7d6eSMark Murray ${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} 276766f7d6eSMark Murray.endif 277afe61c15SRodney W. Grimes 27884aac273SHartmut Brandt.endif # !defined(INTERNALLIB) 2792a53f3fbSRuslan Ermilov 2802a53f3fbSRuslan Ermilovall: ${_LIBS} 2812a53f3fbSRuslan Ermilov 282e1fe3dbaSRuslan Ermilov.if ${MK_MAN} != "no" 2832a53f3fbSRuslan Ermilovall: _manpages 284afe61c15SRodney W. Grimes.endif 285afe61c15SRodney W. Grimes 286fcccc50bSBruce Evans_EXTRADEPEND: 287663e9677SBruce Evans @TMP=_depend$$$$; \ 288f92bdbd0SJohn Polstra sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \ 289663e9677SBruce Evans > $$TMP; \ 290663e9677SBruce Evans mv $$TMP ${DEPENDFILE} 291a399b3b4SRuslan Ermilov.if !defined(NO_EXTRADEPEND) && defined(SHLIB_NAME) 292e3ace70eSBruce Evans.if defined(DPADD) && !empty(DPADD) 29337fd8bc2SJohn Baldwin echo ${SHLIB_NAME_FULL}: ${DPADD} >> ${DEPENDFILE} 2948c05a446SPeter Wemm.endif 2958c05a446SPeter Wemm.endif 296afe61c15SRodney W. Grimes 297afe61c15SRodney W. Grimes.if !target(install) 298afe61c15SRodney W. Grimes 299c33bd5d6SRuslan Ermilov.if defined(PRECIOUSLIB) 30000fbd407SRuslan Ermilov.if !defined(NO_FSCHG) 301c59ae063SGarrett WollmanSHLINSTALLFLAGS+= -fschg 302c59ae063SGarrett Wollman.endif 303c33bd5d6SRuslan ErmilovSHLINSTALLFLAGS+= -S 304c33bd5d6SRuslan Ermilov.endif 305c59ae063SGarrett Wollman 306e902c1bbSTim Vanderhoek_INSTALLFLAGS:= ${INSTALLFLAGS} 307e902c1bbSTim Vanderhoek.for ie in ${INSTALLFLAGS_EDIT} 308e902c1bbSTim Vanderhoek_INSTALLFLAGS:= ${_INSTALLFLAGS${ie}} 309e902c1bbSTim Vanderhoek.endfor 3101a66233dSRuslan Ermilov_SHLINSTALLFLAGS:= ${SHLINSTALLFLAGS} 311e902c1bbSTim Vanderhoek.for ie in ${INSTALLFLAGS_EDIT} 312e902c1bbSTim Vanderhoek_SHLINSTALLFLAGS:= ${_SHLINSTALLFLAGS${ie}} 313e902c1bbSTim Vanderhoek.endfor 314e902c1bbSTim Vanderhoek 3154d7d5e7cSRuslan Ermilov.if !defined(INTERNALLIB) 316b25a566dSRuslan Ermilovrealinstall: _libinstall 317badb7c1cSRuslan Ermilov.ORDER: beforeinstall _libinstall 318b25a566dSRuslan Ermilov_libinstall: 319d029c3aaSBaptiste Daroussin.if defined(LIB) && !empty(LIB) && ${MK_INSTALLLIB} != "no" && !defined(PRIVATELIB) 320dc6d22c9SBaptiste Daroussin ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},development} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 3212442cc58SDag-Erling Smørgrav ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${_LIBDIR} 3222a53f3fbSRuslan Ermilov.endif 323d029c3aaSBaptiste Daroussin.if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB) && !defined(PRIVATELIB) 324dc6d22c9SBaptiste Daroussin ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},profile} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 3252442cc58SDag-Erling Smørgrav ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${_LIBDIR} 326afe61c15SRodney W. Grimes.endif 327a89bd620SDavid E. O'Brien.if defined(SHLIB_NAME) 328dc6d22c9SBaptiste Daroussin ${INSTALL} ${TAG_ARGS} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 329e902c1bbSTim Vanderhoek ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \ 3302442cc58SDag-Erling Smørgrav ${SHLIB_NAME} ${DESTDIR}${_SHLIBDIR} 33142f8c5b5SEd Maste.if ${MK_DEBUG_FILES} != "no" 33242f8c5b5SEd Maste.if defined(DEBUGMKDIR) 333dc6d22c9SBaptiste Daroussin ${INSTALL} -d ${DESTDIR}${DEBUGFILEDIR} 33442f8c5b5SEd Maste.endif 335dc6d22c9SBaptiste Daroussin ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},debug} -o ${LIBOWN} -g ${LIBGRP} -m ${DEBUGMODE} \ 336facaa6eeSEd Maste ${_INSTALLFLAGS} \ 33742f8c5b5SEd Maste ${SHLIB_NAME}.debug ${DESTDIR}${DEBUGFILEDIR} 338e97696b5SEd Maste.endif 339d029c3aaSBaptiste Daroussin.if defined(SHLIB_LINK) && !defined(PRIVATELIB) 34051a65f35SJeremie Le Hen# ${_SHLIBDIRPREFIX} and ${_LDSCRIPTROOT} are both needed when cross-building 34151a65f35SJeremie Le Hen# and when building 32 bits library shims. ${_SHLIBDIRPREFIX} is the directory 342ce8341fcSJeremie Le Hen# prefix where shared objects will be installed by the install target. 343ce8341fcSJeremie Le Hen# 344ce8341fcSJeremie Le Hen# ${_LDSCRIPTROOT} is the directory prefix that will be used when generating 345ce8341fcSJeremie Le Hen# ld(1) scripts. The crosstools' ld is configured to lookup libraries in an 346ce8341fcSJeremie Le Hen# alternative directory which is called "sysroot", so during buildworld binaries 347ce8341fcSJeremie Le Hen# won't be linked against the running system libraries but against the ones of 348ce8341fcSJeremie Le Hen# the current source tree. ${_LDSCRIPTROOT} behavior is twisted because of 349ce8341fcSJeremie Le Hen# the location where we store them: 350ce8341fcSJeremie Le Hen# - 64 bits libs are located under sysroot, so ${_LDSCRIPTROOT} must be empty 351ce8341fcSJeremie Le Hen# because ld(1) will manage to find them from sysroot; 35251a65f35SJeremie Le Hen# - 32 bits shims are not, so ${_LDSCRIPTROOT} is used to specify their full 353ce8341fcSJeremie Le Hen# path, outside of sysroot. 354ce8341fcSJeremie Le Hen# Note that ld(1) scripts are generated both during buildworld and 355ce8341fcSJeremie Le Hen# installworld; in the later case ${_LDSCRIPTROOT} must be obviously empty 356ce8341fcSJeremie Le Hen# because on the target system, libraries are meant to be looked up from /. 35751a65f35SJeremie Le Hen.if defined(SHLIB_LDSCRIPT) && !empty(SHLIB_LDSCRIPT) && exists(${.CURDIR}/${SHLIB_LDSCRIPT}) 3582442cc58SDag-Erling Smørgrav sed -e 's,@@SHLIB@@,${_LDSCRIPTROOT}${_SHLIBDIR}/${SHLIB_NAME},g' \ 3592442cc58SDag-Erling Smørgrav -e 's,@@LIBDIR@@,${_LDSCRIPTROOT}${_LIBDIR},g' \ 3602442cc58SDag-Erling Smørgrav ${.CURDIR}/${SHLIB_LDSCRIPT} > ${DESTDIR}${_LIBDIR}/${SHLIB_LINK:R}.ld 361dc6d22c9SBaptiste Daroussin ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},development} -S -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 3622442cc58SDag-Erling Smørgrav ${_INSTALLFLAGS} ${DESTDIR}${_LIBDIR}/${SHLIB_LINK:R}.ld \ 3632442cc58SDag-Erling Smørgrav ${DESTDIR}${_LIBDIR}/${SHLIB_LINK} 3642442cc58SDag-Erling Smørgrav rm -f ${DESTDIR}${_LIBDIR}/${SHLIB_LINK:R}.ld 365726ffc60SJeremie Le Hen 36651a65f35SJeremie Le Hen.else 3672442cc58SDag-Erling Smørgrav.if ${_SHLIBDIR} == ${_LIBDIR} 368a0b88a5dSBaptiste Daroussin.if ${SHLIB_LINK:Mlib*} 369dc6d22c9SBaptiste Daroussin ${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},development} ${SHLIB_NAME} ${DESTDIR}${_LIBDIR}/${SHLIB_LINK} 370be01c222SRuslan Ermilov.else 371a0b88a5dSBaptiste Daroussin ${INSTALL_SYMLINK} ${TAG_ARGS} ${SHLIB_NAME} ${DESTDIR}${_LIBDIR}/${SHLIB_LINK} 372a0b88a5dSBaptiste Daroussin.endif 373a0b88a5dSBaptiste Daroussin.else 374a0b88a5dSBaptiste Daroussin.if ${SHLIB_LINK:Mlib*} 375dc6d22c9SBaptiste Daroussin ${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},development} ${_SHLIBDIRPREFIX}${_SHLIBDIR}/${SHLIB_NAME} \ 3762442cc58SDag-Erling Smørgrav ${DESTDIR}${_LIBDIR}/${SHLIB_LINK} 377a0b88a5dSBaptiste Daroussin.else 378a0b88a5dSBaptiste Daroussin ${INSTALL_SYMLINK} ${TAG_ARGS} ${_SHLIBDIRPREFIX}${_SHLIBDIR}/${SHLIB_NAME} \ 379a0b88a5dSBaptiste Daroussin ${DESTDIR}${_LIBDIR}/${SHLIB_LINK} 380a0b88a5dSBaptiste Daroussin.endif 3812442cc58SDag-Erling Smørgrav.if exists(${DESTDIR}${_LIBDIR}/${SHLIB_NAME}) 3822442cc58SDag-Erling Smørgrav -chflags noschg ${DESTDIR}${_LIBDIR}/${SHLIB_NAME} 3832442cc58SDag-Erling Smørgrav rm -f ${DESTDIR}${_LIBDIR}/${SHLIB_NAME} 384be01c222SRuslan Ermilov.endif 385eb7f25e1SPeter Wemm.endif 38651a65f35SJeremie Le Hen.endif # SHLIB_LDSCRIPT 38751a65f35SJeremie Le Hen.endif # SHLIB_LINK 38851a65f35SJeremie Le Hen.endif # SHIB_NAME 389d029c3aaSBaptiste Daroussin.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && ${MK_TOOLCHAIN} != "no" && !defined(PRIVATELIB) 390dc6d22c9SBaptiste Daroussin ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},development} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 3912442cc58SDag-Erling Smørgrav ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${_LIBDIR} 3923585b293SGarrett Wollman.endif 393ab7a2947SRuslan Ermilov.if defined(WANT_LINT) && !defined(NO_LINT) && defined(LIB) && !empty(LIB) 394dc6d22c9SBaptiste Daroussin ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},development} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ 395c7b111cbSRuslan Ermilov ${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR} 396c7b111cbSRuslan Ermilov.endif 39784aac273SHartmut Brandt.endif # !defined(INTERNALLIB) 398c7b111cbSRuslan Ermilov 399afd9b463SBrooks Davis.if !defined(LIBRARIES_ONLY) 400b9f5e422SAlexey Zelkin.include <bsd.nls.mk> 401af2dc868SRuslan Ermilov.include <bsd.files.mk> 4025d862037SRuslan Ermilov.include <bsd.incs.mk> 403afd9b463SBrooks Davis.endif 404afd9b463SBrooks Davis 40584f94a79SRuslan Ermilov.include <bsd.links.mk> 406afe61c15SRodney W. Grimes 407dda3ce5aSBrooks Davis.if ${MK_MAN} != "no" && !defined(LIBRARIES_ONLY) 408afeaaa84SRuslan Ermilovrealinstall: _maninstall 409badb7c1cSRuslan Ermilov.ORDER: beforeinstall _maninstall 410b90dab70SRuslan Ermilov.endif 411b90dab70SRuslan Ermilov 412afe61c15SRodney W. Grimes.endif 413afe61c15SRodney W. Grimes 414afe61c15SRodney W. Grimes.if !target(lint) 415b25a566dSRuslan Ermilovlint: ${SRCS:M*.c} 4165741a42fSMark Murray ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC} 417afe61c15SRodney W. Grimes.endif 418afe61c15SRodney W. Grimes 419afd9b463SBrooks Davis.if ${MK_MAN} != "no" && !defined(LIBRARIES_ONLY) 420afe61c15SRodney W. Grimes.include <bsd.man.mk> 421918fb560SRuslan Ermilov.endif 4223585b293SGarrett Wollman 4233585b293SGarrett Wollman.include <bsd.dep.mk> 42414172e46SBruce Evans 42588505e11SRuslan Ermilov.if !exists(${.OBJDIR}/${DEPENDFILE}) 4264d7d5e7cSRuslan Ermilov.if defined(LIB) && !empty(LIB) 4274d7d5e7cSRuslan Ermilov${OBJS} ${STATICOBJS} ${POBJS}: ${SRCS:M*.h} 4286b14fdfaSRuslan Ermilov.for _S in ${SRCS:N*.[hly]} 4296b14fdfaSRuslan Ermilov${_S:R}.po: ${_S} 4306b14fdfaSRuslan Ermilov.endfor 4314d7d5e7cSRuslan Ermilov.endif 4324d7d5e7cSRuslan Ermilov.if defined(SHLIB_NAME) || \ 4334d7d5e7cSRuslan Ermilov defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 4344d7d5e7cSRuslan Ermilov${SOBJS}: ${SRCS:M*.h} 4356b14fdfaSRuslan Ermilov.for _S in ${SRCS:N*.[hly]} 4366b14fdfaSRuslan Ermilov${_S:R}.So: ${_S} 4376b14fdfaSRuslan Ermilov.endfor 43814172e46SBruce Evans.endif 4392a53f3fbSRuslan Ermilov.endif 44014172e46SBruce Evans 441397304feSRuslan Ermilov.if !target(clean) 442397304feSRuslan Ermilovclean: 443397304feSRuslan Ermilov.if defined(CLEANFILES) && !empty(CLEANFILES) 444397304feSRuslan Ermilov rm -f ${CLEANFILES} 445397304feSRuslan Ermilov.endif 446397304feSRuslan Ermilov.if defined(LIB) && !empty(LIB) 447397304feSRuslan Ermilov rm -f a.out ${OBJS} ${OBJS:S/$/.tmp/} ${STATICOBJS} 448397304feSRuslan Ermilov.endif 449397304feSRuslan Ermilov.if !defined(INTERNALLIB) 4505740a2b6SRuslan Ermilov.if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB) 451397304feSRuslan Ermilov rm -f ${POBJS} ${POBJS:S/$/.tmp/} 452397304feSRuslan Ermilov.endif 453397304feSRuslan Ermilov.if defined(SHLIB_NAME) || \ 454397304feSRuslan Ermilov defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) 455397304feSRuslan Ermilov rm -f ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/} 456397304feSRuslan Ermilov.endif 457397304feSRuslan Ermilov.if defined(SHLIB_NAME) 458397304feSRuslan Ermilov.if defined(SHLIB_LINK) 45951a65f35SJeremie Le Hen.if defined(SHLIB_LDSCRIPT) && exists(${.CURDIR}/${SHLIB_LDSCRIPT}) 46051a65f35SJeremie Le Hen rm -f lib${LIB}.ld 46151a65f35SJeremie Le Hen.endif 462397304feSRuslan Ermilov rm -f ${SHLIB_LINK} 463397304feSRuslan Ermilov.endif 46422f3da67SMark Johnston.endif # defined(SHLIB_NAME) 465397304feSRuslan Ermilov.if defined(WANT_LINT) && defined(LIB) && !empty(LIB) 466397304feSRuslan Ermilov rm -f ${LINTOBJS} 467397304feSRuslan Ermilov.endif 46884aac273SHartmut Brandt.endif # !defined(INTERNALLIB) 469397304feSRuslan Ermilov.if defined(_LIBS) && !empty(_LIBS) 470397304feSRuslan Ermilov rm -f ${_LIBS} 471397304feSRuslan Ermilov.endif 472397304feSRuslan Ermilov.if defined(CLEANDIRS) && !empty(CLEANDIRS) 473397304feSRuslan Ermilov rm -rf ${CLEANDIRS} 474397304feSRuslan Ermilov.endif 475add47b95SDag-Erling Smørgrav.if !empty(VERSION_DEF) && !empty(SYMBOL_MAPS) 476add47b95SDag-Erling Smørgrav rm -f ${VERSION_MAP} 477add47b95SDag-Erling Smørgrav.endif 478397304feSRuslan Ermilov.endif 479397304feSRuslan Ermilov 48049217bc5SSimon J. Gerraty.if !empty(_LIBS) 48149217bc5SSimon J. GerratyNOPATH_FILES+= ${_LIBS} 48249217bc5SSimon J. Gerraty.endif 48349217bc5SSimon J. Gerraty 484cd9a2f5cSJordan K. Hubbard.include <bsd.obj.mk> 485d510ecb4SKris Kennaway 486d510ecb4SKris Kennaway.include <bsd.sys.mk> 487