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