sys.mk revision 36673
1238106Sdes# from: @(#)sys.mk 8.2 (Berkeley) 3/21/94 2238106Sdes# $Id: sys.mk,v 1.36 1998/06/03 22:07:26 jb Exp $ 3238106Sdes 4238106Sdesunix ?= We run FreeBSD, not UNIX. 5238106Sdes 6238106Sdes# If the special target .POSIX appears (without prerequisites or 7238106Sdes# commands) before the first noncomment line in the makefile, make shall 8238106Sdes# process the makefile as specified by the Posix 1003.2 specification. 9238106Sdes# make(1) sets the special macro %POSIX in this case (to the actual 10238106Sdes# value "1003.2", for what it's worth). 11238106Sdes# 12238106Sdes# The rules below use this macro to distinguish between Posix-compliant 13238106Sdes# and default behaviour. 14238106Sdes 15238106Sdes.if defined(%POSIX) 16238106Sdes.SUFFIXES: .o .c .y .l .a .sh .f 17238106Sdes.else 18238106Sdes.SUFFIXES: .out .a .ln .o .c .cc .cpp .cxx .C .m .F .f .e .r .y .l .S .s .cl .p .h .sh 19238106Sdes.endif 20238106Sdes 21238106Sdes.LIBS: .a 22238106Sdes 23238106SdesX11BASE ?= /usr/X11R6 24238106Sdes 25238106SdesAR ?= ar 26238106Sdes.if defined(%POSIX) 27238106SdesARFLAGS ?= -rv 28238106Sdes.else 29238106SdesARFLAGS ?= rl 30238106Sdes.endif 31238106SdesRANLIB ?= ranlib 32238106Sdes 33238106SdesAS ?= as 34238106SdesAFLAGS ?= 35238106Sdes 36238106Sdes.if defined(%POSIX) 37238106SdesCC ?= c89 38238106Sdes.else 39238106SdesCC ?= cc 40238106Sdes.endif 41238106SdesCFLAGS ?= -O -pipe 42238106Sdes 43238106SdesCXX ?= c++ 44238106SdesCXXFLAGS ?= ${CXXINCLUDES} ${CFLAGS} 45238106Sdes 46238106SdesCPP ?= cpp 47238106Sdes 48238106Sdes.if ${.MAKEFLAGS:M-s} == "" 49238106SdesECHO ?= echo 50238106SdesECHODIR ?= echo 51238106Sdes.else 52238106SdesECHO ?= true 53238106Sdes.if ${.MAKEFLAGS:M-s} == "-s" 54238106SdesECHODIR ?= echo 55238106Sdes.else 56238106SdesECHODIR ?= true 57238106Sdes.endif 58238106Sdes.endif 59238106Sdes 60238106Sdes.if defined(%POSIX) 61238106SdesFC ?= fort77 62238106SdesFFLAGS ?= -O 1 63238106Sdes.else 64238106SdesFC ?= f77 65238106SdesFFLAGS ?= -O 66238106Sdes.endif 67238106SdesEFLAGS ?= 68238106Sdes 69238106SdesINSTALL ?= install 70238106Sdes 71238106SdesLEX ?= lex 72238106SdesLFLAGS ?= 73238106Sdes 74238106SdesLD ?= ld 75238106SdesLDFLAGS ?= 76238106Sdes 77238106SdesLINT ?= lint 78238106SdesLINTFLAGS ?= -chapbx 79238106Sdes 80238106SdesMAKE ?= make 81238106Sdes 82238106SdesOBJC ?= cc 83238106SdesOBJCFLAGS ?= ${OBJCINCLUDES} ${CFLAGS} -Wno-import 84238106Sdes 85238106SdesPC ?= pc 86238106SdesPFLAGS ?= 87238106Sdes 88238106SdesRC ?= f77 89238106SdesRFLAGS ?= 90238106Sdes 91238106SdesSHELL ?= sh 92238106Sdes 93238106SdesYACC ?= yacc 94238106Sdes.if defined(%POSIX) 95238106SdesYFLAGS ?= 96238106Sdes.else 97238106SdesYFLAGS ?= -d 98238106Sdes.endif 99238106Sdes 100238106Sdes# FreeBSD/i386 as traditionally been built with a version of make 101238106Sdes# which knows MACHINE, but not MACHINE_ARCH. When building on other 102238106Sdes# architectures, assume that the version of make being used has an 103238106Sdes# explicit MACHINE_ARCH setting and treat a missing MACHINE_ARCH 104238106Sdes# as an i386 architecture. 105238106SdesMACHINE_ARCH?= i386 106238106Sdes 107238106Sdes# Default executable format 108238106Sdes.if ${MACHINE_ARCH} == "alpha" 109238106SdesBINFORMAT ?= elf 110238106Sdes.else 111238106SdesBINFORMAT ?= aout 112238106Sdes.endif 113238106Sdes 114238106Sdes# For tags rule. 115238106SdesGTAGSFLAGS= -o 116238106SdesHTAGSFLAGS= 117238106Sdes 118238106Sdes.if defined(%POSIX) 119238106Sdes# Posix 1003.2 mandated rules 120238106Sdes# 121238106Sdes# Quoted directly from the Posix 1003.2 draft, only the macros 122238106Sdes# $@, $< and $* have been replaced by ${.TARGET}, ${.IMPSRC}, and 123238106Sdes# ${.PREFIX}, resp. 124238106Sdes 125238106Sdes# SINGLE SUFFIX RULES 126238106Sdes.c: 127238106Sdes ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC} 128238106Sdes 129238106Sdes.f: 130238106Sdes ${FC} ${FFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC} 131238106Sdes 132238106Sdes.sh: 133238106Sdes cp ${.IMPSRC} ${.TARGET} 134238106Sdes chmod a+x ${.TARGET} 135238106Sdes 136238106Sdes# DOUBLE SUFFIX RULES 137238106Sdes 138238106Sdes.c.o: 139238106Sdes ${CC} ${CFLAGS} -c ${.IMPSRC} 140238106Sdes 141238106Sdes.f.o: 142238106Sdes ${FC} ${FFLAGS} -c ${.IMPSRC} 143238106Sdes 144238106Sdes.y.o: 145238106Sdes ${YACC} ${YFLAGS} ${.IMPSRC} 146238106Sdes ${CC} ${CFLAGS} -c y.tab.c 147238106Sdes rm -f y.tab.c 148238106Sdes mv y.tab.o ${.TARGET} 149238106Sdes 150238106Sdes.l.o: 151238106Sdes ${LEX} ${LFLAGS} ${.IMPSRC} 152238106Sdes ${CC} ${CFLAGS} -c lex.yy.c 153238106Sdes rm -f lex.yy.c 154238106Sdes mv lex.yy.o ${.TARGET} 155238106Sdes 156238106Sdes.y.c: 157238106Sdes ${YACC} ${YFLAGS} ${.IMPSRC} 158238106Sdes mv y.tab.c ${.TARGET} 159238106Sdes 160238106Sdes.l.c: 161238106Sdes ${LEX} ${LFLAGS} ${.IMPSRC} 162238106Sdes mv lex.yy.c ${.TARGET} 163238106Sdes 164238106Sdes.c.a: 165238106Sdes ${CC} ${CFLAGS} -c ${.IMPSRC} 166238106Sdes ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 167238106Sdes rm -f ${.PREFIX}.o 168238106Sdes 169238106Sdes.f.a: 170238106Sdes ${FC} ${FFLAGS} -c ${.IMPSRC} 171238106Sdes ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 172238106Sdes rm -f ${.PREFIX}.o 173238106Sdes 174238106Sdes.else 175238106Sdes 176238106Sdes# non-Posix rule set 177238106Sdes 178238106Sdes.c: 179238106Sdes ${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET} 180238106Sdes 181238106Sdes.sh: 182238106Sdes cp -p ${.IMPSRC} ${.TARGET} 183238106Sdes chmod a+x ${.TARGET} 184238106Sdes 185238106Sdes.c.o: 186238106Sdes ${CC} ${CFLAGS} -c ${.IMPSRC} 187238106Sdes 188238106Sdes.cc.o .cpp.o .cxx.o .C.o: 189238106Sdes ${CXX} ${CXXFLAGS} -c ${.IMPSRC} 190238106Sdes 191238106Sdes.m.o: 192238106Sdes ${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} 193238106Sdes 194238106Sdes.p.o: 195238106Sdes ${PC} ${PFLAGS} -c ${.IMPSRC} 196238106Sdes 197238106Sdes.e.o .r.o .F.o .f.o: 198238106Sdes ${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} -c ${.IMPSRC} 199238106Sdes 200238106Sdes.S.o: 201238106Sdes ${CC} ${CFLAGS} -c ${.IMPSRC} 202238106Sdes 203238106Sdes.s.o: 204238106Sdes ${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC} 205238106Sdes 206238106Sdes# XXX not -j safe 207238106Sdes.y.o: 208238106Sdes ${YACC} ${YFLAGS} ${.IMPSRC} 209238106Sdes ${CC} ${CFLAGS} -c y.tab.c -o ${.TARGET} 210238106Sdes rm -f y.tab.c 211238106Sdes 212238106Sdes.l.o: 213238106Sdes ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c 214238106Sdes ${CC} ${CFLAGS} -c ${.PREFIX}.tmp.c -o ${.TARGET} 215238106Sdes rm -f ${.PREFIX}.tmp.c 216238106Sdes 217238106Sdes# XXX not -j safe 218238106Sdes.y.c: 219238106Sdes ${YACC} ${YFLAGS} ${.IMPSRC} 220238106Sdes mv y.tab.c ${.TARGET} 221238106Sdes 222238106Sdes.l.c: 223238106Sdes ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.TARGET} 224238106Sdes 225238106Sdes.s.out .c.out .o.out: 226238106Sdes ${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET} 227238106Sdes 228238106Sdes.f.out .F.out .r.out .e.out: 229238106Sdes ${FC} ${EFLAGS} ${RFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} \ 230238106Sdes ${LDLIBS} -o ${.TARGET} 231238106Sdes rm -f ${.PREFIX}.o 232238106Sdes 233238106Sdes# XXX not -j safe 234238106Sdes.y.out: 235238106Sdes ${YACC} ${YFLAGS} ${.IMPSRC} 236238106Sdes ${CC} ${CFLAGS} ${LDFLAGS} y.tab.c ${LDLIBS} -ly -o ${.TARGET} 237238106Sdes rm -f y.tab.c 238238106Sdes 239238106Sdes.l.out: 240238106Sdes ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c 241238106Sdes ${CC} ${CFLAGS} ${LDFLAGS} ${.PREFIX}.tmp.c ${LDLIBS} -ll -o ${.TARGET} 242238106Sdes rm -f ${.PREFIX}.tmp.c 243238106Sdes 244238106Sdes.endif 245238106Sdes 246238106Sdes.include <bsd.own.mk> 247238106Sdes 248238106Sdes.if exists(/etc/make.conf) 249238106Sdes.include </etc/make.conf> 250238106Sdes.endif 251238106Sdes 252238106Sdes# Architectures that use NetBSD syscalls: 253238106Sdes.if ${MACHINE_ARCH} == "alpha" 254238106SdesCFLAGS += -D__NETBSD_SYSCALLS 255238106Sdes.endif 256238106Sdes