1*66e500ceSmortimer# $OpenBSD: bsd.prog.mk,v 1.83 2021/06/09 19:44:55 mortimer Exp $ 2ad3614a8Sderaadt# $NetBSD: bsd.prog.mk,v 1.55 1996/04/08 21:19:26 jtc Exp $ 3df930be7Sderaadt# @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91 4df930be7Sderaadt 5df930be7Sderaadt.if exists(${.CURDIR}/../Makefile.inc) 6df930be7Sderaadt.include "${.CURDIR}/../Makefile.inc" 7df930be7Sderaadt.endif 8df930be7Sderaadt 9df930be7Sderaadt.include <bsd.own.mk> 10df930be7Sderaadt 11930c48b4Sschwarze.SUFFIXES: .out .o .c .cc .cpp .C .cxx .y .l .s 12df930be7Sderaadt 13ce9efda1Sderaadt.if (defined(LDSTATIC) && !defined(STATICPIE)) || defined(NOPIE) 14dec03fdfSpascalCFLAGS+= ${NOPIE_FLAGS} 15cecf84d4SjsgCXXFLAGS+= ${NOPIE_FLAGS} 16dec03fdfSpascalAFLAGS+= ${NOPIE_FLAGS} 17bfcac819SpascalLDFLAGS+= ${NOPIE_LDFLAGS} 18dec03fdfSpascal.endif 19dec03fdfSpascal 20b05dcccaSespie.if ${WARNINGS:L} == "yes" 21b05dcccaSespieCFLAGS+= ${CDIAGFLAGS} 22b05dcccaSespieCXXFLAGS+= ${CXXDIAGFLAGS} 23b05dcccaSespie.endif 24d5e4872eSmillertCFLAGS+= ${COPTS} 25b05dcccaSespieCXXFLAGS+= ${CXXOPTS} 26df930be7Sderaadt 27e7556950SniklasCRTBEGIN?= ${DESTDIR}/usr/lib/crtbegin.o 28e7556950SniklasCRTEND?= ${DESTDIR}/usr/lib/crtend.o 29e7556950Sniklas 30df930be7SderaadtLIBCRT0?= ${DESTDIR}/usr/lib/crt0.o 31df930be7SderaadtLIBC?= ${DESTDIR}/usr/lib/libc.a 32f4c6e777SjsgLIBCBOR?= ${DESTDIR}/usr/lib/libcbor.a 338d0a641aSbeckLIBCRYPTO?= ${DESTDIR}/usr/lib/libcrypto.a 346d68987dSespieLIBCURSES?= ${DESTDIR}/usr/lib/libcurses.a 35df930be7SderaadtLIBEDIT?= ${DESTDIR}/usr/lib/libedit.a 36694c1c28SjsgLIBELF?= ${DESTDIR}/usr/lib/libelf.a 37558f3d96SmillertLIBEVENT?= ${DESTDIR}/usr/lib/libevent.a 38*66e500ceSmortimerLIBEXECINFO?= ${DESTDIR}/usr/lib/libexecinfo.a 3949a9729aSmiodLIBEXPAT?= ${DESTDIR}/usr/lib/libexpat.a 40f4c6e777SjsgLIBFIDO2?= ${DESTDIR}/usr/lib/libfido2.a 4149a9729aSmiodLIBFORM?= ${DESTDIR}/usr/lib/libform.a 4249a9729aSmiodLIBFORMW?= ${DESTDIR}/usr/lib/libformw.a 432d8214ecShoLIBKEYNOTE?= ${DESTDIR}/usr/lib/libkeynote.a 44df930be7SderaadtLIBKVM?= ${DESTDIR}/usr/lib/libkvm.a 45ad3614a8SderaadtLIBL?= ${DESTDIR}/usr/lib/libl.a 46df930be7SderaadtLIBM?= ${DESTDIR}/usr/lib/libm.a 4749a9729aSmiodLIBMENU?= ${DESTDIR}/usr/lib/libmenu.a 4849a9729aSmiodLIBMENUW?= ${DESTDIR}/usr/lib/libmenuw.a 490eaf192dSyasuokaLIBRADIUS?= ${DESTDIR}/usr/lib/libradius.a 5049a9729aSmiodLIBOSSAUDIO?= ${DESTDIR}/usr/lib/libossaudio.a 5149a9729aSmiodLIBPANEL?= ${DESTDIR}/usr/lib/libpanel.a 5249a9729aSmiodLIBPANELW?= ${DESTDIR}/usr/lib/libpanelw.a 536d68987dSespieLIBPCAP?= ${DESTDIR}/usr/lib/libpcap.a 54afaa32c1SmillertLIBPERL?= ${DESTDIR}/usr/lib/libperl.a 5549a9729aSmiodLIBPTHREAD?= ${DESTDIR}/usr/lib/libpthread.a 56df930be7SderaadtLIBRPCSVC?= ${DESTDIR}/usr/lib/librpcsvc.a 57df930be7SderaadtLIBSKEY?= ${DESTDIR}/usr/lib/libskey.a 5849a9729aSmiodLIBSNDIO?= ${DESTDIR}/usr/lib/libsndio.a 598d0a641aSbeckLIBSSL?= ${DESTDIR}/usr/lib/libssl.a 606e3d4b76SmartijnLIBAGENTX?= ${DESTDIR}/usr/lib/libagentx.a 61b600beedSjsingLIBTLS?= ${DESTDIR}/usr/lib/libtls.a 62df930be7SderaadtLIBTERMCAP?= ${DESTDIR}/usr/lib/libtermcap.a 63c3f5d593StholoLIBTERMLIB?= ${DESTDIR}/usr/lib/libtermlib.a 64dd3da175SjsgLIBUSBHID?= ${DESTDIR}/usr/lib/libusbhid.a 65df930be7SderaadtLIBUTIL?= ${DESTDIR}/usr/lib/libutil.a 66ad3614a8SderaadtLIBY?= ${DESTDIR}/usr/lib/liby.a 67c5362e0dSmickeyLIBZ?= ${DESTDIR}/usr/lib/libz.a 68df930be7Sderaadt 6903590265Sbrad.if ${MACHINE_ARCH} == "alpha" || ${MACHINE_ARCH} == "amd64" || \ 7049a9729aSmiod ${MACHINE_ARCH} == "arm" || ${MACHINE_ARCH} == "i386" 7133ca7345SmiodLIBARCH?= ${DESTDIR}/usr/lib/lib${MACHINE_ARCH}.a 726d68987dSespie.else 736d68987dSespieLIBARCH?= 746d68987dSespie.endif 756d68987dSespie 76df930be7Sderaadt.if defined(PROG) 77df930be7SderaadtSRCS ?= ${PROG}.c 78e696cfd4SespieMAN ?= ${PROG}.1 79e696cfd4Sespie.endif 80e696cfd4Sespie 81e696cfd4Sespie# if we have several progs, define appropriate vars instead 82e696cfd4Sespie.if defined(PROGS) 83e696cfd4Sespie. for p in ${PROGS} 84e696cfd4SespieSRCS_$p ?= $p.c 85e696cfd4SespieOBJS_$p = ${SRCS_$p:N*.h:N*.sh:R:S/$/.o/} 86e696cfd4SespieDPADD_$p ?= ${DPADD} 87e696cfd4SespieLDADD_$p ?= ${LDADD} 88e696cfd4Sespie 89e696cfd4Sespie# XXX still create SRCS, because it's what bsd.dep.mk understands 90e696cfd4SespieSRCS += ${SRCS_$p} 91e696cfd4Sespie 92e696cfd4Sespie# and we can write the actual target already 93e696cfd4Sespie. if defined(OBJS_$p) && !empty(OBJS_$p) 94e696cfd4Sespie. if !empty(SRCS_$p:M*.C) || !empty(SRCS_$p:M*.cc) || \ 95e696cfd4Sespie !empty(SRCS_$p:M*.cpp) || !empty(SRCS_$p:M*.cxx) 96e696cfd4Sespie$p: ${LIBCRT0} ${OBJS_$p} ${LIBC} ${CRTBEGIN} ${CRTEND} ${DPADD_$p} 97e696cfd4Sespie ${CXX} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} ${OBJS_$p} ${LDADD_$p} 98e696cfd4Sespie. else 99e696cfd4Sespie$p: ${LIBCRT0} ${OBJS_$p} ${LIBC} ${CRTBEGIN} ${CRTEND} ${DPADD_$p} 100e696cfd4Sespie ${CC} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} ${OBJS_$p} ${LDADD_$p} 101e696cfd4Sespie. endif 102e696cfd4Sespie. endif 103e696cfd4Sespie. endfor 104e696cfd4SespieMAN ?= ${PROGS:=.1} 105e696cfd4Sespie.endif 106e696cfd4Sespie 107e696cfd4Sespie.if defined(PROG) || defined(PROGS) 108e696cfd4Sespie# ... so we create appropriate full list of obj, dep, lex, yacc... 109df930be7Sderaadt. if !empty(SRCS:N*.h:N*.sh) 110aa0b9f45SguentherOBJS+= ${SRCS:N*.h:N*.sh:R:S/$/.o/} 111e696cfd4SespieDEPS+= ${OBJS:.o=.d} 112e696cfd4Sespie. endif 113a86afe1bSespie 11452a0f106Sespie_LEXINTM?=${SRCS:M*.l:.l=.c} 11552a0f106Sespie_YACCINTM?=${SRCS:M*.y:.y=.c} 116df930be7Sderaadt.endif 117df930be7Sderaadt 118e696cfd4Sespie.if defined(PROG) 119df930be7Sderaadt. if defined(OBJS) && !empty(OBJS) 120e696cfd4Sespie. if !empty(SRCS:M*.C) || !empty(SRCS:M*.cc) || \ 121e696cfd4Sespie !empty(SRCS:M*.cpp) || !empty(SRCS:M*.cxx) 122e7556950Sniklas${PROG}: ${LIBCRT0} ${OBJS} ${LIBC} ${CRTBEGIN} ${CRTEND} ${DPADD} 1233e4cccd6Sespie ${CXX} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} ${OBJS} ${LDADD} 124df930be7Sderaadt. else 125e7556950Sniklas${PROG}: ${LIBCRT0} ${OBJS} ${LIBC} ${CRTBEGIN} ${CRTEND} ${DPADD} 126188f4ca8Sespie ${CC} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} ${OBJS} ${LDADD} 1273e4cccd6Sespie. endif 128df930be7Sderaadt. endif # defined(OBJS) && !empty(OBJS) 129e696cfd4Sespie.endif 130df930be7Sderaadt 131df930be7Sderaadt.MAIN: all 132e696cfd4Sespieall: ${PROG} ${PROGS} _SUBDIRUSE 133df930be7Sderaadt 134e696cfd4SespieBUILDAFTER += ${PROG} ${PROGS} ${OBJS} 1359cf9bf88Sespie 136df930be7Sderaadt.if !target(clean) 137df930be7Sderaadtclean: _SUBDIRUSE 1388218532fSderaadt rm -f a.out [Ee]rrs mklog *.core y.tab.h \ 139e696cfd4Sespie ${PROG} ${PROGS} ${OBJS} ${_LEXINTM} ${_YACCINTM} ${CLEANFILES} 140df930be7Sderaadt.endif 141df930be7Sderaadt 142df930be7Sderaadtcleandir: _SUBDIRUSE clean 143df930be7Sderaadt 144df930be7Sderaadt.if !target(install) 145df930be7Sderaadt.if !target(beforeinstall) 146df930be7Sderaadtbeforeinstall: 147df930be7Sderaadt.endif 148df930be7Sderaadt.if !target(afterinstall) 149df930be7Sderaadtafterinstall: 150df930be7Sderaadt.endif 151df930be7Sderaadt 152df930be7Sderaadt.if !target(realinstall) 153df930be7Sderaadtrealinstall: 154df930be7Sderaadt. if defined(PROG) 155d125f366Skn ${INSTALL} ${INSTALL_COPY} ${INSTALL_STRIP} \ 15628992632Sguenther -o ${BINOWN} -g ${BINGRP} \ 157d4152dd4Sespie -m ${BINMODE} ${PROG} ${DESTDIR}${BINDIR}/${PROG} 158df930be7Sderaadt. endif 159e696cfd4Sespie. if defined(PROGS) 160e696cfd4Sespie. for p in ${PROGS} 161d125f366Skn ${INSTALL} ${INSTALL_COPY} ${INSTALL_STRIP} \ 162e696cfd4Sespie -o ${BINOWN} -g ${BINGRP} \ 163e696cfd4Sespie -m ${BINMODE} $p ${DESTDIR}${BINDIR}/$p 164e696cfd4Sespie. endfor 165e696cfd4Sespie. endif 1663c566c80Sespie.endif 1673c566c80Sespie 1683c566c80Sespieinstall: maninstall _SUBDIRUSE 169df930be7Sderaadt.if defined(LINKS) && !empty(LINKS) 1707c1e7f69Sespie. for lnk file in ${LINKS} 1717c1e7f69Sespie @l=${DESTDIR}${lnk}; \ 1727c1e7f69Sespie t=${DESTDIR}${file}; \ 173df930be7Sderaadt echo $$t -\> $$l; \ 1747c1e7f69Sespie rm -f $$t; ln $$l $$t 1757c1e7f69Sespie. endfor 176df930be7Sderaadt.endif 177df930be7Sderaadt 178df930be7Sderaadtmaninstall: afterinstall 179df930be7Sderaadtafterinstall: realinstall 180df930be7Sderaadtrealinstall: beforeinstall 181df930be7Sderaadt.endif 182df930be7Sderaadt 183df930be7Sderaadt.if !defined(NOMAN) 184df930be7Sderaadt.include <bsd.man.mk> 185df930be7Sderaadt.endif 186df930be7Sderaadt 187a86afe1bSespie# if we already got bsd.lib.mk we don't want to wreck that 188a86afe1bSespie.if !defined(_LIBS) 189a86afe1bSespie.s.o: 190a86afe1bSespie ${COMPILE.S} -MD -MF ${.TARGET:R}.d -o $@ ${.IMPSRC} 191a86afe1bSespie 192a86afe1bSespie.S.o: 193a86afe1bSespie ${COMPILE.S} -MD -MF ${.TARGET:R}.d -o $@ ${.IMPSRC} 194a86afe1bSespie.endif 195a86afe1bSespie 196df930be7Sderaadt.include <bsd.obj.mk> 197df930be7Sderaadt.include <bsd.dep.mk> 198df930be7Sderaadt.include <bsd.subdir.mk> 199ad3614a8Sderaadt.include <bsd.sys.mk> 200