xref: /netbsd/share/mk/bsd.sys.mk (revision bf9ec67e)
1#	$NetBSD: bsd.sys.mk,v 1.78 2002/05/28 21:56:06 bjh21 Exp $
2#
3# Build definitions used for NetBSD source tree builds.
4
5.if !target(__bsd_sys_mk__)
6__bsd_sys_mk__:
7
8.if defined(WARNS)
9.if ${WARNS} > 0
10CFLAGS+=	-Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith
11#CFLAGS+=	-Wmissing-declarations -Wredundant-decls -Wnested-externs
12# XXX Delete -Wuninitialized by default for now -- the compiler doesn't
13# XXX always get it right.
14CFLAGS+=	-Wno-uninitialized
15.endif
16.if ${WARNS} > 1
17CFLAGS+=	-Wreturn-type -Wpointer-arith -Wswitch -Wshadow
18.endif
19.if ${WARNS} > 2
20CFLAGS+=	-Wcast-qual -Wwrite-strings
21.endif
22.endif
23
24.if defined(WFORMAT) && defined(FORMAT_AUDIT)
25.if ${WFORMAT} > 1
26CFLAGS+=	-Wnetbsd-format-audit -Wno-format-extra-args
27.endif
28.endif
29
30CPPFLAGS+=	${AUDIT:D-D__AUDIT__}
31CFLAGS+=	${CWARNFLAGS} ${NOGCCERROR:D:U-Werror}
32LINTFLAGS+=	${DESTDIR:D-d ${DESTDIR}/usr/include}
33
34.if defined(MKSOFTFLOAT) && (${MKSOFTFLOAT} != "no")
35COPTS+=		-msoft-float
36FOPTS+=		-msoft-float
37.endif
38
39.if defined(MKIEEEFP) && (${MKIEEEFP} != "no")
40.if ${MACHINE_ARCH} == "alpha"
41CFLAGS+=	-mieee
42FFLAGS+=	-mieee
43.endif
44.endif
45
46# Helpers for cross-compiling
47HOST_CC?=	cc
48HOST_CFLAGS?=	-O
49HOST_COMPILE.c?=${HOST_CC} ${HOST_CFLAGS} ${HOST_CPPFLAGS} -c
50HOST_LINK.c?=	${HOST_CC} ${HOST_CFLAGS} ${HOST_CPPFLAGS} ${HOST_LDFLAGS}
51
52HOST_CXX?=	c++
53HOST_CXXFLAGS?=	-O
54
55HOST_CPP?=	cpp
56HOST_CPPFLAGS?=
57
58HOST_LD?=	ld
59HOST_LDFLAGS?=
60
61HOST_AR?=	ar
62HOST_RANLIB?=	ranlib
63
64CAP_MKDB?=	cap_mkdb
65CKSUM?=		cksum
66CONFIG?=	config
67CRUNCHGEN?=	crunchgen
68ELF2ECOFF?=	elf2ecoff
69FGEN?=		fgen
70GROFF?=		groff
71INSTALLBOOT?=	installboot
72MAKEFS?=	makefs
73MDSETIMAGE?=	mdsetimage
74MKDEP?=		mkdep
75MKLOCALE?=	mklocale
76MTREE?=		mtree
77OBJCOPY?=	objcopy
78PAX?=		pax
79PWD_MKDB?=	pwd_mkdb
80RPCGEN?=	rpcgen
81STRIP?=		strip
82
83.SUFFIXES:	.m .o .ln .lo
84
85# Objective C
86# (Defined here rather than in <sys.mk> because `.m' is not just
87#  used for Objective C source)
88.m:
89	${LINK.m} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
90.m.o:
91	${COMPILE.m} ${.IMPSRC}
92
93# Host-compiled C objects
94# The intermediate step is necessary for Sun CC, which objects to calling
95# object files anything but *.o
96.c.lo:
97	${HOST_COMPILE.c} -o ${.TARGET}.o ${.IMPSRC}
98	mv ${.TARGET}.o ${.TARGET}
99
100# Lex
101LPREFIX?=	yy
102LFLAGS+=	-P${LPREFIX}
103
104.l.o: # remove to force use of .l.c->.c.o transforms
105.l:
106	${LEX.l} -o${.TARGET:R}.${LPREFIX}.c ${.IMPSRC}
107	${LINK.c} -o ${.TARGET} ${.TARGET:R}.${LPREFIX}.c ${LDLIBS} -ll
108	rm -f ${.TARGET:R}.${LPREFIX}.c
109.l.c:
110	${LEX.l} -o${.TARGET} ${.IMPSRC}
111
112# Yacc
113YFLAGS+=	${YPREFIX:D-p${YPREFIX}} ${YHEADER:D-d}
114
115.y.o: # remove to force use of .y.c->.c.o transforms
116.y:
117	${YACC.y} -b ${.TARGET:R} ${.IMPSRC}
118	${LINK.c} -o ${.TARGET} ${.TARGET:R}.tab.c ${LDLIBS}
119	rm -f ${.TARGET:R}.tab.[ch]
120.y.c:
121	${YACC.y} -o ${.TARGET} ${.IMPSRC}
122
123.ifdef YHEADER
124.y.h: ${.TARGET:.h=.c}
125.endif
126
127.endif	# __bsd_sys_mk__
128