]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - share/mk/sys.mk
Merge ACPICA 20101209.
[FreeBSD/FreeBSD.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 .if !defined(%POSIX)
8 #
9 # MACHINE_CPUARCH defines a collection of MACHINE_ARCH.  Machines with
10 # the same MACHINE_ARCH can run each other's binaries, so it necessarily
11 # has word size and endian swizzled in.  However, support files for
12 # these machines often are shared amongst all combinations of size
13 # and/or endian.  This is called MACHINE_CPU in NetBSD, but that's used
14 # for something different in FreeBSD.
15 #
16 MACHINE_CPUARCH=${MACHINE_ARCH:C/mipse[lb]/mips/:C/armeb/arm/:C/powerpc64/powerpc/}
17 .endif
18
19 # If the special target .POSIX appears (without prerequisites or
20 # commands) before the first noncomment line in the makefile, make shall
21 # process the makefile as specified by the Posix 1003.2 specification.
22 # make(1) sets the special macro %POSIX in this case (to the actual
23 # value "1003.2", for what it's worth).
24 #
25 # The rules below use this macro to distinguish between Posix-compliant
26 # and default behaviour.
27
28 .if defined(%POSIX)
29 .SUFFIXES:      .o .c .y .l .a .sh .f
30 .else
31 .SUFFIXES:      .out .a .ln .o .c .cc .cpp .cxx .C .m .F .f .e .r .y .l .S .asm .s .cl .p .h .sh
32 .endif
33
34 AR              ?=      ar
35 .if defined(%POSIX)
36 ARFLAGS         ?=      -rv
37 .else
38 ARFLAGS         ?=      rl
39 .endif
40 RANLIB          ?=      ranlib
41
42 AS              ?=      as
43 AFLAGS          ?=
44
45 .if defined(%POSIX)
46 CC              ?=      c89
47 CFLAGS          ?=      -O
48 .else
49 CC              ?=      cc
50 .if ${MACHINE_CPUARCH} == "arm" || ${MACHINE_CPUARCH} == "mips"
51 CFLAGS          ?=      -O -pipe
52 .else
53 CFLAGS          ?=      -O2 -pipe
54 .endif
55 .if defined(NO_STRICT_ALIASING)
56 CFLAGS          +=      -fno-strict-aliasing
57 .endif
58 .endif
59 PO_CFLAGS       ?=      ${CFLAGS}
60
61 # Turn CTF conversion off by default for now. This default could be
62 # changed later if DTrace becomes popular.
63 .if !defined(WITH_CTF)
64 NO_CTF          =       1
65 .endif
66
67 # C Type Format data is required for DTrace
68 CTFFLAGS        ?=      -L VERSION
69
70 CTFCONVERT      ?=      ctfconvert
71 CTFMERGE        ?=      ctfmerge
72 DTRACE          ?=      dtrace
73 .if defined(CFLAGS) && (${CFLAGS:M-g} != "")
74 CTFFLAGS        +=      -g
75 .else
76 # XXX: What to do here? Is removing the CFLAGS part completely ok here?
77 # For now comment it out to not compile with -g unconditionally.
78 #CFLAGS         +=      -g
79 .endif
80
81 CXX             ?=      c++
82 CXXFLAGS        ?=      ${CFLAGS:N-std=*:N-Wnested-externs:N-W*-prototypes:N-Wno-pointer-sign:N-Wold-style-definition}
83 PO_CXXFLAGS     ?=      ${CXXFLAGS}
84
85 CPP             ?=      cpp
86
87 .if empty(.MAKEFLAGS:M-s)
88 ECHO            ?=      echo
89 ECHODIR         ?=      echo
90 .else
91 ECHO            ?=      true
92 .if ${.MAKEFLAGS:M-s} == "-s"
93 ECHODIR         ?=      echo
94 .else
95 ECHODIR         ?=      true
96 .endif
97 .endif
98
99 .if !empty(.MAKEFLAGS:M-n) && ${.MAKEFLAGS:M-n} == "-n"
100 _+_             ?=
101 .else
102 _+_             ?=      +
103 .endif
104
105 .if defined(%POSIX)
106 FC              ?=      fort77
107 FFLAGS          ?=      -O 1
108 .else
109 FC              ?=      f77
110 FFLAGS          ?=      -O
111 .endif
112 EFLAGS          ?=
113
114 INSTALL         ?=      install
115
116 LEX             ?=      lex
117 LFLAGS          ?=
118
119 LD              ?=      ld
120 LDFLAGS         ?=
121
122 LINT            ?=      lint
123 LINTFLAGS       ?=      -cghapbx
124 LINTKERNFLAGS   ?=      ${LINTFLAGS}
125 LINTOBJFLAGS    ?=      -cghapbxu -i
126 LINTOBJKERNFLAGS?=      ${LINTOBJFLAGS}
127 LINTLIBFLAGS    ?=      -cghapbxu -C ${LIB}
128
129 MAKE            ?=      make
130
131 OBJC            ?=      cc
132 OBJCFLAGS       ?=      ${OBJCINCLUDES} ${CFLAGS} -Wno-import
133
134 PC              ?=      pc
135 PFLAGS          ?=
136
137 RC              ?=      f77
138 RFLAGS          ?=
139
140 SHELL           ?=      sh
141
142 YACC            ?=      yacc
143 .if defined(%POSIX)
144 YFLAGS          ?=
145 .else
146 YFLAGS          ?=      -d
147 .endif
148
149 .if defined(%POSIX)
150
151 # Posix 1003.2 mandated rules
152 #
153 # Quoted directly from the Posix 1003.2 draft, only the macros
154 # $@, $< and $* have been replaced by ${.TARGET}, ${.IMPSRC}, and
155 # ${.PREFIX}, resp.
156
157 # SINGLE SUFFIX RULES
158 .c:
159         ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC}
160         @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || \
161                 (${ECHO} ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} && \
162                 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET})
163
164 .f:
165         ${FC} ${FFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC}
166         @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || \
167                 (${ECHO} ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} && \
168                 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET})
169
170 .sh:
171         cp -f ${.IMPSRC} ${.TARGET}
172         chmod a+x ${.TARGET}
173
174 # DOUBLE SUFFIX RULES
175
176 .c.o:
177         ${CC} ${CFLAGS} -c ${.IMPSRC}
178         @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || \
179                 (${ECHO} ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} && \
180                 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET})
181
182 .f.o:
183         ${FC} ${FFLAGS} -c ${.IMPSRC}
184         @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || \
185                 (${ECHO} ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} && \
186                 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET})
187
188 .y.o:
189         ${YACC} ${YFLAGS} ${.IMPSRC}
190         ${CC} ${CFLAGS} -c y.tab.c
191         rm -f y.tab.c
192         mv y.tab.o ${.TARGET}
193         @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || \
194                 (${ECHO} ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} && \
195                 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET})
196
197 .l.o:
198         ${LEX} ${LFLAGS} ${.IMPSRC}
199         ${CC} ${CFLAGS} -c lex.yy.c
200         rm -f lex.yy.c
201         mv lex.yy.o ${.TARGET}
202         @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || \
203                 (${ECHO} ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} && \
204                 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET})
205
206 .y.c:
207         ${YACC} ${YFLAGS} ${.IMPSRC}
208         mv y.tab.c ${.TARGET}
209
210 .l.c:
211         ${LEX} ${LFLAGS} ${.IMPSRC}
212         mv lex.yy.c ${.TARGET}
213
214 .c.a:
215         ${CC} ${CFLAGS} -c ${.IMPSRC}
216         ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
217         rm -f ${.PREFIX}.o
218
219 .f.a:
220         ${FC} ${FFLAGS} -c ${.IMPSRC}
221         ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
222         rm -f ${.PREFIX}.o
223
224 .else
225
226 # non-Posix rule set
227
228 .sh:
229         cp -fp ${.IMPSRC} ${.TARGET}
230         chmod a+x ${.TARGET}
231
232 .c.ln:
233         ${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \
234             touch ${.TARGET}
235
236 .cc.ln .C.ln .cpp.ln .cxx.ln:
237         ${LINT} ${LINTOBJFLAGS} ${CXXFLAGS:M-[DIU]*} ${.IMPSRC} || \
238             touch ${.TARGET}
239
240 .c:
241         ${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
242         @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || \
243                 (${ECHO} ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} && \
244                 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET})
245
246 .c.o:
247         ${CC} ${CFLAGS} -c ${.IMPSRC}
248         @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || \
249                 (${ECHO} ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} && \
250                 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET})
251
252 .cc .cpp .cxx .C:
253         ${CXX} ${CXXFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
254
255 .cc.o .cpp.o .cxx.o .C.o:
256         ${CXX} ${CXXFLAGS} -c ${.IMPSRC}
257
258 .m.o:
259         ${OBJC} ${OBJCFLAGS} -c ${.IMPSRC}
260         @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || \
261                 (${ECHO} ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} && \
262                 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET})
263
264 .p.o:
265         ${PC} ${PFLAGS} -c ${.IMPSRC}
266         @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || \
267                 (${ECHO} ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} && \
268                 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET})
269
270 .e .r .F .f:
271         ${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} \
272             -o ${.TARGET}
273
274 .e.o .r.o .F.o .f.o:
275         ${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} -c ${.IMPSRC}
276
277 .S.o:
278         ${CC} ${CFLAGS} -c ${.IMPSRC}
279         @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || \
280                 (${ECHO} ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} && \
281                 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET})
282
283 .asm.o:
284         ${CC} -x assembler-with-cpp ${CFLAGS} -c ${.IMPSRC}
285         @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || \
286                 (${ECHO} ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} && \
287                 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET})
288
289 .s.o:
290         ${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC}
291         @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || \
292                 (${ECHO} ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} && \
293                 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET})
294
295 # XXX not -j safe
296 .y.o:
297         ${YACC} ${YFLAGS} ${.IMPSRC}
298         ${CC} ${CFLAGS} -c y.tab.c -o ${.TARGET}
299         rm -f y.tab.c
300         @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || \
301                 (${ECHO} ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} && \
302                 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET})
303
304 .l.o:
305         ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c
306         ${CC} ${CFLAGS} -c ${.PREFIX}.tmp.c -o ${.TARGET}
307         rm -f ${.PREFIX}.tmp.c
308         @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || \
309                 (${ECHO} ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} && \
310                 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET})
311
312 # XXX not -j safe
313 .y.c:
314         ${YACC} ${YFLAGS} ${.IMPSRC}
315         mv y.tab.c ${.TARGET}
316
317 .l.c:
318         ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.TARGET}
319
320 .s.out .c.out .o.out:
321         ${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
322         @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || \
323                 (${ECHO} ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} && \
324                 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET})
325
326 .f.out .F.out .r.out .e.out:
327         ${FC} ${EFLAGS} ${RFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} \
328             ${LDLIBS} -o ${.TARGET}
329         rm -f ${.PREFIX}.o
330         @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || \
331                 (${ECHO} ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} && \
332                 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET})
333
334 # XXX not -j safe
335 .y.out:
336         ${YACC} ${YFLAGS} ${.IMPSRC}
337         ${CC} ${CFLAGS} ${LDFLAGS} y.tab.c ${LDLIBS} -ly -o ${.TARGET}
338         rm -f y.tab.c
339         @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || \
340                 (${ECHO} ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} && \
341                 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET})
342
343 .l.out:
344         ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c
345         ${CC} ${CFLAGS} ${LDFLAGS} ${.PREFIX}.tmp.c ${LDLIBS} -ll -o ${.TARGET}
346         rm -f ${.PREFIX}.tmp.c
347         @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || \
348                 (${ECHO} ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} && \
349                 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET})
350
351 # FreeBSD build pollution.  Hide it in the non-POSIX part of the ifdef.
352 __MAKE_CONF?=/etc/make.conf
353 .if exists(${__MAKE_CONF})
354 .include "${__MAKE_CONF}"
355 .endif
356
357 .if defined(__MAKE_SHELL) && !empty(__MAKE_SHELL)
358 SHELL=  ${__MAKE_SHELL}
359 .SHELL: path=${__MAKE_SHELL}
360 .endif
361
362 # Default executable format
363 # XXX hint for bsd.port.mk
364 OBJFORMAT?=     elf
365
366 # Toggle on warnings
367 .WARN: dirsyntax
368
369 .endif
370
371 .include <bsd.compat.mk>
372 .include <bsd.cpu.mk>