sys.mk revision 133369
1255643Snwhitehorn# from: @(#)sys.mk 8.2 (Berkeley) 3/21/94 2255643Snwhitehorn# $FreeBSD: head/share/mk/sys.mk 133369 2004-08-09 10:54:05Z harti $ 3255643Snwhitehorn 4255643Snwhitehornunix ?= We run FreeBSD, not UNIX. 5255643Snwhitehorn.FreeBSD ?= true 6255643Snwhitehorn 7255643Snwhitehorn# If the special target .POSIX appears (without prerequisites or 8255643Snwhitehorn# commands) before the first noncomment line in the makefile, make shall 9255643Snwhitehorn# process the makefile as specified by the Posix 1003.2 specification. 10255643Snwhitehorn# make(1) sets the special macro %POSIX in this case (to the actual 11255643Snwhitehorn# value "1003.2", for what it's worth). 12255643Snwhitehorn# 13255643Snwhitehorn# The rules below use this macro to distinguish between Posix-compliant 14255643Snwhitehorn# and default behaviour. 15255643Snwhitehorn 16255643Snwhitehorn.if defined(%POSIX) 17255643Snwhitehorn.SUFFIXES: .o .c .y .l .a .sh .f 18255643Snwhitehorn.else 19255643Snwhitehorn.SUFFIXES: .out .a .ln .o .c .cc .cpp .cxx .C .m .F .f .e .r .y .l .S .asm .s .cl .p .h .sh 20255643Snwhitehorn.endif 21255643Snwhitehorn 22255643SnwhitehornX11BASE ?= /usr/X11R6 23255643Snwhitehorn 24255643SnwhitehornAR ?= ar 25255643Snwhitehorn.if defined(%POSIX) 26255643SnwhitehornARFLAGS ?= -rv 27255643Snwhitehorn.else 28255643SnwhitehornARFLAGS ?= rl 29255643Snwhitehorn.endif 30255643SnwhitehornRANLIB ?= ranlib 31255643Snwhitehorn 32255643SnwhitehornAS ?= as 33255643SnwhitehornAFLAGS ?= 34255643Snwhitehorn 35255643Snwhitehorn.if defined(%POSIX) 36255643SnwhitehornCC ?= c89 37255643SnwhitehornCFLAGS ?= -O 38255643Snwhitehorn.else 39255643SnwhitehornCC ?= cc 40255643SnwhitehornCFLAGS ?= -O -pipe 41255643Snwhitehorn.endif 42255643Snwhitehorn 43255643SnwhitehornCXX ?= c++ 44255643SnwhitehornCXXFLAGS ?= ${CFLAGS:N-std=*:N-Wnested-externs:N-W*-prototypes} 45255643Snwhitehorn 46255643SnwhitehornCPP ?= cpp 47255643Snwhitehorn 48255643Snwhitehorn.if empty(.MAKEFLAGS:M-s) 49265974SianECHO ?= echo 50255643SnwhitehornECHODIR ?= echo 51255643Snwhitehorn.else 52255643SnwhitehornECHO ?= true 53255643Snwhitehorn.if ${.MAKEFLAGS:M-s} == "-s" 54255643SnwhitehornECHODIR ?= echo 55255643Snwhitehorn.else 56255643SnwhitehornECHODIR ?= true 57255643Snwhitehorn.endif 58255643Snwhitehorn.endif 59255643Snwhitehorn 60255643Snwhitehorn.if !empty(.MAKEFLAGS:M-n) && ${.MAKEFLAGS:M-n} == "-n" 61255643Snwhitehorn_+_ ?= 62255643Snwhitehorn.else 63255643Snwhitehorn_+_ ?= + 64255643Snwhitehorn.endif 65255643Snwhitehorn 66255643Snwhitehorn.if defined(%POSIX) 67255643SnwhitehornFC ?= fort77 68266020SianFFLAGS ?= -O 1 69266020Sian.else 70255643SnwhitehornFC ?= f77 71255643SnwhitehornFFLAGS ?= -O 72255643Snwhitehorn.endif 73255643SnwhitehornEFLAGS ?= 74255643Snwhitehorn 75255643SnwhitehornINSTALL ?= install 76255643Snwhitehorn 77255643SnwhitehornLEX ?= lex 78255643SnwhitehornLFLAGS ?= 79255643Snwhitehorn 80255643SnwhitehornLD ?= ld 81255643SnwhitehornLDFLAGS ?= 82255643Snwhitehorn 83255643SnwhitehornLINT ?= lint 84255643SnwhitehornLINTFLAGS ?= -cghapbx 85255643SnwhitehornLINTKERNFLAGS ?= ${LINTFLAGS} 86255643SnwhitehornLINTOBJFLAGS ?= -cghapbxu -i 87255643SnwhitehornLINTOBJKERNFLAGS?= ${LINTOBJFLAGS} 88255643SnwhitehornLINTLIBFLAGS ?= -cghapbxu -C ${LIB} 89255643Snwhitehorn 90255643SnwhitehornMAKE ?= make 91255643Snwhitehorn 92255643SnwhitehornOBJC ?= cc 93255643SnwhitehornOBJCFLAGS ?= ${OBJCINCLUDES} ${CFLAGS} -Wno-import 94255643Snwhitehorn 95255643SnwhitehornPC ?= pc 96255643SnwhitehornPFLAGS ?= 97255643Snwhitehorn 98255643SnwhitehornRC ?= f77 99255643SnwhitehornRFLAGS ?= 100255643Snwhitehorn 101255643SnwhitehornSHELL ?= sh 102255643Snwhitehorn 103255643SnwhitehornYACC ?= yacc 104255643Snwhitehorn.if defined(%POSIX) 105255643SnwhitehornYFLAGS ?= 106255643Snwhitehorn.else 107255643SnwhitehornYFLAGS ?= -d 108255643Snwhitehorn.endif 109255643Snwhitehorn 110255643Snwhitehorn# FreeBSD/i386 has traditionally been built with a version of make 111255643Snwhitehorn# which knows MACHINE, but not MACHINE_ARCH. When building on other 112255643Snwhitehorn# architectures, assume that the version of make being used has an 113255643Snwhitehorn# explicit MACHINE_ARCH setting and treat a missing MACHINE_ARCH 114255643Snwhitehorn# as an i386 architecture. 115255643SnwhitehornMACHINE_ARCH ?= i386 116255643Snwhitehorn 117255643Snwhitehorn.if defined(%POSIX) 118255643Snwhitehorn 119255643Snwhitehorn# Posix 1003.2 mandated rules 120255643Snwhitehorn# 121255643Snwhitehorn# Quoted directly from the Posix 1003.2 draft, only the macros 122255643Snwhitehorn# $@, $< and $* have been replaced by ${.TARGET}, ${.IMPSRC}, and 123255643Snwhitehorn# ${.PREFIX}, resp. 124255643Snwhitehorn 125255643Snwhitehorn# SINGLE SUFFIX RULES 126255643Snwhitehorn.c: 127255643Snwhitehorn ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC} 128255643Snwhitehorn 129255643Snwhitehorn.f: 130255643Snwhitehorn ${FC} ${FFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC} 131255643Snwhitehorn 132255643Snwhitehorn.sh: 133255643Snwhitehorn cp ${.IMPSRC} ${.TARGET} 134255643Snwhitehorn chmod a+x ${.TARGET} 135255643Snwhitehorn 136255643Snwhitehorn# DOUBLE SUFFIX RULES 137255643Snwhitehorn 138255643Snwhitehorn.c.o: 139255643Snwhitehorn ${CC} ${CFLAGS} -c ${.IMPSRC} 140255643Snwhitehorn 141255643Snwhitehorn.f.o: 142255643Snwhitehorn ${FC} ${FFLAGS} -c ${.IMPSRC} 143255643Snwhitehorn 144255643Snwhitehorn.y.o: 145255643Snwhitehorn ${YACC} ${YFLAGS} ${.IMPSRC} 146255643Snwhitehorn ${CC} ${CFLAGS} -c y.tab.c 147255643Snwhitehorn rm -f y.tab.c 148255643Snwhitehorn mv y.tab.o ${.TARGET} 149255643Snwhitehorn 150255643Snwhitehorn.l.o: 151255643Snwhitehorn ${LEX} ${LFLAGS} ${.IMPSRC} 152255643Snwhitehorn ${CC} ${CFLAGS} -c lex.yy.c 153255643Snwhitehorn rm -f lex.yy.c 154255910Snwhitehorn mv lex.yy.o ${.TARGET} 155255910Snwhitehorn 156255910Snwhitehorn.y.c: 157255643Snwhitehorn ${YACC} ${YFLAGS} ${.IMPSRC} 158255643Snwhitehorn mv y.tab.c ${.TARGET} 159255643Snwhitehorn 160266020Sian.l.c: 161266020Sian ${LEX} ${LFLAGS} ${.IMPSRC} 162266020Sian mv lex.yy.c ${.TARGET} 163266020Sian 164266020Sian.c.a: 165266020Sian ${CC} ${CFLAGS} -c ${.IMPSRC} 166266020Sian ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 167266020Sian rm -f ${.PREFIX}.o 168266020Sian 169266020Sian.f.a: 170266020Sian ${FC} ${FFLAGS} -c ${.IMPSRC} 171266020Sian ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 172266020Sian rm -f ${.PREFIX}.o 173266020Sian 174266020Sian.else 175266020Sian 176266020Sian# non-Posix rule set 177266020Sian 178266020Sian.sh: 179266020Sian cp -p ${.IMPSRC} ${.TARGET} 180266020Sian chmod a+x ${.TARGET} 181266020Sian 182266020Sian.c.ln: 183266020Sian ${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \ 184266020Sian touch ${.TARGET} 185266020Sian 186266020Sian.cc.ln .C.ln .cpp.ln .cxx.ln: 187266020Sian ${LINT} ${LINTOBJFLAGS} ${CXXFLAGS:M-[DIU]*} ${.IMPSRC} || \ 188266020Sian touch ${.TARGET} 189266020Sian 190266020Sian.c: 191266020Sian ${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET} 192266020Sian 193266020Sian.c.o: 194266020Sian ${CC} ${CFLAGS} -c ${.IMPSRC} 195266020Sian 196266020Sian.cc .cpp .cxx .C: 197266020Sian ${CXX} ${CXXFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET} 198266020Sian 199266020Sian.cc.o .cpp.o .cxx.o .C.o: 200266020Sian ${CXX} ${CXXFLAGS} -c ${.IMPSRC} 201266020Sian 202266020Sian.m.o: 203266020Sian ${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} 204266020Sian 205266020Sian.p.o: 206266020Sian ${PC} ${PFLAGS} -c ${.IMPSRC} 207266020Sian 208266020Sian.e .r .F .f: 209266020Sian ${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} \ 210266020Sian -o ${.TARGET} 211266020Sian 212266020Sian.e.o .r.o .F.o .f.o: 213266020Sian ${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} -c ${.IMPSRC} 214266020Sian 215266020Sian.S.o: 216266020Sian ${CC} ${CFLAGS} -c ${.IMPSRC} 217266020Sian 218266020Sian.asm.o: 219266020Sian ${CC} -x assembler-with-cpp ${CFLAGS} -c ${.IMPSRC} 220266020Sian 221266020Sian.s.o: 222266020Sian ${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC} 223266020Sian 224266020Sian# XXX not -j safe 225266020Sian.y.o: 226266020Sian ${YACC} ${YFLAGS} ${.IMPSRC} 227266020Sian ${CC} ${CFLAGS} -c y.tab.c -o ${.TARGET} 228266020Sian rm -f y.tab.c 229266020Sian 230266020Sian.l.o: 231266020Sian ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c 232266020Sian ${CC} ${CFLAGS} -c ${.PREFIX}.tmp.c -o ${.TARGET} 233266020Sian rm -f ${.PREFIX}.tmp.c 234266020Sian 235266020Sian# XXX not -j safe 236266020Sian.y.c: 237255643Snwhitehorn ${YACC} ${YFLAGS} ${.IMPSRC} 238266020Sian mv y.tab.c ${.TARGET} 239266020Sian 240255643Snwhitehorn.l.c: 241266020Sian ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.TARGET} 242266020Sian 243266020Sian.s.out .c.out .o.out: 244266020Sian ${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET} 245266020Sian 246266020Sian.f.out .F.out .r.out .e.out: 247266020Sian ${FC} ${EFLAGS} ${RFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} \ 248266020Sian ${LDLIBS} -o ${.TARGET} 249266020Sian rm -f ${.PREFIX}.o 250266020Sian 251266020Sian# XXX not -j safe 252266020Sian.y.out: 253266020Sian ${YACC} ${YFLAGS} ${.IMPSRC} 254266020Sian ${CC} ${CFLAGS} ${LDFLAGS} y.tab.c ${LDLIBS} -ly -o ${.TARGET} 255266020Sian rm -f y.tab.c 256266020Sian 257266020Sian.l.out: 258266020Sian ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c 259266020Sian ${CC} ${CFLAGS} ${LDFLAGS} ${.PREFIX}.tmp.c ${LDLIBS} -ll -o ${.TARGET} 260266020Sian rm -f ${.PREFIX}.tmp.c 261255643Snwhitehorn 262255643Snwhitehorn# FreeBSD build pollution. Hide it in the non-POSIX part of the ifdef. 263255643Snwhitehorn__MAKE_CONF?=/etc/make.conf 264255643Snwhitehorn.if exists(${__MAKE_CONF}) 265255643Snwhitehorn.include "${__MAKE_CONF}" 266255643Snwhitehorn.endif 267255643Snwhitehorn 268255643Snwhitehorn# Default executable format 269255643Snwhitehorn# XXX hint for bsd.port.mk 270255643SnwhitehornOBJFORMAT?= elf 271255643Snwhitehorn 272255643Snwhitehorn.endif 273255643Snwhitehorn 274255643Snwhitehorn.include <bsd.cpu.mk> 275255643Snwhitehorn