1# $NetBSD: sys.mk,v 1.104 2011/01/21 15:59:04 joerg Exp $ 2# @(#)sys.mk 8.2 (Berkeley) 3/21/94 3 4unix?= We run NetBSD. 5 6.SUFFIXES: .a .o .ln .s .S .c .cc .cpp .cxx .C .f .F .r .p .l .y .sh 7 8.LIBS: .a 9 10AR?= ar 11ARFLAGS?= rl 12RANLIB?= ranlib 13 14AS?= as 15AFLAGS?= 16COMPILE.s?= ${CC} ${AFLAGS} -c 17LINK.s?= ${CC} ${AFLAGS} ${LDFLAGS} 18_ASM_TRADITIONAL_CPP= -x assembler-with-cpp 19COMPILE.S?= ${CC} ${AFLAGS} ${CPPFLAGS} ${_ASM_TRADITIONAL_CPP} -c 20LINK.S?= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS} 21 22CC?= cc 23.if ${MACHINE_ARCH} == "alpha" || \ 24 ${MACHINE_ARCH} == "arm" || \ 25 ${MACHINE_ARCH} == "x86_64" || \ 26 ${MACHINE_ARCH} == "armeb" || \ 27 ${MACHINE_ARCH} == "hppa" || \ 28 ${MACHINE_ARCH} == "i386" || \ 29 ${MACHINE_ARCH} == "m68k" || \ 30 ${MACHINE_ARCH} == "mipsel" || ${MACHINE_ARCH} == "mipseb" || \ 31 ${MACHINE_ARCH} == "mips64el" || ${MACHINE_ARCH} == "mips64eb" || \ 32 ${MACHINE_ARCH} == "powerpc" || \ 33 ${MACHINE_ARCH} == "sparc" || \ 34 ${MACHINE_ARCH} == "sparc64" 35DBG?= -O2 36.elif ${MACHINE_ARCH} == "sh3el" || ${MACHINE_ARCH} == "sh3eb" 37# -O2 is too -falign-* zealous for low-memory sh3 machines 38DBG?= -Os -freorder-blocks 39.elif ${MACHINE_ARCH} == "vax" 40DBG?= -O1 -fgcse -fstrength-reduce -fgcse-after-reload 41.elif ${MACHINE_ARCH} == "m68000" 42# see src/doc/HACKS for details 43DBG?= -O1 44.else 45DBG?= -O 46.endif 47CFLAGS?= ${DBG} 48LDFLAGS?= 49COMPILE.c?= ${CC} ${CFLAGS} ${CPPFLAGS} -c 50LINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} 51 52# C Type Format data is required for DTrace 53# XXX TBD VERSION is not defined 54CTFFLAGS ?= -L VERSION 55CTFMFLAGS ?= -t -L VERSION 56 57.if defined(MKDTRACE) && ${MKDTRACE} != "no" 58CTFCONVERT ?= ${TOOL_CTFCONVERT} 59CTFMERGE ?= ${TOOL_CTFMERGE} 60.if defined(CFLAGS) && (${CFLAGS:M-g} != "") 61CTFFLAGS += -g 62CTFMFLAGS += -g 63.else 64CFLAGS += -g 65.endif 66.endif 67 68CXX?= c++ 69CXXFLAGS?= ${CFLAGS:N-Wno-traditional:N-Wstrict-prototypes:N-Wmissing-prototypes:N-Wno-pointer-sign:N-ffreestanding:N-std=gnu99} 70 71__ALLSRC1= ${empty(DESTDIR):?${.ALLSRC}:${.ALLSRC:S|^${DESTDIR}|^destdir|}} 72__ALLSRC2= ${empty(MAKEOBJDIR):?${__ALLSRC1}:${__ALLSRC1:S|^${MAKEOBJDIR}|^obj|}} 73__ALLSRC3= ${empty(NETBSDSRCDIR):?${__ALLSRC2}:${__ALLSRC2:S|^${NETBSDSRCDIR}|^src|}} 74 75_CXXSEED?= ${BUILDSEED:D-frandom-seed=${BUILDSEED:Q}/${__ALLSRC3:O:Q}/${.TARGET:Q}} 76 77COMPILE.cc?= ${CXX} ${_CXXSEED} ${CXXFLAGS} ${CPPFLAGS} -c 78LINK.cc?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS} 79 80OBJC?= ${CC} 81OBJCFLAGS?= ${CFLAGS} 82COMPILE.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c 83LINK.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS} 84 85CPP?= cpp 86CPPFLAGS?= 87 88FC?= f77 89FFLAGS?= -O 90RFLAGS?= 91COMPILE.f?= ${FC} ${FFLAGS} -c 92LINK.f?= ${FC} ${FFLAGS} ${LDFLAGS} 93COMPILE.F?= ${FC} ${FFLAGS} ${CPPFLAGS} -c 94LINK.F?= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS} 95COMPILE.r?= ${FC} ${FFLAGS} ${RFLAGS} -c 96LINK.r?= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS} 97 98INSTALL?= install 99 100LD?= ld 101 102LEX?= lex 103LFLAGS?= 104LEX.l?= ${LEX} ${LFLAGS} 105 106LINT?= lint 107LINTFLAGS?= -chapbxzFS 108 109LORDER?= lorder 110 111MAKE?= make 112 113NM?= nm 114 115PC?= pc 116PFLAGS?= 117COMPILE.p?= ${PC} ${PFLAGS} ${CPPFLAGS} -c 118LINK.p?= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS} 119 120SHELL?= sh 121 122SIZE?= size 123 124TSORT?= tsort -q 125 126YACC?= yacc 127YFLAGS?= 128YACC.y?= ${YACC} ${YFLAGS} 129 130# C 131.c: 132 ${LINK.c} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 133.if defined(CTFCONVERT) 134 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 135.endif 136.c.o: 137 ${COMPILE.c} ${.IMPSRC} 138.if defined(CTFCONVERT) 139 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 140.endif 141.c.a: 142 ${COMPILE.c} ${.IMPSRC} 143 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 144 rm -f ${.PREFIX}.o 145.c.ln: 146 ${LINT} ${LINTFLAGS} \ 147 ${CPPFLAGS:C/-([IDU])[ ]*/-\1/Wg:M-[IDU]*} \ 148 -i ${.IMPSRC} 149 150# C++ 151.cc .cpp .cxx .C: 152 ${LINK.cc} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 153.cc.o .cpp.o .cxx.o .C.o: 154 ${COMPILE.cc} ${.IMPSRC} 155.cc.a .cpp.a .cxx.a .C.a: 156 ${COMPILE.cc} ${.IMPSRC} 157 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 158 rm -f ${.PREFIX}.o 159 160# Fortran/Ratfor 161.f: 162 ${LINK.f} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 163.f.o: 164 ${COMPILE.f} ${.IMPSRC} 165.f.a: 166 ${COMPILE.f} ${.IMPSRC} 167 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 168 rm -f ${.PREFIX}.o 169 170.F: 171 ${LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 172.if defined(CTFCONVERT) 173 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 174.endif 175.F.o: 176 ${COMPILE.F} ${.IMPSRC} 177.if defined(CTFCONVERT) 178 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 179.endif 180.F.a: 181 ${COMPILE.F} ${.IMPSRC} 182 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 183 rm -f ${.PREFIX}.o 184 185.r: 186 ${LINK.r} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 187.r.o: 188 ${COMPILE.r} ${.IMPSRC} 189.r.a: 190 ${COMPILE.r} ${.IMPSRC} 191 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 192 rm -f ${.PREFIX}.o 193 194# Pascal 195.p: 196 ${LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 197.if defined(CTFCONVERT) 198 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 199.endif 200.p.o: 201 ${COMPILE.p} ${.IMPSRC} 202.if defined(CTFCONVERT) 203 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 204.endif 205.p.a: 206 ${COMPILE.p} ${.IMPSRC} 207 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 208 rm -f ${.PREFIX}.o 209 210# Assembly 211.s: 212 ${LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 213.if defined(CTFCONVERT) 214 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 215.endif 216.s.o: 217 ${COMPILE.s} ${.IMPSRC} 218.if defined(CTFCONVERT) 219 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 220.endif 221.s.a: 222 ${COMPILE.s} ${.IMPSRC} 223 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 224 rm -f ${.PREFIX}.o 225.S: 226 ${LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 227.if defined(CTFCONVERT) 228 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 229.endif 230.S.o: 231 ${COMPILE.S} ${.IMPSRC} 232.if defined(CTFCONVERT) 233 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 234.endif 235.S.a: 236 ${COMPILE.S} ${.IMPSRC} 237 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 238 rm -f ${.PREFIX}.o 239 240# Lex 241.l: 242 ${LEX.l} ${.IMPSRC} 243 ${LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll 244 rm -f lex.yy.c 245.l.c: 246 ${LEX.l} ${.IMPSRC} 247 mv lex.yy.c ${.TARGET} 248.l.o: 249 ${LEX.l} ${.IMPSRC} 250 ${COMPILE.c} -o ${.TARGET} lex.yy.c 251 rm -f lex.yy.c 252 253# Yacc 254.y: 255 ${YACC.y} ${.IMPSRC} 256 ${LINK.c} -o ${.TARGET} y.tab.c ${LDLIBS} 257 rm -f y.tab.c 258.y.c: 259 ${YACC.y} ${.IMPSRC} 260 mv y.tab.c ${.TARGET} 261.y.o: 262 ${YACC.y} ${.IMPSRC} 263 ${COMPILE.c} -o ${.TARGET} y.tab.c 264 rm -f y.tab.c 265 266# Shell 267.sh: 268 rm -f ${.TARGET} 269 cp ${.IMPSRC} ${.TARGET} 270 chmod a+x ${.TARGET} 271