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