sys.mk revision 1.133.2.2 1 # $NetBSD: sys.mk,v 1.133.2.2 2020/04/08 14:07:23 martin 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 MV?= mv -f
18
19 AS?= as
20 AFLAGS?=
21 COMPILE.s?= ${CC} ${AFLAGS} ${AFLAGS.${<:T}} -c
22 LINK.s?= ${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${LDFLAGS}
23 _ASM_TRADITIONAL_CPP= -x assembler-with-cpp
24 COMPILE.S?= ${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${CPPFLAGS} ${_ASM_TRADITIONAL_CPP} -c
25 LINK.S?= ${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${CPPFLAGS} ${LDFLAGS}
26
27 CC?= cc
28 .if ${MACHINE_ARCH} == "sh3el" || ${MACHINE_ARCH} == "sh3eb"
29 # -O2 is too -falign-* zealous for low-memory sh3 machines
30 DBG?= -Os -freorder-blocks
31 .elif ${MACHINE_ARCH} == "m68k" || ${MACHINE_ARCH} == "m68000"
32 # -freorder-blocks (enabled by -O2) produces much bigger code
33 DBG?= -O2 -fno-reorder-blocks
34 .elif ${MACHINE_ARCH} == "coldfire"
35 DBG?= -O1
36 .else
37 DBG?= -O2
38 .endif
39 .if ${MKDTRACE:Uno} != "no"
40 DTRACE_OPTS?= -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-ipa-sra -fno-ipa-icf
41 .endif
42 CFLAGS?= ${DBG}
43 LDFLAGS?=
44 COMPILE.c?= ${CC} ${CFLAGS} ${DTRACE_OPTS} ${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 # Strip flags unsupported by C++ compilers
53 # Remove -Wsystem-headers because C++ headers aren't clean of warnings
54 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:N-Wsystem-headers}
55
56 # Use the sources, as the seed... Normalize all paths...
57 __ALLSRC1= ${empty(DESTDIR):?${.ALLSRC}:${.ALLSRC:S|^${DESTDIR}|^destdir|}}
58 __ALLSRC2= ${empty(MAKEOBJDIR):?${__ALLSRC1}:${__ALLSRC1:S|^${MAKEOBJDIR}|^obj|}}
59 __ALLSRC3= ${empty(NETBSDSRCDIR):?${__ALLSRC2}:${__ALLSRC2:S|^${NETBSDSRCDIR}|^src|}}
60 __ALLSRC4= ${empty(X11SRCDIR):?${__ALLSRC3}:${__ALLSRC3:S|^${X11SRCDIR}|^xsrc|}}
61 # Skip paths that contain relative components and can't be normalized, sort..
62 __INITSEED= ${__ALLSRC4:N*/../*:O}
63
64 __BUILDSEED= ${BUILDSEED}/${__INITSEED}/${.TARGET}
65 _CXXSEED?= ${BUILDSEED:D-frandom-seed=${__BUILDSEED:hash}}
66
67 COMPILE.cc?= ${CXX} ${_CXXSEED} ${CXXFLAGS} ${DTRACE_OPTS} ${CPPFLAGS} -c
68 LINK.cc?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
69
70 OBJC?= ${CC}
71 OBJCFLAGS?= ${CFLAGS}
72 COMPILE.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c
73 LINK.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS}
74
75 CPP?= cpp
76 CPPFLAGS?=
77
78 FC?= f77
79 FFLAGS?= -O
80 RFLAGS?=
81 COMPILE.f?= ${FC} ${FFLAGS} -c
82 LINK.f?= ${FC} ${FFLAGS} ${LDFLAGS}
83 COMPILE.F?= ${FC} ${FFLAGS} ${CPPFLAGS} -c
84 LINK.F?= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
85 COMPILE.r?= ${FC} ${FFLAGS} ${RFLAGS} -c
86 LINK.r?= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
87
88 INSTALL?= install
89
90 LD?= ld
91
92 LEX?= lex
93 LFLAGS?=
94 LEX.l?= ${LEX} ${LFLAGS}
95
96 LINT?= lint
97 LINTFLAGS?= -chapbrxzgFS
98
99 LORDER?= lorder
100
101 MAKE?= make
102
103 NM?= nm
104
105 PC?= pc
106 PFLAGS?=
107 COMPILE.p?= ${PC} ${PFLAGS} ${CPPFLAGS} -c
108 LINK.p?= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
109
110 SHELL?= sh
111
112 SIZE?= size
113
114 TSORT?= tsort -q
115
116 YACC?= yacc
117 YFLAGS?=
118 YACC.y?= ${YACC} ${YFLAGS}
119
120 # C
121 .c:
122 ${LINK.c} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
123 # XXX: disable for now
124 # ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
125 .c.o:
126 ${COMPILE.c} ${.IMPSRC}
127 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
128 .c.a:
129 ${COMPILE.c} ${.IMPSRC}
130 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
131 rm -f ${.PREFIX}.o
132 .c.ln:
133 ${LINT} ${LINTFLAGS} \
134 ${CPPFLAGS:C/-([IDU])[ ]*/-\1/Wg:M-[IDU]*} \
135 -i ${.IMPSRC}
136
137 # C++
138 .cc .cpp .cxx .C:
139 ${LINK.cc} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
140 .cc.o .cpp.o .cxx.o .C.o:
141 ${COMPILE.cc} ${.IMPSRC}
142 .cc.a .cpp.a .cxx.a .C.a:
143 ${COMPILE.cc} ${.IMPSRC}
144 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
145 rm -f ${.PREFIX}.o
146
147 # Fortran/Ratfor
148 .f:
149 ${LINK.f} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
150 .f.o:
151 ${COMPILE.f} ${.IMPSRC}
152 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
153 .f.a:
154 ${COMPILE.f} ${.IMPSRC}
155 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
156 rm -f ${.PREFIX}.o
157
158 .F:
159 ${LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
160 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
161 .F.o:
162 ${COMPILE.F} ${.IMPSRC}
163 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
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 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
174 .r.a:
175 ${COMPILE.r} ${.IMPSRC}
176 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
177 rm -f ${.PREFIX}.o
178
179 # Pascal
180 .p:
181 ${LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
182 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
183 .p.o:
184 ${COMPILE.p} ${.IMPSRC}
185 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
186 .p.a:
187 ${COMPILE.p} ${.IMPSRC}
188 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
189 rm -f ${.PREFIX}.o
190
191 # Assembly
192 .s:
193 ${LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
194 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
195 .s.o:
196 ${COMPILE.s} ${.IMPSRC}
197 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
198 .s.a:
199 ${COMPILE.s} ${.IMPSRC}
200 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
201 rm -f ${.PREFIX}.o
202 .S:
203 ${LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
204 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
205 .S.o:
206 ${COMPILE.S} ${.IMPSRC}
207 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
208 .S.a:
209 ${COMPILE.S} ${.IMPSRC}
210 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
211 rm -f ${.PREFIX}.o
212
213 # Lex
214 .l:
215 ${LEX.l} ${.IMPSRC}
216 ${LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll
217 rm -f lex.yy.c
218 .l.c:
219 ${LEX.l} ${.IMPSRC}
220 ${MV} lex.yy.c ${.TARGET}
221 .l.o:
222 ${LEX.l} ${.IMPSRC}
223 ${COMPILE.c} -o ${.TARGET} lex.yy.c
224 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
225 rm -f lex.yy.c
226
227 # Yacc
228 .y:
229 ${YACC.y} ${.IMPSRC}
230 ${LINK.c} -o ${.TARGET} y.tab.c ${LDLIBS}
231 rm -f y.tab.c
232 .y.c:
233 ${YACC.y} ${.IMPSRC}
234 ${MV} y.tab.c ${.TARGET}
235 .y.o:
236 ${YACC.y} ${.IMPSRC}
237 ${COMPILE.c} -o ${.TARGET} y.tab.c
238 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
239 rm -f y.tab.c
240
241 # Shell
242 .sh:
243 rm -f ${.TARGET}
244 cp ${.IMPSRC} ${.TARGET}
245 chmod a+x ${.TARGET}
246