xref: /minix/share/mk/sys.mk (revision 9f988b79)
1#	$NetBSD: sys.mk,v 1.118 2013/11/01 17:07:37 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# This variable should be used to differentiate Minix builds in Makefiles.
9__MINIX=	yes
10
11.if !defined(__MINIX)
12unix?=		We run NetBSD.
13
14.SUFFIXES: .a .o .ln .s .S .c .cc .cpp .cxx .C .f .F .r .p .l .y .sh
15.else
16unix?=		We run MINIX.
17
18.SUFFIXES: .a .o .bc .ln .s .S .c .cc .cpp .cxx .C .f .F .r .p .l .y .sh
19
20.if ${MKSMALL:U} == "yes"
21CPPFLAGS+= -DNDEBUG
22DBG=	-Os
23.endif
24
25#LSC: Be a bit smarter about the default compiler
26.if exists(/usr/pkg/bin/clang) || exists(/usr/bin/clang)
27CC?=	clang
28.endif
29
30.if exists(/usr/pkg/bin/gcc) || exists(/usr/bin/gcc)
31CC?=	gcc
32.endif
33.endif # defined(__MINIX)
34
35.LIBS:		.a
36
37AR?=		ar
38ARFLAGS?=	rl
39RANLIB?=	ranlib
40
41AS?=		as
42AFLAGS?=
43COMPILE.s?=	${CC} ${AFLAGS} ${AFLAGS.${<:T}} -c
44LINK.s?=	${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${LDFLAGS}
45#_ASM_TRADITIONAL_CPP=	-x assembler-with-cpp
46_ASM_TRADITIONAL_CPP=
47COMPILE.S?=	${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${CPPFLAGS} ${_ASM_TRADITIONAL_CPP} -c
48LINK.S?=	${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${CPPFLAGS} ${LDFLAGS}
49
50CC?=		cc
51.if ${MACHINE_ARCH} == "sh3el" || ${MACHINE_ARCH} == "sh3eb"
52# -O2 is too -falign-* zealous for low-memory sh3 machines
53DBG?=	-Os -freorder-blocks
54.elif ${MACHINE_ARCH} == "m68k" || ${MACHINE_ARCH} == "m68000"
55# see src/doc/HACKS for details
56DBG?=	-Os
57.elif ${MACHINE_ARCH} == "coldfire"
58DBG?=	-O1
59.elif ${MACHINE_ARCH} == "vax"
60DBG?=	-O1 -fgcse -fstrength-reduce -fgcse-after-reload
61.else
62DBG?=	-O2
63.endif
64.if !defined(__MINIX)
65CFLAGS?=	${DBG}
66.else
67CFLAGS+=	${DBG}
68.endif # !defined(__MINIX)
69LDFLAGS?=
70COMPILE.c?=	${CC} ${CFLAGS} ${CPPFLAGS} -c
71LINK.c?=	${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
72
73# C Type Format data is required for DTrace
74CTFFLAGS	?=	-g -L VERSION
75CTFMFLAGS	?=	-g -t -L VERSION
76
77# We don't define these here, we let the bsd.own.mk to do it
78#CTFCONVERT	?=	ctfconvert
79#CTFMERGE	?=	ctfmerge
80
81CXX?=		c++
82CXXFLAGS?=	${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}
83
84__ALLSRC1=	${empty(DESTDIR):?${.ALLSRC}:${.ALLSRC:S|^${DESTDIR}|^destdir|}}
85__ALLSRC2=	${empty(MAKEOBJDIR):?${__ALLSRC1}:${__ALLSRC1:S|^${MAKEOBJDIR}|^obj|}}
86__ALLSRC3=	${empty(NETBSDSRCDIR):?${__ALLSRC2}:${__ALLSRC2:S|^${NETBSDSRCDIR}|^src|}}
87__BUILDSEED=	${BUILDSEED}/${__ALLSRC3:O}/${.TARGET}
88_CXXSEED?=	${BUILDSEED:D-frandom-seed=${__BUILDSEED:hash}}
89
90COMPILE.cc?=	${CXX} ${_CXXSEED} ${CXXFLAGS} ${CPPFLAGS} -c
91LINK.cc?=	${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
92
93OBJC?=		${CC}
94OBJCFLAGS?=	${CFLAGS}
95COMPILE.m?=	${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c
96LINK.m?=	${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS}
97
98CPP?=		cpp
99CPPFLAGS?=
100
101FC?=		f77
102FFLAGS?=	-O
103RFLAGS?=
104COMPILE.f?=	${FC} ${FFLAGS} -c
105LINK.f?=	${FC} ${FFLAGS} ${LDFLAGS}
106COMPILE.F?=	${FC} ${FFLAGS} ${CPPFLAGS} -c
107LINK.F?=	${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
108COMPILE.r?=	${FC} ${FFLAGS} ${RFLAGS} -c
109LINK.r?=	${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
110
111INSTALL?=	install
112
113LD?=		ld
114
115LEX?=		lex
116LFLAGS?=
117LEX.l?=		${LEX} ${LFLAGS}
118
119LINT?=		lint
120LINTFLAGS?=	-chapbxzFS
121
122LORDER?=	lorder
123
124MAKE?=		make
125
126NM?=		nm
127
128PC?=		pc
129PFLAGS?=
130COMPILE.p?=	${PC} ${PFLAGS} ${CPPFLAGS} -c
131LINK.p?=	${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
132
133SHELL?=		sh
134
135SIZE?=		size
136
137TSORT?= 	tsort -q
138
139YACC?=		yacc
140YFLAGS?=
141YACC.y?=	${YACC} ${YFLAGS}
142
143# C
144.c:
145	${LINK.c} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
146.if defined(CTFCONVERT)
147	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
148.endif
149.c.o:
150	${COMPILE.c} ${.IMPSRC}
151.if defined(CTFCONVERT)
152	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
153.endif
154.c.a:
155	${COMPILE.c} ${.IMPSRC}
156	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
157	rm -f ${.PREFIX}.o
158.c.ln:
159	${LINT} ${LINTFLAGS} \
160	    ${CPPFLAGS:C/-([IDU])[  ]*/-\1/Wg:M-[IDU]*} \
161	    -i ${.IMPSRC}
162
163# C++
164.cc .cpp .cxx .C:
165	${LINK.cc} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
166.cc.o .cpp.o .cxx.o .C.o:
167	${COMPILE.cc} ${.IMPSRC}
168.cc.a .cpp.a .cxx.a .C.a:
169	${COMPILE.cc} ${.IMPSRC}
170	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
171	rm -f ${.PREFIX}.o
172
173# Fortran/Ratfor
174.f:
175	${LINK.f} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
176.f.o:
177	${COMPILE.f} ${.IMPSRC}
178.if defined(CTFCONVERT)
179	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
180.endif
181.f.a:
182	${COMPILE.f} ${.IMPSRC}
183	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
184	rm -f ${.PREFIX}.o
185
186.F:
187	${LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
188.if defined(CTFCONVERT)
189	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
190.endif
191.F.o:
192	${COMPILE.F} ${.IMPSRC}
193.if defined(CTFCONVERT)
194	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
195.endif
196.F.a:
197	${COMPILE.F} ${.IMPSRC}
198	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
199	rm -f ${.PREFIX}.o
200
201.r:
202	${LINK.r} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
203.r.o:
204	${COMPILE.r} ${.IMPSRC}
205.if defined(CTFCONVERT)
206	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
207.endif
208.r.a:
209	${COMPILE.r} ${.IMPSRC}
210	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
211	rm -f ${.PREFIX}.o
212
213# Pascal
214.p:
215	${LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
216.if defined(CTFCONVERT)
217	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
218.endif
219.p.o:
220	${COMPILE.p} ${.IMPSRC}
221.if defined(CTFCONVERT)
222	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
223.endif
224.p.a:
225	${COMPILE.p} ${.IMPSRC}
226	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
227	rm -f ${.PREFIX}.o
228
229# Assembly
230.s:
231	${LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
232.if defined(CTFCONVERT)
233	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
234.endif
235.s.o:
236	${COMPILE.s} ${.IMPSRC}
237.if defined(CTFCONVERT)
238	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
239.endif
240.s.a:
241	${COMPILE.s} ${.IMPSRC}
242	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
243	rm -f ${.PREFIX}.o
244.S:
245	${LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
246.if defined(CTFCONVERT)
247	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
248.endif
249.S.o:
250	${COMPILE.S} ${.IMPSRC}
251.if defined(CTFCONVERT)
252	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
253.endif
254.S.a:
255	${COMPILE.S} ${.IMPSRC}
256	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
257	rm -f ${.PREFIX}.o
258
259# Lex
260.l:
261	${LEX.l} ${.IMPSRC}
262	${LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll
263	rm -f lex.yy.c
264.l.c:
265	${LEX.l} ${.IMPSRC}
266	mv lex.yy.c ${.TARGET}
267.l.o:
268	${LEX.l} ${.IMPSRC}
269	${COMPILE.c} -o ${.TARGET} lex.yy.c
270.if defined(CTFCONVERT)
271	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
272.endif
273	rm -f lex.yy.c
274
275# Yacc
276.y:
277	${YACC.y} ${.IMPSRC}
278	${LINK.c} -o ${.TARGET} y.tab.c ${LDLIBS}
279	rm -f y.tab.c
280.y.c:
281	${YACC.y} ${.IMPSRC}
282	mv y.tab.c ${.TARGET}
283.y.o:
284	${YACC.y} ${.IMPSRC}
285	${COMPILE.c} -o ${.TARGET} y.tab.c
286.if defined(CTFCONVERT)
287	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
288.endif
289	rm -f y.tab.c
290
291# Shell
292.sh:
293	rm -f ${.TARGET}
294	cp ${.IMPSRC} ${.TARGET}
295	chmod a+x ${.TARGET}
296