sys.mk revision 34829
1193323Sed#	from: @(#)sys.mk	8.2 (Berkeley) 3/21/94
2193323Sed#	$Id: sys.mk,v 1.29 1998/02/20 15:27:03 bde Exp $
3193323Sed
4193323Sedunix		?=	We run FreeBSD, not UNIX.
5193323Sed
6193323Sed# If the special target .POSIX appears (without prerequisites or
7193323Sed# commands) before the first noncomment line in the makefile, make shall
8193323Sed# process the makefile as specified by the Posix 1003.2 specification.
9193323Sed# make(1) sets the special macro %POSIX in this case (to the actual
10193323Sed# value "1003.2", for what it's worth).
11193323Sed#
12193323Sed# The rules below use this macro to distinguish between Posix-compliant
13193323Sed# and default behaviour.
14193323Sed
15193323Sed.if defined(%POSIX)
16193323Sed.SUFFIXES:	.o .c .y .l .a .sh .f
17193323Sed.else
18193323Sed.SUFFIXES:	.out .a .ln .o .c .cc .cxx .C .F .f .e .r .y .l .S .s .cl .p .h .sh
19193323Sed.endif
20193323Sed
21193323Sed.LIBS:		.a
22193323Sed
23193323SedX11BASE		?=	/usr/X11R6
24193323Sed
25193323SedAR		?=	ar
26193323Sed.if defined(%POSIX)
27193323SedARFLAGS		?=	-rv
28193323Sed.else
29193323SedARFLAGS		?=	rl
30193323Sed.endif
31193323SedRANLIB		?=	ranlib
32193323Sed
33193323SedAS		?=	as
34193323SedAFLAGS		?=
35193323Sed
36193323Sed.if defined(%POSIX)
37193323SedCC		?=	c89
38193323Sed.else
39193323SedCC		?=	cc
40193323Sed.endif
41193323SedCFLAGS		?=	-O
42193323Sed
43193323SedCXX		?=	c++
44193323SedCXXFLAGS	?=	${CXXINCLUDES} ${CFLAGS}
45193323Sed
46193323SedCPP		?=	cpp
47193323Sed
48193323Sed.if ${.MAKEFLAGS:M-s} == ""
49193323SedECHO		?=	echo
50193323SedECHODIR		?=	echo
51193323Sed.else
52193323SedECHO		?=	true
53193323Sed.if ${.MAKEFLAGS:M-s} == "-s"
54193323SedECHODIR		?=	echo
55193323Sed.else
56193323SedECHODIR		?=	true
57193323Sed.endif
58193323Sed.endif
59193323Sed
60193323Sed.if defined(%POSIX)
61193323SedFC		?=	fort77
62193323SedFFLAGS		?=	-O 1
63193323Sed.else
64193323SedFC		?=	f77
65193323SedFFLAGS		?=	-O
66193323Sed.endif
67193323SedEFLAGS		?=
68193323Sed
69193323SedINSTALL		?=	install
70193323Sed
71193323SedLEX		?=	lex
72193323SedLFLAGS		?=
73193323Sed
74193323SedLD		?=	ld
75193323SedLDFLAGS		?=
76193323Sed
77193323SedLINT		?=	lint
78193323SedLINTFLAGS	?=	-chapbx
79193323Sed
80193323SedMAKE		?=	make
81193323Sed
82193323SedPC		?=	pc
83193323SedPFLAGS		?=
84193323Sed
85193323SedRC		?=	f77
86193323SedRFLAGS		?=
87193323Sed
88193323SedSHELL		?=	sh
89193323Sed
90193323SedYACC		?=	yacc
91193323Sed.if defined(%POSIX)
92193323SedYFLAGS		?=
93193323Sed.else
94193323SedYFLAGS		?=	-d
95193323Sed.endif
96193323Sed
97193323Sed# FreeBSD/i386 as traditionally been built with a version of make
98193323Sed# which knows MACHINE, but not MACHINE_ARCH. When building on other
99193323Sed# architectures, assume that the version of make being used has an
100193323Sed# explicit MACHINE_ARCH setting and treat a missing MACHINE_ARCH
101193323Sed# as an i386 architecture.
102193323SedMACHINE_ARCH?=	i386
103193323Sed
104193323Sed# Default executable format
105193323Sed.if ${MACHINE_ARCH} == "alpha"
106193323SedBINFORMAT	?=	elf
107193323Sed.else
108193323SedBINFORMAT	?=	aout
109193323Sed.endif
110193323Sed
111193323Sed# For tags rule.
112193323SedGTAGSFLAGS=	-o
113193323SedHTAGSFLAGS=
114193323Sed
115193323Sed.if defined(%POSIX)
116193323Sed# Posix 1003.2 mandated rules
117193323Sed#
118193323Sed# Quoted directly from the Posix 1003.2 draft, only the macros
119193323Sed# $@, $< and $* have been replaced by ${.TARGET}, ${.IMPSRC}, and
120193323Sed# ${.PREFIX}, resp.
121193323Sed
122193323Sed# SINGLE SUFFIX RULES
123193323Sed.c:
124193323Sed	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC}
125193323Sed
126193323Sed.f:
127193323Sed	${FC} ${FFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC}
128193323Sed
129193323Sed.sh:
130193323Sed	cp ${.IMPSRC} ${.TARGET}
131193323Sed	chmod a+x ${.TARGET}
132193323Sed
133193323Sed# DOUBLE SUFFIX RULES
134193323Sed
135193323Sed.c.o:
136193323Sed	${CC} ${CFLAGS} -c ${.IMPSRC}
137193323Sed
138193323Sed.f.o:
139193323Sed	${FC} ${FFLAGS} -c ${.IMPSRC}
140193323Sed
141193323Sed.y.o:
142193323Sed	${YACC} ${YFLAGS} ${.IMPSRC}
143193323Sed	${CC} ${CFLAGS} -c y.tab.c
144193323Sed	rm -f y.tab.c
145193323Sed	mv y.tab.o ${.TARGET}
146193323Sed
147193323Sed.l.o:
148193323Sed	${LEX} ${LFLAGS} ${.IMPSRC}
149193323Sed	${CC} ${CFLAGS} -c lex.yy.c
150193323Sed	rm -f lex.yy.c
151193323Sed	mv lex.yy.o ${.TARGET}
152193323Sed
153193323Sed.y.c:
154193323Sed	${YACC} ${YFLAGS} ${.IMPSRC}
155193323Sed	mv y.tab.c ${.TARGET}
156193323Sed
157193323Sed.l.c:
158193323Sed	${LEX} ${LFLAGS} ${.IMPSRC}
159193323Sed	mv lex.yy.c ${.TARGET}
160193323Sed
161193323Sed.c.a:
162193323Sed	${CC} ${CFLAGS} -c ${.IMPSRC}
163193323Sed	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
164193323Sed	rm -f ${.PREFIX}.o
165193323Sed
166193323Sed.f.a:
167193323Sed	${FC} ${FFLAGS} -c ${.IMPSRC}
168193323Sed	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
169193323Sed	rm -f ${.PREFIX}.o
170193323Sed
171193323Sed.else
172193323Sed
173193323Sed# non-Posix rule set
174193323Sed
175193323Sed.c:
176193323Sed	${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
177193323Sed
178193323Sed.sh:
179193323Sed	cp -p ${.IMPSRC} ${.TARGET}
180193323Sed	chmod a+x ${.TARGET}
181193323Sed
182193323Sed.c.o:
183193323Sed	${CC} ${CFLAGS} -c ${.IMPSRC}
184193323Sed
185193323Sed.cc.o .cxx.o .C.o:
186193323Sed	${CXX} ${CXXFLAGS} -c ${.IMPSRC}
187193323Sed
188193323Sed.p.o:
189193323Sed	${PC} ${PFLAGS} -c ${.IMPSRC}
190193323Sed
191193323Sed.e.o .r.o .F.o .f.o:
192193323Sed	${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} -c ${.IMPSRC}
193193323Sed
194193323Sed.S.o:
195193323Sed	${CC} ${CFLAGS} -c ${.IMPSRC}
196193323Sed
197193323Sed.s.o:
198193323Sed	${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC}
199193323Sed
200193323Sed# XXX not -j safe
201193323Sed.y.o:
202193323Sed	${YACC} ${YFLAGS} ${.IMPSRC}
203193323Sed	${CC} ${CFLAGS} -c y.tab.c -o ${.TARGET}
204193323Sed	rm -f y.tab.c
205193323Sed
206193323Sed.l.o:
207193323Sed	${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c
208193323Sed	${CC} ${CFLAGS} -c ${.PREFIX}.tmp.c -o ${.TARGET}
209193323Sed	rm -f ${.PREFIX}.tmp.c
210193323Sed
211193323Sed# XXX not -j safe
212193323Sed.y.c:
213193323Sed	${YACC} ${YFLAGS} ${.IMPSRC}
214193323Sed	mv y.tab.c ${.TARGET}
215193323Sed
216193323Sed.l.c:
217193323Sed	${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.TARGET}
218193323Sed
219193323Sed.s.out .c.out .o.out:
220193323Sed	${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
221193323Sed
222193323Sed.f.out .F.out .r.out .e.out:
223193323Sed	${FC} ${EFLAGS} ${RFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} \
224193323Sed	    ${LDLIBS} -o ${.TARGET}
225193323Sed	rm -f ${.PREFIX}.o
226193323Sed
227193323Sed# XXX not -j safe
228193323Sed.y.out:
229193323Sed	${YACC} ${YFLAGS} ${.IMPSRC}
230193323Sed	${CC} ${CFLAGS} ${LDFLAGS} y.tab.c ${LDLIBS} -ly -o ${.TARGET}
231193323Sed	rm -f y.tab.c
232193323Sed
233193323Sed.l.out:
234193323Sed	${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c
235193323Sed	${CC} ${CFLAGS} ${LDFLAGS} ${.PREFIX}.tmp.c ${LDLIBS} -ll -o ${.TARGET}
236193323Sed	rm -f ${.PREFIX}.tmp.c
237193323Sed
238193323Sed.endif
239193323Sed
240193323Sed.include <bsd.own.mk>
241193323Sed
242193323Sed.if exists(/etc/make.conf)
243193323Sed.include </etc/make.conf>
244193323Sed.endif
245193323Sed