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