sys.mk revision 145597
144229Sdavidn#	from: @(#)sys.mk	8.2 (Berkeley) 3/21/94
244229Sdavidn# $FreeBSD: head/share/mk/sys.mk 145597 2005-04-27 14:13:55Z scottl $
344229Sdavidn
444229Sdavidnunix		?=	We run FreeBSD, not UNIX.
544229Sdavidn.FreeBSD	?=	true
644229Sdavidn
744229Sdavidn# If the special target .POSIX appears (without prerequisites or
844229Sdavidn# commands) before the first noncomment line in the makefile, make shall
944229Sdavidn# process the makefile as specified by the Posix 1003.2 specification.
1044229Sdavidn# make(1) sets the special macro %POSIX in this case (to the actual
1144229Sdavidn# value "1003.2", for what it's worth).
1244229Sdavidn#
1344229Sdavidn# The rules below use this macro to distinguish between Posix-compliant
1444229Sdavidn# and default behaviour.
1544229Sdavidn
1644229Sdavidn.if defined(%POSIX)
1744229Sdavidn.SUFFIXES:	.o .c .y .l .a .sh .f
1844229Sdavidn.else
1944229Sdavidn.SUFFIXES:	.out .a .ln .o .c .cc .cpp .cxx .C .m .F .f .e .r .y .l .S .asm .s .cl .p .h .sh
2044229Sdavidn.endif
2144229Sdavidn
2244229SdavidnX11BASE		?=	/usr/X11R6
2344229Sdavidn
2444229SdavidnAR		?=	ar
2544229Sdavidn.if defined(%POSIX)
2644229SdavidnARFLAGS		?=	-rv
2744229Sdavidn.else
2844229SdavidnARFLAGS		?=	rl
2944229Sdavidn.endif
3050479SpeterRANLIB		?=	ranlib
3144229Sdavidn
3244229SdavidnAS		?=	as
3344229SdavidnAFLAGS		?=
3444229Sdavidn
3544229Sdavidn.if defined(%POSIX)
3644229SdavidnCC		?=	c89
3744229SdavidnCFLAGS		?=	-O
3844229Sdavidn.else
3944229SdavidnCC		?=	cc
4044229SdavidnCFLAGS		?=	-O2 -fno-strict-aliasing -pipe
4144229Sdavidn.endif
4244229Sdavidn
4344229SdavidnCXX		?=	c++
4444229SdavidnCXXFLAGS	?=	${CFLAGS:N-std=*:N-Wnested-externs:N-W*-prototypes}
4544229Sdavidn
4644229SdavidnCPP		?=	cpp
4744229Sdavidn
4844229Sdavidn.if empty(.MAKEFLAGS:M-s)
4944229SdavidnECHO		?=	echo
5044229SdavidnECHODIR		?=	echo
5144229Sdavidn.else
5244229SdavidnECHO		?=	true
5344229Sdavidn.if ${.MAKEFLAGS:M-s} == "-s"
5444229SdavidnECHODIR		?=	echo
5544229Sdavidn.else
5644229SdavidnECHODIR		?=	true
5744229Sdavidn.endif
5844229Sdavidn.endif
5944229Sdavidn
6044229Sdavidn.if !empty(.MAKEFLAGS:M-n) && ${.MAKEFLAGS:M-n} == "-n"
6144229Sdavidn_+_		?=
6244229Sdavidn.else
6344229Sdavidn_+_		?=	+
6444229Sdavidn.endif
6544229Sdavidn
6644229Sdavidn.if defined(%POSIX)
6744229SdavidnFC		?=	fort77
6844229SdavidnFFLAGS		?=	-O 1
6944229Sdavidn.else
7044229SdavidnFC		?=	f77
7144229SdavidnFFLAGS		?=	-O
7244229Sdavidn.endif
7344229SdavidnEFLAGS		?=
7444229Sdavidn
7544229SdavidnINSTALL		?=	install
7644229Sdavidn
7744229SdavidnLEX		?=	lex
7844229SdavidnLFLAGS		?=
7944229Sdavidn
8044229SdavidnLD		?=	ld
8144229SdavidnLDFLAGS		?=
8244229Sdavidn
8344229SdavidnLINT		?=	lint
8444229SdavidnLINTFLAGS	?=	-cghapbx
8544229SdavidnLINTKERNFLAGS	?=	${LINTFLAGS}
8644229SdavidnLINTOBJFLAGS	?=	-cghapbxu -i
8744229SdavidnLINTOBJKERNFLAGS?=	${LINTOBJFLAGS}
8844229SdavidnLINTLIBFLAGS	?=	-cghapbxu -C ${LIB}
8944229Sdavidn
9044229SdavidnMAKE		?=	make
9144229Sdavidn
9244229SdavidnOBJC		?=	cc
9344229SdavidnOBJCFLAGS	?=	${OBJCINCLUDES} ${CFLAGS} -Wno-import
9444229Sdavidn
9544229SdavidnPC		?=	pc
9644229SdavidnPFLAGS		?=
9744229Sdavidn
9844229SdavidnRC		?=	f77
9944229SdavidnRFLAGS		?=
10044229Sdavidn
10144229SdavidnSHELL		?=	sh
10244229Sdavidn
10344229SdavidnYACC		?=	yacc
10444229Sdavidn.if defined(%POSIX)
10544229SdavidnYFLAGS		?=
10644229Sdavidn.else
10744229SdavidnYFLAGS		?=	-d
10844229Sdavidn.endif
10944229Sdavidn
11044229Sdavidn# FreeBSD/i386 has traditionally been built with a version of make
11144229Sdavidn# which knows MACHINE, but not MACHINE_ARCH. When building on other
11244229Sdavidn# architectures, assume that the version of make being used has an
11344229Sdavidn# explicit MACHINE_ARCH setting and treat a missing MACHINE_ARCH
11444229Sdavidn# as an i386 architecture.
11544229SdavidnMACHINE_ARCH	?=	i386
11644229Sdavidn
11744229Sdavidn.if defined(%POSIX)
11844229Sdavidn
11944229Sdavidn# Posix 1003.2 mandated rules
12044229Sdavidn#
12144229Sdavidn# Quoted directly from the Posix 1003.2 draft, only the macros
12244229Sdavidn# $@, $< and $* have been replaced by ${.TARGET}, ${.IMPSRC}, and
12344229Sdavidn# ${.PREFIX}, resp.
12444229Sdavidn
12544229Sdavidn# SINGLE SUFFIX RULES
12644229Sdavidn.c:
12744229Sdavidn	${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC}
12844229Sdavidn
12944229Sdavidn.f:
13044229Sdavidn	${FC} ${FFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC}
13144229Sdavidn
13244229Sdavidn.sh:
13344229Sdavidn	cp ${.IMPSRC} ${.TARGET}
13444229Sdavidn	chmod a+x ${.TARGET}
13544229Sdavidn
13644229Sdavidn# DOUBLE SUFFIX RULES
13744229Sdavidn
13844229Sdavidn.c.o:
13944229Sdavidn	${CC} ${CFLAGS} -c ${.IMPSRC}
14044229Sdavidn
14144229Sdavidn.f.o:
14244229Sdavidn	${FC} ${FFLAGS} -c ${.IMPSRC}
14344229Sdavidn
14444229Sdavidn.y.o:
14544229Sdavidn	${YACC} ${YFLAGS} ${.IMPSRC}
14644229Sdavidn	${CC} ${CFLAGS} -c y.tab.c
14744229Sdavidn	rm -f y.tab.c
14844229Sdavidn	mv y.tab.o ${.TARGET}
14944229Sdavidn
15044229Sdavidn.l.o:
15144229Sdavidn	${LEX} ${LFLAGS} ${.IMPSRC}
15244229Sdavidn	${CC} ${CFLAGS} -c lex.yy.c
15344229Sdavidn	rm -f lex.yy.c
15444229Sdavidn	mv lex.yy.o ${.TARGET}
15544229Sdavidn
15644229Sdavidn.y.c:
15744229Sdavidn	${YACC} ${YFLAGS} ${.IMPSRC}
15844229Sdavidn	mv y.tab.c ${.TARGET}
15944229Sdavidn
16044229Sdavidn.l.c:
16144229Sdavidn	${LEX} ${LFLAGS} ${.IMPSRC}
16244229Sdavidn	mv lex.yy.c ${.TARGET}
16344229Sdavidn
16444229Sdavidn.c.a:
16544229Sdavidn	${CC} ${CFLAGS} -c ${.IMPSRC}
16644229Sdavidn	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
16744229Sdavidn	rm -f ${.PREFIX}.o
16844229Sdavidn
16944229Sdavidn.f.a:
17044229Sdavidn	${FC} ${FFLAGS} -c ${.IMPSRC}
17144229Sdavidn	${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
17244229Sdavidn	rm -f ${.PREFIX}.o
17344229Sdavidn
17444229Sdavidn.else
17544229Sdavidn
17644229Sdavidn# non-Posix rule set
17744229Sdavidn
17844229Sdavidn.sh:
17944229Sdavidn	cp -p ${.IMPSRC} ${.TARGET}
18044229Sdavidn	chmod a+x ${.TARGET}
18144229Sdavidn
18244229Sdavidn.c.ln:
18344229Sdavidn	${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \
18444229Sdavidn	    touch ${.TARGET}
18544229Sdavidn
18644229Sdavidn.cc.ln .C.ln .cpp.ln .cxx.ln:
18744229Sdavidn	${LINT} ${LINTOBJFLAGS} ${CXXFLAGS:M-[DIU]*} ${.IMPSRC} || \
18844229Sdavidn	    touch ${.TARGET}
18944229Sdavidn
19044229Sdavidn.c:
19144229Sdavidn	${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
19244229Sdavidn
19356000Sdavidn.c.o:
19444229Sdavidn	${CC} ${CFLAGS} -c ${.IMPSRC}
19544229Sdavidn
19644229Sdavidn.cc .cpp .cxx .C:
19756000Sdavidn	${CXX} ${CXXFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
19844229Sdavidn
19956000Sdavidn.cc.o .cpp.o .cxx.o .C.o:
20044229Sdavidn	${CXX} ${CXXFLAGS} -c ${.IMPSRC}
20144229Sdavidn
20244229Sdavidn.m.o:
20344229Sdavidn	${OBJC} ${OBJCFLAGS} -c ${.IMPSRC}
20444229Sdavidn
20544229Sdavidn.p.o:
20644229Sdavidn	${PC} ${PFLAGS} -c ${.IMPSRC}
20744229Sdavidn
20844229Sdavidn.e .r .F .f:
20944229Sdavidn	${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} \
21044229Sdavidn	    -o ${.TARGET}
21144229Sdavidn
21244229Sdavidn.e.o .r.o .F.o .f.o:
21344229Sdavidn	${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} -c ${.IMPSRC}
21444229Sdavidn
21544229Sdavidn.S.o:
21644229Sdavidn	${CC} ${CFLAGS} -c ${.IMPSRC}
21744229Sdavidn
21844229Sdavidn.asm.o:
21944229Sdavidn	${CC} -x assembler-with-cpp ${CFLAGS} -c ${.IMPSRC}
22044229Sdavidn
22144229Sdavidn.s.o:
22244229Sdavidn	${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC}
22344229Sdavidn
22444229Sdavidn# XXX not -j safe
22544229Sdavidn.y.o:
22644229Sdavidn	${YACC} ${YFLAGS} ${.IMPSRC}
22744229Sdavidn	${CC} ${CFLAGS} -c y.tab.c -o ${.TARGET}
22844229Sdavidn	rm -f y.tab.c
22944229Sdavidn
23044229Sdavidn.l.o:
23144229Sdavidn	${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c
23244229Sdavidn	${CC} ${CFLAGS} -c ${.PREFIX}.tmp.c -o ${.TARGET}
23344229Sdavidn	rm -f ${.PREFIX}.tmp.c
23444229Sdavidn
23544229Sdavidn# XXX not -j safe
23644229Sdavidn.y.c:
23744229Sdavidn	${YACC} ${YFLAGS} ${.IMPSRC}
23844229Sdavidn	mv y.tab.c ${.TARGET}
23944229Sdavidn
24044229Sdavidn.l.c:
24144229Sdavidn	${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.TARGET}
24244229Sdavidn
24344229Sdavidn.s.out .c.out .o.out:
24444229Sdavidn	${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
24544229Sdavidn
24644229Sdavidn.f.out .F.out .r.out .e.out:
24744229Sdavidn	${FC} ${EFLAGS} ${RFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} \
24844229Sdavidn	    ${LDLIBS} -o ${.TARGET}
24944229Sdavidn	rm -f ${.PREFIX}.o
25044229Sdavidn
25144229Sdavidn# XXX not -j safe
25244229Sdavidn.y.out:
25344229Sdavidn	${YACC} ${YFLAGS} ${.IMPSRC}
25444229Sdavidn	${CC} ${CFLAGS} ${LDFLAGS} y.tab.c ${LDLIBS} -ly -o ${.TARGET}
25544229Sdavidn	rm -f y.tab.c
25644229Sdavidn
25744229Sdavidn.l.out:
25844229Sdavidn	${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c
25944229Sdavidn	${CC} ${CFLAGS} ${LDFLAGS} ${.PREFIX}.tmp.c ${LDLIBS} -ll -o ${.TARGET}
26044229Sdavidn	rm -f ${.PREFIX}.tmp.c
26144229Sdavidn
26244229Sdavidn# FreeBSD build pollution.  Hide it in the non-POSIX part of the ifdef.
26344229Sdavidn__MAKE_CONF?=/etc/make.conf
26444229Sdavidn.if exists(${__MAKE_CONF})
26544229Sdavidn.include "${__MAKE_CONF}"
26644229Sdavidn.endif
26744229Sdavidn
26844229Sdavidn# XXX Hack until IPFILTER is buildable again.
26944229Sdavidn.if !defined(WANT_IPFILTER)
27044229SdavidnNO_IPFILTER=
27144229Sdavidn.endif
27244229Sdavidn
27344229Sdavidn# Default executable format
27444229Sdavidn# XXX hint for bsd.port.mk
27544229SdavidnOBJFORMAT?=	elf
27644229Sdavidn
27744229Sdavidn.endif
27844229Sdavidn
27944229Sdavidn.include <bsd.compat.mk>
28044229Sdavidn.include <bsd.cpu.mk>
28144229Sdavidn