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