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