xref: /netbsd-src/share/mk/bsd.prog.mk (revision 76dfffe33547c37f8bdd446e3e4ab0f3c16cea4b)
1#	$NetBSD: bsd.prog.mk,v 1.56 1996/10/18 02:34:47 thorpej Exp $
2#	@(#)bsd.prog.mk	5.26 (Berkeley) 6/25/91
3
4.if exists(${.CURDIR}/../Makefile.inc)
5.include "${.CURDIR}/../Makefile.inc"
6.endif
7
8.include <bsd.own.mk>
9
10.SUFFIXES: .out .o .c .cc .C .y .l .s .8 .7 .6 .5 .4 .3 .2 .1 .0
11
12CFLAGS+=	${COPTS}
13
14LIBCRT0?=	${DESTDIR}/usr/lib/crt0.o
15LIBC?=		${DESTDIR}/usr/lib/libc.a
16LIBCOMPAT?=	${DESTDIR}/usr/lib/libcompat.a
17LIBCRYPT?=	${DESTDIR}/usr/lib/libcrypt.a
18LIBCURSES?=	${DESTDIR}/usr/lib/libcurses.a
19LIBDBM?=	${DESTDIR}/usr/lib/libdbm.a
20LIBDES?=	${DESTDIR}/usr/lib/libdes.a
21LIBEDIT?=	${DESTDIR}/usr/lib/libedit.a
22LIBGCC?=	${DESTDIR}/usr/lib/libgcc.a
23LIBKDB?=	${DESTDIR}/usr/lib/libkdb.a
24LIBKRB?=	${DESTDIR}/usr/lib/libkrb.a
25LIBKVM?=	${DESTDIR}/usr/lib/libkvm.a
26LIBL?=		${DESTDIR}/usr/lib/libl.a
27LIBM?=		${DESTDIR}/usr/lib/libm.a
28LIBMP?=		${DESTDIR}/usr/lib/libmp.a
29LIBPC?=		${DESTDIR}/usr/lib/libpc.a
30LIBPLOT?=	${DESTDIR}/usr/lib/libplot.a
31LIBRESOLV?=	${DESTDIR}/usr/lib/libresolv.a
32LIBRPCSVC?=	${DESTDIR}/usr/lib/librpcsvc.a
33LIBSKEY?=	${DESTDIR}/usr/lib/libskey.a
34LIBTERMCAP?=	${DESTDIR}/usr/lib/libtermcap.a
35LIBUTIL?=	${DESTDIR}/usr/lib/libutil.a
36LIBY?=		${DESTDIR}/usr/lib/liby.a
37
38.if defined(SHAREDSTRINGS)
39CLEANFILES+=strings
40.c.o:
41	${CC} -E ${CFLAGS} ${.IMPSRC} | xstr -c -
42	@${CC} ${CFLAGS} -c x.c -o ${.TARGET}
43	@rm -f x.c
44
45.cc.o:
46	${CXX} -E ${CXXFLAGS} ${.IMPSRC} | xstr -c -
47	@mv -f x.c x.cc
48	@${CXX} ${CXXFLAGS} -c x.cc -o ${.TARGET}
49	@rm -f x.cc
50
51.C.o:
52	${CXX} -E ${CXXFLAGS} ${.IMPSRC} | xstr -c -
53	@mv -f x.c x.C
54	@${CXX} ${CXXFLAGS} -c x.C -o ${.TARGET}
55	@rm -f x.C
56.endif
57
58
59.if defined(PROG)
60SRCS?=	${PROG}.c
61.if !empty(SRCS:N*.h:N*.sh)
62OBJS+=	${SRCS:N*.h:N*.sh:R:S/$/.o/g}
63LOBJS+=	${LSRCS:.c=.ln} ${SRCS:M*.c:.c=.ln}
64.endif
65
66.if defined(OBJS) && !empty(OBJS)
67.if defined(DESTDIR)
68
69${PROG}: ${LIBCRT0} ${OBJS} ${LIBC} ${DPADD}
70	${CC} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} -nostdlib -L${DESTDIR}/usr/lib ${LIBCRT0} ${OBJS} ${LDADD} -lgcc -lc -lgcc
71
72.else
73
74${PROG}: ${LIBCRT0} ${OBJS} ${LIBC} ${DPADD}
75	${CC} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} ${OBJS} ${LDADD}
76
77.endif	# defined(DESTDIR)
78.endif	# defined(OBJS) && !empty(OBJS)
79
80.if	!defined(MAN)
81MAN=	${PROG}.1
82.endif	# !defined(MAN)
83.endif	# defined(PROG)
84
85.MAIN: all
86all: ${PROG} _SUBDIRUSE
87
88.if !target(clean)
89clean: _SUBDIRUSE
90	rm -f a.out [Ee]rrs mklog core *.core \
91	    ${PROG} ${OBJS} ${LOBJS} ${CLEANFILES}
92.endif
93
94cleandir: _SUBDIRUSE clean
95
96.if !target(install)
97.if !target(beforeinstall)
98beforeinstall:
99.endif
100.if !target(afterinstall)
101afterinstall:
102.endif
103
104.if !target(realinstall)
105realinstall:
106.if defined(PROG)
107	${INSTALL} ${COPY} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
108	    ${PROG} ${DESTDIR}${BINDIR}
109.endif
110.if defined(HIDEGAME)
111	(cd ${DESTDIR}/usr/games; rm -f ${PROG}; ln -s dm ${PROG})
112.endif
113.endif
114
115install: maninstall _SUBDIRUSE
116.if defined(LINKS) && !empty(LINKS)
117	@set ${LINKS}; \
118	while test $$# -ge 2; do \
119		l=${DESTDIR}$$1; \
120		shift; \
121		t=${DESTDIR}$$1; \
122		shift; \
123		echo $$t -\> $$l; \
124		rm -f $$t; \
125		ln $$l $$t; \
126	done; true
127.endif
128
129maninstall: afterinstall
130afterinstall: realinstall
131realinstall: beforeinstall
132.endif
133
134.if !target(lint)
135lint: ${LOBJS}
136.if defined(LOBJS) && !empty(LOBJS)
137	@${LINT} ${LINTFLAGS} ${LDFLAGS:M-L*} ${LOBJS} ${LDADD}
138.endif
139.endif
140
141.if !defined(NOMAN)
142.include <bsd.man.mk>
143.endif
144
145.if !defined(NONLS)
146.include <bsd.nls.mk>
147.endif
148
149.include <bsd.obj.mk>
150.include <bsd.dep.mk>
151.include <bsd.subdir.mk>
152.include <bsd.sys.mk>
153