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