1#	$NetBSD: sys.mk,v 1.108 2012/02/10 05:57:42 matt Exp $
2#	@(#)sys.mk	8.2 (Berkeley) 3/21/94
3
4unix?=		We run NetBSD.
5
6.SUFFIXES: .a .o .ln .s .S .c .cc .cpp .cxx .C .f .F .r .p .l .y .sh
7
8.LIBS:		.a
9
10AR?=		ar
11ARFLAGS?=	rl
12RANLIB?=	ranlib
13
14AS?=		as
15AFLAGS?=
16COMPILE.s?=	${CC} ${AFLAGS} ${AFLAGS.${<:T}} -c
17LINK.s?=	${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${LDFLAGS}
18_ASM_TRADITIONAL_CPP=	-x assembler-with-cpp
19COMPILE.S?=	${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${CPPFLAGS} ${_ASM_TRADITIONAL_CPP} -c
20LINK.S?=	${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${CPPFLAGS} ${LDFLAGS}
21
22CC?=		cc
23.if ${MACHINE_ARCH} == "sh3el" || ${MACHINE_ARCH} == "sh3eb"
24# -O2 is too -falign-* zealous for low-memory sh3 machines
25DBG?=	-Os -freorder-blocks
26.elif ${MACHINE_ARCH} == "m68k" || ${MACHINE_ARCH} == "m68000"
27# see src/doc/HACKS for details
28DBG?=	-Os
29.elif ${MACHINE_ARCH} == "vax"
30DBG?=	-O1 -fgcse -fstrength-reduce -fgcse-after-reload
31.else
32DBG?=	-O2
33.endif
34CFLAGS?=	${DBG}
35LDFLAGS?=
36COMPILE.c?=	${CC} ${CFLAGS} ${CPPFLAGS} -c
37LINK.c?=	${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
38
39# C Type Format data is required for DTrace
40# XXX TBD VERSION is not defined
41CTFFLAGS	?=	-L VERSION
42CTFMFLAGS	?=	-t -L VERSION
43
44.if defined(MKDTRACE) && ${MKDTRACE} != "no"
45CTFCONVERT	?=	${TOOL_CTFCONVERT}
46CTFMERGE	?=	${TOOL_CTFMERGE}
47.if defined(CFLAGS) && (${CFLAGS:M-g} != "")
48CTFFLAGS	+=	-g
49CTFMFLAGS	+=	-g
50.else
51CFLAGS		+=	-g
52.endif
53.endif
54
55CXX?=		c++
56CXXFLAGS?=	${CFLAGS:N-Wno-traditional:N-Wstrict-prototypes:N-Wmissing-prototypes:N-Wno-pointer-sign:N-ffreestanding:N-std=gnu99}
57
58__ALLSRC1=	${empty(DESTDIR):?${.ALLSRC}:${.ALLSRC:S|^${DESTDIR}|^destdir|}}
59__ALLSRC2=	${empty(MAKEOBJDIR):?${__ALLSRC1}:${__ALLSRC1:S|^${MAKEOBJDIR}|^obj|}}
60__ALLSRC3=	${empty(NETBSDSRCDIR):?${__ALLSRC2}:${__ALLSRC2:S|^${NETBSDSRCDIR}|^src|}}
61__BUILDSEED=	${BUILDSEED}/${__ALLSRC3:O}/${.TARGET}
62_CXXSEED?=	${BUILDSEED:D-frandom-seed=${__BUILDSEED:hash}}
63
64COMPILE.cc?=	${CXX} ${_CXXSEED} ${CXXFLAGS} ${CPPFLAGS} -c
65LINK.cc?=	${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
66
67OBJC?=		${CC}
68OBJCFLAGS?=	${CFLAGS}
69COMPILE.m?=	${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c
70LINK.m?=	${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS}
71
72CPP?=		cpp
73CPPFLAGS?=
74
75FC?=		f77
76FFLAGS?=	-O
77RFLAGS?=
78COMPILE.f?=	${FC} ${FFLAGS} -c
79LINK.f?=	${FC} ${FFLAGS} ${LDFLAGS}
80COMPILE.F?=	${FC} ${FFLAGS} ${CPPFLAGS} -c
81LINK.F?=	${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
82COMPILE.r?=	${FC} ${FFLAGS} ${RFLAGS} -c
83LINK.r?=	${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
84
85INSTALL?=	install
86
87LD?=		ld
88
89LEX?=		lex
90LFLAGS?=
91LEX.l?=		${LEX} ${LFLAGS}
92
93LINT?=		lint
94LINTFLAGS?=	-chapbxzFS
95
96LORDER?=	lorder
97
98MAKE?=		make
99
100NM?=		nm
101
102PC?=		pc
103PFLAGS?=
104COMPILE.p?=	${PC} ${PFLAGS} ${CPPFLAGS} -c
105LINK.p?=	${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
106
107SHELL?=		sh
108
109SIZE?=		size
110
111TSORT?= 	tsort -q
112
113YACC?=		yacc
114YFLAGS?=
115YACC.y?=	${YACC} ${YFLAGS}
116
117# C
118.c:
119	${LINK.c} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
120.if defined(CTFCONVERT)
121	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
122.endif
123.c.o:
124	${COMPILE.c} ${.IMPSRC}
125.if defined(CTFCONVERT)
126	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
127.endif
128.c.a:
129	${COMPILE.c} ${.IMPSRC}
130	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
131	rm -f ${.PREFIX}.o
132.c.ln:
133	${LINT} ${LINTFLAGS} \
134	    ${CPPFLAGS:C/-([IDU])[  ]*/-\1/Wg:M-[IDU]*} \
135	    -i ${.IMPSRC}
136
137# C++
138.cc .cpp .cxx .C:
139	${LINK.cc} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
140.cc.o .cpp.o .cxx.o .C.o:
141	${COMPILE.cc} ${.IMPSRC}
142.cc.a .cpp.a .cxx.a .C.a:
143	${COMPILE.cc} ${.IMPSRC}
144	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
145	rm -f ${.PREFIX}.o
146
147# Fortran/Ratfor
148.f:
149	${LINK.f} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
150.f.o:
151	${COMPILE.f} ${.IMPSRC}
152.f.a:
153	${COMPILE.f} ${.IMPSRC}
154	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
155	rm -f ${.PREFIX}.o
156
157.F:
158	${LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
159.if defined(CTFCONVERT)
160	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
161.endif
162.F.o:
163	${COMPILE.F} ${.IMPSRC}
164.if defined(CTFCONVERT)
165	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
166.endif
167.F.a:
168	${COMPILE.F} ${.IMPSRC}
169	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
170	rm -f ${.PREFIX}.o
171
172.r:
173	${LINK.r} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
174.r.o:
175	${COMPILE.r} ${.IMPSRC}
176.r.a:
177	${COMPILE.r} ${.IMPSRC}
178	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
179	rm -f ${.PREFIX}.o
180
181# Pascal
182.p:
183	${LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
184.if defined(CTFCONVERT)
185	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
186.endif
187.p.o:
188	${COMPILE.p} ${.IMPSRC}
189.if defined(CTFCONVERT)
190	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
191.endif
192.p.a:
193	${COMPILE.p} ${.IMPSRC}
194	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
195	rm -f ${.PREFIX}.o
196
197# Assembly
198.s:
199	${LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
200.if defined(CTFCONVERT)
201	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
202.endif
203.s.o:
204	${COMPILE.s} ${.IMPSRC}
205.if defined(CTFCONVERT)
206	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
207.endif
208.s.a:
209	${COMPILE.s} ${.IMPSRC}
210	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
211	rm -f ${.PREFIX}.o
212.S:
213	${LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
214.if defined(CTFCONVERT)
215	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
216.endif
217.S.o:
218	${COMPILE.S} ${.IMPSRC}
219.if defined(CTFCONVERT)
220	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
221.endif
222.S.a:
223	${COMPILE.S} ${.IMPSRC}
224	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
225	rm -f ${.PREFIX}.o
226
227# Lex
228.l:
229	${LEX.l} ${.IMPSRC}
230	${LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll
231	rm -f lex.yy.c
232.l.c:
233	${LEX.l} ${.IMPSRC}
234	mv lex.yy.c ${.TARGET}
235.l.o:
236	${LEX.l} ${.IMPSRC}
237	${COMPILE.c} -o ${.TARGET} lex.yy.c
238	rm -f lex.yy.c
239
240# Yacc
241.y:
242	${YACC.y} ${.IMPSRC}
243	${LINK.c} -o ${.TARGET} y.tab.c ${LDLIBS}
244	rm -f y.tab.c
245.y.c:
246	${YACC.y} ${.IMPSRC}
247	mv y.tab.c ${.TARGET}
248.y.o:
249	${YACC.y} ${.IMPSRC}
250	${COMPILE.c} -o ${.TARGET} y.tab.c
251	rm -f y.tab.c
252
253# Shell
254.sh:
255	rm -f ${.TARGET}
256	cp ${.IMPSRC} ${.TARGET}
257	chmod a+x ${.TARGET}
258