1# $MirOS: src/share/mk/sys.mk,v 1.171 2014/02/20 01:01:01 tg Exp $
2# $OpenBSD: sys.mk,v 1.45 2005/03/07 00:06:00 deraadt Exp $
3# $NetBSD: sys.mk,v 1.27 1996/04/10 05:47:19 mycroft Exp $
4# @(#)sys.mk	5.11 (Berkeley) 3/13/91
5
6.if !defined(_SYS_MK)
7_SYS_MK=1
8
9.if ${MACHINE_OS} == "BSD"
10OStype=		MirBSD
11.else
12.  error MACHINE_OS (${MACHINE_OS}) unknown!
13.endif
14
15.if defined(EXTRA_SYS_MK_INCLUDES)
16.  for _i in ${EXTRA_SYS_MK_INCLUDES}
17.    include ${_i}
18.  endfor
19.endif
20
21# Sync these with <sys/param.h>
22unix=		We run ${OStype}.
23OSrev=		10		# MirOS version (major)
24OSrpl=		181		# MirOS patchlevel
25OScompat=	3.5		# OpenBSD compatibility revision
26.if !defined(OSNAME) || empty(OSNAME)
27OSNAME!=	uname -s
28.endif
29OSname=		${OSNAME:L}
30OStriplet?=	${MACHINE_ARCH}-ecce-${OSname}${OSrev}
31OSgccver?=	3.4.6
32_MIRMAKE_EXE=	/usr/bin/make
33_MIRMAKE_VER=	20100106
34
35.SUFFIXES:	.out .a .ln .o .lo .s .S .c .m .cc .C .cxx .cpp .F .f .y .l .i .h .sh .m4
36.LIBS:		.a
37
38AR?=		ar
39ARFLAGS?=	rl
40RANLIB?=	ranlib
41LORDER?=	lorder
42
43AS?=		as
44CC?=		mgcc
45CPP?=		${CC} -E
46HOSTCC?=	mgcc
47
48CPPFLAGS?=
49PIPE?=		-pipe
50
51AFLAGS?=	${DEBUG}
52COMPILE.s?=	${CC} -D_ASM_SOURCE ${AFLAGS} -c
53LINK.s?=	${CC} -D_ASM_SOURCE ${AFLAGS} ${LDFLAGS}
54COMPILE.S?=	${CC} -D_ASM_SOURCE ${AFLAGS} ${CPPFLAGS} -c
55LINK.S?=	${CC} -D_ASM_SOURCE ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
56
57CFLAGS?=	-O2 ${PIPE} -Wno-long-long ${DEBUG}
58COMPILE.c?=	${CC} ${CFLAGS:M*} ${CPPFLAGS} -c
59LINK.c?=	${CC} ${CFLAGS:M*} ${CPPFLAGS} ${LDFLAGS}
60
61CXX?=		false
62CXXFLAGS?=	${CFLAGS:N-std=c99:N-std=gnu99:N-Wno-long-long}
63COMPILE.cc?=	${CXX} ${CXXFLAGS:M*} ${CPPFLAGS} -c
64LINK.cc?=	${CXX} ${CXXFLAGS:M*} ${CPPFLAGS} ${LDFLAGS}
65
66FC?=		false
67FFLAGS?=	-O2
68COMPILE.f?=	${FC} ${FFLAGS:M*} -c
69LINK.f?=	${FC} ${FFLAGS:M*} ${LDFLAGS}
70COMPILE.F?=	${FC} ${FFLAGS:M*} -D_ASM_SOURCE ${CPPFLAGS} -c
71LINK.F?=	${FC} ${FFLAGS:M*} -D_ASM_SOURCE ${CPPFLAGS} ${LDFLAGS}
72
73LEX?=		lex
74LFLAGS?=
75LEX.l?=		${LEX} ${LFLAGS}
76
77LD?=		ld
78LDFLAGS+=	${DEBUG}
79
80LINT?=		lint
81LINTFLAGS?=	-chapbx
82
83# MirOS make can use MirBSD ksh extensions per definitionem
84SHELL=		/bin/mksh
85MAKE?=		make
86
87YACC?=		yacc
88YFLAGS?=	-d
89YACC.y?=	${YACC} ${YFLAGS}
90
91INSTALL?=	install
92
93CTAGS?=		ctags
94
95# C
96.c:
97	${LINK.c} -o $@ ${.IMPSRC} ${LDLIBS}
98.c.o:
99	${COMPILE.c} ${CFLAGS_${.TARGET}:M*} ${.IMPSRC}
100.c.i:
101	${COMPILE.c} ${CFLAGS_${.TARGET:.i=.o}:M*} -o $@ -E ${.IMPSRC}
102.c.s:
103	${COMPILE.c} ${CFLAGS_${.TARGET:.s=.o}:M*} -o $@ -S ${.IMPSRC}
104.c.a:
105	${COMPILE.c} ${CFLAGS_${.TARGET:.a=.o}:M*} ${.IMPSRC}
106	${AR} ${ARFLAGS} $@ $*.o
107	rm -f $*.o
108.c.ln:
109	env CC=${_ORIG_CC:Q} ${LINT} ${LINTFLAGS} ${CFLAGS:M-[IDU]*} \
110	    ${CPPFLAGS:M-[IDU]*} -i ${.IMPSRC}
111
112# Objective-C
113.m:
114	${LINK.c} -o $@ ${.IMPSRC} ${LDLIBS}
115.m.o:
116	${COMPILE.c} ${CFLAGS_${.TARGET}:M*} ${.IMPSRC}
117.m.i:
118	${COMPILE.c} ${CFLAGS_${.TARGET:.i=.o}:M*} -o $@ -E ${.IMPSRC}
119.m.s:
120	${COMPILE.c} ${CFLAGS_${.TARGET:.s=.o}:M*} -o $@ -S ${.IMPSRC}
121.m.a:
122	${COMPILE.c} ${CFLAGS_${.TARGET:.a=.o}:M*} ${.IMPSRC}
123	${AR} ${ARFLAGS} $@ $*.o
124	rm -f $*.o
125.m.ln:
126	env CC=${_ORIG_CC:Q} ${LINT} ${LINTFLAGS} ${CFLAGS:M-[IDU]*} \
127	    ${CPPFLAGS:M-[IDU]*} -i ${.IMPSRC}
128
129# C++
130.cc:
131	${LINK.cc} -o $@ ${.IMPSRC} ${LDLIBS}
132.cc.o:
133	${COMPILE.cc} ${CXXFLAGS_${.TARGET}:M*} ${.IMPSRC}
134.cc.i:
135	${COMPILE.cc} ${CXXFLAGS_${.TARGET:.i=.o}:M*} -o $@ -E ${.IMPSRC}
136.cc.s:
137	${COMPILE.cc} ${CXXFLAGS_${.TARGET:.s=.o}:M*} -o $@ -S ${.IMPSRC}
138.cc.a:
139	${COMPILE.cc} ${CXXFLAGS_${.TARGET:.a=.o}:M*} ${.IMPSRC}
140	${AR} ${ARFLAGS} $@ $*.o
141	rm -f $*.o
142
143.C:
144	${LINK.cc} -o $@ ${.IMPSRC} ${LDLIBS}
145.C.o:
146	${COMPILE.cc} ${CXXFLAGS_${.TARGET}:M*} ${.IMPSRC}
147.C.i:
148	${COMPILE.cc} ${CXXFLAGS_${.TARGET:.i=.o}:M*} -o $@ -E ${.IMPSRC}
149.C.s:
150	${COMPILE.cc} ${CXXFLAGS_${.TARGET:.s=.o}:M*} -o $@ -S ${.IMPSRC}
151.C.a:
152	${COMPILE.cc} ${CXXFLAGS_${.TARGET:.a=.o}:M*} ${.IMPSRC}
153	${AR} ${ARFLAGS} $@ $*.o
154	rm -f $*.o
155
156.cxx:
157	${LINK.cc} -o $@ ${.IMPSRC} ${LDLIBS}
158.cxx.o:
159	${COMPILE.cc} ${CXXFLAGS_${.TARGET}:M*} ${.IMPSRC}
160.cxx.i:
161	${COMPILE.cc} ${CXXFLAGS_${.TARGET:.i=.o}:M*} -o $@ -E ${.IMPSRC}
162.cxx.s:
163	${COMPILE.cc} ${CXXFLAGS_${.TARGET:.s=.o}:M*} -o $@ -S ${.IMPSRC}
164.cxx.a:
165	${COMPILE.cc} ${CXXFLAGS_${.TARGET:.a=.o}:M*} ${.IMPSRC}
166	${AR} ${ARFLAGS} $@ $*.o
167	rm -f $*.o
168
169.cpp:
170	${LINK.cc} -o $@ ${.IMPSRC} ${LDLIBS}
171.cpp.o:
172	${COMPILE.cc} ${CXXFLAGS_${.TARGET}:M*} ${.IMPSRC}
173.cpp.i:
174	${COMPILE.cc} ${CXXFLAGS_${.TARGET:.i=.o}:M*} -o $@ -E ${.IMPSRC}
175.cpp.s:
176	${COMPILE.cc} ${CXXFLAGS_${.TARGET:.s=.o}:M*} -o $@ -S ${.IMPSRC}
177.cpp.a:
178	${COMPILE.cc} ${CXXFLAGS_${.TARGET:.a=.o}:M*} ${.IMPSRC}
179	${AR} ${ARFLAGS} $@ $*.o
180	rm -f $*.o
181
182# Fortran
183.f:
184	${LINK.f} -o $@ ${.IMPSRC} ${LDLIBS}
185.f.o:
186	${COMPILE.f} ${FFLAGS_${.TARGET}:M*} ${.IMPSRC}
187.f.a:
188	${COMPILE.f} ${FFLAGS_${.TARGET:.a=.o}:M*} ${.IMPSRC}
189	${AR} ${ARFLAGS} $@ $*.o
190	rm -f $*.o
191
192.F:
193	${LINK.F} -o $@ ${.IMPSRC} ${LDLIBS}
194.F.o:
195	${COMPILE.F} ${FFLAGS_${.TARGET}:M*} ${.IMPSRC}
196.F.i:
197	${COMPILE.F} ${FFLAGS_${.TARGET:.i=.o}:M*} -o $@ -E ${.IMPSRC}
198.F.a:
199	${COMPILE.F} ${FFLAGS_${.TARGET:.a=.o}:M*} ${.IMPSRC}
200	${AR} ${ARFLAGS} $@ $*.o
201	rm -f $*.o
202
203# Assembly
204.s:
205	${LINK.s} -o $@ ${.IMPSRC} ${LDLIBS}
206.s.o:
207	${COMPILE.s} ${AFLAGS_${.TARGET}:M*} ${.IMPSRC}
208.s.a:
209	${COMPILE.s} ${AFLAGS_${.TARGET:.a=.o}:M*} ${.IMPSRC}
210	${AR} ${ARFLAGS} $@ $*.o
211	rm -f $*.o
212
213.S:
214	${LINK.S} -o $@ ${.IMPSRC} ${LDLIBS}
215.S.o:
216	${COMPILE.S} ${AFLAGS_${.TARGET}:M*} ${.IMPSRC}
217.S.s:
218	${COMPILE.S} ${AFLAGS_${.TARGET:.s=.o}:M*} -o $@ -E ${.IMPSRC}
219.S.a:
220	${COMPILE.S} ${AFLAGS_${.TARGET:.a=.o}:M*} ${.IMPSRC}
221	${AR} ${ARFLAGS} $@ $*.o
222	rm -f $*.o
223
224# Lex
225.l:
226	${LEX.l} -o${.TARGET:R}.yy.c ${.IMPSRC}
227	${LINK.c} -o $@ ${.TARGET:R}.yy.c ${LDLIBS} -ll
228	rm -f ${.TARGET:R}.yy.c
229.l.c:
230	${LEX.l} -o$@ ${.IMPSRC}
231.l.o:
232	${LEX.l} -o${.TARGET:R}.yy.c ${.IMPSRC}
233	${COMPILE.c} ${CFLAGS_${.TARGET}:M*} -o $@ ${.TARGET:R}.yy.c
234	rm -f ${.TARGET:R}.yy.c
235
236# Yacc
237.y:
238	${YACC.y} -o ${.TARGET:R}.tab.c ${.IMPSRC}
239	${LINK.c} -o $@ ${.TARGET:R}.tab.c ${LDLIBS}
240	rm -f ${.TARGET:R}.tab.c
241.y.c:
242	${YACC.y} -o $@ ${.IMPSRC}
243.y.o:
244	${YACC.y} -o ${.TARGET:R}.tab.c ${.IMPSRC}
245	${COMPILE.c} ${CFLAGS_${.TARGET}:M*} -o $@ ${.TARGET:R}.tab.c
246	rm -f ${.TARGET:R}.tab.c
247
248# Shell
249.sh:
250	rm -f $@
251	cp ${.IMPSRC} $@
252	chmod +x $@
253
254# Debugging output
255.if defined(___DISPLAY_MAKEVARS)
256${.TARGETS}: .MADE
257	@:
258.  if empty(.TARGETS)
259.MAIN: ___display_makevars
260___display_makevars::
261.  else
262.BEGIN:
263.  endif
264.  for _i in ${___DISPLAY_MAKEVARS}
265	@print -r -- ${${_i}:Q}
266.  endfor
267.elif defined(___DUMP_MAKEVARS)
268${.TARGETS}: .MADE
269	@:
270.  if empty(.TARGETS)
271.MAIN: ___dump_makevars
272___dump_makevars::
273.  else
274.BEGIN:
275.  endif
276.  for _i in ${___DUMP_MAKEVARS}
277	@print -r -- ${_i:Q:Q}=${${_i}:Q:Q}
278.  endfor
279.endif
280
281.endif
282