sys.mk revision 1.119 1 # $NetBSD: sys.mk,v 1.119 2013/12/31 18:46:09 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 .if defined(CTFCONVERT)
122 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
123 .endif
124 .c.o:
125 ${COMPILE.c} ${.IMPSRC}
126 .if defined(CTFCONVERT)
127 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
128 .endif
129 .c.a:
130 ${COMPILE.c} ${.IMPSRC}
131 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
132 rm -f ${.PREFIX}.o
133 .c.ln:
134 ${LINT} ${LINTFLAGS} \
135 ${CPPFLAGS:C/-([IDU])[ ]*/-\1/Wg:M-[IDU]*} \
136 -i ${.IMPSRC}
137
138 # C++
139 .cc .cpp .cxx .C:
140 ${LINK.cc} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
141 .cc.o .cpp.o .cxx.o .C.o:
142 ${COMPILE.cc} ${.IMPSRC}
143 .cc.a .cpp.a .cxx.a .C.a:
144 ${COMPILE.cc} ${.IMPSRC}
145 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
146 rm -f ${.PREFIX}.o
147
148 # Fortran/Ratfor
149 .f:
150 ${LINK.f} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
151 .f.o:
152 ${COMPILE.f} ${.IMPSRC}
153 .if defined(CTFCONVERT)
154 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
155 .endif
156 .f.a:
157 ${COMPILE.f} ${.IMPSRC}
158 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
159 rm -f ${.PREFIX}.o
160
161 .F:
162 ${LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
163 .if defined(CTFCONVERT)
164 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
165 .endif
166 .F.o:
167 ${COMPILE.F} ${.IMPSRC}
168 .if defined(CTFCONVERT)
169 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
170 .endif
171 .F.a:
172 ${COMPILE.F} ${.IMPSRC}
173 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
174 rm -f ${.PREFIX}.o
175
176 .r:
177 ${LINK.r} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
178 .r.o:
179 ${COMPILE.r} ${.IMPSRC}
180 .if defined(CTFCONVERT)
181 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
182 .endif
183 .r.a:
184 ${COMPILE.r} ${.IMPSRC}
185 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
186 rm -f ${.PREFIX}.o
187
188 # Pascal
189 .p:
190 ${LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
191 .if defined(CTFCONVERT)
192 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
193 .endif
194 .p.o:
195 ${COMPILE.p} ${.IMPSRC}
196 .if defined(CTFCONVERT)
197 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
198 .endif
199 .p.a:
200 ${COMPILE.p} ${.IMPSRC}
201 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
202 rm -f ${.PREFIX}.o
203
204 # Assembly
205 .s:
206 ${LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
207 .if defined(CTFCONVERT)
208 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
209 .endif
210 .s.o:
211 ${COMPILE.s} ${.IMPSRC}
212 .if defined(CTFCONVERT)
213 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
214 .endif
215 .s.a:
216 ${COMPILE.s} ${.IMPSRC}
217 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
218 rm -f ${.PREFIX}.o
219 .S:
220 ${LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
221 .if defined(CTFCONVERT)
222 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
223 .endif
224 .S.o:
225 ${COMPILE.S} ${.IMPSRC}
226 .if defined(CTFCONVERT)
227 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
228 .endif
229 .S.a:
230 ${COMPILE.S} ${.IMPSRC}
231 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
232 rm -f ${.PREFIX}.o
233
234 # Lex
235 .l:
236 ${LEX.l} ${.IMPSRC}
237 ${LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll
238 rm -f lex.yy.c
239 .l.c:
240 ${LEX.l} ${.IMPSRC}
241 mv lex.yy.c ${.TARGET}
242 .l.o:
243 ${LEX.l} ${.IMPSRC}
244 ${COMPILE.c} -o ${.TARGET} lex.yy.c
245 .if defined(CTFCONVERT)
246 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
247 .endif
248 rm -f lex.yy.c
249
250 # Yacc
251 .y:
252 ${YACC.y} ${.IMPSRC}
253 ${LINK.c} -o ${.TARGET} y.tab.c ${LDLIBS}
254 rm -f y.tab.c
255 .y.c:
256 ${YACC.y} ${.IMPSRC}
257 mv y.tab.c ${.TARGET}
258 .y.o:
259 ${YACC.y} ${.IMPSRC}
260 ${COMPILE.c} -o ${.TARGET} y.tab.c
261 .if defined(CTFCONVERT)
262 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
263 .endif
264 rm -f y.tab.c
265
266 # Shell
267 .sh:
268 rm -f ${.TARGET}
269 cp ${.IMPSRC} ${.TARGET}
270 chmod a+x ${.TARGET}
271