sys.mk revision 39163
1107590Sobrien#	from: @(#)sys.mk	8.2 (Berkeley) 3/21/94
2169689Skan#	$Id: sys.mk,v 1.41 1998/08/29 01:30:13 dillon Exp $
3132718Skan
4107590Sobrienunix		?=	We run FreeBSD, not UNIX.
5107590Sobrien
6107590Sobrien# If the special target .POSIX appears (without prerequisites or
7132718Skan# commands) before the first noncomment line in the makefile, make shall
8107590Sobrien# process the makefile as specified by the Posix 1003.2 specification.
9132718Skan# make(1) sets the special macro %POSIX in this case (to the actual
10132718Skan# value "1003.2", for what it's worth).
11132718Skan#
12132718Skan# The rules below use this macro to distinguish between Posix-compliant
13107590Sobrien# and default behaviour.
14132718Skan
15132718Skan.if defined(%POSIX)
16132718Skan.SUFFIXES:	.o .c .y .l .a .sh .f
17132718Skan.else
18132718Skan.SUFFIXES:	.out .a .ln .o .c .cc .cpp .cxx .C .m .F .f .e .r .y .l .S .s .cl .p .h .sh
19107590Sobrien.endif
20132718Skan
21169689Skan.LIBS:		.a
22169689Skan
23107590SobrienX11BASE		?=	/usr/X11R6
24107590Sobrien
25169689SkanAR		?=	ar
26107590Sobrien.if defined(%POSIX)
27169689SkanARFLAGS		?=	-rv
28107590Sobrien.else
29107590SobrienARFLAGS		?=	rl
30132718Skan.endif
31132718SkanRANLIB		?=	ranlib
32132718Skan
33169689SkanAS		?=	as
34132718SkanAFLAGS		?=
35132718Skan
36169689Skan.if defined(%POSIX)
37132718SkanCC		?=	c89
38132718Skan.else
39169689SkanCC		?=	cc
40169689Skan.endif
41132718SkanCFLAGS		?=	-O -pipe
42169689Skan
43169689SkanCXX		?=	c++
44169689SkanCXXFLAGS	?=	${CXXINCLUDES} ${CFLAGS}
45169689Skan
46169689SkanCPP		?=	cpp
47169689Skan
48169689Skan.if ${.MAKEFLAGS:M-s} == ""
49107590SobrienECHO		?=	echo
50107590SobrienECHODIR		?=	echo
51107590Sobrien.else
52107590SobrienECHO		?=	true
53107590Sobrien.if ${.MAKEFLAGS:M-s} == "-s"
54107590SobrienECHODIR		?=	echo
55117395Skan.else
56117395SkanECHODIR		?=	true
57117395Skan.endif
58107590Sobrien.endif
59117395Skan
60132718Skan.if defined(%POSIX)
61132718SkanFC		?=	fort77
62169689SkanFFLAGS		?=	-O 1
63169689Skan.else
64132718SkanFC		?=	f77
65132718SkanFFLAGS		?=	-O
66132718Skan.endif
67132718SkanEFLAGS		?=
68132718Skan
69132718SkanINSTALL		?=	install
70132718Skan
71132718SkanLEX		?=	lex
72132718SkanLFLAGS		?=
73132718Skan
74132718SkanLD		?=	ld
75132718SkanLDFLAGS		?=
76132718Skan
77169689SkanLINT		?=	lint
78169689SkanLINTFLAGS	?=	-chapbx
79169689Skan
80132718SkanMAKE		?=	make
81132718Skan
82117395SkanOBJC		?=	cc
83117395SkanOBJCFLAGS	?=	${OBJCINCLUDES} ${CFLAGS} -Wno-import
84117395Skan
85117395SkanPC		?=	pc
86117395SkanPFLAGS		?=
87117395Skan
88117395SkanRC		?=	f77
89117395SkanRFLAGS		?=
90117395Skan
91117395SkanRM		?=	rm -f
92132718Skan
93132718SkanSHELL		?=	sh
94169689Skan
95169689SkanYACC		?=	yacc
96169689Skan.if defined(%POSIX)
97169689SkanYFLAGS		?=
98169689Skan.else
99169689SkanYFLAGS		?=	-d
100117395Skan.endif
101117395Skan
102117395Skan# FreeBSD/i386 as traditionally been built with a version of make
103117395Skan# which knows MACHINE, but not MACHINE_ARCH. When building on other
104117395Skan# architectures, assume that the version of make being used has an
105117395Skan# explicit MACHINE_ARCH setting and treat a missing MACHINE_ARCH
106117395Skan# as an i386 architecture.
107132718SkanMACHINE_ARCH	?=	i386
108132718Skan
109132718Skan# For tags rule.
110169689SkanGTAGSFLAGS=	-o
111169689SkanHTAGSFLAGS=
112169689Skan
113169689Skan.if defined(%POSIX)
114132718Skan# Posix 1003.2 mandated rules
115132718Skan#
116169689Skan# Quoted directly from the Posix 1003.2 draft, only the macros
117169689Skan# $@, $< and $* have been replaced by ${.TARGET}, ${.IMPSRC}, and
118132718Skan# ${.PREFIX}, resp.
119132718Skan
120132718Skan# SINGLE SUFFIX RULES
121132718Skan.c:
122117395Skan	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC}
123169689Skan
124169689Skan.f:
125169689Skan	${FC} ${FFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC}
126169689Skan
127117395Skan.sh:
128117395Skan	cp ${.IMPSRC} ${.TARGET}
129169689Skan	chmod a+x ${.TARGET}
130169689Skan
131169689Skan# DOUBLE SUFFIX RULES
132117395Skan
133169689Skan.c.o:
134169689Skan	${CC} ${CFLAGS} -c ${.IMPSRC}
135169689Skan
136169689Skan.f.o:
137169689Skan	${FC} ${FFLAGS} -c ${.IMPSRC}
138169689Skan
139169689Skan.y.o:
140169689Skan	${YACC} ${YFLAGS} ${.IMPSRC}
141169689Skan	${CC} ${CFLAGS} -c y.tab.c
142169689Skan	${RM} y.tab.c
143169689Skan	mv y.tab.o ${.TARGET}
144169689Skan
145169689Skan.l.o:
146132718Skan	${LEX} ${LFLAGS} ${.IMPSRC}
147132718Skan	${CC} ${CFLAGS} -c lex.yy.c
148169689Skan	${RM} lex.yy.c
149169689Skan	mv lex.yy.o ${.TARGET}
150107590Sobrien
151132718Skan.y.c:
152132718Skan	${YACC} ${YFLAGS} ${.IMPSRC}
153169689Skan	mv y.tab.c ${.TARGET}
154132718Skan
155169689Skan.l.c:
156107590Sobrien	${LEX} ${LFLAGS} ${.IMPSRC}
157169689Skan	mv lex.yy.c ${.TARGET}
158169689Skan
159169689Skan.c.a:
160169689Skan	${CC} ${CFLAGS} -c ${.IMPSRC}
161169689Skan	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
162169689Skan	${RM} ${.PREFIX}.o
163169689Skan
164169689Skan.f.a:
165169689Skan	${FC} ${FFLAGS} -c ${.IMPSRC}
166169689Skan	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
167169689Skan	${RM} ${.PREFIX}.o
168107590Sobrien
169169689Skan.else
170169689Skan
171169689Skan# non-Posix rule set
172107590Sobrien
173169689Skan.c:
174169689Skan	${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
175169689Skan
176169689Skan.sh:
177107590Sobrien	cp -p ${.IMPSRC} ${.TARGET}
178169689Skan	chmod a+x ${.TARGET}
179107590Sobrien
180169689Skan.c.o:
181169689Skan	${CC} ${CFLAGS} -c ${.IMPSRC}
182169689Skan
183169689Skan.cc.o .cpp.o .cxx.o .C.o:
184132718Skan	${CXX} ${CXXFLAGS} -c ${.IMPSRC}
185132718Skan
186169689Skan.m.o:
187169689Skan	${OBJC} ${OBJCFLAGS} -c ${.IMPSRC}
188169689Skan
189169689Skan.p.o:
190107590Sobrien	${PC} ${PFLAGS} -c ${.IMPSRC}
191169689Skan
192169689Skan.e.o .r.o .F.o .f.o:
193132718Skan	${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} -c ${.IMPSRC}
194169689Skan
195169689Skan.S.o:
196169689Skan	${CC} ${CFLAGS} -c ${.IMPSRC}
197132718Skan
198169689Skan.s.o:
199169689Skan	${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC}
200107590Sobrien
201169689Skan# XXX not -j safe
202169689Skan.y.o:
203132718Skan	${YACC} ${YFLAGS} ${.IMPSRC}
204169689Skan	${CC} ${CFLAGS} -c y.tab.c -o ${.TARGET}
205169689Skan	${RM} y.tab.c
206107590Sobrien
207169689Skan.l.o:
208169689Skan	${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c
209132718Skan	${CC} ${CFLAGS} -c ${.PREFIX}.tmp.c -o ${.TARGET}
210169689Skan	${RM} ${.PREFIX}.tmp.c
211107590Sobrien
212169689Skan# XXX not -j safe
213169689Skan.y.c:
214169689Skan	${YACC} ${YFLAGS} ${.IMPSRC}
215169689Skan	mv y.tab.c ${.TARGET}
216132718Skan
217169689Skan.l.c:
218169689Skan	${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.TARGET}
219169689Skan
220132718Skan.s.out .c.out .o.out:
221169689Skan	${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
222169689Skan
223169689Skan.f.out .F.out .r.out .e.out:
224169689Skan	${FC} ${EFLAGS} ${RFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} \
225107590Sobrien	    ${LDLIBS} -o ${.TARGET}
226169689Skan	${RM} ${.PREFIX}.o
227169689Skan
228169689Skan# XXX not -j safe
229169689Skan.y.out:
230107590Sobrien	${YACC} ${YFLAGS} ${.IMPSRC}
231169689Skan	${CC} ${CFLAGS} ${LDFLAGS} y.tab.c ${LDLIBS} -ly -o ${.TARGET}
232169689Skan	${RM} y.tab.c
233169689Skan
234107590Sobrien.l.out:
235169689Skan	${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c
236169689Skan	${CC} ${CFLAGS} ${LDFLAGS} ${.PREFIX}.tmp.c ${LDLIBS} -ll -o ${.TARGET}
237169689Skan	${RM} ${.PREFIX}.tmp.c
238107590Sobrien
239169689Skan.endif
240169689Skan
241169689Skan.if exists(/etc/make.conf)
242107590Sobrien.include </etc/make.conf>
243169689Skan.endif
244169689Skan
245107590Sobrien.if exists(/etc/make.conf.local)
246169689Skan.include </etc/make.conf.local>
247169689Skan.endif
248169689Skan
249107590Sobrien
250169689Skan.include <bsd.own.mk>
251169689Skan