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