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