sys.mk revision 1.132 1 # $NetBSD: sys.mk,v 1.132 2018/06/20 02:15:13 maya 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 .else
38 DBG?= -O2
39 .endif
40 .if ${MKDTRACE:Uno} != "no"
41 DTRACE_OPTS?= -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-ipa-sra -fno-ipa-icf
42 .endif
43 CFLAGS?= ${DBG}
44 LDFLAGS?=
45 COMPILE.c?= ${CC} ${CFLAGS} ${DTRACE_OPTS} ${CPPFLAGS} -c
46 LINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
47
48 # C Type Format data is required for DTrace
49 CTFFLAGS ?= -g -L VERSION
50 CTFMFLAGS ?= -t -g -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:N-Wsystem-headers}
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 __ALLSRC4= ${empty(X11SRCDIR):?${__ALLSRC3}:${__ALLSRC3:S|^${X11SRCDIR}|^xsrc|}}
59 __BUILDSEED= ${BUILDSEED}/${__ALLSRC4:O}/${.TARGET}
60 _CXXSEED?= ${BUILDSEED:D-frandom-seed=${__BUILDSEED:hash}}
61
62 COMPILE.cc?= ${CXX} ${_CXXSEED} ${CXXFLAGS} ${DTRACE_OPTS} ${CPPFLAGS} -c
63 LINK.cc?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
64
65 OBJC?= ${CC}
66 OBJCFLAGS?= ${CFLAGS}
67 COMPILE.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c
68 LINK.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS}
69
70 CPP?= cpp
71 CPPFLAGS?=
72
73 FC?= f77
74 FFLAGS?= -O
75 RFLAGS?=
76 COMPILE.f?= ${FC} ${FFLAGS} -c
77 LINK.f?= ${FC} ${FFLAGS} ${LDFLAGS}
78 COMPILE.F?= ${FC} ${FFLAGS} ${CPPFLAGS} -c
79 LINK.F?= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
80 COMPILE.r?= ${FC} ${FFLAGS} ${RFLAGS} -c
81 LINK.r?= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
82
83 INSTALL?= install
84
85 LD?= ld
86
87 LEX?= lex
88 LFLAGS?=
89 LEX.l?= ${LEX} ${LFLAGS}
90
91 LINT?= lint
92 LINTFLAGS?= -chapbxzgFS
93
94 LORDER?= lorder
95
96 MAKE?= make
97
98 NM?= nm
99
100 PC?= pc
101 PFLAGS?=
102 COMPILE.p?= ${PC} ${PFLAGS} ${CPPFLAGS} -c
103 LINK.p?= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
104
105 SHELL?= sh
106
107 SIZE?= size
108
109 TSORT?= tsort -q
110
111 YACC?= yacc
112 YFLAGS?=
113 YACC.y?= ${YACC} ${YFLAGS}
114
115 # C
116 .c:
117 ${LINK.c} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
118 # XXX: disable for now
119 # ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
120 .c.o:
121 ${COMPILE.c} ${.IMPSRC}
122 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
123 .c.a:
124 ${COMPILE.c} ${.IMPSRC}
125 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
126 rm -f ${.PREFIX}.o
127 .c.ln:
128 ${LINT} ${LINTFLAGS} \
129 ${CPPFLAGS:C/-([IDU])[ ]*/-\1/Wg:M-[IDU]*} \
130 -i ${.IMPSRC}
131
132 # C++
133 .cc .cpp .cxx .C:
134 ${LINK.cc} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
135 .cc.o .cpp.o .cxx.o .C.o:
136 ${COMPILE.cc} ${.IMPSRC}
137 .cc.a .cpp.a .cxx.a .C.a:
138 ${COMPILE.cc} ${.IMPSRC}
139 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
140 rm -f ${.PREFIX}.o
141
142 # Fortran/Ratfor
143 .f:
144 ${LINK.f} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
145 .f.o:
146 ${COMPILE.f} ${.IMPSRC}
147 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
148 .f.a:
149 ${COMPILE.f} ${.IMPSRC}
150 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
151 rm -f ${.PREFIX}.o
152
153 .F:
154 ${LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
155 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
156 .F.o:
157 ${COMPILE.F} ${.IMPSRC}
158 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
159 .F.a:
160 ${COMPILE.F} ${.IMPSRC}
161 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
162 rm -f ${.PREFIX}.o
163
164 .r:
165 ${LINK.r} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
166 .r.o:
167 ${COMPILE.r} ${.IMPSRC}
168 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
169 .r.a:
170 ${COMPILE.r} ${.IMPSRC}
171 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
172 rm -f ${.PREFIX}.o
173
174 # Pascal
175 .p:
176 ${LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
177 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
178 .p.o:
179 ${COMPILE.p} ${.IMPSRC}
180 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
181 .p.a:
182 ${COMPILE.p} ${.IMPSRC}
183 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
184 rm -f ${.PREFIX}.o
185
186 # Assembly
187 .s:
188 ${LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
189 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
190 .s.o:
191 ${COMPILE.s} ${.IMPSRC}
192 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
193 .s.a:
194 ${COMPILE.s} ${.IMPSRC}
195 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
196 rm -f ${.PREFIX}.o
197 .S:
198 ${LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
199 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
200 .S.o:
201 ${COMPILE.S} ${.IMPSRC}
202 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
203 .S.a:
204 ${COMPILE.S} ${.IMPSRC}
205 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
206 rm -f ${.PREFIX}.o
207
208 # Lex
209 .l:
210 ${LEX.l} ${.IMPSRC}
211 ${LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll
212 rm -f lex.yy.c
213 .l.c:
214 ${LEX.l} ${.IMPSRC}
215 mv lex.yy.c ${.TARGET}
216 .l.o:
217 ${LEX.l} ${.IMPSRC}
218 ${COMPILE.c} -o ${.TARGET} lex.yy.c
219 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
220 rm -f lex.yy.c
221
222 # Yacc
223 .y:
224 ${YACC.y} ${.IMPSRC}
225 ${LINK.c} -o ${.TARGET} y.tab.c ${LDLIBS}
226 rm -f y.tab.c
227 .y.c:
228 ${YACC.y} ${.IMPSRC}
229 mv y.tab.c ${.TARGET}
230 .y.o:
231 ${YACC.y} ${.IMPSRC}
232 ${COMPILE.c} -o ${.TARGET} y.tab.c
233 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
234 rm -f y.tab.c
235
236 # Shell
237 .sh:
238 rm -f ${.TARGET}
239 cp ${.IMPSRC} ${.TARGET}
240 chmod a+x ${.TARGET}
241