sys.mk revision 1.144 1 # $NetBSD: sys.mk,v 1.144 2020/11/09 16:15:05 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 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 OBJECT_TARGET ?= -o ${.TARGET}${defined(CTFCONVERT):?.o:}
51 CTFCONVERT_RUN ?= ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} -o ${.TARGET} ${.TARGET}.o && rm -f ${.TARGET}.o:}
52
53 CXX?= c++
54 # Strip flags unsupported by C++ compilers
55 # Remove -Wsystem-headers because C++ headers aren't clean of warnings
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:N-Wsystem-headers}
57
58 # Use the sources, as the seed... Normalize all paths...
59 __ALLSRC1= ${empty(DESTDIR):?${.ALLSRC}:${.ALLSRC:S|^${DESTDIR}|^destdir|}}
60 __ALLSRC2= ${empty(MAKEOBJDIR):?${__ALLSRC1}:${__ALLSRC1:S|^${MAKEOBJDIR}|^obj|}}
61 __ALLSRC3= ${empty(NETBSDSRCDIR):?${__ALLSRC2}:${__ALLSRC2:S|^${NETBSDSRCDIR}|^src|}}
62 __ALLSRC4= ${empty(X11SRCDIR):?${__ALLSRC3}:${__ALLSRC3:S|^${X11SRCDIR}|^xsrc|}}
63 # Skip paths that contain relative components and can't be normalized, sort..
64 __INITSEED= ${__ALLSRC4:N*/../*:O}
65
66 __BUILDSEED= ${BUILDSEED}/${__INITSEED}/${.TARGET}
67 _CXXSEED?= ${BUILDSEED:D-frandom-seed=${__BUILDSEED:hash}}
68
69 COMPILE.cc?= ${CXX} ${_CXXSEED} ${CXXFLAGS} ${DTRACE_OPTS} ${CPPFLAGS} -c
70 LINK.cc?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
71
72 OBJC?= ${CC}
73 OBJCFLAGS?= ${CFLAGS}
74 COMPILE.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c
75 LINK.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS}
76
77 CPP?= cpp
78 CPPFLAGS?=
79
80 FC?= f77
81 FFLAGS?= -O
82 RFLAGS?=
83 COMPILE.f?= ${FC} ${FFLAGS} -c
84 LINK.f?= ${FC} ${FFLAGS} ${LDFLAGS}
85 COMPILE.F?= ${FC} ${FFLAGS} ${CPPFLAGS} -c
86 LINK.F?= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
87 COMPILE.r?= ${FC} ${FFLAGS} ${RFLAGS} -c
88 LINK.r?= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
89
90 INSTALL?= install
91
92 LD?= ld
93
94 LEX?= lex
95 LFLAGS?=
96 LEX.l?= ${LEX} ${LFLAGS}
97
98 LINT?= lint
99 LINTFLAGS?= -chapbrxzgFS
100
101 LORDER?= lorder
102
103 MAKE?= make
104
105 NM?= nm
106
107 PC?= pc
108 PFLAGS?=
109 COMPILE.p?= ${PC} ${PFLAGS} ${CPPFLAGS} -c
110 LINK.p?= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
111
112 SHELL?= sh
113
114 SIZE?= size
115
116 TSORT?= tsort -q
117
118 YACC?= yacc
119 YFLAGS?=
120 YACC.y?= ${YACC} ${YFLAGS}
121
122 # C
123 .c:
124 ${LINK.c} ${OBJECT_TARGET} ${.IMPSRC} ${LDLIBS}
125 # XXX: disable for now
126 # ${CTFCONVERT_RUN}
127 .c.o:
128 ${COMPILE.c} ${.IMPSRC} ${OBJECT_TARGET}
129 ${CTFCONVERT_RUN}
130 .c.a:
131 ${COMPILE.c} ${.IMPSRC}
132 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
133 rm -f ${.PREFIX}.o
134 .c.ln:
135 ${LINT} ${LINTFLAGS} \
136 ${CPPFLAGS:C/-([IDU])[ ]*/-\1/Wg:M-[IDU]*} \
137 -i ${.IMPSRC}
138
139 # C++
140 .cc .cpp .cxx .C:
141 ${LINK.cc} ${OBJECT_TARGET} ${.IMPSRC} ${LDLIBS}
142 # XXX: disable for now
143 # ${CTFCONVERT_RUN}
144 .cc.o .cpp.o .cxx.o .C.o:
145 ${COMPILE.cc} ${.IMPSRC} ${OBJECT_TARGET}
146 ${CTFCONVERT_RUN}
147 .cc.a .cpp.a .cxx.a .C.a:
148 ${COMPILE.cc} ${.IMPSRC}
149 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
150 rm -f ${.PREFIX}.o
151
152 # Fortran/Ratfor
153 .f:
154 ${LINK.f} ${OBJECT_TARGET} ${.IMPSRC} ${LDLIBS}
155 ${CTFCONVERT_RUN}
156 .f.o:
157 ${COMPILE.f} ${.IMPSRC} ${OBJECT_TARGET}
158 ${CTFCONVERT_RUN}
159 .f.a:
160 ${COMPILE.f} ${.IMPSRC}
161 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
162 rm -f ${.PREFIX}.o
163
164 .F:
165 ${LINK.F} ${OBJECT_TARGET} ${.IMPSRC} ${LDLIBS}
166 ${CTFCONVERT_RUN}
167 .F.o:
168 ${COMPILE.F} ${.IMPSRC} ${OBJECT_TARGET}
169 ${CTFCONVERT_RUN}
170 .F.a:
171 ${COMPILE.F} ${.IMPSRC}
172 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
173 rm -f ${.PREFIX}.o
174
175 .r:
176 ${LINK.r} ${OBJECT_TARGET} ${.IMPSRC} ${LDLIBS}
177 ${CTFCONVERT_RUN}
178 .r.o:
179 ${COMPILE.r} ${.IMPSRC} ${OBJECT_TARGET}
180 ${CTFCONVERT_RUN}
181 .r.a:
182 ${COMPILE.r} ${.IMPSRC}
183 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
184 rm -f ${.PREFIX}.o
185
186 # Pascal
187 .p:
188 ${LINK.p} ${OBJECT_TARGET} ${.IMPSRC} ${LDLIBS}
189 ${CTFCONVERT_RUN}
190 .p.o:
191 ${COMPILE.p} ${.IMPSRC} ${OBJECT_TARGET}
192 ${CTFCONVERT_RUN}
193 .p.a:
194 ${COMPILE.p} ${.IMPSRC}
195 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
196 rm -f ${.PREFIX}.o
197
198 # Assembly
199 .s:
200 ${LINK.s} ${OBJECT_TARGET} ${.IMPSRC} ${LDLIBS}
201 ${CTFCONVERT_RUN}
202 .s.o:
203 ${COMPILE.s} ${.IMPSRC} ${OBJECT_TARGET}
204 ${CTFCONVERT_RUN}
205 .s.a:
206 ${COMPILE.s} ${.IMPSRC}
207 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
208 rm -f ${.PREFIX}.o
209 .S:
210 ${LINK.S} ${OBJECT_TARGET} ${.IMPSRC} ${LDLIBS}
211 ${CTFCONVERT_RUN}
212 .S.o:
213 ${COMPILE.S} ${.IMPSRC} ${OBJECT_TARGET}
214 ${CTFCONVERT_RUN}
215 .S.a:
216 ${COMPILE.S} ${.IMPSRC}
217 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
218 rm -f ${.PREFIX}.o
219
220 # Lex
221 .l:
222 ${LEX.l} ${.IMPSRC}
223 ${LINK.c} ${OBJECT_TARGET} lex.yy.c ${LDLIBS} -ll
224 ${CTFCONVERT_RUN}
225 rm -f lex.yy.c
226 .l.c:
227 ${LEX.l} ${.IMPSRC}
228 ${MV} lex.yy.c ${.TARGET}
229 .l.o:
230 ${LEX.l} ${.IMPSRC}
231 ${COMPILE.c} ${OBJECT_TARGET} lex.yy.c
232 ${CTFCONVERT_RUN}
233 rm -f lex.yy.c
234
235 # Yacc
236 .y:
237 ${YACC.y} ${.IMPSRC}
238 ${LINK.c} ${OBJECT_TARGET} y.tab.c ${LDLIBS}
239 ${CTFCONVERT_RUN}
240 rm -f y.tab.c
241 .y.c:
242 ${YACC.y} ${.IMPSRC}
243 ${MV} y.tab.c ${.TARGET}
244 .y.o:
245 ${YACC.y} ${.IMPSRC}
246 ${COMPILE.c} ${OBJECT_TARGET} y.tab.c
247 ${CTFCONVERT_RUN}
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