xref: /netbsd-src/share/mk/bsd.prog.mk (revision 3b01aba77a7a698587faaae455bbfe740923c1f5)
1#	$NetBSD: bsd.prog.mk,v 1.131 2001/06/01 17:49:33 tv 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.include <bsd.depall.mk>
12.MAIN:		all
13.endif
14
15.PHONY:		cleanprog proginstall scriptsinstall
16realinstall:	proginstall scriptsinstall
17clean cleandir: cleanprog
18
19CFLAGS+=	${COPTS}
20
21# ELF platforms depend on crtbegin.o and crtend.o
22.if ${OBJECT_FMT} == "ELF"
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
31
32LIBBZ2?=	${DESTDIR}/usr/lib/libbz2.a
33LIBC?=		${DESTDIR}/usr/lib/libc.a
34LIBC_PIC?=	${DESTDIR}/usr/lib/libc_pic.a
35LIBCDK?=	${DESTDIR}/usr/lib/libcdk.a
36LIBCOM_ERR?=	${DESTDIR}/usr/lib/libcom_err.a
37LIBCOMPAT?=	${DESTDIR}/usr/lib/libcompat.a
38LIBCRYPT?=	${DESTDIR}/usr/lib/libcrypt.a
39LIBCRYPTO?=	${DESTDIR}/usr/lib/libcrypto.a
40LIBCRYPTO_RC5?=	${DESTDIR}/usr/lib/libcrypto_rc5.a
41LIBCRYPTO_IDEA?=${DESTDIR}/usr/lib/libcrypto_idea.a
42LIBCURSES?=	${DESTDIR}/usr/lib/libcurses.a
43LIBDBM?=	${DESTDIR}/usr/lib/libdbm.a
44LIBDES?=	${DESTDIR}/usr/lib/libdes.a
45LIBEDIT?=	${DESTDIR}/usr/lib/libedit.a
46LIBFORM?=	${DESTDIR}/usr/lib/libform.a
47LIBGCC?=	${DESTDIR}/usr/lib/libgcc.a
48LIBGNUMALLOC?=	${DESTDIR}/usr/lib/libgnumalloc.a
49LIBGSSAPI?=	${DESTDIR}/usr/lib/libgssapi.a
50LIBHDB?=	${DESTDIR}/usr/lib/libhdb.a
51LIBINTL?=	${DESTDIR}/usr/lib/libintl.a
52LIBIPSEC?=	${DESTDIR}/usr/lib/libipsec.a
53LIBKADM?=	${DESTDIR}/usr/lib/libkadm.a
54LIBKADM5CLNT?=	${DESTDIR}/usr/lib/libkadm5clnt.a
55LIBKADM5SRV?=	${DESTDIR}/usr/lib/libkadm5srv.a
56LIBKAFS?=	${DESTDIR}/usr/lib/libkafs.a
57LIBKDB?=	${DESTDIR}/usr/lib/libkdb.a
58LIBKRB?=	${DESTDIR}/usr/lib/libkrb.a
59LIBKRB5?=	${DESTDIR}/usr/lib/libkrb5.a
60LIBKSTREAM?=	${DESTDIR}/usr/lib/libkstream.a
61LIBKVM?=	${DESTDIR}/usr/lib/libkvm.a
62LIBL?=		${DESTDIR}/usr/lib/libl.a
63LIBM?=		${DESTDIR}/usr/lib/libm.a
64LIBMENU?=	${DESTDIR}/usr/lib/libmenu.a
65LIBOBJC?=	${DESTDIR}/usr/lib/libobjc.a
66LIBOSSAUDIO?=	${DESTDIR}/usr/lib/libossaudio.a
67LIBPCAP?=	${DESTDIR}/usr/lib/libpcap.a
68LIBPOSIX?=	${DESTDIR}/usr/lib/libposix.a
69LIBRESOLV?=	${DESTDIR}/usr/lib/libresolv.a
70LIBRMT?=	${DESTDIR}/usr/lib/librmt.a
71LIBROKEN?=	${DESTDIR}/usr/lib/libroken.a
72LIBRPCSVC?=	${DESTDIR}/usr/lib/librpcsvc.a
73LIBSKEY?=	${DESTDIR}/usr/lib/libskey.a
74LIBSS?=		${DESTDIR}/usr/lib/libss.a
75LIBSSL?=	${DESTDIR}/usr/lib/libssl.a
76LIBSL?=		${DESTDIR}/usr/lib/libsl.a
77LIBTERMCAP?=	${DESTDIR}/usr/lib/libtermcap.a
78LIBTELNET?=	${DESTDIR}/usr/lib/libtelnet.a
79LIBUSB?=	${DESTDIR}/usr/lib/libusb.a
80LIBUTIL?=	${DESTDIR}/usr/lib/libutil.a
81LIBWRAP?=	${DESTDIR}/usr/lib/libwrap.a
82LIBY?=		${DESTDIR}/usr/lib/liby.a
83LIBZ?=		${DESTDIR}/usr/lib/libz.a
84
85.if defined(SHAREDSTRINGS)
86CLEANFILES+=strings
87.c.o:
88	${CC} -E ${CFLAGS} ${.IMPSRC} | xstr -c -
89	@${CC} ${CFLAGS} -c x.c -o ${.TARGET}
90	@rm -f x.c
91
92.cc.o:
93	${CXX} -E ${CXXFLAGS} ${.IMPSRC} | xstr -c -
94	@mv -f x.c x.cc
95	@${CXX} ${CXXFLAGS} -c x.cc -o ${.TARGET}
96	@rm -f x.cc
97
98.C.o:
99	${CXX} -E ${CXXFLAGS} ${.IMPSRC} | xstr -c -
100	@mv -f x.c x.C
101	@${CXX} ${CXXFLAGS} -c x.C -o ${.TARGET}
102	@rm -f x.C
103.endif
104
105
106.if defined(PROG)
107SRCS?=		${PROG}.c
108
109DPSRCS+=	${SRCS:M*.l:.l=.c} ${SRCS:M*.y:.y=.c}
110CLEANFILES+=	${DPSRCS}
111.if defined(YHEADER)
112CLEANFILES+=	${SRCS:M*.y:.y=.h}
113.endif
114
115.if !empty(SRCS:N*.h:N*.sh:N*.fth)
116OBJS+=		${SRCS:N*.h:N*.sh:N*.fth:R:S/$/.o/g}
117LOBJS+=		${LSRCS:.c=.ln} ${SRCS:M*.c:.c=.ln}
118.endif
119
120.if defined(OBJS) && !empty(OBJS)
121.NOPATH: ${OBJS}
122.if defined(DESTDIR)
123
124${PROG}: ${LIBCRT0} ${DPSRCS} ${OBJS} ${LIBC} ${LIBCRTBEGIN} ${LIBCRTEND} ${DPADD}
125.if !commands(${PROG})
126	${CC} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} -nostdlib -Wl,-rpath-link,${DESTDIR}/usr/lib ${LIBCRT0} ${LIBCRTBEGIN} ${OBJS} ${LDADD} -L${DESTDIR}/usr/lib -lgcc -lc -lgcc ${LIBCRTEND}
127.endif
128
129.else
130
131${PROG}: ${LIBCRT0} ${DPSRCS} ${OBJS} ${LIBC} ${LIBCRTBEGIN} ${LIBCRTEND} ${DPADD}
132.if !commands(${PROG})
133	${CC} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} ${OBJS} ${LDADD}
134.endif
135
136.endif	# defined(DESTDIR)
137.endif	# defined(OBJS) && !empty(OBJS)
138
139.if !defined(MAN)
140MAN=	${PROG}.1
141.endif	# !defined(MAN)
142.endif	# defined(PROG)
143
144realall: ${PROG} ${SCRIPTS}
145
146cleanprog:
147	rm -f a.out [Ee]rrs mklog core *.core \
148	    ${PROG} ${OBJS} ${LOBJS} ${CLEANFILES}
149
150.if defined(SRCS) && !target(afterdepend)
151afterdepend: .depend
152	@(TMP=/tmp/_depend$$$$; \
153	    sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.ln:/' \
154	      < .depend > $$TMP; \
155	    mv $$TMP .depend)
156.endif
157
158.if defined(PROG) && !target(proginstall)
159PROGNAME?=${PROG}
160
161proginstall:: ${DESTDIR}${BINDIR}/${PROGNAME}
162.PRECIOUS: ${DESTDIR}${BINDIR}/${PROGNAME}
163.if !defined(UPDATE)
164.PHONY: ${DESTDIR}${BINDIR}/${PROGNAME}
165.endif
166
167__proginstall: .USE
168	${INSTALL} ${RENAME} ${PRESERVE} ${COPY} ${STRIPFLAG} ${INSTPRIV} \
169	    -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} ${.ALLSRC} ${.TARGET}
170
171.if !defined(BUILD) && !make(all) && !make(${PROG})
172${DESTDIR}${BINDIR}/${PROGNAME}: .MADE
173.endif
174${DESTDIR}${BINDIR}/${PROGNAME}: ${PROG} __proginstall
175.endif
176
177.if !target(proginstall)
178proginstall::
179.endif
180
181.if defined(SCRIPTS) && !target(scriptsinstall)
182SCRIPTSDIR?=${BINDIR}
183SCRIPTSOWN?=${BINOWN}
184SCRIPTSGRP?=${BINGRP}
185SCRIPTSMODE?=${BINMODE}
186
187scriptsinstall:: ${SCRIPTS:@S@${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}@}
188.PRECIOUS: ${SCRIPTS:@S@${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}@}
189.if !defined(UPDATE)
190.PHONY: ${SCRIPTS:@S@${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}@}
191.endif
192
193__scriptinstall: .USE
194	${INSTALL} ${RENAME} ${PRESERVE} ${COPY} ${INSTPRIV} \
195	    -o ${SCRIPTSOWN_${.ALLSRC:T}:U${SCRIPTSOWN}} \
196	    -g ${SCRIPTSGRP_${.ALLSRC:T}:U${SCRIPTSGRP}} \
197	    -m ${SCRIPTSMODE_${.ALLSRC:T}:U${SCRIPTSMODE}} \
198	    ${.ALLSRC} ${.TARGET}
199
200.for S in ${SCRIPTS:O:u}
201.if !defined(BUILD) && !make(all) && !make(${S})
202${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}: .MADE
203.endif
204${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}: ${S} __scriptinstall
205.endfor
206.endif
207
208.if !target(scriptsinstall)
209scriptsinstall::
210.endif
211
212lint: ${LOBJS}
213.if defined(LOBJS) && !empty(LOBJS)
214	${LINT} ${LINTFLAGS} ${LDFLAGS:M-L*} ${LOBJS} ${LDADD}
215.endif
216
217.include <bsd.man.mk>
218.include <bsd.nls.mk>
219.include <bsd.files.mk>
220.include <bsd.inc.mk>
221.include <bsd.links.mk>
222.include <bsd.dep.mk>
223.include <bsd.sys.mk>
224
225# Make sure all of the standard targets are defined, even if they do nothing.
226regress:
227