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