1# from: @(#)sys.mk 8.2 (Berkeley) 3/21/94 2# $FreeBSD$ 3 4unix ?= We run FreeBSD, not UNIX. 5.FreeBSD ?= true 6 7# If the special target .POSIX appears (without prerequisites or 8# commands) before the first noncomment line in the makefile, make shall 9# process the makefile as specified by the Posix 1003.2 specification. 10# make(1) sets the special macro %POSIX in this case (to the actual 11# value "1003.2", for what it's worth). 12# 13# The rules below use this macro to distinguish between Posix-compliant 14# and default behaviour. 15 16.if defined(%POSIX) 17.SUFFIXES: .o .c .y .l .a .sh .f 18.else 19.SUFFIXES: .out .a .ln .o .c .cc .cpp .cxx .C .m .F .f .e .r .y .l .S .asm .s .cl .p .h .sh 20.endif 21 22AR ?= ar 23.if defined(%POSIX) 24ARFLAGS ?= -rv 25.else 26ARFLAGS ?= rl 27.endif 28RANLIB ?= ranlib 29 30AS ?= as 31AFLAGS ?= 32 33.if defined(%POSIX) 34CC ?= c89 35CFLAGS ?= -O 36.else 37CC ?= cc 38CFLAGS ?= -O2 -fno-strict-aliasing -pipe 39.endif 40 41CXX ?= c++ 42CXXFLAGS ?= ${CFLAGS:N-std=*:N-Wnested-externs:N-W*-prototypes} 43 44CPP ?= cpp 45 46.if empty(.MAKEFLAGS:M-s) 47ECHO ?= echo 48ECHODIR ?= echo 49.else 50ECHO ?= true 51.if ${.MAKEFLAGS:M-s} == "-s" 52ECHODIR ?= echo 53.else 54ECHODIR ?= true 55.endif 56.endif 57 58.if !empty(.MAKEFLAGS:M-n) && ${.MAKEFLAGS:M-n} == "-n" 59_+_ ?= 60.else 61_+_ ?= + 62.endif 63 64.if defined(%POSIX) 65FC ?= fort77 66FFLAGS ?= -O 1 67.else 68FC ?= f77 69FFLAGS ?= -O 70.endif 71EFLAGS ?= 72 73INSTALL ?= install 74 75LEX ?= lex 76LFLAGS ?= 77 78LD ?= ld 79LDFLAGS ?= 80 81LINT ?= lint 82LINTFLAGS ?= -cghapbx 83LINTKERNFLAGS ?= ${LINTFLAGS} 84LINTOBJFLAGS ?= -cghapbxu -i 85LINTOBJKERNFLAGS?= ${LINTOBJFLAGS} 86LINTLIBFLAGS ?= -cghapbxu -C ${LIB} 87 88MAKE ?= make 89 90OBJC ?= cc 91OBJCFLAGS ?= ${OBJCINCLUDES} ${CFLAGS} -Wno-import 92 93PC ?= pc 94PFLAGS ?= 95 96RC ?= f77 97RFLAGS ?= 98 99SHELL ?= sh 100 101YACC ?= yacc 102.if defined(%POSIX) 103YFLAGS ?= 104.else 105YFLAGS ?= -d 106.endif 107 108.if defined(%POSIX) 109 110# Posix 1003.2 mandated rules 111# 112# Quoted directly from the Posix 1003.2 draft, only the macros 113# $@, $< and $* have been replaced by ${.TARGET}, ${.IMPSRC}, and 114# ${.PREFIX}, resp. 115 116# SINGLE SUFFIX RULES 117.c: 118 ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC} 119 120.f: 121 ${FC} ${FFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC} 122 123.sh: 124 cp ${.IMPSRC} ${.TARGET} 125 chmod a+x ${.TARGET} 126 127# DOUBLE SUFFIX RULES 128 129.c.o: 130 ${CC} ${CFLAGS} -c ${.IMPSRC} 131 132.f.o: 133 ${FC} ${FFLAGS} -c ${.IMPSRC} 134 135.y.o: 136 ${YACC} ${YFLAGS} ${.IMPSRC} 137 ${CC} ${CFLAGS} -c y.tab.c 138 rm -f y.tab.c 139 mv y.tab.o ${.TARGET} 140 141.l.o: 142 ${LEX} ${LFLAGS} ${.IMPSRC} 143 ${CC} ${CFLAGS} -c lex.yy.c 144 rm -f lex.yy.c 145 mv lex.yy.o ${.TARGET} 146 147.y.c: 148 ${YACC} ${YFLAGS} ${.IMPSRC} 149 mv y.tab.c ${.TARGET} 150 151.l.c: 152 ${LEX} ${LFLAGS} ${.IMPSRC} 153 mv lex.yy.c ${.TARGET} 154 155.c.a: 156 ${CC} ${CFLAGS} -c ${.IMPSRC} 157 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 158 rm -f ${.PREFIX}.o 159 160.f.a: 161 ${FC} ${FFLAGS} -c ${.IMPSRC} 162 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 163 rm -f ${.PREFIX}.o 164 165.else 166 167# non-Posix rule set 168 169.sh: 170 cp -p ${.IMPSRC} ${.TARGET} 171 chmod a+x ${.TARGET} 172 173.c.ln: 174 ${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \ 175 touch ${.TARGET} 176 177.cc.ln .C.ln .cpp.ln .cxx.ln: 178 ${LINT} ${LINTOBJFLAGS} ${CXXFLAGS:M-[DIU]*} ${.IMPSRC} || \ 179 touch ${.TARGET} 180 181.c: 182 ${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET} 183 184.c.o: 185 ${CC} ${CFLAGS} -c ${.IMPSRC} 186 187.cc .cpp .cxx .C: 188 ${CXX} ${CXXFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET} 189 190.cc.o .cpp.o .cxx.o .C.o: 191 ${CXX} ${CXXFLAGS} -c ${.IMPSRC} 192 193.m.o: 194 ${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} 195 196.p.o: 197 ${PC} ${PFLAGS} -c ${.IMPSRC} 198 199.e .r .F .f: 200 ${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} \ 201 -o ${.TARGET} 202 203.e.o .r.o .F.o .f.o: 204 ${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} -c ${.IMPSRC} 205 206.S.o: 207 ${CC} ${CFLAGS} -c ${.IMPSRC} 208 209.asm.o: 210 ${CC} -x assembler-with-cpp ${CFLAGS} -c ${.IMPSRC} 211 212.s.o: 213 ${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC} 214 215# XXX not -j safe 216.y.o: 217 ${YACC} ${YFLAGS} ${.IMPSRC} 218 ${CC} ${CFLAGS} -c y.tab.c -o ${.TARGET} 219 rm -f y.tab.c 220 221.l.o: 222 ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c 223 ${CC} ${CFLAGS} -c ${.PREFIX}.tmp.c -o ${.TARGET} 224 rm -f ${.PREFIX}.tmp.c 225 226# XXX not -j safe 227.y.c: 228 ${YACC} ${YFLAGS} ${.IMPSRC} 229 mv y.tab.c ${.TARGET} 230 231.l.c: 232 ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.TARGET} 233 234.s.out .c.out .o.out: 235 ${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET} 236 237.f.out .F.out .r.out .e.out: 238 ${FC} ${EFLAGS} ${RFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} \ 239 ${LDLIBS} -o ${.TARGET} 240 rm -f ${.PREFIX}.o 241 242# XXX not -j safe 243.y.out: 244 ${YACC} ${YFLAGS} ${.IMPSRC} 245 ${CC} ${CFLAGS} ${LDFLAGS} y.tab.c ${LDLIBS} -ly -o ${.TARGET} 246 rm -f y.tab.c 247 248.l.out: 249 ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c 250 ${CC} ${CFLAGS} ${LDFLAGS} ${.PREFIX}.tmp.c ${LDLIBS} -ll -o ${.TARGET} 251 rm -f ${.PREFIX}.tmp.c 252 253# FreeBSD build pollution. Hide it in the non-POSIX part of the ifdef. 254__MAKE_CONF?=/etc/make.conf 255.if exists(${__MAKE_CONF}) 256.include "${__MAKE_CONF}" 257.endif 258 259# Default executable format 260# XXX hint for bsd.port.mk 261OBJFORMAT?= elf 262 263# Toggle on warnings 264.WARN: dirsyntax 265 266.endif 267 268.include <bsd.compat.mk> 269.include <bsd.cpu.mk> 270