1# $OpenBSD: bsd.prog.mk,v 1.28 2001/07/20 23:02:21 espie 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 .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 (${MACHINE_ARCH} == "powerpc") || (${MACHINE_ARCH} == "alpha") 21CRTBEGIN?= ${DESTDIR}/usr/lib/crtbegin.o 22CRTEND?= ${DESTDIR}/usr/lib/crtend.o 23.endif 24 25LIBATALK?= ${DESTDIR}/usr/lib/libatalk.a 26LIBCRT0?= ${DESTDIR}/usr/lib/crt0.o 27LIBC?= ${DESTDIR}/usr/lib/libc.a 28LIBCOMPAT?= ${DESTDIR}/usr/lib/libcompat.a 29LIBCURSES?= ${DESTDIR}/usr/lib/libcurses.a 30LIBCRYPTO?= ${DESTDIR}/usr/lib/libcrypto.a 31LIBDBM?= ${DESTDIR}/usr/lib/libdbm.a 32LIBDES?= ${DESTDIR}/usr/lib/libdes.a 33LIBEDIT?= ${DESTDIR}/usr/lib/libedit.a 34LIBGCC?= ${DESTDIR}/usr/lib/libgcc.a 35LIBKDB?= ${DESTDIR}/usr/lib/libkdb.a 36LIBKEYNOTE?= ${DESTDIR}/usr/lib/libkeynote.a 37LIBKRB?= ${DESTDIR}/usr/lib/libkrb.a 38LIBKAFS?= ${DESTDIR}/usr/lib/libkafs.a 39LIBKVM?= ${DESTDIR}/usr/lib/libkvm.a 40LIBL?= ${DESTDIR}/usr/lib/libl.a 41LIBM?= ${DESTDIR}/usr/lib/libm.a 42LIBMP?= ${DESTDIR}/usr/lib/libmp.a 43LIBOLDCURSES?= ${DESTDIR}/usr/lib/libocurses.a 44LIBPC?= ${DESTDIR}/usr/lib/libpc.a 45LIBPERL?= ${DESTDIR}/usr/lib/libperl.a 46LIBPLOT?= ${DESTDIR}/usr/lib/libplot.a 47LIBRESOLV?= ${DESTDIR}/usr/lib/libresolv.a 48LIBRPCSVC?= ${DESTDIR}/usr/lib/librpcsvc.a 49LIBSKEY?= ${DESTDIR}/usr/lib/libskey.a 50LIBSSL?= ${DESTDIR}/usr/lib/libssl.a 51LIBTELNET?= ${DESTDIR}/usr/lib/libtelnet.a 52LIBTERMCAP?= ${DESTDIR}/usr/lib/libtermcap.a 53LIBTERMLIB?= ${DESTDIR}/usr/lib/libtermlib.a 54LIBUTIL?= ${DESTDIR}/usr/lib/libutil.a 55LIBWRAP?= ${DESTDIR}/usr/lib/libwrap.a 56LIBY?= ${DESTDIR}/usr/lib/liby.a 57LIBZ?= ${DESTDIR}/usr/lib/libz.a 58 59.if defined(SHAREDSTRINGS) 60CLEANFILES+=strings 61.c.o: 62 ${CC} -E ${CFLAGS} ${.IMPSRC} | xstr -c - 63 @${CC} ${CFLAGS} -c x.c -o ${.TARGET} 64 @rm -f x.c 65 66.cc.o: 67 ${CXX} -E ${CXXFLAGS} ${.IMPSRC} | xstr -c - 68 @mv -f x.c x.cc 69 @${CXX} ${CXXFLAGS} -c x.cc -o ${.TARGET} 70 @rm -f x.cc 71 72.C.o: 73 ${CXX} -E ${CXXFLAGS} ${.IMPSRC} | xstr -c - 74 @mv -f x.c x.C 75 @${CXX} ${CXXFLAGS} -c x.C -o ${.TARGET} 76 @rm -f x.C 77 78.cxx.o: 79 ${CXX} -E ${CXXFLAGS} ${.IMPSRC} | xstr -c - 80 @mv -f x.c x.cxx 81 @${CXX} ${CXXFLAGS} -c x.cxx -o ${.TARGET} 82 @rm -f x.cxx 83.endif 84 85 86.if defined(PROG) 87SRCS?= ${PROG}.c 88.if !empty(SRCS:N*.h:N*.sh) 89OBJS+= ${SRCS:N*.h:N*.sh:R:S/$/.o/g} 90LOBJS+= ${LSRCS:.c=.ln} ${SRCS:M*.c:.c=.ln} 91.endif 92 93.if defined(OBJS) && !empty(OBJS) 94.if defined(DESTDIR) 95 96${PROG}: ${LIBCRT0} ${OBJS} ${LIBC} ${CRTBEGIN} ${CRTEND} ${DPADD} 97 ${CC} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} -nostdlib -L${DESTDIR}/usr/lib ${LIBCRT0} ${CRTBEGIN} ${OBJS} ${LDADD} -lgcc -lc -lgcc ${CRTEND} 98 99.else 100 101${PROG}: ${LIBCRT0} ${OBJS} ${LIBC} ${CRTBEGIN} ${CRTEND} ${DPADD} 102 ${CC} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} ${OBJS} ${LDADD} 103 104.endif # defined(DESTDIR) 105.endif # defined(OBJS) && !empty(OBJS) 106 107.if !defined(MAN) 108MAN= ${PROG}.1 109.endif # !defined(MAN) 110.endif # defined(PROG) 111 112.MAIN: all 113all: ${PROG} _SUBDIRUSE 114 115.if !target(clean) 116clean: _SUBDIRUSE 117 rm -f a.out [Ee]rrs mklog core *.core \ 118 ${PROG} ${OBJS} ${LOBJS} ${CLEANFILES} 119.endif 120 121cleandir: _SUBDIRUSE clean 122 123.if !target(install) 124.if !target(beforeinstall) 125beforeinstall: 126.endif 127.if !target(afterinstall) 128afterinstall: 129.endif 130 131.if !target(realinstall) 132realinstall: 133.if defined(PROG) 134 ${INSTALL} ${INSTALL_COPY} ${INSTALL_STRIP} -o ${BINOWN} -g ${BINGRP} \ 135 -m ${BINMODE} ${PROG} ${DESTDIR}${BINDIR} 136.endif 137.if defined(HIDEGAME) 138 (cd ${DESTDIR}/usr/games; rm -f ${PROG}; ln -s dm ${PROG}) 139.endif 140.endif 141 142install: maninstall _SUBDIRUSE 143.if defined(LINKS) && !empty(LINKS) 144. for lnk file in ${LINKS} 145 @l=${DESTDIR}${lnk}; \ 146 t=${DESTDIR}${file}; \ 147 echo $$t -\> $$l; \ 148 rm -f $$t; ln $$l $$t 149. endfor 150.endif 151 152maninstall: afterinstall 153afterinstall: realinstall 154realinstall: beforeinstall 155.endif 156 157.if !target(lint) 158lint: ${LOBJS} 159.if defined(LOBJS) && !empty(LOBJS) 160 @${LINT} ${LINTFLAGS} ${LDFLAGS:M-L*} ${LOBJS} ${LDADD} 161.endif 162.endif 163 164.if !defined(NOMAN) 165.include <bsd.man.mk> 166.endif 167 168.if !defined(NONLS) 169.include <bsd.nls.mk> 170.endif 171 172.include <bsd.obj.mk> 173.include <bsd.dep.mk> 174.include <bsd.subdir.mk> 175.include <bsd.sys.mk> 176