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