sys.mk revision 1.127 1 # $NetBSD: sys.mk,v 1.127 2014/08/10 05:57:31 matt 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 # -freorder-blocks (enabled by -O2) produces much bigger code
32 DBG?= -O2 -fno-reorder-blocks
33 .elif ${MACHINE_ARCH} == "coldfire"
34 DBG?= -O1
35 .elif !empty(MACHINE_ARCH:Maarch64*)
36 DBG?= -O2 ${"${.TARGET:M*.po}" == "":? -fomit-frame-pointer:}
37 .elif ${MACHINE_ARCH} == "vax"
38 DBG?= -O1 -fgcse -fstrength-reduce -fgcse-after-reload
39 .else
40 DBG?= -O2
41 .endif
42 CFLAGS?= ${DBG}
43 LDFLAGS?=
44 COMPILE.c?= ${CC} ${CFLAGS} ${CPPFLAGS} -c
45 LINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
46
47 # C Type Format data is required for DTrace
48 CTFFLAGS ?= -g -L VERSION
49 # Use only one thread for now.
50 CTFMFLAGS ?= -S 1 -g -t -L VERSION
51
52 CXX?= c++
53 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}
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?= -chapbxzgFS
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 # XXX: disable for now
118 # ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
119 .c.o:
120 ${COMPILE.c} ${.IMPSRC}
121 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
122 .c.a:
123 ${COMPILE.c} ${.IMPSRC}
124 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
125 rm -f ${.PREFIX}.o
126 .c.ln:
127 ${LINT} ${LINTFLAGS} \
128 ${CPPFLAGS:C/-([IDU])[ ]*/-\1/Wg:M-[IDU]*} \
129 -i ${.IMPSRC}
130
131 # C++
132 .cc .cpp .cxx .C:
133 ${LINK.cc} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
134 .cc.o .cpp.o .cxx.o .C.o:
135 ${COMPILE.cc} ${.IMPSRC}
136 .cc.a .cpp.a .cxx.a .C.a:
137 ${COMPILE.cc} ${.IMPSRC}
138 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
139 rm -f ${.PREFIX}.o
140
141 # Fortran/Ratfor
142 .f:
143 ${LINK.f} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
144 .f.o:
145 ${COMPILE.f} ${.IMPSRC}
146 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
147 .f.a:
148 ${COMPILE.f} ${.IMPSRC}
149 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
150 rm -f ${.PREFIX}.o
151
152 .F:
153 ${LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
154 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
155 .F.o:
156 ${COMPILE.F} ${.IMPSRC}
157 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
158 .F.a:
159 ${COMPILE.F} ${.IMPSRC}
160 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
161 rm -f ${.PREFIX}.o
162
163 .r:
164 ${LINK.r} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
165 .r.o:
166 ${COMPILE.r} ${.IMPSRC}
167 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
168 .r.a:
169 ${COMPILE.r} ${.IMPSRC}
170 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
171 rm -f ${.PREFIX}.o
172
173 # Pascal
174 .p:
175 ${LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
176 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
177 .p.o:
178 ${COMPILE.p} ${.IMPSRC}
179 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
180 .p.a:
181 ${COMPILE.p} ${.IMPSRC}
182 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
183 rm -f ${.PREFIX}.o
184
185 # Assembly
186 .s:
187 ${LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
188 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
189 .s.o:
190 ${COMPILE.s} ${.IMPSRC}
191 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
192 .s.a:
193 ${COMPILE.s} ${.IMPSRC}
194 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
195 rm -f ${.PREFIX}.o
196 .S:
197 ${LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
198 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
199 .S.o:
200 ${COMPILE.S} ${.IMPSRC}
201 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
202 .S.a:
203 ${COMPILE.S} ${.IMPSRC}
204 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
205 rm -f ${.PREFIX}.o
206
207 # Lex
208 .l:
209 ${LEX.l} ${.IMPSRC}
210 ${LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll
211 rm -f lex.yy.c
212 .l.c:
213 ${LEX.l} ${.IMPSRC}
214 mv lex.yy.c ${.TARGET}
215 .l.o:
216 ${LEX.l} ${.IMPSRC}
217 ${COMPILE.c} -o ${.TARGET} lex.yy.c
218 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
219 rm -f lex.yy.c
220
221 # Yacc
222 .y:
223 ${YACC.y} ${.IMPSRC}
224 ${LINK.c} -o ${.TARGET} y.tab.c ${LDLIBS}
225 rm -f y.tab.c
226 .y.c:
227 ${YACC.y} ${.IMPSRC}
228 mv y.tab.c ${.TARGET}
229 .y.o:
230 ${YACC.y} ${.IMPSRC}
231 ${COMPILE.c} -o ${.TARGET} y.tab.c
232 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
233 rm -f y.tab.c
234
235 # Shell
236 .sh:
237 rm -f ${.TARGET}
238 cp ${.IMPSRC} ${.TARGET}
239 chmod a+x ${.TARGET}
240