xref: /netbsd-src/share/mk/sys.mk (revision 413d532bcc3f62d122e56d92e13ac64825a40baf)
1#	$NetBSD: sys.mk,v 1.124 2014/04/18 00:37:46 christos Exp $
2#	@(#)sys.mk	8.2 (Berkeley) 3/21/94
3#
4# This file contains the basic rules for make(1) and is read first
5# Do not put conditionals that are set on different files here and
6# expect them to work.
7
8unix?=		We run NetBSD.
9
10.SUFFIXES: .a .o .ln .s .S .c .cc .cpp .cxx .C .f .F .r .p .l .y .sh
11
12.LIBS:		.a
13
14AR?=		ar
15ARFLAGS?=	rl
16RANLIB?=	ranlib
17
18AS?=		as
19AFLAGS?=
20COMPILE.s?=	${CC} ${AFLAGS} ${AFLAGS.${<:T}} -c
21LINK.s?=	${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${LDFLAGS}
22_ASM_TRADITIONAL_CPP=	-x assembler-with-cpp
23COMPILE.S?=	${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${CPPFLAGS} ${_ASM_TRADITIONAL_CPP} -c
24LINK.S?=	${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${CPPFLAGS} ${LDFLAGS}
25
26CC?=		cc
27.if ${MACHINE_ARCH} == "sh3el" || ${MACHINE_ARCH} == "sh3eb"
28# -O2 is too -falign-* zealous for low-memory sh3 machines
29DBG?=	-Os -freorder-blocks
30.elif ${MACHINE_ARCH} == "m68k" || ${MACHINE_ARCH} == "m68000"
31# see src/doc/HACKS for details
32DBG?=	-Os
33.elif ${MACHINE_ARCH} == "coldfire"
34DBG?=	-O1
35.elif ${MACHINE_ARCH} == "vax"
36DBG?=	-O1 -fgcse -fstrength-reduce -fgcse-after-reload
37.else
38DBG?=	-O2
39.endif
40CFLAGS?=	${DBG}
41LDFLAGS?=
42COMPILE.c?=	${CC} ${CFLAGS} ${CPPFLAGS} -c
43LINK.c?=	${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
44
45# C Type Format data is required for DTrace
46CTFFLAGS	?=	-g -L VERSION
47# Use only one thread for now.
48CTFMFLAGS	?=	-S 1 -g -t -L VERSION
49
50# We have to define these here, because if we don't the rules below will
51# not work
52CTFCONVERT	?=	: ctfconvert
53CTFMERGE	?=	: ctfmerge
54
55CXX?=		c++
56CXXFLAGS?=	${CFLAGS:N-Wno-traditional:N-Wstrict-prototypes:N-Wmissing-prototypes:N-Wno-pointer-sign:N-ffreestanding:N-std=gnu[0-9][0-9]:N-Wold-style-definition:N-Wno-format-zero-length}
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?=	-chapbxzgFS
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# XXX: disable for now
121#	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
122.c.o:
123	${COMPILE.c} ${.IMPSRC}
124	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
125.c.a:
126	${COMPILE.c} ${.IMPSRC}
127	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
128	rm -f ${.PREFIX}.o
129.c.ln:
130	${LINT} ${LINTFLAGS} \
131	    ${CPPFLAGS:C/-([IDU])[  ]*/-\1/Wg:M-[IDU]*} \
132	    -i ${.IMPSRC}
133
134# C++
135.cc .cpp .cxx .C:
136	${LINK.cc} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
137.cc.o .cpp.o .cxx.o .C.o:
138	${COMPILE.cc} ${.IMPSRC}
139.cc.a .cpp.a .cxx.a .C.a:
140	${COMPILE.cc} ${.IMPSRC}
141	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
142	rm -f ${.PREFIX}.o
143
144# Fortran/Ratfor
145.f:
146	${LINK.f} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
147.f.o:
148	${COMPILE.f} ${.IMPSRC}
149	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
150.f.a:
151	${COMPILE.f} ${.IMPSRC}
152	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
153	rm -f ${.PREFIX}.o
154
155.F:
156	${LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
157	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
158.F.o:
159	${COMPILE.F} ${.IMPSRC}
160	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
161.F.a:
162	${COMPILE.F} ${.IMPSRC}
163	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
164	rm -f ${.PREFIX}.o
165
166.r:
167	${LINK.r} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
168.r.o:
169	${COMPILE.r} ${.IMPSRC}
170	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
171.r.a:
172	${COMPILE.r} ${.IMPSRC}
173	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
174	rm -f ${.PREFIX}.o
175
176# Pascal
177.p:
178	${LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
179	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
180.p.o:
181	${COMPILE.p} ${.IMPSRC}
182	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
183.p.a:
184	${COMPILE.p} ${.IMPSRC}
185	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
186	rm -f ${.PREFIX}.o
187
188# Assembly
189.s:
190	${LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
191	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
192.s.o:
193	${COMPILE.s} ${.IMPSRC}
194	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
195.s.a:
196	${COMPILE.s} ${.IMPSRC}
197	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
198	rm -f ${.PREFIX}.o
199.S:
200	${LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
201	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
202.S.o:
203	${COMPILE.S} ${.IMPSRC}
204	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
205.S.a:
206	${COMPILE.S} ${.IMPSRC}
207	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
208	rm -f ${.PREFIX}.o
209
210# Lex
211.l:
212	${LEX.l} ${.IMPSRC}
213	${LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll
214	rm -f lex.yy.c
215.l.c:
216	${LEX.l} ${.IMPSRC}
217	mv lex.yy.c ${.TARGET}
218.l.o:
219	${LEX.l} ${.IMPSRC}
220	${COMPILE.c} -o ${.TARGET} lex.yy.c
221	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
222	rm -f lex.yy.c
223
224# Yacc
225.y:
226	${YACC.y} ${.IMPSRC}
227	${LINK.c} -o ${.TARGET} y.tab.c ${LDLIBS}
228	rm -f y.tab.c
229.y.c:
230	${YACC.y} ${.IMPSRC}
231	mv y.tab.c ${.TARGET}
232.y.o:
233	${YACC.y} ${.IMPSRC}
234	${COMPILE.c} -o ${.TARGET} y.tab.c
235	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
236	rm -f y.tab.c
237
238# Shell
239.sh:
240	rm -f ${.TARGET}
241	cp ${.IMPSRC} ${.TARGET}
242	chmod a+x ${.TARGET}
243