sys.mk revision 136954
1193323Sed#	from: @(#)sys.mk	8.2 (Berkeley) 3/21/94
2193323Sed# $FreeBSD: head/share/mk/sys.mk 136954 2004-10-25 20:04:50Z des $
3353358Sdim
4353358Sdimunix		?=	We run FreeBSD, not UNIX.
5353358Sdim.FreeBSD	?=	true
6193323Sed
7193323Sed# If the special target .POSIX appears (without prerequisites or
8193323Sed# commands) before the first noncomment line in the makefile, make shall
9193323Sed# process the makefile as specified by the Posix 1003.2 specification.
10193323Sed# make(1) sets the special macro %POSIX in this case (to the actual
11193323Sed# value "1003.2", for what it's worth).
12193323Sed#
13193323Sed# The rules below use this macro to distinguish between Posix-compliant
14314564Sdim# and default behaviour.
15193323Sed
16193323Sed.if defined(%POSIX)
17261991Sdim.SUFFIXES:	.o .c .y .l .a .sh .f
18193323Sed.else
19249423Sdim.SUFFIXES:	.out .a .ln .o .c .cc .cpp .cxx .C .m .F .f .e .r .y .l .S .asm .s .cl .p .h .sh
20198090Srdivacky.endif
21193323Sed
22193323SedX11BASE		?=	/usr/X11R6
23309124Sdim
24193323SedAR		?=	ar
25193323Sed.if defined(%POSIX)
26276479SdimARFLAGS		?=	-rv
27276479Sdim.else
28198090SrdivackyARFLAGS		?=	rl
29314564Sdim.endif
30314564SdimRANLIB		?=	ranlib
31198090Srdivacky
32198090SrdivackyAS		?=	as
33193323SedAFLAGS		?=
34314564Sdim
35314564Sdim.if defined(%POSIX)
36314564SdimCC		?=	c89
37193323SedCFLAGS		?=	-O
38314564Sdim.else
39314564SdimCC		?=	cc
40193323SedCFLAGS		?=	-O2 -pipe
41314564Sdim.endif
42314564Sdim
43198090SrdivackyCXX		?=	c++
44314564SdimCXXFLAGS	?=	${CFLAGS:N-std=*:N-Wnested-externs:N-W*-prototypes}
45314564Sdim
46193323SedCPP		?=	cpp
47314564Sdim
48314564Sdim.if empty(.MAKEFLAGS:M-s)
49314564SdimECHO		?=	echo
50193323SedECHODIR		?=	echo
51193323Sed.else
52198090SrdivackyECHO		?=	true
53198090Srdivacky.if ${.MAKEFLAGS:M-s} == "-s"
54207618SrdivackyECHODIR		?=	echo
55341825Sdim.else
56341825SdimECHODIR		?=	true
57341825Sdim.endif
58341825Sdim.endif
59218885Sdim
60276479Sdim.if !empty(.MAKEFLAGS:M-n) && ${.MAKEFLAGS:M-n} == "-n"
61327952Sdim_+_		?=
62341825Sdim.else
63314564Sdim_+_		?=	+
64193323Sed.endif
65193323Sed
66198090Srdivacky.if defined(%POSIX)
67198090SrdivackyFC		?=	fort77
68198090SrdivackyFFLAGS		?=	-O 1
69198090Srdivacky.else
70198090SrdivackyFC		?=	f77
71207618SrdivackyFFLAGS		?=	-O
72341825Sdim.endif
73341825SdimEFLAGS		?=
74341825Sdim
75341825SdimINSTALL		?=	install
76327952Sdim
77193323SedLEX		?=	lex
78198090SrdivackyLFLAGS		?=
79341825Sdim
80341825SdimLD		?=	ld
81198090SrdivackyLDFLAGS		?=
82198090Srdivacky
83198090SrdivackyLINT		?=	lint
84198090SrdivackyLINTFLAGS	?=	-cghapbx
85198090SrdivackyLINTKERNFLAGS	?=	${LINTFLAGS}
86341825SdimLINTOBJFLAGS	?=	-cghapbxu -i
87341825SdimLINTOBJKERNFLAGS?=	${LINTOBJFLAGS}
88198090SrdivackyLINTLIBFLAGS	?=	-cghapbxu -C ${LIB}
89198090Srdivacky
90198090SrdivackyMAKE		?=	make
91261991Sdim
92261991SdimOBJC		?=	cc
93198090SrdivackyOBJCFLAGS	?=	${OBJCINCLUDES} ${CFLAGS} -Wno-import
94198090Srdivacky
95198090SrdivackyPC		?=	pc
96198090SrdivackyPFLAGS		?=
97198090Srdivacky
98198090SrdivackyRC		?=	f77
99198090SrdivackyRFLAGS		?=
100236386Sdim
101198090SrdivackySHELL		?=	sh
102198090Srdivacky
103198090SrdivackyYACC		?=	yacc
104198090Srdivacky.if defined(%POSIX)
105198090SrdivackyYFLAGS		?=
106341825Sdim.else
107314564SdimYFLAGS		?=	-d
108193323Sed.endif
109193323Sed
110341825Sdim# FreeBSD/i386 has traditionally been built with a version of make
111341825Sdim# which knows MACHINE, but not MACHINE_ARCH. When building on other
112193323Sed# architectures, assume that the version of make being used has an
113218885Sdim# explicit MACHINE_ARCH setting and treat a missing MACHINE_ARCH
114193323Sed# as an i386 architecture.
115261991SdimMACHINE_ARCH	?=	i386
116276479Sdim
117280031Sdim.if defined(%POSIX)
118261991Sdim
119261991Sdim# Posix 1003.2 mandated rules
120193323Sed#
121193323Sed# Quoted directly from the Posix 1003.2 draft, only the macros
122276479Sdim# $@, $< and $* have been replaced by ${.TARGET}, ${.IMPSRC}, and
123261991Sdim# ${.PREFIX}, resp.
124261991Sdim
125208599Srdivacky# SINGLE SUFFIX RULES
126193323Sed.c:
127296417Sdim	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC}
128193323Sed
129193323Sed.f:
130193323Sed	${FC} ${FFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC}
131193323Sed
132193323Sed.sh:
133193323Sed	cp ${.IMPSRC} ${.TARGET}
134193323Sed	chmod a+x ${.TARGET}
135193323Sed
136261991Sdim# DOUBLE SUFFIX RULES
137314564Sdim
138193323Sed.c.o:
139193323Sed	${CC} ${CFLAGS} -c ${.IMPSRC}
140193323Sed
141193323Sed.f.o:
142193323Sed	${FC} ${FFLAGS} -c ${.IMPSRC}
143193323Sed
144314564Sdim.y.o:
145314564Sdim	${YACC} ${YFLAGS} ${.IMPSRC}
146314564Sdim	${CC} ${CFLAGS} -c y.tab.c
147314564Sdim	rm -f y.tab.c
148314564Sdim	mv y.tab.o ${.TARGET}
149193323Sed
150314564Sdim.l.o:
151314564Sdim	${LEX} ${LFLAGS} ${.IMPSRC}
152314564Sdim	${CC} ${CFLAGS} -c lex.yy.c
153193323Sed	rm -f lex.yy.c
154314564Sdim	mv lex.yy.o ${.TARGET}
155193323Sed
156314564Sdim.y.c:
157314564Sdim	${YACC} ${YFLAGS} ${.IMPSRC}
158314564Sdim	mv y.tab.c ${.TARGET}
159314564Sdim
160314564Sdim.l.c:
161314564Sdim	${LEX} ${LFLAGS} ${.IMPSRC}
162314564Sdim	mv lex.yy.c ${.TARGET}
163193323Sed
164193323Sed.c.a:
165314564Sdim	${CC} ${CFLAGS} -c ${.IMPSRC}
166314564Sdim	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
167314564Sdim	rm -f ${.PREFIX}.o
168314564Sdim
169314564Sdim.f.a:
170314564Sdim	${FC} ${FFLAGS} -c ${.IMPSRC}
171314564Sdim	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
172341825Sdim	rm -f ${.PREFIX}.o
173193323Sed
174193323Sed.else
175193323Sed
176218885Sdim# non-Posix rule set
177314564Sdim
178314564Sdim.sh:
179199481Srdivacky	cp -p ${.IMPSRC} ${.TARGET}
180341825Sdim	chmod a+x ${.TARGET}
181199481Srdivacky
182199481Srdivacky.c.ln:
183193323Sed	${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \
184193323Sed	    touch ${.TARGET}
185341825Sdim
186193323Sed.cc.ln .C.ln .cpp.ln .cxx.ln:
187341825Sdim	${LINT} ${LINTOBJFLAGS} ${CXXFLAGS:M-[DIU]*} ${.IMPSRC} || \
188193323Sed	    touch ${.TARGET}
189314564Sdim
190341825Sdim.c:
191193323Sed	${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
192314564Sdim
193314564Sdim.c.o:
194341825Sdim	${CC} ${CFLAGS} -c ${.IMPSRC}
195341825Sdim
196341825Sdim.cc .cpp .cxx .C:
197341825Sdim	${CXX} ${CXXFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
198341825Sdim
199314564Sdim.cc.o .cpp.o .cxx.o .C.o:
200193323Sed	${CXX} ${CXXFLAGS} -c ${.IMPSRC}
201193323Sed
202314564Sdim.m.o:
203234353Sdim	${OBJC} ${OBJCFLAGS} -c ${.IMPSRC}
204344779Sdim
205261991Sdim.p.o:
206261991Sdim	${PC} ${PFLAGS} -c ${.IMPSRC}
207261991Sdim
208261991Sdim.e .r .F .f:
209261991Sdim	${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} \
210261991Sdim	    -o ${.TARGET}
211261991Sdim
212344779Sdim.e.o .r.o .F.o .f.o:
213344779Sdim	${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} -c ${.IMPSRC}
214261991Sdim
215344779Sdim.S.o:
216344779Sdim	${CC} ${CFLAGS} -c ${.IMPSRC}
217261991Sdim
218261991Sdim.asm.o:
219193323Sed	${CC} -x assembler-with-cpp ${CFLAGS} -c ${.IMPSRC}
220314564Sdim
221314564Sdim.s.o:
222314564Sdim	${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC}
223344779Sdim
224344779Sdim# XXX not -j safe
225344779Sdim.y.o:
226344779Sdim	${YACC} ${YFLAGS} ${.IMPSRC}
227344779Sdim	${CC} ${CFLAGS} -c y.tab.c -o ${.TARGET}
228344779Sdim	rm -f y.tab.c
229344779Sdim
230193323Sed.l.o:
231193323Sed	${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c
232193323Sed	${CC} ${CFLAGS} -c ${.PREFIX}.tmp.c -o ${.TARGET}
233193323Sed	rm -f ${.PREFIX}.tmp.c
234218885Sdim
235218885Sdim# XXX not -j safe
236218885Sdim.y.c:
237218885Sdim	${YACC} ${YFLAGS} ${.IMPSRC}
238218885Sdim	mv y.tab.c ${.TARGET}
239218885Sdim
240314564Sdim.l.c:
241314564Sdim	${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.TARGET}
242314564Sdim
243218885Sdim.s.out .c.out .o.out:
244314564Sdim	${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
245314564Sdim
246314564Sdim.f.out .F.out .r.out .e.out:
247314564Sdim	${FC} ${EFLAGS} ${RFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} \
248218885Sdim	    ${LDLIBS} -o ${.TARGET}
249314564Sdim	rm -f ${.PREFIX}.o
250314564Sdim
251314564Sdim# XXX not -j safe
252314564Sdim.y.out:
253314564Sdim	${YACC} ${YFLAGS} ${.IMPSRC}
254314564Sdim	${CC} ${CFLAGS} ${LDFLAGS} y.tab.c ${LDLIBS} -ly -o ${.TARGET}
255314564Sdim	rm -f y.tab.c
256314564Sdim
257314564Sdim.l.out:
258314564Sdim	${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c
259314564Sdim	${CC} ${CFLAGS} ${LDFLAGS} ${.PREFIX}.tmp.c ${LDLIBS} -ll -o ${.TARGET}
260314564Sdim	rm -f ${.PREFIX}.tmp.c
261314564Sdim
262314564Sdim# FreeBSD build pollution.  Hide it in the non-POSIX part of the ifdef.
263218885Sdim__MAKE_CONF?=/etc/make.conf
264218885Sdim.if exists(${__MAKE_CONF})
265314564Sdim.include "${__MAKE_CONF}"
266314564Sdim.endif
267218885Sdim
268341825Sdim# Default executable format
269218885Sdim# XXX hint for bsd.port.mk
270218885SdimOBJFORMAT?=	elf
271218885Sdim
272218885Sdim.endif
273341825Sdim
274218885Sdim.include <bsd.cpu.mk>
275218885Sdim