1# $OpenBSD: bsd.prog.mk,v 1.70 2015/11/14 23:56:50 deraadt Exp $ 2# $NetBSD: bsd.prog.mk,v 1.55 1996/04/08 21:19:26 jtc Exp $ 3# @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91 4 5.if exists(${.CURDIR}/../Makefile.inc) 6.include "${.CURDIR}/../Makefile.inc" 7.endif 8 9.include <bsd.own.mk> 10 11.SUFFIXES: .out .o .c .cc .cpp .C .cxx .y .l .s .8 .7 .6 .5 .4 .3 .2 .1 .0 12 13.if (defined(LDSTATIC) && !defined(STATICPIE)) || defined(NOPIE) 14CFLAGS+= ${NOPIE_FLAGS} 15CXXFLAGS+= ${NOPIE_FLAGS} 16AFLAGS+= ${NOPIE_FLAGS} 17LDFLAGS+= ${NOPIE_LDFLAGS} 18.endif 19 20.if ${WARNINGS:L} == "yes" 21CFLAGS+= ${CDIAGFLAGS} 22CXXFLAGS+= ${CXXDIAGFLAGS} 23.endif 24CFLAGS+= ${COPTS} 25CXXFLAGS+= ${CXXOPTS} 26 27CRTBEGIN?= ${DESTDIR}/usr/lib/crtbegin.o 28CRTEND?= ${DESTDIR}/usr/lib/crtend.o 29 30LIBCRT0?= ${DESTDIR}/usr/lib/crt0.o 31LIBC?= ${DESTDIR}/usr/lib/libc.a 32LIBCRYPTO?= ${DESTDIR}/usr/lib/libcrypto.a 33LIBCURSES?= ${DESTDIR}/usr/lib/libcurses.a 34LIBEDIT?= ${DESTDIR}/usr/lib/libedit.a 35LIBEVENT?= ${DESTDIR}/usr/lib/libevent.a 36LIBEXPAT?= ${DESTDIR}/usr/lib/libexpat.a 37LIBFORM?= ${DESTDIR}/usr/lib/libform.a 38LIBFORMW?= ${DESTDIR}/usr/lib/libformw.a 39LIBKEYNOTE?= ${DESTDIR}/usr/lib/libkeynote.a 40LIBKVM?= ${DESTDIR}/usr/lib/libkvm.a 41LIBL?= ${DESTDIR}/usr/lib/libl.a 42LIBM?= ${DESTDIR}/usr/lib/libm.a 43LIBMENU?= ${DESTDIR}/usr/lib/libmenu.a 44LIBMENUW?= ${DESTDIR}/usr/lib/libmenuw.a 45LIBRADIUS?= ${DESTDIR}/usr/lib/libradius.a 46LIBOSSAUDIO?= ${DESTDIR}/usr/lib/libossaudio.a 47LIBPANEL?= ${DESTDIR}/usr/lib/libpanel.a 48LIBPANELW?= ${DESTDIR}/usr/lib/libpanelw.a 49LIBPCAP?= ${DESTDIR}/usr/lib/libpcap.a 50LIBPERL?= ${DESTDIR}/usr/lib/libperl.a 51LIBPTHREAD?= ${DESTDIR}/usr/lib/libpthread.a 52LIBRPCSVC?= ${DESTDIR}/usr/lib/librpcsvc.a 53LIBSKEY?= ${DESTDIR}/usr/lib/libskey.a 54LIBSNDIO?= ${DESTDIR}/usr/lib/libsndio.a 55LIBSSL?= ${DESTDIR}/usr/lib/libssl.a 56LIBTLS?= ${DESTDIR}/usr/lib/libtls.a 57LIBTERMCAP?= ${DESTDIR}/usr/lib/libtermcap.a 58LIBTERMLIB?= ${DESTDIR}/usr/lib/libtermlib.a 59LIBUSB?= ${DESTDIR}/usr/lib/libusbhid.a 60LIBUTIL?= ${DESTDIR}/usr/lib/libutil.a 61LIBY?= ${DESTDIR}/usr/lib/liby.a 62LIBZ?= ${DESTDIR}/usr/lib/libz.a 63 64.if ${MACHINE_ARCH} == "alpha" || ${MACHINE_ARCH} == "amd64" || \ 65 ${MACHINE_ARCH} == "arm" || ${MACHINE_ARCH} == "i386" 66LIBARCH?= ${DESTDIR}/usr/lib/lib${MACHINE_ARCH}.a 67.else 68LIBARCH?= 69.endif 70 71.if defined(PROG) 72SRCS?= ${PROG}.c 73. if !empty(SRCS:N*.h:N*.sh) 74OBJS+= ${SRCS:N*.h:N*.sh:R:S/$/.o/} 75_LEXINTM+=${SRCS:M*.l:.l=.c} 76_YACCINTM+=${SRCS:M*.y:.y=.c} 77. endif 78 79. if defined(OBJS) && !empty(OBJS) 80. if !empty(SRCS:M*.C) || !empty(SRCS:M*.cc) || !empty(SRCS:M*.cpp) || \ 81 !empty(SRCS:M*.cxx) 82${PROG}: ${LIBCRT0} ${OBJS} ${LIBC} ${CRTBEGIN} ${CRTEND} ${DPADD} 83 ${CXX} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} ${OBJS} ${LDADD} 84. else 85${PROG}: ${LIBCRT0} ${OBJS} ${LIBC} ${CRTBEGIN} ${CRTEND} ${DPADD} 86 ${CC} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} ${OBJS} ${LDADD} 87. endif 88. endif # defined(OBJS) && !empty(OBJS) 89 90. if !defined(MAN) 91MAN= ${PROG}.1 92. endif # !defined(MAN) 93.endif # defined(PROG) 94 95.MAIN: all 96all: ${PROG} _SUBDIRUSE 97 98.if !target(clean) 99clean: _SUBDIRUSE 100 rm -f a.out [Ee]rrs mklog *.core y.tab.h \ 101 ${PROG} ${OBJS} ${_LEXINTM} ${_YACCINTM} ${CLEANFILES} 102.endif 103 104cleandir: _SUBDIRUSE clean 105 106.if !target(install) 107.if !target(beforeinstall) 108beforeinstall: 109.endif 110.if !target(afterinstall) 111afterinstall: 112.endif 113 114.if !target(realinstall) 115realinstall: 116.if defined(PROG) 117 ${INSTALL} ${INSTALL_COPY} -S ${INSTALL_STRIP} \ 118 -o ${BINOWN} -g ${BINGRP} \ 119 -m ${BINMODE} ${PROG} ${DESTDIR}${BINDIR}/${PROG} 120.endif 121.endif 122 123install: maninstall _SUBDIRUSE 124.if defined(LINKS) && !empty(LINKS) 125. for lnk file in ${LINKS} 126 @l=${DESTDIR}${lnk}; \ 127 t=${DESTDIR}${file}; \ 128 echo $$t -\> $$l; \ 129 rm -f $$t; ln $$l $$t 130. endfor 131.endif 132 133maninstall: afterinstall 134afterinstall: realinstall 135realinstall: beforeinstall 136.endif 137 138.if !defined(NOMAN) 139.include <bsd.man.mk> 140.endif 141 142.include <bsd.obj.mk> 143.include <bsd.dep.mk> 144.include <bsd.subdir.mk> 145.include <bsd.sys.mk> 146