]> CyberLeo.Net >> Repos - FreeBSD/stable/8.git/blob - share/mk/sys.mk
MFC r362623:
[FreeBSD/stable/8.git] / share / mk / sys.mk
1 #       from: @(#)sys.mk        8.2 (Berkeley) 3/21/94
2 # $FreeBSD$
3
4 unix            ?=      We run FreeBSD, not UNIX.
5 .FreeBSD        ?=      true
6
7 # Set any local definitions first. Place this early, but it needs
8 # MACHINE_CPUARCH to be defined.
9 .sinclude <local.sys.mk>
10
11 # If the special target .POSIX appears (without prerequisites or
12 # commands) before the first noncomment line in the makefile, make shall
13 # process the makefile as specified by the Posix 1003.2 specification.
14 # make(1) sets the special macro %POSIX in this case (to the actual
15 # value "1003.2", for what it's worth).
16 #
17 # The rules below use this macro to distinguish between Posix-compliant
18 # and default behaviour.
19
20 .if defined(%POSIX)
21 .SUFFIXES:      .o .c .y .l .a .sh .f
22 .else
23 .SUFFIXES:      .out .a .ln .o .c .cc .cpp .cxx .C .m .F .f .e .r .y .l .S .asm .s .cl .p .h .sh
24 .endif
25
26 AR              ?=      ar
27 .if defined(%POSIX)
28 ARFLAGS         ?=      -rv
29 .else
30 ARFLAGS         ?=      rl
31 .endif
32 RANLIB          ?=      ranlib
33
34 AS              ?=      as
35 AFLAGS          ?=
36
37 .if defined(%POSIX)
38 CC              ?=      c89
39 CFLAGS          ?=      -O
40 .else
41 CC              ?=      cc
42 .if ${MACHINE_ARCH} == "arm" || ${MACHINE_ARCH} == "mips"
43 CFLAGS          ?=      -O -pipe
44 .else
45 CFLAGS          ?=      -O2 -pipe
46 .endif
47 .if defined(NO_STRICT_ALIASING)
48 CFLAGS          +=      -fno-strict-aliasing
49 .endif
50 .endif
51
52 # C Type Format data is required for DTrace
53 CTFFLAGS        ?=      -L VERSION
54
55 CTFCONVERT      ?=      ctfconvert
56 CTFMERGE        ?=      ctfmerge
57 .if defined(CFLAGS) && (${CFLAGS:M-g} != "")
58 CTFFLAGS        +=      -g
59 .else
60 # XXX: What to do here? Is removing the CFLAGS part completely ok here?
61 # For now comment it out to not compile with -g unconditionally.
62 #CFLAGS         +=      -g
63 .endif
64
65 CXX             ?=      c++
66 CXXFLAGS        ?=      ${CFLAGS:N-std=*:N-Wnested-externs:N-W*-prototypes:N-Wno-pointer-sign}
67
68 CPP             ?=      cpp
69
70 .if empty(.MAKEFLAGS:M-s)
71 ECHO            ?=      echo
72 ECHODIR         ?=      echo
73 .else
74 ECHO            ?=      true
75 .if ${.MAKEFLAGS:M-s} == "-s"
76 ECHODIR         ?=      echo
77 .else
78 ECHODIR         ?=      true
79 .endif
80 .endif
81
82 .if !empty(.MAKEFLAGS:M-n) && ${.MAKEFLAGS:M-n} == "-n"
83 _+_             ?=
84 .else
85 _+_             ?=      +
86 .endif
87
88 .if defined(%POSIX)
89 FC              ?=      fort77
90 FFLAGS          ?=      -O 1
91 .else
92 FC              ?=      f77
93 FFLAGS          ?=      -O
94 .endif
95 EFLAGS          ?=
96
97 INSTALL         ?=      install
98
99 LEX             ?=      lex
100 LFLAGS          ?=
101
102 LD              ?=      ld
103 LDFLAGS         ?=
104
105 LINT            ?=      lint
106 LINTFLAGS       ?=      -cghapbx
107 LINTKERNFLAGS   ?=      ${LINTFLAGS}
108 LINTOBJFLAGS    ?=      -cghapbxu -i
109 LINTOBJKERNFLAGS?=      ${LINTOBJFLAGS}
110 LINTLIBFLAGS    ?=      -cghapbxu -C ${LIB}
111
112 MAKE            ?=      make
113
114 OBJC            ?=      cc
115 OBJCFLAGS       ?=      ${OBJCINCLUDES} ${CFLAGS} -Wno-import
116
117 PC              ?=      pc
118 PFLAGS          ?=
119
120 RC              ?=      f77
121 RFLAGS          ?=
122
123 SHELL           ?=      sh
124
125 YACC            ?=      yacc
126 .if defined(%POSIX)
127 YFLAGS          ?=
128 .else
129 YFLAGS          ?=      -d
130 .endif
131
132 .if defined(%POSIX)
133
134 # Posix 1003.2 mandated rules
135 #
136 # Quoted directly from the Posix 1003.2 draft, only the macros
137 # $@, $< and $* have been replaced by ${.TARGET}, ${.IMPSRC}, and
138 # ${.PREFIX}, resp.
139
140 # SINGLE SUFFIX RULES
141 .c:
142         ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC}
143         ${CTFCONVERT_CMD}
144
145 .f:
146         ${FC} ${FFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC}
147         ${CTFCONVERT_CMD}
148
149 .sh:
150         cp ${.IMPSRC} ${.TARGET}
151         chmod a+x ${.TARGET}
152
153 # DOUBLE SUFFIX RULES
154
155 .c.o:
156         ${CC} ${CFLAGS} -c ${.IMPSRC}
157         ${CTFCONVERT_CMD}
158
159 .f.o:
160         ${FC} ${FFLAGS} -c ${.IMPSRC}
161         ${CTFCONVERT_CMD}
162
163 .y.o:
164         ${YACC} ${YFLAGS} ${.IMPSRC}
165         ${CC} ${CFLAGS} -c y.tab.c
166         rm -f y.tab.c
167         mv y.tab.o ${.TARGET}
168         ${CTFCONVERT_CMD}
169
170 .l.o:
171         ${LEX} ${LFLAGS} ${.IMPSRC}
172         ${CC} ${CFLAGS} -c lex.yy.c
173         rm -f lex.yy.c
174         mv lex.yy.o ${.TARGET}
175         ${CTFCONVERT_CMD}
176
177 .y.c:
178         ${YACC} ${YFLAGS} ${.IMPSRC}
179         mv y.tab.c ${.TARGET}
180
181 .l.c:
182         ${LEX} ${LFLAGS} ${.IMPSRC}
183         mv lex.yy.c ${.TARGET}
184
185 .c.a:
186         ${CC} ${CFLAGS} -c ${.IMPSRC}
187         ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
188         rm -f ${.PREFIX}.o
189
190 .f.a:
191         ${FC} ${FFLAGS} -c ${.IMPSRC}
192         ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
193         rm -f ${.PREFIX}.o
194
195 .else
196
197 # non-Posix rule set
198
199 .sh:
200         cp -p ${.IMPSRC} ${.TARGET}
201         chmod a+x ${.TARGET}
202
203 .c.ln:
204         ${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \
205             touch ${.TARGET}
206
207 .cc.ln .C.ln .cpp.ln .cxx.ln:
208         ${LINT} ${LINTOBJFLAGS} ${CXXFLAGS:M-[DIU]*} ${.IMPSRC} || \
209             touch ${.TARGET}
210
211 .c:
212         ${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
213         ${CTFCONVERT_CMD}
214
215 .c.o:
216         ${CC} ${CFLAGS} -c ${.IMPSRC}
217         ${CTFCONVERT_CMD}
218
219 .cc .cpp .cxx .C:
220         ${CXX} ${CXXFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
221
222 .cc.o .cpp.o .cxx.o .C.o:
223         ${CXX} ${CXXFLAGS} -c ${.IMPSRC}
224
225 .m.o:
226         ${OBJC} ${OBJCFLAGS} -c ${.IMPSRC}
227         ${CTFCONVERT_CMD}
228
229 .p.o:
230         ${PC} ${PFLAGS} -c ${.IMPSRC}
231         ${CTFCONVERT_CMD}
232
233 .e .r .F .f:
234         ${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} \
235             -o ${.TARGET}
236
237 .e.o .r.o .F.o .f.o:
238         ${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} -c ${.IMPSRC}
239
240 .S.o:
241         ${CC} ${CFLAGS} -c ${.IMPSRC}
242         ${CTFCONVERT_CMD}
243
244 .asm.o:
245         ${CC} -x assembler-with-cpp ${CFLAGS} -c ${.IMPSRC}
246         ${CTFCONVERT_CMD}
247
248 .s.o:
249         ${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC}
250         ${CTFCONVERT_CMD}
251
252 # XXX not -j safe
253 .y.o:
254         ${YACC} ${YFLAGS} ${.IMPSRC}
255         ${CC} ${CFLAGS} -c y.tab.c -o ${.TARGET}
256         rm -f y.tab.c
257         ${CTFCONVERT_CMD}
258
259 .l.o:
260         ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c
261         ${CC} ${CFLAGS} -c ${.PREFIX}.tmp.c -o ${.TARGET}
262         rm -f ${.PREFIX}.tmp.c
263         ${CTFCONVERT_CMD}
264
265 # XXX not -j safe
266 .y.c:
267         ${YACC} ${YFLAGS} ${.IMPSRC}
268         mv y.tab.c ${.TARGET}
269
270 .l.c:
271         ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.TARGET}
272
273 .s.out .c.out .o.out:
274         ${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
275         ${CTFCONVERT_CMD}
276
277 .f.out .F.out .r.out .e.out:
278         ${FC} ${EFLAGS} ${RFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} \
279             ${LDLIBS} -o ${.TARGET}
280         rm -f ${.PREFIX}.o
281         ${CTFCONVERT_CMD}
282
283 # XXX not -j safe
284 .y.out:
285         ${YACC} ${YFLAGS} ${.IMPSRC}
286         ${CC} ${CFLAGS} ${LDFLAGS} y.tab.c ${LDLIBS} -ly -o ${.TARGET}
287         rm -f y.tab.c
288         ${CTFCONVERT_CMD}
289
290 .l.out:
291         ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c
292         ${CC} ${CFLAGS} ${LDFLAGS} ${.PREFIX}.tmp.c ${LDLIBS} -ll -o ${.TARGET}
293         rm -f ${.PREFIX}.tmp.c
294         ${CTFCONVERT_CMD}
295
296 # FreeBSD build pollution.  Hide it in the non-POSIX part of the ifdef.
297 __MAKE_CONF?=/etc/make.conf
298 .if exists(${__MAKE_CONF})
299 .include "${__MAKE_CONF}"
300 .endif
301
302 .if defined(__MAKE_SHELL) && !empty(__MAKE_SHELL)
303 SHELL=  ${__MAKE_SHELL}
304 .SHELL: path=${__MAKE_SHELL}
305 .endif
306
307 # Default executable format
308 # XXX hint for bsd.port.mk
309 OBJFORMAT?=     elf
310
311 # Tell bmake to expand -V VAR by default
312 .MAKE.EXPAND_VARIABLES= yes
313
314 # Tell bmake the makefile preference
315 .MAKE.MAKEFILE_PREFERENCE= BSDmakefile makefile Makefile
316
317 .if !defined(.PARSEDIR)
318 # We are not bmake, which is more aggressive about searching .PATH
319 # It is sometime necessary to curb its enthusiasm with .NOPATH
320 # The following allows us to quietly ignore .NOPATH when not using bmake.
321 .NOTMAIN: .NOPATH
322 .NOPATH:
323
324 # Toggle on warnings
325 .WARN: dirsyntax
326 .endif
327
328 .endif
329
330 .include <bsd.compat.mk>
331 .include <bsd.cpu.mk>