xref: /netbsd-src/share/mk/bsd.prog.mk (revision 2a399c6883d870daece976daec6ffa7bb7f934ce)
1#	$NetBSD: bsd.prog.mk,v 1.90 1997/11/03 22:51:28 cgd Exp $
2#	@(#)bsd.prog.mk	8.2 (Berkeley) 4/2/94
3
4.if !target(__initialized__)
5__initialized__:
6.if exists(${.CURDIR}/../Makefile.inc)
7.include "${.CURDIR}/../Makefile.inc"
8.endif
9.include <bsd.own.mk>
10.include <bsd.obj.mk>
11.MAIN:		all
12.endif
13
14.PHONY:		cleanprog proginstall scriptsinstall
15realinstall:	proginstall scriptsinstall
16clean cleandir:	cleanprog
17
18CFLAGS+=	${COPTS}
19
20# ELF platforms depend on crtbegin.o and crtend.o
21.if (${MACHINE_ARCH} == "alpha")   || \
22    (${MACHINE_ARCH} == "powerpc")
23LIBCRTBEGIN?=	${DESTDIR}/usr/lib/crtbegin.o
24LIBCRTEND?=	${DESTDIR}/usr/lib/crtend.o
25.else
26LIBCRTBEGIN?=
27LIBCRTEND?=
28.endif
29
30LIBCRT0?=	${DESTDIR}/usr/lib/crt0.o
31LIBBFD?=	${DESTDIR}/usr/lib/libbfd.a
32LIBC?=		${DESTDIR}/usr/lib/libc.a
33LIBC_PIC?=	${DESTDIR}/usr/lib/libc_pic.a
34LIBCOMPAT?=	${DESTDIR}/usr/lib/libcompat.a
35LIBCRYPT?=	${DESTDIR}/usr/lib/libcrypt.a
36LIBCURSES?=	${DESTDIR}/usr/lib/libcurses.a
37LIBDBM?=	${DESTDIR}/usr/lib/libdbm.a
38LIBDES?=	${DESTDIR}/usr/lib/libdes.a
39LIBEDIT?=	${DESTDIR}/usr/lib/libedit.a
40LIBGCC?=	${DESTDIR}/usr/lib/libgcc.a
41LIBGNUMALLOC?=	${DESTDIR}/usr/lib/libgnumalloc.a
42LIBKDB?=	${DESTDIR}/usr/lib/libkdb.a
43LIBKRB?=	${DESTDIR}/usr/lib/libkrb.a
44LIBKVM?=	${DESTDIR}/usr/lib/libkvm.a
45LIBL?=		${DESTDIR}/usr/lib/libl.a
46LIBM?=		${DESTDIR}/usr/lib/libm.a
47LIBMP?=		${DESTDIR}/usr/lib/libmp.a
48LIBNTP?=	${DESTDIR}/usr/lib/libntp.a
49LIBOBJC?=	${DESTDIR}/usr/lib/libobjc.a
50LIBPC?=		${DESTDIR}/usr/lib/libpc.a
51LIBPCAP?=	${DESTDIR}/usr/lib/libpcap.a
52LIBPLOT?=	${DESTDIR}/usr/lib/libplot.a
53LIBPOSIX?=	${DESTDIR}/usr/lib/libposix.a
54LIBRESOLV?=	${DESTDIR}/usr/lib/libresolv.a
55LIBRPCSVC?=	${DESTDIR}/usr/lib/librpcsvc.a
56LIBSKEY?=	${DESTDIR}/usr/lib/libskey.a
57LIBTERMCAP?=	${DESTDIR}/usr/lib/libtermcap.a
58LIBTELNET?=	${DESTDIR}/usr/lib/libtelnet.a
59LIBUTIL?=	${DESTDIR}/usr/lib/libutil.a
60LIBWRAP?=	${DESTDIR}/usr/lib/libwrap.a
61LIBY?=		${DESTDIR}/usr/lib/liby.a
62LIBZ?=		${DESTDIR}/usr/lib/libz.a
63
64.if defined(SHAREDSTRINGS)
65CLEANFILES+=strings
66.c.o:
67	${CC} -E ${CFLAGS} ${.IMPSRC} | xstr -c -
68	@${CC} ${CFLAGS} -c x.c -o ${.TARGET}
69	@rm -f x.c
70
71.cc.o:
72	${CXX} -E ${CXXFLAGS} ${.IMPSRC} | xstr -c -
73	@mv -f x.c x.cc
74	@${CXX} ${CXXFLAGS} -c x.cc -o ${.TARGET}
75	@rm -f x.cc
76
77.C.o:
78	${CXX} -E ${CXXFLAGS} ${.IMPSRC} | xstr -c -
79	@mv -f x.c x.C
80	@${CXX} ${CXXFLAGS} -c x.C -o ${.TARGET}
81	@rm -f x.C
82.endif
83
84
85.if defined(PROG)
86SRCS?=		${PROG}.c
87
88DPSRCS+=	${SRCS:M*.l:.l=.c} ${SRCS:M*.y:.y=.c}
89CLEANFILES+=	${DPSRCS}
90
91.if !empty(SRCS:N*.h:N*.sh)
92OBJS+=		${SRCS:N*.h:N*.sh:R:S/$/.o/g}
93LOBJS+=		${LSRCS:.c=.ln} ${SRCS:M*.c:.c=.ln}
94.endif
95
96.if defined(OBJS) && !empty(OBJS)
97.NOPATH: ${OBJS}
98.if defined(DESTDIR)
99
100${PROG}: ${LIBCRT0} ${DPSRCS} ${OBJS} ${LIBC} ${LIBCRTBEGIN} ${LIBCRTEND} ${DPADD}
101	${CC} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} -nostdlib -L${DESTDIR}/usr/lib ${LIBCRT0} ${LIBCRTBEGIN} ${OBJS} ${LDADD} -lgcc -lc -lgcc ${LIBCRTEND}
102
103.else
104
105${PROG}: ${LIBCRT0} ${DPSRCS} ${OBJS} ${LIBC} ${LIBCRTBEGIN} ${LIBCRTEND} ${DPADD}
106	${CC} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} ${OBJS} ${LDADD}
107
108.endif	# defined(DESTDIR)
109.endif	# defined(OBJS) && !empty(OBJS)
110
111.if	!defined(MAN)
112MAN=	${PROG}.1
113.endif	# !defined(MAN)
114.endif	# defined(PROG)
115
116all: ${PROG}
117
118cleanprog:
119	rm -f a.out [Ee]rrs mklog core *.core \
120	    ${PROG} ${OBJS} ${LOBJS} ${CLEANFILES}
121
122.if defined(SRCS)
123afterdepend: .depend
124	@(TMP=/tmp/_depend$$$$; \
125	    sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.ln:/' \
126	      < .depend > $$TMP; \
127	    mv $$TMP .depend)
128.endif
129
130.if defined(PROG) && !target(proginstall)
131PROGNAME?= ${PROG}
132proginstall:: ${DESTDIR}${BINDIR}/${PROGNAME}
133.if !defined(UPDATE)
134.PHONY: ${DESTDIR}${BINDIR}/${PROGNAME}
135.endif
136.if !defined(BUILD)
137${DESTDIR}${BINDIR}/${PROGNAME}: .MADE
138.endif
139
140.PRECIOUS: ${DESTDIR}${BINDIR}/${PROGNAME}
141${DESTDIR}${BINDIR}/${PROGNAME}: ${PROG}
142	${INSTALL} ${COPY} ${STRIPFLAG} -o ${BINOWN} -g ${BINGRP} \
143	    -m ${BINMODE} ${.ALLSRC} ${.TARGET}
144.endif
145
146.if !target(proginstall)
147proginstall::
148.endif
149
150.if defined(SCRIPTS) && !target(scriptsinstall)
151SCRIPTSDIR?=${BINDIR}
152SCRIPTSOWN?=${BINOWN}
153SCRIPTSGRP?=${BINGRP}
154SCRIPTSMODE?=${BINMODE}
155.for S in ${SCRIPTS}
156SCRIPTSDIR_${S}?=${SCRIPTSDIR}
157SCRIPTSOWN_${S}?=${SCRIPTSOWN}
158SCRIPTSGRP_${S}?=${SCRIPTSGRP}
159SCRIPTSMODE_${S}?=${SCRIPTSMODE}
160.if defined(SCRIPTSNAME)
161SCRIPTSNAME_${S} ?= ${SCRIPTSNAME}
162.else
163SCRIPTSNAME_${S} ?= ${S:T:R}
164.endif
165SCRIPTSDIR_${S} ?= ${SCRIPTSDIR}
166scriptsinstall:: ${DESTDIR}${SCRIPTSDIR_${S}}/${SCRIPTSNAME_${S}}
167.if !defined(UPDATE)
168.PHONY: ${DESTDIR}${SCRIPTSDIR_${S}}/${SCRIPTSNAME_${S}}
169.endif
170.if !defined(BUILD)
171${DESTDIR}${SCRIPTSDIR_${S}}/${SCRIPTSNAME_${S}}: .MADE
172.endif
173
174.PRECIOUS: ${DESTDIR}${SCRIPTSDIR_${S}}/${SCRIPTSNAME_${S}}
175${DESTDIR}${SCRIPTSDIR_${S}}/${SCRIPTSNAME_${S}}: ${S}
176	${INSTALL} ${COPY} -o ${SCRIPTSOWN_${S}} -g ${SCRIPTSGRP_${S}} \
177		-m ${SCRIPTSMODE_${S}} ${.ALLSRC} ${.TARGET}
178.endfor
179.endif
180
181.if !target(scriptsinstall)
182scriptsinstall::
183.endif
184
185lint: ${LOBJS}
186.if defined(LOBJS) && !empty(LOBJS)
187	${LINT} ${LINTFLAGS} ${LDFLAGS:M-L*} ${LOBJS} ${LDADD}
188.endif
189
190.include <bsd.man.mk>
191.include <bsd.nls.mk>
192.include <bsd.files.mk>
193.include <bsd.inc.mk>
194.include <bsd.links.mk>
195.include <bsd.dep.mk>
196.include <bsd.sys.mk>
197
198# Make sure all of the standard targets are defined, even if they do nothing.
199regress:
200