sys.mk revision 1.122 1 # $NetBSD: sys.mk,v 1.122 2014/03/09 19:10:01 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
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} == "coldfire"
34 DBG?= -O1
35 .elif ${MACHINE_ARCH} == "vax"
36 DBG?= -O1 -fgcse -fstrength-reduce -fgcse-after-reload
37 .else
38 DBG?= -O2
39 .endif
40 CFLAGS?= ${DBG}
41 LDFLAGS?=
42 COMPILE.c?= ${CC} ${CFLAGS} ${CPPFLAGS} -c
43 LINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
44
45 # C Type Format data is required for DTrace
46 CTFFLAGS ?= -g -L VERSION
47 # Use only one thread for now.
48 CTFMFLAGS ?= -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
52 .if exists(/usr/bin/ctfconvert) && exists(/usr/bin/ctfmerge)
53 CTFCONVERT ?= ctfconvert
54 CTFMERGE ?= ctfmerge
55 .endif
56
57 CXX?= c++
58 CXXFLAGS?= ${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}
59
60 __ALLSRC1= ${empty(DESTDIR):?${.ALLSRC}:${.ALLSRC:S|^${DESTDIR}|^destdir|}}
61 __ALLSRC2= ${empty(MAKEOBJDIR):?${__ALLSRC1}:${__ALLSRC1:S|^${MAKEOBJDIR}|^obj|}}
62 __ALLSRC3= ${empty(NETBSDSRCDIR):?${__ALLSRC2}:${__ALLSRC2:S|^${NETBSDSRCDIR}|^src|}}
63 __BUILDSEED= ${BUILDSEED}/${__ALLSRC3:O}/${.TARGET}
64 _CXXSEED?= ${BUILDSEED:D-frandom-seed=${__BUILDSEED:hash}}
65
66 COMPILE.cc?= ${CXX} ${_CXXSEED} ${CXXFLAGS} ${CPPFLAGS} -c
67 LINK.cc?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
68
69 OBJC?= ${CC}
70 OBJCFLAGS?= ${CFLAGS}
71 COMPILE.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c
72 LINK.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS}
73
74 CPP?= cpp
75 CPPFLAGS?=
76
77 FC?= f77
78 FFLAGS?= -O
79 RFLAGS?=
80 COMPILE.f?= ${FC} ${FFLAGS} -c
81 LINK.f?= ${FC} ${FFLAGS} ${LDFLAGS}
82 COMPILE.F?= ${FC} ${FFLAGS} ${CPPFLAGS} -c
83 LINK.F?= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
84 COMPILE.r?= ${FC} ${FFLAGS} ${RFLAGS} -c
85 LINK.r?= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
86
87 INSTALL?= install
88
89 LD?= ld
90
91 LEX?= lex
92 LFLAGS?=
93 LEX.l?= ${LEX} ${LFLAGS}
94
95 LINT?= lint
96 LINTFLAGS?= -chapbxzFS
97
98 LORDER?= lorder
99
100 MAKE?= make
101
102 NM?= nm
103
104 PC?= pc
105 PFLAGS?=
106 COMPILE.p?= ${PC} ${PFLAGS} ${CPPFLAGS} -c
107 LINK.p?= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
108
109 SHELL?= sh
110
111 SIZE?= size
112
113 TSORT?= tsort -q
114
115 YACC?= yacc
116 YFLAGS?=
117 YACC.y?= ${YACC} ${YFLAGS}
118
119 # C
120 .c:
121 ${LINK.c} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
122 # XXX: disable for now
123 #.if defined(CTFCONVERT)
124 # ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
125 #.endif
126 .c.o:
127 ${COMPILE.c} ${.IMPSRC}
128 .if defined(CTFCONVERT)
129 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
130 .endif
131 .c.a:
132 ${COMPILE.c} ${.IMPSRC}
133 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
134 rm -f ${.PREFIX}.o
135 .c.ln:
136 ${LINT} ${LINTFLAGS} \
137 ${CPPFLAGS:C/-([IDU])[ ]*/-\1/Wg:M-[IDU]*} \
138 -i ${.IMPSRC}
139
140 # C++
141 .cc .cpp .cxx .C:
142 ${LINK.cc} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
143 .cc.o .cpp.o .cxx.o .C.o:
144 ${COMPILE.cc} ${.IMPSRC}
145 .cc.a .cpp.a .cxx.a .C.a:
146 ${COMPILE.cc} ${.IMPSRC}
147 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
148 rm -f ${.PREFIX}.o
149
150 # Fortran/Ratfor
151 .f:
152 ${LINK.f} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
153 .f.o:
154 ${COMPILE.f} ${.IMPSRC}
155 .if defined(CTFCONVERT)
156 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
157 .endif
158 .f.a:
159 ${COMPILE.f} ${.IMPSRC}
160 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
161 rm -f ${.PREFIX}.o
162
163 .F:
164 ${LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
165 .if defined(CTFCONVERT)
166 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
167 .endif
168 .F.o:
169 ${COMPILE.F} ${.IMPSRC}
170 .if defined(CTFCONVERT)
171 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
172 .endif
173 .F.a:
174 ${COMPILE.F} ${.IMPSRC}
175 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
176 rm -f ${.PREFIX}.o
177
178 .r:
179 ${LINK.r} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
180 .r.o:
181 ${COMPILE.r} ${.IMPSRC}
182 .if defined(CTFCONVERT)
183 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
184 .endif
185 .r.a:
186 ${COMPILE.r} ${.IMPSRC}
187 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
188 rm -f ${.PREFIX}.o
189
190 # Pascal
191 .p:
192 ${LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
193 .if defined(CTFCONVERT)
194 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
195 .endif
196 .p.o:
197 ${COMPILE.p} ${.IMPSRC}
198 .if defined(CTFCONVERT)
199 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
200 .endif
201 .p.a:
202 ${COMPILE.p} ${.IMPSRC}
203 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
204 rm -f ${.PREFIX}.o
205
206 # Assembly
207 .s:
208 ${LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
209 .if defined(CTFCONVERT)
210 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
211 .endif
212 .s.o:
213 ${COMPILE.s} ${.IMPSRC}
214 .if defined(CTFCONVERT)
215 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
216 .endif
217 .s.a:
218 ${COMPILE.s} ${.IMPSRC}
219 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
220 rm -f ${.PREFIX}.o
221 .S:
222 ${LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
223 .if defined(CTFCONVERT)
224 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
225 .endif
226 .S.o:
227 ${COMPILE.S} ${.IMPSRC}
228 .if defined(CTFCONVERT)
229 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
230 .endif
231 .S.a:
232 ${COMPILE.S} ${.IMPSRC}
233 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
234 rm -f ${.PREFIX}.o
235
236 # Lex
237 .l:
238 ${LEX.l} ${.IMPSRC}
239 ${LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll
240 rm -f lex.yy.c
241 .l.c:
242 ${LEX.l} ${.IMPSRC}
243 mv lex.yy.c ${.TARGET}
244 .l.o:
245 ${LEX.l} ${.IMPSRC}
246 ${COMPILE.c} -o ${.TARGET} lex.yy.c
247 .if defined(CTFCONVERT)
248 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
249 .endif
250 rm -f lex.yy.c
251
252 # Yacc
253 .y:
254 ${YACC.y} ${.IMPSRC}
255 ${LINK.c} -o ${.TARGET} y.tab.c ${LDLIBS}
256 rm -f y.tab.c
257 .y.c:
258 ${YACC.y} ${.IMPSRC}
259 mv y.tab.c ${.TARGET}
260 .y.o:
261 ${YACC.y} ${.IMPSRC}
262 ${COMPILE.c} -o ${.TARGET} y.tab.c
263 .if defined(CTFCONVERT)
264 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
265 .endif
266 rm -f y.tab.c
267
268 # Shell
269 .sh:
270 rm -f ${.TARGET}
271 cp ${.IMPSRC} ${.TARGET}
272 chmod a+x ${.TARGET}
273