bsd.prog.mk revision 55670
1178354Ssam#	from: @(#)bsd.prog.mk	5.26 (Berkeley) 6/25/91
2178354Ssam# $FreeBSD: head/share/mk/bsd.prog.mk 55670 2000-01-09 15:40:32Z bde $
3178354Ssam
4178354Ssam.if !target(__initialized__)
5178354Ssam__initialized__:
6178354Ssam.if exists(${.CURDIR}/../Makefile.inc)
7178354Ssam.include "${.CURDIR}/../Makefile.inc"
8178354Ssam.endif
9178354Ssam.endif
10178354Ssam
11178354Ssam.SUFFIXES: .out .o .c .cc .cpp .cxx .C .m .y .l .s .S
12178354Ssam
13178354SsamCFLAGS+=${COPTS} ${DEBUG_FLAGS}
14178354Ssam.if defined(DESTDIR)
15178354SsamCFLAGS+= -I${DESTDIR}/usr/include
16178354SsamCXXINCLUDES+= -I${DESTDIR}/usr/include/g++
17178354Ssam.endif
18178354Ssam
19178354Ssam.if !defined(DEBUG_FLAGS)
20178354SsamSTRIP?=	-s
21178354Ssam.endif
22178354Ssam
23178354Ssam.if defined(NOSHARED) && ( ${NOSHARED} != "no" && ${NOSHARED} != "NO" )
24178354SsamLDFLAGS+= -static
25178354Ssam.endif
26178354Ssam
27178354Ssam.if defined(PROG)
28178354Ssam.if defined(SRCS)
29178354Ssam
30178354Ssam# If there are Objective C sources, link with Objective C libraries.
31178354Ssam.if ${SRCS:M*.m} != ""
32178354SsamOBJCLIBS?= -lobjc
33178354SsamLDADD+=	${OBJCLIBS}
34178354Ssam.endif
35178354Ssam
36178354SsamOBJS+=  ${SRCS:N*.h:R:S/$/.o/g}
37178354Ssam
38178354Ssam${PROG}: ${OBJS}
39178354Ssam	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDDESTDIR} ${LDADD}
40178354Ssam
41178354Ssam.else !defined(SRCS)
42178354Ssam
43178354Ssam.if !target(${PROG})
44178354SsamSRCS=	${PROG}.c
45178354Ssam
46178354Ssam# Always make an intermediate object file because:
47178354Ssam# - it saves time rebuilding when only the library has changed
48178354Ssam# - the name of the object gets put into the executable symbol table instead of
49178354Ssam#   the name of a variable temporary object.
50178354Ssam# - it's useful to keep objects around for crunching.
51178354SsamOBJS=	${PROG}.o
52178354Ssam
53178354Ssam${PROG}: ${OBJS}
54178354Ssam	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDDESTDIR} ${LDADD}
55178354Ssam.endif
56178354Ssam
57178354Ssam.endif
58178354Ssam
59178354Ssam.if	!defined(MAN1) && !defined(MAN2) && !defined(MAN3) && \
60178354Ssam	!defined(MAN4) && !defined(MAN5) && !defined(MAN6) && \
61178354Ssam	!defined(MAN7) && !defined(MAN8) && !defined(NOMAN) && \
62178354Ssam	!defined(MAN1aout)
63178354SsamMAN1=	${PROG}.1
64178354Ssam.endif
65178354Ssam.endif
66178354Ssam
67178354Ssam.MAIN: all
68178354Ssamall: objwarn ${PROG} all-man _SUBDIR
69178354Ssam
70178354SsamCLEANFILES+= ${PROG} ${OBJS}
71178354Ssam
72178354Ssam.if defined(PROG)
73178354Ssam_EXTRADEPEND:
74178354Ssam.if ${OBJFORMAT} == aout
75178354Ssam	echo ${PROG}: `${CC} -Wl,-f ${CFLAGS} ${LDFLAGS} ${LDDESTDIR} \
76178354Ssam	    ${LDADD:S/^/-Wl,/}` >> ${DEPENDFILE}
77178354Ssam.else
78178354Ssam	echo ${PROG}: ${LIBC} ${DPADD} >> ${DEPENDFILE}
79178354Ssam.endif
80178354Ssam.endif
81178354Ssam
82178354Ssam.if !target(install)
83178354Ssam.if !target(beforeinstall)
84178354Ssambeforeinstall:
85178354Ssam.endif
86178354Ssam
87178354Ssam_INSTALLFLAGS:=	${INSTALLFLAGS}
88178354Ssam.for ie in ${INSTALLFLAGS_EDIT}
89178354Ssam_INSTALLFLAGS:=	${_INSTALLFLAGS${ie}}
90178354Ssam.endfor
91178354Ssam
92178354Ssamrealinstall: beforeinstall
93178354Ssam.if defined(PROG)
94178354Ssam	${INSTALL} ${COPY} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
95178354Ssam	    ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}
96178354Ssam.endif
97178354Ssam.if defined(HIDEGAME)
98178354Ssam	(cd ${DESTDIR}/${GBINDIR}; rm -f ${PROG}; ln -s dm ${PROG}; \
99178354Ssam	    chown games:bin ${PROG})
100178354Ssam.endif
101178354Ssam.if defined(LINKS) && !empty(LINKS)
102178354Ssam	@set ${LINKS}; \
103178354Ssam	while test $$# -ge 2; do \
104178354Ssam		l=${DESTDIR}$$1; \
105178354Ssam		shift; \
106178354Ssam		t=${DESTDIR}$$1; \
107178354Ssam		shift; \
108178354Ssam		${ECHO} $$t -\> $$l; \
109178354Ssam		ln -f $$l $$t; \
110178354Ssam	done; true
111178354Ssam.endif
112178354Ssam.if defined(SYMLINKS) && !empty(SYMLINKS)
113178354Ssam	@set ${SYMLINKS}; \
114178354Ssam	while test $$# -ge 2; do \
115178354Ssam		l=$$1; \
116178354Ssam		shift; \
117178354Ssam		t=${DESTDIR}$$1; \
118178354Ssam		shift; \
119178354Ssam		${ECHO} $$t -\> $$l; \
120178354Ssam		ln -fs $$l $$t; \
121178354Ssam	done; true
122178354Ssam.endif
123178354Ssam
124178354Ssaminstall: afterinstall _SUBDIR
125178354Ssam.if !defined(NOMAN)
126178354Ssamafterinstall: realinstall maninstall
127178354Ssam.else
128178354Ssamafterinstall: realinstall
129178354Ssam.endif
130178354Ssam.endif
131178354Ssam
132178354SsamDISTRIBUTION?=	bin
133178354Ssam.if !target(distribute)
134178354Ssamdistribute: _SUBDIR
135178354Ssam.for dist in ${DISTRIBUTION}
136178354Ssam	cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${dist} SHARED=copies
137178354Ssam.endfor
138178354Ssam.endif
139178354Ssam
140178354Ssam.if !target(lint)
141178354Ssamlint: ${SRCS} _SUBDIR
142178354Ssam.if defined(PROG)
143178354Ssam	@${LINT} ${LINTFLAGS} ${CFLAGS} ${.ALLSRC} | more 2>&1
144178354Ssam.endif
145178354Ssam.endif
146178354Ssam
147178354Ssam.if defined(NOTAGS)
148178354Ssamtags:
149178354Ssam.endif
150178354Ssam
151178354Ssam.if !target(tags)
152178354Ssamtags: ${SRCS} _SUBDIR
153178354Ssam.if defined(PROG)
154178354Ssam	@cd ${.CURDIR} && gtags ${GTAGSFLAGS} ${.OBJDIR}
155178354Ssam.if defined(HTML)
156178354Ssam	@cd ${.CURDIR} && htags ${HTAGSFLAGS} -d ${.OBJDIR} ${.OBJDIR}
157178354Ssam.endif
158178354Ssam.endif
159178354Ssam.endif
160178354Ssam
161178354Ssam.if !defined(NOMAN)
162178354Ssam.include <bsd.man.mk>
163178354Ssam.elif !target(maninstall)
164178354Ssammaninstall:
165178354Ssamall-man:
166178354Ssam.endif
167178354Ssam
168178354Ssam.if !target(regress)
169178354Ssamregress:
170178354Ssam.endif
171178354Ssam
172178354Ssam.if ${OBJFORMAT} != aout || make(checkdpadd) || defined(NEED_LIBNAMES)
173178354Ssam.include <bsd.libnames.mk>
174178354Ssam.endif
175178354Ssam
176178354Ssam.include <bsd.dep.mk>
177178354Ssam
178178354Ssam.if defined(PROG) && !exists(${DEPENDFILE})
179178354Ssam${OBJS}: ${SRCS:M*.h}
180178354Ssam.endif
181178354Ssam
182178354Ssam.include <bsd.obj.mk>
183178354Ssam