sys.mk revision 1.128 1 # $NetBSD: sys.mk,v 1.128 2015/07/06 00:21:51 chs 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 CTFMFLAGS ?= -t -g -L VERSION
50
51 CXX?= c++
52 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}
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?= -chapbxzgFS
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 # XXX: disable for now
117 # ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
118 .c.o:
119 ${COMPILE.c} ${.IMPSRC}
120 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
121 .c.a:
122 ${COMPILE.c} ${.IMPSRC}
123 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
124 rm -f ${.PREFIX}.o
125 .c.ln:
126 ${LINT} ${LINTFLAGS} \
127 ${CPPFLAGS:C/-([IDU])[ ]*/-\1/Wg:M-[IDU]*} \
128 -i ${.IMPSRC}
129
130 # C++
131 .cc .cpp .cxx .C:
132 ${LINK.cc} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
133 .cc.o .cpp.o .cxx.o .C.o:
134 ${COMPILE.cc} ${.IMPSRC}
135 .cc.a .cpp.a .cxx.a .C.a:
136 ${COMPILE.cc} ${.IMPSRC}
137 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
138 rm -f ${.PREFIX}.o
139
140 # Fortran/Ratfor
141 .f:
142 ${LINK.f} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
143 .f.o:
144 ${COMPILE.f} ${.IMPSRC}
145 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
146 .f.a:
147 ${COMPILE.f} ${.IMPSRC}
148 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
149 rm -f ${.PREFIX}.o
150
151 .F:
152 ${LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
153 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
154 .F.o:
155 ${COMPILE.F} ${.IMPSRC}
156 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
157 .F.a:
158 ${COMPILE.F} ${.IMPSRC}
159 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
160 rm -f ${.PREFIX}.o
161
162 .r:
163 ${LINK.r} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
164 .r.o:
165 ${COMPILE.r} ${.IMPSRC}
166 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
167 .r.a:
168 ${COMPILE.r} ${.IMPSRC}
169 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
170 rm -f ${.PREFIX}.o
171
172 # Pascal
173 .p:
174 ${LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
175 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
176 .p.o:
177 ${COMPILE.p} ${.IMPSRC}
178 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
179 .p.a:
180 ${COMPILE.p} ${.IMPSRC}
181 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
182 rm -f ${.PREFIX}.o
183
184 # Assembly
185 .s:
186 ${LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
187 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
188 .s.o:
189 ${COMPILE.s} ${.IMPSRC}
190 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
191 .s.a:
192 ${COMPILE.s} ${.IMPSRC}
193 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
194 rm -f ${.PREFIX}.o
195 .S:
196 ${LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
197 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
198 .S.o:
199 ${COMPILE.S} ${.IMPSRC}
200 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
201 .S.a:
202 ${COMPILE.S} ${.IMPSRC}
203 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
204 rm -f ${.PREFIX}.o
205
206 # Lex
207 .l:
208 ${LEX.l} ${.IMPSRC}
209 ${LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll
210 rm -f lex.yy.c
211 .l.c:
212 ${LEX.l} ${.IMPSRC}
213 mv lex.yy.c ${.TARGET}
214 .l.o:
215 ${LEX.l} ${.IMPSRC}
216 ${COMPILE.c} -o ${.TARGET} lex.yy.c
217 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
218 rm -f lex.yy.c
219
220 # Yacc
221 .y:
222 ${YACC.y} ${.IMPSRC}
223 ${LINK.c} -o ${.TARGET} y.tab.c ${LDLIBS}
224 rm -f y.tab.c
225 .y.c:
226 ${YACC.y} ${.IMPSRC}
227 mv y.tab.c ${.TARGET}
228 .y.o:
229 ${YACC.y} ${.IMPSRC}
230 ${COMPILE.c} -o ${.TARGET} y.tab.c
231 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
232 rm -f y.tab.c
233
234 # Shell
235 .sh:
236 rm -f ${.TARGET}
237 cp ${.IMPSRC} ${.TARGET}
238 chmod a+x ${.TARGET}
239