sys.mk revision 206082
16059Samurai# from: @(#)sys.mk 8.2 (Berkeley) 3/21/94 26059Samurai# $FreeBSD: head/share/mk/sys.mk 206082 2010-04-02 06:55:31Z netchild $ 36059Samurai 46059Samuraiunix ?= We run FreeBSD, not UNIX. 56059Samurai.FreeBSD ?= true 66059Samurai 76059Samurai# If the special target .POSIX appears (without prerequisites or 86059Samurai# commands) before the first noncomment line in the makefile, make shall 96059Samurai# process the makefile as specified by the Posix 1003.2 specification. 106059Samurai# make(1) sets the special macro %POSIX in this case (to the actual 116059Samurai# value "1003.2", for what it's worth). 126059Samurai# 136059Samurai# The rules below use this macro to distinguish between Posix-compliant 146059Samurai# and default behaviour. 156059Samurai 166059Samurai.if defined(%POSIX) 176059Samurai.SUFFIXES: .o .c .y .l .a .sh .f 186059Samurai.else 196059Samurai.SUFFIXES: .out .a .ln .o .c .cc .cpp .cxx .C .m .F .f .e .r .y .l .S .asm .s .cl .p .h .sh 2030913Sbrian.endif 218857Srgrimes 226059SamuraiAR ?= ar 236059Samurai.if defined(%POSIX) 246059SamuraiARFLAGS ?= -rv 256059Samurai.else 2630715SbrianARFLAGS ?= rl 2730715Sbrian.endif 2830715SbrianRANLIB ?= ranlib 2930715Sbrian 3030715SbrianAS ?= as 3130715SbrianAFLAGS ?= 3230715Sbrian 3330715Sbrian.if defined(%POSIX) 3430715SbrianCC ?= c89 356059SamuraiCFLAGS ?= -O 3611336Samurai.else 3730715SbrianCC ?= cc 3830715Sbrian.if ${MACHINE_ARCH} == "arm" || ${MACHINE_ARCH} == "mips" 3930715SbrianCFLAGS ?= -O -pipe 4030715Sbrian.else 416059SamuraiCFLAGS ?= -O2 -pipe 4230715Sbrian.endif 4330715Sbrian.if defined(NO_STRICT_ALIASING) 446059SamuraiCFLAGS += -fno-strict-aliasing 4518786Sjkh.endif 4630715Sbrian.endif 4730715SbrianPO_CFLAGS ?= ${CFLAGS} 4830715Sbrian 4930715Sbrian# Turn CTF conversion off by default for now. This default could be 5030715Sbrian# changed later if DTrace becomes popular. 5130715Sbrian.if !defined(WITH_CTF) 526059SamuraiNO_CTF = 1 536059Samurai.endif 546059Samurai 5513389Sphk# C Type Format data is required for DTrace 566059SamuraiCTFFLAGS ?= -L VERSION 576059Samurai 5826142SbrianCTFCONVERT ?= ctfconvert 5930715SbrianCTFMERGE ?= ctfmerge 606059Samurai.if defined(CFLAGS) && (${CFLAGS:M-g} != "") 616735SamuraiCTFFLAGS += -g 627001Samurai.else 6313389Sphk# XXX: What to do here? Is removing the CFLAGS part completely ok here? 6413389Sphk# For now comment it out to not compile with -g unconditionally. 6523840Sbrian#CFLAGS += -g 6626940Sbrian.endif 6728536Sbrian 6830715SbrianCXX ?= c++ 6930715SbrianCXXFLAGS ?= ${CFLAGS:N-std=*:N-Wnested-externs:N-W*-prototypes:N-Wno-pointer-sign:N-Wold-style-definition} 7030715SbrianPO_CXXFLAGS ?= ${CXXFLAGS} 716059Samurai 726735SamuraiCPP ?= cpp 736735Samurai 746735Samurai.if empty(.MAKEFLAGS:M-s) 756735SamuraiECHO ?= echo 766735SamuraiECHODIR ?= echo 776735Samurai.else 7830715SbrianECHO ?= true 7930715Sbrian.if ${.MAKEFLAGS:M-s} == "-s" 806059SamuraiECHODIR ?= echo 8128679Sbrian.else 8228679SbrianECHODIR ?= true 8320813Sjkh.endif 8425634Sbrian.endif 8525634Sbrian 8627061Sbrian.if !empty(.MAKEFLAGS:M-n) && ${.MAKEFLAGS:M-n} == "-n" 876059Samurai_+_ ?= 8830715Sbrian.else 8930715Sbrian_+_ ?= + 9030715Sbrian.endif 9130715Sbrian 926059Samurai.if defined(%POSIX) 9326858SbrianFC ?= fort77 946059SamuraiFFLAGS ?= -O 1 956059Samurai.else 966059SamuraiFC ?= f77 976059SamuraiFFLAGS ?= -O 986059Samurai.endif 9925630SbrianEFLAGS ?= 10028679Sbrian 10128679SbrianINSTALL ?= install 10225630Sbrian 1036059SamuraiLEX ?= lex 10428679SbrianLFLAGS ?= 1056059Samurai 1066059SamuraiLD ?= ld 1076059SamuraiLDFLAGS ?= 10826858Sbrian 10926858SbrianLINT ?= lint 1106059SamuraiLINTFLAGS ?= -cghapbx 1116059SamuraiLINTKERNFLAGS ?= ${LINTFLAGS} 1126059SamuraiLINTOBJFLAGS ?= -cghapbxu -i 1136735SamuraiLINTOBJKERNFLAGS?= ${LINTOBJFLAGS} 1146059SamuraiLINTLIBFLAGS ?= -cghapbxu -C ${LIB} 1156059Samurai 1166059SamuraiMAKE ?= make 1176059Samurai 1186059SamuraiOBJC ?= cc 1196059SamuraiOBJCFLAGS ?= ${OBJCINCLUDES} ${CFLAGS} -Wno-import 12010528Samurai 12128679SbrianPC ?= pc 1226059SamuraiPFLAGS ?= 1236059Samurai 1246059SamuraiRC ?= f77 1256059SamuraiRFLAGS ?= 1266059Samurai 1276059SamuraiSHELL ?= sh 1286735Samurai 12928679SbrianYACC ?= yacc 1306059Samurai.if defined(%POSIX) 1316059SamuraiYFLAGS ?= 1326735Samurai.else 1336059SamuraiYFLAGS ?= -d 13425630Sbrian.endif 13528679Sbrian 13628679Sbrian.if defined(%POSIX) 13725630Sbrian 1386059Samurai# Posix 1003.2 mandated rules 13928679Sbrian# 14028679Sbrian# Quoted directly from the Posix 1003.2 draft, only the macros 1416059Samurai# $@, $< and $* have been replaced by ${.TARGET}, ${.IMPSRC}, and 1426059Samurai# ${.PREFIX}, resp. 1436059Samurai 1446059Samurai# SINGLE SUFFIX RULES 1456059Samurai.c: 1466059Samurai ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC} 1476059Samurai @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 1486059Samurai 1496059Samurai.f: 1506059Samurai ${FC} ${FFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC} 1516735Samurai @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 1526059Samurai 15325630Sbrian.sh: 15428679Sbrian cp ${.IMPSRC} ${.TARGET} 15528679Sbrian chmod a+x ${.TARGET} 15625630Sbrian 1576059Samurai# DOUBLE SUFFIX RULES 1586059Samurai 1596059Samurai.c.o: 1606059Samurai ${CC} ${CFLAGS} -c ${.IMPSRC} 16110528Samurai @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 1626059Samurai 1636059Samurai.f.o: 1646059Samurai ${FC} ${FFLAGS} -c ${.IMPSRC} 1656059Samurai @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 16625630Sbrian 16728679Sbrian.y.o: 16828679Sbrian ${YACC} ${YFLAGS} ${.IMPSRC} 16925630Sbrian ${CC} ${CFLAGS} -c y.tab.c 1706735Samurai rm -f y.tab.c 17110528Samurai mv y.tab.o ${.TARGET} 17210528Samurai @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 17310528Samurai 17428679Sbrian.l.o: 17510528Samurai ${LEX} ${LFLAGS} ${.IMPSRC} 17630825Sbrian ${CC} ${CFLAGS} -c lex.yy.c 17730825Sbrian rm -f lex.yy.c 17830697Sbrian mv lex.yy.o ${.TARGET} 17925908Sbrian @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 1806059Samurai 18128679Sbrian.y.c: 18228679Sbrian ${YACC} ${YFLAGS} ${.IMPSRC} 18323863Sbrian mv y.tab.c ${.TARGET} 18423863Sbrian 18528679Sbrian.l.c: 18628679Sbrian ${LEX} ${LFLAGS} ${.IMPSRC} 18728679Sbrian mv lex.yy.c ${.TARGET} 18823863Sbrian 18928679Sbrian.c.a: 19023863Sbrian ${CC} ${CFLAGS} -c ${.IMPSRC} 19123863Sbrian ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 19228679Sbrian rm -f ${.PREFIX}.o 1936059Samurai 19426940Sbrian.f.a: 19510528Samurai ${FC} ${FFLAGS} -c ${.IMPSRC} 1966059Samurai ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 1976059Samurai rm -f ${.PREFIX}.o 1986059Samurai 1996059Samurai.else 2006059Samurai 20128679Sbrian# non-Posix rule set 2026059Samurai 20326858Sbrian.sh: 20427157Sbrian cp -p ${.IMPSRC} ${.TARGET} 20528679Sbrian chmod a+x ${.TARGET} 20628684Sbrian 20728684Sbrian.c.ln: 20830715Sbrian ${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \ 2096059Samurai touch ${.TARGET} 2106059Samurai 2116059Samurai.cc.ln .C.ln .cpp.ln .cxx.ln: 21228679Sbrian ${LINT} ${LINTOBJFLAGS} ${CXXFLAGS:M-[DIU]*} ${.IMPSRC} || \ 2136059Samurai touch ${.TARGET} 21428679Sbrian 21528679Sbrian.c: 21628679Sbrian ${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET} 21728679Sbrian @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 21828679Sbrian 21928679Sbrian.c.o: 22028679Sbrian ${CC} ${CFLAGS} -c ${.IMPSRC} 22128679Sbrian @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 2226059Samurai 2236059Samurai.cc .cpp .cxx .C: 22410528Samurai ${CXX} ${CXXFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET} 22510528Samurai 22610528Samurai.cc.o .cpp.o .cxx.o .C.o: 22723840Sbrian ${CXX} ${CXXFLAGS} -c ${.IMPSRC} 22823840Sbrian 22910528Samurai.m.o: 23010528Samurai ${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} 23110528Samurai @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 23210528Samurai 23328679Sbrian.p.o: 23410528Samurai ${PC} ${PFLAGS} -c ${.IMPSRC} 23523840Sbrian @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 23610528Samurai 23723840Sbrian.e .r .F .f: 23810528Samurai ${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} \ 23910528Samurai -o ${.TARGET} 24010528Samurai 24126940Sbrian.e.o .r.o .F.o .f.o: 24228679Sbrian ${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} -c ${.IMPSRC} 24326940Sbrian 24426940Sbrian.S.o: 24528679Sbrian ${CC} ${CFLAGS} -c ${.IMPSRC} 24628679Sbrian @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 24729083Sbrian 24829083Sbrian.asm.o: 24926940Sbrian ${CC} -x assembler-with-cpp ${CFLAGS} -c ${.IMPSRC} 25026940Sbrian @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 25125908Sbrian 25225908Sbrian.s.o: 25325908Sbrian ${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC} 25425908Sbrian @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 25528679Sbrian 25625908Sbrian# XXX not -j safe 25728679Sbrian.y.o: 25810528Samurai ${YACC} ${YFLAGS} ${.IMPSRC} 25928679Sbrian ${CC} ${CFLAGS} -c y.tab.c -o ${.TARGET} 26025908Sbrian rm -f y.tab.c 26125908Sbrian @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 26225908Sbrian 26325908Sbrian.l.o: 26425908Sbrian ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c 26530715Sbrian ${CC} ${CFLAGS} -c ${.PREFIX}.tmp.c -o ${.TARGET} 2666059Samurai rm -f ${.PREFIX}.tmp.c 2676059Samurai @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 26820120Snate 26928679Sbrian# XXX not -j safe 2706059Samurai.y.c: 2716059Samurai ${YACC} ${YFLAGS} ${.IMPSRC} 2726059Samurai mv y.tab.c ${.TARGET} 27330715Sbrian 2746059Samurai.l.c: 2756059Samurai ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.TARGET} 2766059Samurai 2776059Samurai.s.out .c.out .o.out: 2786059Samurai ${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET} 2796059Samurai @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 2806059Samurai 2816059Samurai.f.out .F.out .r.out .e.out: 2826059Samurai ${FC} ${EFLAGS} ${RFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} \ 2836059Samurai ${LDLIBS} -o ${.TARGET} 28420813Sjkh rm -f ${.PREFIX}.o 28528679Sbrian @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 2866059Samurai 2876059Samurai# XXX not -j safe 2886059Samurai.y.out: 2896059Samurai ${YACC} ${YFLAGS} ${.IMPSRC} 29020120Snate ${CC} ${CFLAGS} ${LDFLAGS} y.tab.c ${LDLIBS} -ly -o ${.TARGET} 29128679Sbrian rm -f y.tab.c 29220365Sjkh @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 29326142Sbrian 29428679Sbrian.l.out: 29526142Sbrian ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c 29628679Sbrian ${CC} ${CFLAGS} ${LDFLAGS} ${.PREFIX}.tmp.c ${LDLIBS} -ll -o ${.TARGET} 29728679Sbrian rm -f ${.PREFIX}.tmp.c 29828679Sbrian @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 2996059Samurai 3006059Samurai# FreeBSD build pollution. Hide it in the non-POSIX part of the ifdef. 30128679Sbrian__MAKE_CONF?=/etc/make.conf 30228679Sbrian.if exists(${__MAKE_CONF}) 3036059Samurai.include "${__MAKE_CONF}" 3046059Samurai.endif 3056059Samurai 3066059Samurai.if defined(__MAKE_SHELL) && !empty(__MAKE_SHELL) 3076059SamuraiSHELL= ${__MAKE_SHELL} 30828679Sbrian.SHELL: path=${__MAKE_SHELL} 30928679Sbrian.endif 3106059Samurai 3116059Samurai# Default executable format 3126059Samurai# XXX hint for bsd.port.mk 3136059SamuraiOBJFORMAT?= elf 3146059Samurai 3156059Samurai# Toggle on warnings 3166059Samurai.WARN: dirsyntax 3176059Samurai 3186059Samurai.endif 3196059Samurai 32026516Sbrian.include <bsd.compat.mk> 32126516Sbrian.include <bsd.cpu.mk> 32226516Sbrian