sys.mk revision 145644
1255736Sdavidch# from: @(#)sys.mk 8.2 (Berkeley) 3/21/94 2255736Sdavidch# $FreeBSD: head/share/mk/sys.mk 145644 2005-04-28 23:29:00Z darrenr $ 3255736Sdavidch 4255736Sdavidchunix ?= We run FreeBSD, not UNIX. 5255736Sdavidch.FreeBSD ?= true 6255736Sdavidch 7255736Sdavidch# If the special target .POSIX appears (without prerequisites or 8255736Sdavidch# commands) before the first noncomment line in the makefile, make shall 9255736Sdavidch# process the makefile as specified by the Posix 1003.2 specification. 10255736Sdavidch# make(1) sets the special macro %POSIX in this case (to the actual 11255736Sdavidch# value "1003.2", for what it's worth). 12255736Sdavidch# 13255736Sdavidch# The rules below use this macro to distinguish between Posix-compliant 14255736Sdavidch# and default behaviour. 15255736Sdavidch 16255736Sdavidch.if defined(%POSIX) 17255736Sdavidch.SUFFIXES: .o .c .y .l .a .sh .f 18255736Sdavidch.else 19255736Sdavidch.SUFFIXES: .out .a .ln .o .c .cc .cpp .cxx .C .m .F .f .e .r .y .l .S .asm .s .cl .p .h .sh 20255736Sdavidch.endif 21255736Sdavidch 22255736SdavidchX11BASE ?= /usr/X11R6 23255736Sdavidch 24255736SdavidchAR ?= ar 25255736Sdavidch.if defined(%POSIX) 26255736SdavidchARFLAGS ?= -rv 27255736Sdavidch.else 28255736SdavidchARFLAGS ?= rl 29255736Sdavidch.endif 30255736SdavidchRANLIB ?= ranlib 31255736Sdavidch 32255736SdavidchAS ?= as 33255736SdavidchAFLAGS ?= 34255736Sdavidch 35255736Sdavidch.if defined(%POSIX) 36255736SdavidchCC ?= c89 37255736SdavidchCFLAGS ?= -O 38255736Sdavidch.else 39255736SdavidchCC ?= cc 40255736SdavidchCFLAGS ?= -O2 -fno-strict-aliasing -pipe 41255736Sdavidch.endif 42255736Sdavidch 43255736SdavidchCXX ?= c++ 44255736SdavidchCXXFLAGS ?= ${CFLAGS:N-std=*:N-Wnested-externs:N-W*-prototypes} 45255736Sdavidch 46255736SdavidchCPP ?= cpp 47255736Sdavidch 48255736Sdavidch.if empty(.MAKEFLAGS:M-s) 49255736SdavidchECHO ?= echo 50255736SdavidchECHODIR ?= echo 51255736Sdavidch.else 52255736SdavidchECHO ?= true 53255736Sdavidch.if ${.MAKEFLAGS:M-s} == "-s" 54255736SdavidchECHODIR ?= echo 55255736Sdavidch.else 56255736SdavidchECHODIR ?= true 57255736Sdavidch.endif 58255736Sdavidch.endif 59255736Sdavidch 60255736Sdavidch.if !empty(.MAKEFLAGS:M-n) && ${.MAKEFLAGS:M-n} == "-n" 61255736Sdavidch_+_ ?= 62255736Sdavidch.else 63255736Sdavidch_+_ ?= + 64255736Sdavidch.endif 65255736Sdavidch 66255736Sdavidch.if defined(%POSIX) 67255736SdavidchFC ?= fort77 68255736SdavidchFFLAGS ?= -O 1 69255736Sdavidch.else 70255736SdavidchFC ?= f77 71255736SdavidchFFLAGS ?= -O 72255736Sdavidch.endif 73255736SdavidchEFLAGS ?= 74255736Sdavidch 75255736SdavidchINSTALL ?= install 76255736Sdavidch 77255736SdavidchLEX ?= lex 78255736SdavidchLFLAGS ?= 79255736Sdavidch 80256319SedavisLD ?= ld 81256319SedavisLDFLAGS ?= 82256319Sedavis 83256319SedavisLINT ?= lint 84256319SedavisLINTFLAGS ?= -cghapbx 85255736SdavidchLINTKERNFLAGS ?= ${LINTFLAGS} 86256319SedavisLINTOBJFLAGS ?= -cghapbxu -i 87256319SedavisLINTOBJKERNFLAGS?= ${LINTOBJFLAGS} 88255736SdavidchLINTLIBFLAGS ?= -cghapbxu -C ${LIB} 89255736Sdavidch 90255736SdavidchMAKE ?= make 91255736Sdavidch 92255736SdavidchOBJC ?= cc 93255736SdavidchOBJCFLAGS ?= ${OBJCINCLUDES} ${CFLAGS} -Wno-import 94255736Sdavidch 95255736SdavidchPC ?= pc 96255736SdavidchPFLAGS ?= 97255736Sdavidch 98255736SdavidchRC ?= f77 99255736SdavidchRFLAGS ?= 100255736Sdavidch 101255736SdavidchSHELL ?= sh 102255736Sdavidch 103255736SdavidchYACC ?= yacc 104255736Sdavidch.if defined(%POSIX) 105255736SdavidchYFLAGS ?= 106255736Sdavidch.else 107255736SdavidchYFLAGS ?= -d 108255736Sdavidch.endif 109255736Sdavidch 110255736Sdavidch# FreeBSD/i386 has traditionally been built with a version of make 111255736Sdavidch# which knows MACHINE, but not MACHINE_ARCH. When building on other 112255736Sdavidch# architectures, assume that the version of make being used has an 113255736Sdavidch# explicit MACHINE_ARCH setting and treat a missing MACHINE_ARCH 114255736Sdavidch# as an i386 architecture. 115255736SdavidchMACHINE_ARCH ?= i386 116255736Sdavidch 117255736Sdavidch.if defined(%POSIX) 118255736Sdavidch 119255736Sdavidch# Posix 1003.2 mandated rules 120255736Sdavidch# 121255736Sdavidch# Quoted directly from the Posix 1003.2 draft, only the macros 122255736Sdavidch# $@, $< and $* have been replaced by ${.TARGET}, ${.IMPSRC}, and 123255736Sdavidch# ${.PREFIX}, resp. 124255736Sdavidch 125255736Sdavidch# SINGLE SUFFIX RULES 126255736Sdavidch.c: 127255736Sdavidch ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC} 128255736Sdavidch 129255736Sdavidch.f: 130255736Sdavidch ${FC} ${FFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC} 131255736Sdavidch 132255736Sdavidch.sh: 133255736Sdavidch cp ${.IMPSRC} ${.TARGET} 134255736Sdavidch chmod a+x ${.TARGET} 135255736Sdavidch 136255736Sdavidch# DOUBLE SUFFIX RULES 137255736Sdavidch 138255736Sdavidch.c.o: 139255736Sdavidch ${CC} ${CFLAGS} -c ${.IMPSRC} 140255736Sdavidch 141255736Sdavidch.f.o: 142255736Sdavidch ${FC} ${FFLAGS} -c ${.IMPSRC} 143255736Sdavidch 144255736Sdavidch.y.o: 145255736Sdavidch ${YACC} ${YFLAGS} ${.IMPSRC} 146255736Sdavidch ${CC} ${CFLAGS} -c y.tab.c 147255736Sdavidch rm -f y.tab.c 148255736Sdavidch mv y.tab.o ${.TARGET} 149255736Sdavidch 150255736Sdavidch.l.o: 151255736Sdavidch ${LEX} ${LFLAGS} ${.IMPSRC} 152255736Sdavidch ${CC} ${CFLAGS} -c lex.yy.c 153255736Sdavidch rm -f lex.yy.c 154255736Sdavidch mv lex.yy.o ${.TARGET} 155255736Sdavidch 156255736Sdavidch.y.c: 157255736Sdavidch ${YACC} ${YFLAGS} ${.IMPSRC} 158255736Sdavidch mv y.tab.c ${.TARGET} 159255736Sdavidch 160255736Sdavidch.l.c: 161255736Sdavidch ${LEX} ${LFLAGS} ${.IMPSRC} 162255736Sdavidch mv lex.yy.c ${.TARGET} 163255736Sdavidch 164255736Sdavidch.c.a: 165255736Sdavidch ${CC} ${CFLAGS} -c ${.IMPSRC} 166255736Sdavidch ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 167255736Sdavidch rm -f ${.PREFIX}.o 168255736Sdavidch 169255736Sdavidch.f.a: 170255736Sdavidch ${FC} ${FFLAGS} -c ${.IMPSRC} 171255736Sdavidch ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 172255736Sdavidch rm -f ${.PREFIX}.o 173255736Sdavidch 174255736Sdavidch.else 175255736Sdavidch 176255736Sdavidch# non-Posix rule set 177255736Sdavidch 178255736Sdavidch.sh: 179255736Sdavidch cp -p ${.IMPSRC} ${.TARGET} 180255736Sdavidch chmod a+x ${.TARGET} 181255736Sdavidch 182255736Sdavidch.c.ln: 183255736Sdavidch ${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \ 184255736Sdavidch touch ${.TARGET} 185255736Sdavidch 186255736Sdavidch.cc.ln .C.ln .cpp.ln .cxx.ln: 187255736Sdavidch ${LINT} ${LINTOBJFLAGS} ${CXXFLAGS:M-[DIU]*} ${.IMPSRC} || \ 188255736Sdavidch touch ${.TARGET} 189255736Sdavidch 190255736Sdavidch.c: 191255736Sdavidch ${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET} 192255736Sdavidch 193255736Sdavidch.c.o: 194255736Sdavidch ${CC} ${CFLAGS} -c ${.IMPSRC} 195255736Sdavidch 196255736Sdavidch.cc .cpp .cxx .C: 197255736Sdavidch ${CXX} ${CXXFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET} 198255736Sdavidch 199255736Sdavidch.cc.o .cpp.o .cxx.o .C.o: 200255736Sdavidch ${CXX} ${CXXFLAGS} -c ${.IMPSRC} 201255736Sdavidch 202255736Sdavidch.m.o: 203255736Sdavidch ${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} 204255736Sdavidch 205255736Sdavidch.p.o: 206255736Sdavidch ${PC} ${PFLAGS} -c ${.IMPSRC} 207255736Sdavidch 208255736Sdavidch.e .r .F .f: 209255736Sdavidch ${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} \ 210255736Sdavidch -o ${.TARGET} 211255736Sdavidch 212255736Sdavidch.e.o .r.o .F.o .f.o: 213255736Sdavidch ${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} -c ${.IMPSRC} 214255736Sdavidch 215255736Sdavidch.S.o: 216255736Sdavidch ${CC} ${CFLAGS} -c ${.IMPSRC} 217255736Sdavidch 218255736Sdavidch.asm.o: 219255736Sdavidch ${CC} -x assembler-with-cpp ${CFLAGS} -c ${.IMPSRC} 220255736Sdavidch 221255736Sdavidch.s.o: 222255736Sdavidch ${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC} 223255736Sdavidch 224255736Sdavidch# XXX not -j safe 225255736Sdavidch.y.o: 226255736Sdavidch ${YACC} ${YFLAGS} ${.IMPSRC} 227255736Sdavidch ${CC} ${CFLAGS} -c y.tab.c -o ${.TARGET} 228255736Sdavidch rm -f y.tab.c 229255736Sdavidch 230255736Sdavidch.l.o: 231255736Sdavidch ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c 232255736Sdavidch ${CC} ${CFLAGS} -c ${.PREFIX}.tmp.c -o ${.TARGET} 233255736Sdavidch rm -f ${.PREFIX}.tmp.c 234255736Sdavidch 235255736Sdavidch# XXX not -j safe 236255736Sdavidch.y.c: 237255736Sdavidch ${YACC} ${YFLAGS} ${.IMPSRC} 238255736Sdavidch mv y.tab.c ${.TARGET} 239255736Sdavidch 240255736Sdavidch.l.c: 241255736Sdavidch ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.TARGET} 242255736Sdavidch 243255736Sdavidch.s.out .c.out .o.out: 244255736Sdavidch ${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET} 245255736Sdavidch 246255736Sdavidch.f.out .F.out .r.out .e.out: 247255736Sdavidch ${FC} ${EFLAGS} ${RFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} \ 248255736Sdavidch ${LDLIBS} -o ${.TARGET} 249255736Sdavidch rm -f ${.PREFIX}.o 250255736Sdavidch 251255736Sdavidch# XXX not -j safe 252255736Sdavidch.y.out: 253255736Sdavidch ${YACC} ${YFLAGS} ${.IMPSRC} 254255736Sdavidch ${CC} ${CFLAGS} ${LDFLAGS} y.tab.c ${LDLIBS} -ly -o ${.TARGET} 255255736Sdavidch rm -f y.tab.c 256255736Sdavidch 257255736Sdavidch.l.out: 258255736Sdavidch ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c 259255736Sdavidch ${CC} ${CFLAGS} ${LDFLAGS} ${.PREFIX}.tmp.c ${LDLIBS} -ll -o ${.TARGET} 260255736Sdavidch rm -f ${.PREFIX}.tmp.c 261255736Sdavidch 262255736Sdavidch# FreeBSD build pollution. Hide it in the non-POSIX part of the ifdef. 263255736Sdavidch__MAKE_CONF?=/etc/make.conf 264255736Sdavidch.if exists(${__MAKE_CONF}) 265255736Sdavidch.include "${__MAKE_CONF}" 266255736Sdavidch.endif 267255736Sdavidch 268255736Sdavidch# Default executable format 269255736Sdavidch# XXX hint for bsd.port.mk 270255736SdavidchOBJFORMAT?= elf 271255736Sdavidch 272255736Sdavidch.endif 273255736Sdavidch 274255736Sdavidch.include <bsd.compat.mk> 275255736Sdavidch.include <bsd.cpu.mk> 276255736Sdavidch