xref: /netbsd-src/share/mk/sys.mk (revision 7fa608457b817eca6e0977b37f758ae064f3c99c)
1#	$NetBSD: sys.mk,v 1.92 2007/04/15 22:53:08 matt Exp $
2#	@(#)sys.mk	8.2 (Berkeley) 3/21/94
3
4unix?=		We run NetBSD.
5
6.SUFFIXES: .a .o .ln .s .S .c .cc .cpp .cxx .C .f .F .r .p .l .y .sh
7
8.LIBS:		.a
9
10AR?=		ar
11ARFLAGS?=	rl
12RANLIB?=	ranlib
13
14AS?=		as
15AFLAGS?=
16COMPILE.s?=	${CC} ${AFLAGS} -c
17LINK.s?=	${CC} ${AFLAGS} ${LDFLAGS}
18COMPILE.S?=	${CC} ${AFLAGS} ${CPPFLAGS} -c -traditional-cpp
19LINK.S?=	${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
20
21CC?=		cc
22.if ${MACHINE_ARCH} == "alpha" || \
23    ${MACHINE_ARCH} == "arm" || \
24    ${MACHINE_ARCH} == "x86_64" || \
25    ${MACHINE_ARCH} == "armeb" || \
26    ${MACHINE_ARCH} == "hppa" || \
27    ${MACHINE_ARCH} == "i386" || \
28    ${MACHINE_ARCH} == "m68k" || \
29    ${MACHINE_ARCH} == "mipsel" || ${MACHINE_ARCH} == "mipseb" || \
30    ${MACHINE_ARCH} == "mips64el" || ${MACHINE_ARCH} == "mips64eb" || \
31    ${MACHINE_ARCH} == "ns32k" || \
32    ${MACHINE_ARCH} == "powerpc" || \
33    ${MACHINE_ARCH} == "sparc" || \
34    ${MACHINE_ARCH} == "sparc64"
35DBG?=	-O2
36.elif ${MACHINE_ARCH} == "vax"
37DBG?=	-O1 -fgcse -fstrength-reduce -fgcse-after-reload
38.else
39DBG?=	-O
40.endif
41CFLAGS?=	${DBG}
42LDFLAGS?=
43COMPILE.c?=	${CC} ${CFLAGS} ${CPPFLAGS} -c
44LINK.c?=	${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
45
46CXX?=		c++
47CXXFLAGS?=	${CFLAGS:N-Wno-traditional:N-Wstrict-prototypes:N-Wmissing-prototypes:N-std=gnu99}
48
49COMPILE.cc?=	${CXX} ${CXXFLAGS} ${CPPFLAGS} -c
50LINK.cc?=	${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
51
52OBJC?=		${CC}
53OBJCFLAGS?=	${CFLAGS}
54COMPILE.m?=	${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c
55LINK.m?=	${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS}
56
57CPP?=		cpp
58CPPFLAGS?=
59
60FC?=		f77
61FFLAGS?=	-O
62RFLAGS?=
63COMPILE.f?=	${FC} ${FFLAGS} -c
64LINK.f?=	${FC} ${FFLAGS} ${LDFLAGS}
65COMPILE.F?=	${FC} ${FFLAGS} ${CPPFLAGS} -c
66LINK.F?=	${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
67COMPILE.r?=	${FC} ${FFLAGS} ${RFLAGS} -c
68LINK.r?=	${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
69
70INSTALL?=	install
71
72LD?=		ld
73
74LEX?=		lex
75LFLAGS?=
76LEX.l?=		${LEX} ${LFLAGS}
77
78LINT?=		lint
79LINTFLAGS?=	-chapbxzFS
80
81LORDER?=	lorder
82
83MAKE?=		make
84
85NM?=		nm
86
87PC?=		pc
88PFLAGS?=
89COMPILE.p?=	${PC} ${PFLAGS} ${CPPFLAGS} -c
90LINK.p?=	${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
91
92SHELL?=		sh
93
94SIZE?=		size
95
96TSORT?= 	tsort -q
97
98YACC?=		yacc
99YFLAGS?=
100YACC.y?=	${YACC} ${YFLAGS}
101
102# C
103.c:
104	${LINK.c} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
105.c.o:
106	${COMPILE.c} ${.IMPSRC}
107.c.a:
108	${COMPILE.c} ${.IMPSRC}
109	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
110	rm -f ${.PREFIX}.o
111.c.ln:
112	${LINT} ${LINTFLAGS} \
113	    ${CPPFLAGS:C/-([IDU])[  ]*/-\1/Wg:M-[IDU]*} \
114	    -i ${.IMPSRC}
115
116# C++
117.cc .cpp .cxx .C:
118	${LINK.cc} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
119.cc.o .cpp.o .cxx.o .C.o:
120	${COMPILE.cc} ${.IMPSRC}
121.cc.a .cpp.a .cxx.a .C.a:
122	${COMPILE.cc} ${.IMPSRC}
123	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
124	rm -f ${.PREFIX}.o
125
126# Fortran/Ratfor
127.f:
128	${LINK.f} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
129.f.o:
130	${COMPILE.f} ${.IMPSRC}
131.f.a:
132	${COMPILE.f} ${.IMPSRC}
133	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
134	rm -f ${.PREFIX}.o
135
136.F:
137	${LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
138.F.o:
139	${COMPILE.F} ${.IMPSRC}
140.F.a:
141	${COMPILE.F} ${.IMPSRC}
142	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
143	rm -f ${.PREFIX}.o
144
145.r:
146	${LINK.r} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
147.r.o:
148	${COMPILE.r} ${.IMPSRC}
149.r.a:
150	${COMPILE.r} ${.IMPSRC}
151	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
152	rm -f ${.PREFIX}.o
153
154# Pascal
155.p:
156	${LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
157.p.o:
158	${COMPILE.p} ${.IMPSRC}
159.p.a:
160	${COMPILE.p} ${.IMPSRC}
161	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
162	rm -f ${.PREFIX}.o
163
164# Assembly
165.s:
166	${LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
167.s.o:
168	${COMPILE.s} ${.IMPSRC}
169.s.a:
170	${COMPILE.s} ${.IMPSRC}
171	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
172	rm -f ${.PREFIX}.o
173.S:
174	${LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
175.S.o:
176	${COMPILE.S} ${.IMPSRC}
177.S.a:
178	${COMPILE.S} ${.IMPSRC}
179	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
180	rm -f ${.PREFIX}.o
181
182# Lex
183.l:
184	${LEX.l} ${.IMPSRC}
185	${LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll
186	rm -f lex.yy.c
187.l.c:
188	${LEX.l} ${.IMPSRC}
189	mv lex.yy.c ${.TARGET}
190.l.o:
191	${LEX.l} ${.IMPSRC}
192	${COMPILE.c} -o ${.TARGET} lex.yy.c
193	rm -f lex.yy.c
194
195# Yacc
196.y:
197	${YACC.y} ${.IMPSRC}
198	${LINK.c} -o ${.TARGET} y.tab.c ${LDLIBS}
199	rm -f y.tab.c
200.y.c:
201	${YACC.y} ${.IMPSRC}
202	mv y.tab.c ${.TARGET}
203.y.o:
204	${YACC.y} ${.IMPSRC}
205	${COMPILE.c} -o ${.TARGET} y.tab.c
206	rm -f y.tab.c
207
208# Shell
209.sh:
210	rm -f ${.TARGET}
211	cp ${.IMPSRC} ${.TARGET}
212	chmod a+x ${.TARGET}
213