sys.mk revision 1.125 1 # $NetBSD: sys.mk,v 1.125 2014/06/29 05:20:15 tsutsui 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 ${MACHINE_ARCH} == "vax"
36 DBG?= -O1 -fgcse -fstrength-reduce -fgcse-after-reload
37 .else
38 DBG?= -O2
39 .endif
40 CFLAGS?= ${DBG}
41 LDFLAGS?=
42 COMPILE.c?= ${CC} ${CFLAGS} ${CPPFLAGS} -c
43 LINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
44
45 # C Type Format data is required for DTrace
46 CTFFLAGS ?= -g -L VERSION
47 # Use only one thread for now.
48 CTFMFLAGS ?= -S 1 -g -t -L VERSION
49
50 # We have to define these here, because if we don't the rules below will
51 # not work
52 CTFCONVERT ?= : ctfconvert
53 CTFMERGE ?= : ctfmerge
54
55 CXX?= c++
56 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}
57
58 __ALLSRC1= ${empty(DESTDIR):?${.ALLSRC}:${.ALLSRC:S|^${DESTDIR}|^destdir|}}
59 __ALLSRC2= ${empty(MAKEOBJDIR):?${__ALLSRC1}:${__ALLSRC1:S|^${MAKEOBJDIR}|^obj|}}
60 __ALLSRC3= ${empty(NETBSDSRCDIR):?${__ALLSRC2}:${__ALLSRC2:S|^${NETBSDSRCDIR}|^src|}}
61 __BUILDSEED= ${BUILDSEED}/${__ALLSRC3:O}/${.TARGET}
62 _CXXSEED?= ${BUILDSEED:D-frandom-seed=${__BUILDSEED:hash}}
63
64 COMPILE.cc?= ${CXX} ${_CXXSEED} ${CXXFLAGS} ${CPPFLAGS} -c
65 LINK.cc?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
66
67 OBJC?= ${CC}
68 OBJCFLAGS?= ${CFLAGS}
69 COMPILE.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c
70 LINK.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS}
71
72 CPP?= cpp
73 CPPFLAGS?=
74
75 FC?= f77
76 FFLAGS?= -O
77 RFLAGS?=
78 COMPILE.f?= ${FC} ${FFLAGS} -c
79 LINK.f?= ${FC} ${FFLAGS} ${LDFLAGS}
80 COMPILE.F?= ${FC} ${FFLAGS} ${CPPFLAGS} -c
81 LINK.F?= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
82 COMPILE.r?= ${FC} ${FFLAGS} ${RFLAGS} -c
83 LINK.r?= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
84
85 INSTALL?= install
86
87 LD?= ld
88
89 LEX?= lex
90 LFLAGS?=
91 LEX.l?= ${LEX} ${LFLAGS}
92
93 LINT?= lint
94 LINTFLAGS?= -chapbxzgFS
95
96 LORDER?= lorder
97
98 MAKE?= make
99
100 NM?= nm
101
102 PC?= pc
103 PFLAGS?=
104 COMPILE.p?= ${PC} ${PFLAGS} ${CPPFLAGS} -c
105 LINK.p?= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
106
107 SHELL?= sh
108
109 SIZE?= size
110
111 TSORT?= tsort -q
112
113 YACC?= yacc
114 YFLAGS?=
115 YACC.y?= ${YACC} ${YFLAGS}
116
117 # C
118 .c:
119 ${LINK.c} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
120 # XXX: disable for now
121 # ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
122 .c.o:
123 ${COMPILE.c} ${.IMPSRC}
124 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
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 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
150 .f.a:
151 ${COMPILE.f} ${.IMPSRC}
152 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
153 rm -f ${.PREFIX}.o
154
155 .F:
156 ${LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
157 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
158 .F.o:
159 ${COMPILE.F} ${.IMPSRC}
160 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
161 .F.a:
162 ${COMPILE.F} ${.IMPSRC}
163 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
164 rm -f ${.PREFIX}.o
165
166 .r:
167 ${LINK.r} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
168 .r.o:
169 ${COMPILE.r} ${.IMPSRC}
170 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
171 .r.a:
172 ${COMPILE.r} ${.IMPSRC}
173 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
174 rm -f ${.PREFIX}.o
175
176 # Pascal
177 .p:
178 ${LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
179 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
180 .p.o:
181 ${COMPILE.p} ${.IMPSRC}
182 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
183 .p.a:
184 ${COMPILE.p} ${.IMPSRC}
185 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
186 rm -f ${.PREFIX}.o
187
188 # Assembly
189 .s:
190 ${LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
191 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
192 .s.o:
193 ${COMPILE.s} ${.IMPSRC}
194 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
195 .s.a:
196 ${COMPILE.s} ${.IMPSRC}
197 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
198 rm -f ${.PREFIX}.o
199 .S:
200 ${LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
201 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
202 .S.o:
203 ${COMPILE.S} ${.IMPSRC}
204 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
205 .S.a:
206 ${COMPILE.S} ${.IMPSRC}
207 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
208 rm -f ${.PREFIX}.o
209
210 # Lex
211 .l:
212 ${LEX.l} ${.IMPSRC}
213 ${LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll
214 rm -f lex.yy.c
215 .l.c:
216 ${LEX.l} ${.IMPSRC}
217 mv lex.yy.c ${.TARGET}
218 .l.o:
219 ${LEX.l} ${.IMPSRC}
220 ${COMPILE.c} -o ${.TARGET} lex.yy.c
221 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
222 rm -f lex.yy.c
223
224 # Yacc
225 .y:
226 ${YACC.y} ${.IMPSRC}
227 ${LINK.c} -o ${.TARGET} y.tab.c ${LDLIBS}
228 rm -f y.tab.c
229 .y.c:
230 ${YACC.y} ${.IMPSRC}
231 mv y.tab.c ${.TARGET}
232 .y.o:
233 ${YACC.y} ${.IMPSRC}
234 ${COMPILE.c} -o ${.TARGET} y.tab.c
235 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
236 rm -f y.tab.c
237
238 # Shell
239 .sh:
240 rm -f ${.TARGET}
241 cp ${.IMPSRC} ${.TARGET}
242 chmod a+x ${.TARGET}
243