xref: /minix/share/mk/sys.mk (revision e1cdaee1)
1#	$NetBSD: sys.mk,v 1.128 2015/07/06 00:21:51 chs 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.if ${MKMAGIC:Uno} == "yes" || ${MKASR:Uno} == "yes"
26CPPFLAGS+= -D_MINIX_MAGIC=1
27STRIPFLAG= -s
28DBG=-g
29.endif
30
31#LSC: Be a bit smarter about the default compiler
32.if exists(/usr/pkg/bin/clang) || exists(/usr/bin/clang)
33CC?=	clang
34.endif
35
36.if exists(/usr/pkg/bin/gcc) || exists(/usr/bin/gcc)
37CC?=	gcc
38.endif
39.endif # defined(__MINIX)
40
41.LIBS:		.a
42
43AR?=		ar
44ARFLAGS?=	rl
45RANLIB?=	ranlib
46
47AS?=		as
48AFLAGS?=
49COMPILE.s?=	${CC} ${AFLAGS} ${AFLAGS.${<:T}} -c
50LINK.s?=	${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${LDFLAGS}
51_ASM_TRADITIONAL_CPP=	-x assembler-with-cpp
52COMPILE.S?=	${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${CPPFLAGS} ${_ASM_TRADITIONAL_CPP} -c
53LINK.S?=	${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${CPPFLAGS} ${LDFLAGS}
54
55CC?=		cc
56.if ${MACHINE_ARCH} == "sh3el" || ${MACHINE_ARCH} == "sh3eb"
57# -O2 is too -falign-* zealous for low-memory sh3 machines
58DBG?=	-Os -freorder-blocks
59.elif ${MACHINE_ARCH} == "m68k" || ${MACHINE_ARCH} == "m68000"
60# -freorder-blocks (enabled by -O2) produces much bigger code
61DBG?=	-O2 -fno-reorder-blocks
62.elif ${MACHINE_ARCH} == "coldfire"
63DBG?=	-O1
64.elif !empty(MACHINE_ARCH:Maarch64*)
65DBG?=	-O2 ${"${.TARGET:M*.po}" == "":? -fomit-frame-pointer:}
66.elif ${MACHINE_ARCH} == "vax"
67DBG?=	-O1 -fgcse -fstrength-reduce -fgcse-after-reload
68.else
69DBG?=	-O2
70.endif
71.if !defined(__MINIX)
72CFLAGS?=	${DBG}
73.else
74CFLAGS+=	${DBG}
75.endif # !defined(__MINIX)
76LDFLAGS?=
77COMPILE.c?=	${CC} ${CFLAGS} ${CPPFLAGS} -c
78LINK.c?=	${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
79
80# C Type Format data is required for DTrace
81CTFFLAGS	?=	-g -L VERSION
82CTFMFLAGS	?=	-t -g -L VERSION
83
84CXX?=		c++
85CXXFLAGS?=	${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}
86
87__ALLSRC1=	${empty(DESTDIR):?${.ALLSRC}:${.ALLSRC:S|^${DESTDIR}|^destdir|}}
88__ALLSRC2=	${empty(MAKEOBJDIR):?${__ALLSRC1}:${__ALLSRC1:S|^${MAKEOBJDIR}|^obj|}}
89__ALLSRC3=	${empty(NETBSDSRCDIR):?${__ALLSRC2}:${__ALLSRC2:S|^${NETBSDSRCDIR}|^src|}}
90__BUILDSEED=	${BUILDSEED}/${__ALLSRC3:O}/${.TARGET}
91_CXXSEED?=	${BUILDSEED:D-frandom-seed=${__BUILDSEED:hash}}
92
93COMPILE.cc?=	${CXX} ${_CXXSEED} ${CXXFLAGS} ${CPPFLAGS} -c
94LINK.cc?=	${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
95
96OBJC?=		${CC}
97OBJCFLAGS?=	${CFLAGS}
98COMPILE.m?=	${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c
99LINK.m?=	${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS}
100
101CPP?=		cpp
102CPPFLAGS?=
103
104FC?=		f77
105FFLAGS?=	-O
106RFLAGS?=
107COMPILE.f?=	${FC} ${FFLAGS} -c
108LINK.f?=	${FC} ${FFLAGS} ${LDFLAGS}
109COMPILE.F?=	${FC} ${FFLAGS} ${CPPFLAGS} -c
110LINK.F?=	${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
111COMPILE.r?=	${FC} ${FFLAGS} ${RFLAGS} -c
112LINK.r?=	${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
113
114INSTALL?=	install
115
116LD?=		ld
117
118LEX?=		lex
119LFLAGS?=
120LEX.l?=		${LEX} ${LFLAGS}
121
122LINT?=		lint
123LINTFLAGS?=	-chapbxzgFS
124
125LORDER?=	lorder
126
127MAKE?=		make
128
129NM?=		nm
130
131PC?=		pc
132PFLAGS?=
133COMPILE.p?=	${PC} ${PFLAGS} ${CPPFLAGS} -c
134LINK.p?=	${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
135
136SHELL?=		sh
137
138SIZE?=		size
139
140TSORT?= 	tsort -q
141
142YACC?=		yacc
143YFLAGS?=
144YACC.y?=	${YACC} ${YFLAGS}
145
146# C
147.c:
148	${LINK.c} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
149# XXX: disable for now
150#	${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
151.c.o:
152	${COMPILE.c} ${.IMPSRC}
153	${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
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	${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
179.f.a:
180	${COMPILE.f} ${.IMPSRC}
181	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
182	rm -f ${.PREFIX}.o
183
184.F:
185	${LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
186	${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
187.F.o:
188	${COMPILE.F} ${.IMPSRC}
189	${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
190.F.a:
191	${COMPILE.F} ${.IMPSRC}
192	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
193	rm -f ${.PREFIX}.o
194
195.r:
196	${LINK.r} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
197.r.o:
198	${COMPILE.r} ${.IMPSRC}
199	${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
200.r.a:
201	${COMPILE.r} ${.IMPSRC}
202	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
203	rm -f ${.PREFIX}.o
204
205# Pascal
206.p:
207	${LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
208	${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
209.p.o:
210	${COMPILE.p} ${.IMPSRC}
211	${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
212.p.a:
213	${COMPILE.p} ${.IMPSRC}
214	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
215	rm -f ${.PREFIX}.o
216
217# Assembly
218.s:
219	${LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
220	${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
221.s.o:
222	${COMPILE.s} ${.IMPSRC}
223	${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
224.s.a:
225	${COMPILE.s} ${.IMPSRC}
226	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
227	rm -f ${.PREFIX}.o
228.S:
229	${LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
230	${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
231.S.o:
232	${COMPILE.S} ${.IMPSRC}
233	${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
234.S.a:
235	${COMPILE.S} ${.IMPSRC}
236	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
237	rm -f ${.PREFIX}.o
238
239# Lex
240.l:
241	${LEX.l} ${.IMPSRC}
242	${LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll
243	rm -f lex.yy.c
244.l.c:
245	${LEX.l} ${.IMPSRC}
246	mv lex.yy.c ${.TARGET}
247.l.o:
248	${LEX.l} ${.IMPSRC}
249	${COMPILE.c} -o ${.TARGET} lex.yy.c
250	${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
251	rm -f lex.yy.c
252
253# Yacc
254.y:
255	${YACC.y} ${.IMPSRC}
256	${LINK.c} -o ${.TARGET} y.tab.c ${LDLIBS}
257	rm -f y.tab.c
258.y.c:
259	${YACC.y} ${.IMPSRC}
260	mv y.tab.c ${.TARGET}
261.y.o:
262	${YACC.y} ${.IMPSRC}
263	${COMPILE.c} -o ${.TARGET} y.tab.c
264	${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:}
265	rm -f y.tab.c
266
267# Shell
268.sh:
269	rm -f ${.TARGET}
270	cp ${.IMPSRC} ${.TARGET}
271	chmod a+x ${.TARGET}
272