sys.mk revision 133369
1255643Snwhitehorn#	from: @(#)sys.mk	8.2 (Berkeley) 3/21/94
2255643Snwhitehorn# $FreeBSD: head/share/mk/sys.mk 133369 2004-08-09 10:54:05Z harti $
3255643Snwhitehorn
4255643Snwhitehornunix		?=	We run FreeBSD, not UNIX.
5255643Snwhitehorn.FreeBSD	?=	true
6255643Snwhitehorn
7255643Snwhitehorn# If the special target .POSIX appears (without prerequisites or
8255643Snwhitehorn# commands) before the first noncomment line in the makefile, make shall
9255643Snwhitehorn# process the makefile as specified by the Posix 1003.2 specification.
10255643Snwhitehorn# make(1) sets the special macro %POSIX in this case (to the actual
11255643Snwhitehorn# value "1003.2", for what it's worth).
12255643Snwhitehorn#
13255643Snwhitehorn# The rules below use this macro to distinguish between Posix-compliant
14255643Snwhitehorn# and default behaviour.
15255643Snwhitehorn
16255643Snwhitehorn.if defined(%POSIX)
17255643Snwhitehorn.SUFFIXES:	.o .c .y .l .a .sh .f
18255643Snwhitehorn.else
19255643Snwhitehorn.SUFFIXES:	.out .a .ln .o .c .cc .cpp .cxx .C .m .F .f .e .r .y .l .S .asm .s .cl .p .h .sh
20255643Snwhitehorn.endif
21255643Snwhitehorn
22255643SnwhitehornX11BASE		?=	/usr/X11R6
23255643Snwhitehorn
24255643SnwhitehornAR		?=	ar
25255643Snwhitehorn.if defined(%POSIX)
26255643SnwhitehornARFLAGS		?=	-rv
27255643Snwhitehorn.else
28255643SnwhitehornARFLAGS		?=	rl
29255643Snwhitehorn.endif
30255643SnwhitehornRANLIB		?=	ranlib
31255643Snwhitehorn
32255643SnwhitehornAS		?=	as
33255643SnwhitehornAFLAGS		?=
34255643Snwhitehorn
35255643Snwhitehorn.if defined(%POSIX)
36255643SnwhitehornCC		?=	c89
37255643SnwhitehornCFLAGS		?=	-O
38255643Snwhitehorn.else
39255643SnwhitehornCC		?=	cc
40255643SnwhitehornCFLAGS		?=	-O -pipe
41255643Snwhitehorn.endif
42255643Snwhitehorn
43255643SnwhitehornCXX		?=	c++
44255643SnwhitehornCXXFLAGS	?=	${CFLAGS:N-std=*:N-Wnested-externs:N-W*-prototypes}
45255643Snwhitehorn
46255643SnwhitehornCPP		?=	cpp
47255643Snwhitehorn
48255643Snwhitehorn.if empty(.MAKEFLAGS:M-s)
49265974SianECHO		?=	echo
50255643SnwhitehornECHODIR		?=	echo
51255643Snwhitehorn.else
52255643SnwhitehornECHO		?=	true
53255643Snwhitehorn.if ${.MAKEFLAGS:M-s} == "-s"
54255643SnwhitehornECHODIR		?=	echo
55255643Snwhitehorn.else
56255643SnwhitehornECHODIR		?=	true
57255643Snwhitehorn.endif
58255643Snwhitehorn.endif
59255643Snwhitehorn
60255643Snwhitehorn.if !empty(.MAKEFLAGS:M-n) && ${.MAKEFLAGS:M-n} == "-n"
61255643Snwhitehorn_+_		?=
62255643Snwhitehorn.else
63255643Snwhitehorn_+_		?=	+
64255643Snwhitehorn.endif
65255643Snwhitehorn
66255643Snwhitehorn.if defined(%POSIX)
67255643SnwhitehornFC		?=	fort77
68266020SianFFLAGS		?=	-O 1
69266020Sian.else
70255643SnwhitehornFC		?=	f77
71255643SnwhitehornFFLAGS		?=	-O
72255643Snwhitehorn.endif
73255643SnwhitehornEFLAGS		?=
74255643Snwhitehorn
75255643SnwhitehornINSTALL		?=	install
76255643Snwhitehorn
77255643SnwhitehornLEX		?=	lex
78255643SnwhitehornLFLAGS		?=
79255643Snwhitehorn
80255643SnwhitehornLD		?=	ld
81255643SnwhitehornLDFLAGS		?=
82255643Snwhitehorn
83255643SnwhitehornLINT		?=	lint
84255643SnwhitehornLINTFLAGS	?=	-cghapbx
85255643SnwhitehornLINTKERNFLAGS	?=	${LINTFLAGS}
86255643SnwhitehornLINTOBJFLAGS	?=	-cghapbxu -i
87255643SnwhitehornLINTOBJKERNFLAGS?=	${LINTOBJFLAGS}
88255643SnwhitehornLINTLIBFLAGS	?=	-cghapbxu -C ${LIB}
89255643Snwhitehorn
90255643SnwhitehornMAKE		?=	make
91255643Snwhitehorn
92255643SnwhitehornOBJC		?=	cc
93255643SnwhitehornOBJCFLAGS	?=	${OBJCINCLUDES} ${CFLAGS} -Wno-import
94255643Snwhitehorn
95255643SnwhitehornPC		?=	pc
96255643SnwhitehornPFLAGS		?=
97255643Snwhitehorn
98255643SnwhitehornRC		?=	f77
99255643SnwhitehornRFLAGS		?=
100255643Snwhitehorn
101255643SnwhitehornSHELL		?=	sh
102255643Snwhitehorn
103255643SnwhitehornYACC		?=	yacc
104255643Snwhitehorn.if defined(%POSIX)
105255643SnwhitehornYFLAGS		?=
106255643Snwhitehorn.else
107255643SnwhitehornYFLAGS		?=	-d
108255643Snwhitehorn.endif
109255643Snwhitehorn
110255643Snwhitehorn# FreeBSD/i386 has traditionally been built with a version of make
111255643Snwhitehorn# which knows MACHINE, but not MACHINE_ARCH. When building on other
112255643Snwhitehorn# architectures, assume that the version of make being used has an
113255643Snwhitehorn# explicit MACHINE_ARCH setting and treat a missing MACHINE_ARCH
114255643Snwhitehorn# as an i386 architecture.
115255643SnwhitehornMACHINE_ARCH	?=	i386
116255643Snwhitehorn
117255643Snwhitehorn.if defined(%POSIX)
118255643Snwhitehorn
119255643Snwhitehorn# Posix 1003.2 mandated rules
120255643Snwhitehorn#
121255643Snwhitehorn# Quoted directly from the Posix 1003.2 draft, only the macros
122255643Snwhitehorn# $@, $< and $* have been replaced by ${.TARGET}, ${.IMPSRC}, and
123255643Snwhitehorn# ${.PREFIX}, resp.
124255643Snwhitehorn
125255643Snwhitehorn# SINGLE SUFFIX RULES
126255643Snwhitehorn.c:
127255643Snwhitehorn	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC}
128255643Snwhitehorn
129255643Snwhitehorn.f:
130255643Snwhitehorn	${FC} ${FFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC}
131255643Snwhitehorn
132255643Snwhitehorn.sh:
133255643Snwhitehorn	cp ${.IMPSRC} ${.TARGET}
134255643Snwhitehorn	chmod a+x ${.TARGET}
135255643Snwhitehorn
136255643Snwhitehorn# DOUBLE SUFFIX RULES
137255643Snwhitehorn
138255643Snwhitehorn.c.o:
139255643Snwhitehorn	${CC} ${CFLAGS} -c ${.IMPSRC}
140255643Snwhitehorn
141255643Snwhitehorn.f.o:
142255643Snwhitehorn	${FC} ${FFLAGS} -c ${.IMPSRC}
143255643Snwhitehorn
144255643Snwhitehorn.y.o:
145255643Snwhitehorn	${YACC} ${YFLAGS} ${.IMPSRC}
146255643Snwhitehorn	${CC} ${CFLAGS} -c y.tab.c
147255643Snwhitehorn	rm -f y.tab.c
148255643Snwhitehorn	mv y.tab.o ${.TARGET}
149255643Snwhitehorn
150255643Snwhitehorn.l.o:
151255643Snwhitehorn	${LEX} ${LFLAGS} ${.IMPSRC}
152255643Snwhitehorn	${CC} ${CFLAGS} -c lex.yy.c
153255643Snwhitehorn	rm -f lex.yy.c
154255910Snwhitehorn	mv lex.yy.o ${.TARGET}
155255910Snwhitehorn
156255910Snwhitehorn.y.c:
157255643Snwhitehorn	${YACC} ${YFLAGS} ${.IMPSRC}
158255643Snwhitehorn	mv y.tab.c ${.TARGET}
159255643Snwhitehorn
160266020Sian.l.c:
161266020Sian	${LEX} ${LFLAGS} ${.IMPSRC}
162266020Sian	mv lex.yy.c ${.TARGET}
163266020Sian
164266020Sian.c.a:
165266020Sian	${CC} ${CFLAGS} -c ${.IMPSRC}
166266020Sian	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
167266020Sian	rm -f ${.PREFIX}.o
168266020Sian
169266020Sian.f.a:
170266020Sian	${FC} ${FFLAGS} -c ${.IMPSRC}
171266020Sian	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
172266020Sian	rm -f ${.PREFIX}.o
173266020Sian
174266020Sian.else
175266020Sian
176266020Sian# non-Posix rule set
177266020Sian
178266020Sian.sh:
179266020Sian	cp -p ${.IMPSRC} ${.TARGET}
180266020Sian	chmod a+x ${.TARGET}
181266020Sian
182266020Sian.c.ln:
183266020Sian	${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \
184266020Sian	    touch ${.TARGET}
185266020Sian
186266020Sian.cc.ln .C.ln .cpp.ln .cxx.ln:
187266020Sian	${LINT} ${LINTOBJFLAGS} ${CXXFLAGS:M-[DIU]*} ${.IMPSRC} || \
188266020Sian	    touch ${.TARGET}
189266020Sian
190266020Sian.c:
191266020Sian	${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
192266020Sian
193266020Sian.c.o:
194266020Sian	${CC} ${CFLAGS} -c ${.IMPSRC}
195266020Sian
196266020Sian.cc .cpp .cxx .C:
197266020Sian	${CXX} ${CXXFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
198266020Sian
199266020Sian.cc.o .cpp.o .cxx.o .C.o:
200266020Sian	${CXX} ${CXXFLAGS} -c ${.IMPSRC}
201266020Sian
202266020Sian.m.o:
203266020Sian	${OBJC} ${OBJCFLAGS} -c ${.IMPSRC}
204266020Sian
205266020Sian.p.o:
206266020Sian	${PC} ${PFLAGS} -c ${.IMPSRC}
207266020Sian
208266020Sian.e .r .F .f:
209266020Sian	${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} \
210266020Sian	    -o ${.TARGET}
211266020Sian
212266020Sian.e.o .r.o .F.o .f.o:
213266020Sian	${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} -c ${.IMPSRC}
214266020Sian
215266020Sian.S.o:
216266020Sian	${CC} ${CFLAGS} -c ${.IMPSRC}
217266020Sian
218266020Sian.asm.o:
219266020Sian	${CC} -x assembler-with-cpp ${CFLAGS} -c ${.IMPSRC}
220266020Sian
221266020Sian.s.o:
222266020Sian	${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC}
223266020Sian
224266020Sian# XXX not -j safe
225266020Sian.y.o:
226266020Sian	${YACC} ${YFLAGS} ${.IMPSRC}
227266020Sian	${CC} ${CFLAGS} -c y.tab.c -o ${.TARGET}
228266020Sian	rm -f y.tab.c
229266020Sian
230266020Sian.l.o:
231266020Sian	${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c
232266020Sian	${CC} ${CFLAGS} -c ${.PREFIX}.tmp.c -o ${.TARGET}
233266020Sian	rm -f ${.PREFIX}.tmp.c
234266020Sian
235266020Sian# XXX not -j safe
236266020Sian.y.c:
237255643Snwhitehorn	${YACC} ${YFLAGS} ${.IMPSRC}
238266020Sian	mv y.tab.c ${.TARGET}
239266020Sian
240255643Snwhitehorn.l.c:
241266020Sian	${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.TARGET}
242266020Sian
243266020Sian.s.out .c.out .o.out:
244266020Sian	${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
245266020Sian
246266020Sian.f.out .F.out .r.out .e.out:
247266020Sian	${FC} ${EFLAGS} ${RFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} \
248266020Sian	    ${LDLIBS} -o ${.TARGET}
249266020Sian	rm -f ${.PREFIX}.o
250266020Sian
251266020Sian# XXX not -j safe
252266020Sian.y.out:
253266020Sian	${YACC} ${YFLAGS} ${.IMPSRC}
254266020Sian	${CC} ${CFLAGS} ${LDFLAGS} y.tab.c ${LDLIBS} -ly -o ${.TARGET}
255266020Sian	rm -f y.tab.c
256266020Sian
257266020Sian.l.out:
258266020Sian	${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c
259266020Sian	${CC} ${CFLAGS} ${LDFLAGS} ${.PREFIX}.tmp.c ${LDLIBS} -ll -o ${.TARGET}
260266020Sian	rm -f ${.PREFIX}.tmp.c
261255643Snwhitehorn
262255643Snwhitehorn# FreeBSD build pollution.  Hide it in the non-POSIX part of the ifdef.
263255643Snwhitehorn__MAKE_CONF?=/etc/make.conf
264255643Snwhitehorn.if exists(${__MAKE_CONF})
265255643Snwhitehorn.include "${__MAKE_CONF}"
266255643Snwhitehorn.endif
267255643Snwhitehorn
268255643Snwhitehorn# Default executable format
269255643Snwhitehorn# XXX hint for bsd.port.mk
270255643SnwhitehornOBJFORMAT?=	elf
271255643Snwhitehorn
272255643Snwhitehorn.endif
273255643Snwhitehorn
274255643Snwhitehorn.include <bsd.cpu.mk>
275255643Snwhitehorn