sys.mk revision 136954
1193323Sed# from: @(#)sys.mk 8.2 (Berkeley) 3/21/94 2193323Sed# $FreeBSD: head/share/mk/sys.mk 136954 2004-10-25 20:04:50Z des $ 3353358Sdim 4353358Sdimunix ?= We run FreeBSD, not UNIX. 5353358Sdim.FreeBSD ?= true 6193323Sed 7193323Sed# If the special target .POSIX appears (without prerequisites or 8193323Sed# commands) before the first noncomment line in the makefile, make shall 9193323Sed# process the makefile as specified by the Posix 1003.2 specification. 10193323Sed# make(1) sets the special macro %POSIX in this case (to the actual 11193323Sed# value "1003.2", for what it's worth). 12193323Sed# 13193323Sed# The rules below use this macro to distinguish between Posix-compliant 14314564Sdim# and default behaviour. 15193323Sed 16193323Sed.if defined(%POSIX) 17261991Sdim.SUFFIXES: .o .c .y .l .a .sh .f 18193323Sed.else 19249423Sdim.SUFFIXES: .out .a .ln .o .c .cc .cpp .cxx .C .m .F .f .e .r .y .l .S .asm .s .cl .p .h .sh 20198090Srdivacky.endif 21193323Sed 22193323SedX11BASE ?= /usr/X11R6 23309124Sdim 24193323SedAR ?= ar 25193323Sed.if defined(%POSIX) 26276479SdimARFLAGS ?= -rv 27276479Sdim.else 28198090SrdivackyARFLAGS ?= rl 29314564Sdim.endif 30314564SdimRANLIB ?= ranlib 31198090Srdivacky 32198090SrdivackyAS ?= as 33193323SedAFLAGS ?= 34314564Sdim 35314564Sdim.if defined(%POSIX) 36314564SdimCC ?= c89 37193323SedCFLAGS ?= -O 38314564Sdim.else 39314564SdimCC ?= cc 40193323SedCFLAGS ?= -O2 -pipe 41314564Sdim.endif 42314564Sdim 43198090SrdivackyCXX ?= c++ 44314564SdimCXXFLAGS ?= ${CFLAGS:N-std=*:N-Wnested-externs:N-W*-prototypes} 45314564Sdim 46193323SedCPP ?= cpp 47314564Sdim 48314564Sdim.if empty(.MAKEFLAGS:M-s) 49314564SdimECHO ?= echo 50193323SedECHODIR ?= echo 51193323Sed.else 52198090SrdivackyECHO ?= true 53198090Srdivacky.if ${.MAKEFLAGS:M-s} == "-s" 54207618SrdivackyECHODIR ?= echo 55341825Sdim.else 56341825SdimECHODIR ?= true 57341825Sdim.endif 58341825Sdim.endif 59218885Sdim 60276479Sdim.if !empty(.MAKEFLAGS:M-n) && ${.MAKEFLAGS:M-n} == "-n" 61327952Sdim_+_ ?= 62341825Sdim.else 63314564Sdim_+_ ?= + 64193323Sed.endif 65193323Sed 66198090Srdivacky.if defined(%POSIX) 67198090SrdivackyFC ?= fort77 68198090SrdivackyFFLAGS ?= -O 1 69198090Srdivacky.else 70198090SrdivackyFC ?= f77 71207618SrdivackyFFLAGS ?= -O 72341825Sdim.endif 73341825SdimEFLAGS ?= 74341825Sdim 75341825SdimINSTALL ?= install 76327952Sdim 77193323SedLEX ?= lex 78198090SrdivackyLFLAGS ?= 79341825Sdim 80341825SdimLD ?= ld 81198090SrdivackyLDFLAGS ?= 82198090Srdivacky 83198090SrdivackyLINT ?= lint 84198090SrdivackyLINTFLAGS ?= -cghapbx 85198090SrdivackyLINTKERNFLAGS ?= ${LINTFLAGS} 86341825SdimLINTOBJFLAGS ?= -cghapbxu -i 87341825SdimLINTOBJKERNFLAGS?= ${LINTOBJFLAGS} 88198090SrdivackyLINTLIBFLAGS ?= -cghapbxu -C ${LIB} 89198090Srdivacky 90198090SrdivackyMAKE ?= make 91261991Sdim 92261991SdimOBJC ?= cc 93198090SrdivackyOBJCFLAGS ?= ${OBJCINCLUDES} ${CFLAGS} -Wno-import 94198090Srdivacky 95198090SrdivackyPC ?= pc 96198090SrdivackyPFLAGS ?= 97198090Srdivacky 98198090SrdivackyRC ?= f77 99198090SrdivackyRFLAGS ?= 100236386Sdim 101198090SrdivackySHELL ?= sh 102198090Srdivacky 103198090SrdivackyYACC ?= yacc 104198090Srdivacky.if defined(%POSIX) 105198090SrdivackyYFLAGS ?= 106341825Sdim.else 107314564SdimYFLAGS ?= -d 108193323Sed.endif 109193323Sed 110341825Sdim# FreeBSD/i386 has traditionally been built with a version of make 111341825Sdim# which knows MACHINE, but not MACHINE_ARCH. When building on other 112193323Sed# architectures, assume that the version of make being used has an 113218885Sdim# explicit MACHINE_ARCH setting and treat a missing MACHINE_ARCH 114193323Sed# as an i386 architecture. 115261991SdimMACHINE_ARCH ?= i386 116276479Sdim 117280031Sdim.if defined(%POSIX) 118261991Sdim 119261991Sdim# Posix 1003.2 mandated rules 120193323Sed# 121193323Sed# Quoted directly from the Posix 1003.2 draft, only the macros 122276479Sdim# $@, $< and $* have been replaced by ${.TARGET}, ${.IMPSRC}, and 123261991Sdim# ${.PREFIX}, resp. 124261991Sdim 125208599Srdivacky# SINGLE SUFFIX RULES 126193323Sed.c: 127296417Sdim ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC} 128193323Sed 129193323Sed.f: 130193323Sed ${FC} ${FFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC} 131193323Sed 132193323Sed.sh: 133193323Sed cp ${.IMPSRC} ${.TARGET} 134193323Sed chmod a+x ${.TARGET} 135193323Sed 136261991Sdim# DOUBLE SUFFIX RULES 137314564Sdim 138193323Sed.c.o: 139193323Sed ${CC} ${CFLAGS} -c ${.IMPSRC} 140193323Sed 141193323Sed.f.o: 142193323Sed ${FC} ${FFLAGS} -c ${.IMPSRC} 143193323Sed 144314564Sdim.y.o: 145314564Sdim ${YACC} ${YFLAGS} ${.IMPSRC} 146314564Sdim ${CC} ${CFLAGS} -c y.tab.c 147314564Sdim rm -f y.tab.c 148314564Sdim mv y.tab.o ${.TARGET} 149193323Sed 150314564Sdim.l.o: 151314564Sdim ${LEX} ${LFLAGS} ${.IMPSRC} 152314564Sdim ${CC} ${CFLAGS} -c lex.yy.c 153193323Sed rm -f lex.yy.c 154314564Sdim mv lex.yy.o ${.TARGET} 155193323Sed 156314564Sdim.y.c: 157314564Sdim ${YACC} ${YFLAGS} ${.IMPSRC} 158314564Sdim mv y.tab.c ${.TARGET} 159314564Sdim 160314564Sdim.l.c: 161314564Sdim ${LEX} ${LFLAGS} ${.IMPSRC} 162314564Sdim mv lex.yy.c ${.TARGET} 163193323Sed 164193323Sed.c.a: 165314564Sdim ${CC} ${CFLAGS} -c ${.IMPSRC} 166314564Sdim ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 167314564Sdim rm -f ${.PREFIX}.o 168314564Sdim 169314564Sdim.f.a: 170314564Sdim ${FC} ${FFLAGS} -c ${.IMPSRC} 171314564Sdim ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 172341825Sdim rm -f ${.PREFIX}.o 173193323Sed 174193323Sed.else 175193323Sed 176218885Sdim# non-Posix rule set 177314564Sdim 178314564Sdim.sh: 179199481Srdivacky cp -p ${.IMPSRC} ${.TARGET} 180341825Sdim chmod a+x ${.TARGET} 181199481Srdivacky 182199481Srdivacky.c.ln: 183193323Sed ${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \ 184193323Sed touch ${.TARGET} 185341825Sdim 186193323Sed.cc.ln .C.ln .cpp.ln .cxx.ln: 187341825Sdim ${LINT} ${LINTOBJFLAGS} ${CXXFLAGS:M-[DIU]*} ${.IMPSRC} || \ 188193323Sed touch ${.TARGET} 189314564Sdim 190341825Sdim.c: 191193323Sed ${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET} 192314564Sdim 193314564Sdim.c.o: 194341825Sdim ${CC} ${CFLAGS} -c ${.IMPSRC} 195341825Sdim 196341825Sdim.cc .cpp .cxx .C: 197341825Sdim ${CXX} ${CXXFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET} 198341825Sdim 199314564Sdim.cc.o .cpp.o .cxx.o .C.o: 200193323Sed ${CXX} ${CXXFLAGS} -c ${.IMPSRC} 201193323Sed 202314564Sdim.m.o: 203234353Sdim ${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} 204344779Sdim 205261991Sdim.p.o: 206261991Sdim ${PC} ${PFLAGS} -c ${.IMPSRC} 207261991Sdim 208261991Sdim.e .r .F .f: 209261991Sdim ${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} \ 210261991Sdim -o ${.TARGET} 211261991Sdim 212344779Sdim.e.o .r.o .F.o .f.o: 213344779Sdim ${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} -c ${.IMPSRC} 214261991Sdim 215344779Sdim.S.o: 216344779Sdim ${CC} ${CFLAGS} -c ${.IMPSRC} 217261991Sdim 218261991Sdim.asm.o: 219193323Sed ${CC} -x assembler-with-cpp ${CFLAGS} -c ${.IMPSRC} 220314564Sdim 221314564Sdim.s.o: 222314564Sdim ${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC} 223344779Sdim 224344779Sdim# XXX not -j safe 225344779Sdim.y.o: 226344779Sdim ${YACC} ${YFLAGS} ${.IMPSRC} 227344779Sdim ${CC} ${CFLAGS} -c y.tab.c -o ${.TARGET} 228344779Sdim rm -f y.tab.c 229344779Sdim 230193323Sed.l.o: 231193323Sed ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c 232193323Sed ${CC} ${CFLAGS} -c ${.PREFIX}.tmp.c -o ${.TARGET} 233193323Sed rm -f ${.PREFIX}.tmp.c 234218885Sdim 235218885Sdim# XXX not -j safe 236218885Sdim.y.c: 237218885Sdim ${YACC} ${YFLAGS} ${.IMPSRC} 238218885Sdim mv y.tab.c ${.TARGET} 239218885Sdim 240314564Sdim.l.c: 241314564Sdim ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.TARGET} 242314564Sdim 243218885Sdim.s.out .c.out .o.out: 244314564Sdim ${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET} 245314564Sdim 246314564Sdim.f.out .F.out .r.out .e.out: 247314564Sdim ${FC} ${EFLAGS} ${RFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} \ 248218885Sdim ${LDLIBS} -o ${.TARGET} 249314564Sdim rm -f ${.PREFIX}.o 250314564Sdim 251314564Sdim# XXX not -j safe 252314564Sdim.y.out: 253314564Sdim ${YACC} ${YFLAGS} ${.IMPSRC} 254314564Sdim ${CC} ${CFLAGS} ${LDFLAGS} y.tab.c ${LDLIBS} -ly -o ${.TARGET} 255314564Sdim rm -f y.tab.c 256314564Sdim 257314564Sdim.l.out: 258314564Sdim ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c 259314564Sdim ${CC} ${CFLAGS} ${LDFLAGS} ${.PREFIX}.tmp.c ${LDLIBS} -ll -o ${.TARGET} 260314564Sdim rm -f ${.PREFIX}.tmp.c 261314564Sdim 262314564Sdim# FreeBSD build pollution. Hide it in the non-POSIX part of the ifdef. 263218885Sdim__MAKE_CONF?=/etc/make.conf 264218885Sdim.if exists(${__MAKE_CONF}) 265314564Sdim.include "${__MAKE_CONF}" 266314564Sdim.endif 267218885Sdim 268341825Sdim# Default executable format 269218885Sdim# XXX hint for bsd.port.mk 270218885SdimOBJFORMAT?= elf 271218885Sdim 272218885Sdim.endif 273341825Sdim 274218885Sdim.include <bsd.cpu.mk> 275218885Sdim