1# $NetBSD: sys.mk,v 1.118 2013/11/01 17:07:37 christos Exp $ 2# @(#)sys.mk 8.2 (Berkeley) 3/21/94 3# 4# This file contains the basic rules for make(1) and is read first 5# Do not put conditionals that are set on different files here and 6# expect them to work. 7 8# This variable should be used to differentiate Minix builds in Makefiles. 9__MINIX= yes 10 11.if !defined(__MINIX) 12unix?= We run NetBSD. 13 14.SUFFIXES: .a .o .ln .s .S .c .cc .cpp .cxx .C .f .F .r .p .l .y .sh 15.else 16unix?= We run MINIX. 17 18.SUFFIXES: .a .o .bc .ln .s .S .c .cc .cpp .cxx .C .f .F .r .p .l .y .sh 19 20.if ${MKSMALL:U} == "yes" 21CPPFLAGS+= -DNDEBUG 22DBG= -Os 23.endif 24 25#LSC: Be a bit smarter about the default compiler 26.if exists(/usr/pkg/bin/clang) || exists(/usr/bin/clang) 27CC?= clang 28.endif 29 30.if exists(/usr/pkg/bin/gcc) || exists(/usr/bin/gcc) 31CC?= gcc 32.endif 33.endif # defined(__MINIX) 34 35.LIBS: .a 36 37AR?= ar 38ARFLAGS?= rl 39RANLIB?= ranlib 40 41AS?= as 42AFLAGS?= 43COMPILE.s?= ${CC} ${AFLAGS} ${AFLAGS.${<:T}} -c 44LINK.s?= ${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${LDFLAGS} 45#_ASM_TRADITIONAL_CPP= -x assembler-with-cpp 46_ASM_TRADITIONAL_CPP= 47COMPILE.S?= ${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${CPPFLAGS} ${_ASM_TRADITIONAL_CPP} -c 48LINK.S?= ${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${CPPFLAGS} ${LDFLAGS} 49 50CC?= cc 51.if ${MACHINE_ARCH} == "sh3el" || ${MACHINE_ARCH} == "sh3eb" 52# -O2 is too -falign-* zealous for low-memory sh3 machines 53DBG?= -Os -freorder-blocks 54.elif ${MACHINE_ARCH} == "m68k" || ${MACHINE_ARCH} == "m68000" 55# see src/doc/HACKS for details 56DBG?= -Os 57.elif ${MACHINE_ARCH} == "coldfire" 58DBG?= -O1 59.elif ${MACHINE_ARCH} == "vax" 60DBG?= -O1 -fgcse -fstrength-reduce -fgcse-after-reload 61.else 62DBG?= -O2 63.endif 64.if !defined(__MINIX) 65CFLAGS?= ${DBG} 66.else 67CFLAGS+= ${DBG} 68.endif # !defined(__MINIX) 69LDFLAGS?= 70COMPILE.c?= ${CC} ${CFLAGS} ${CPPFLAGS} -c 71LINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} 72 73# C Type Format data is required for DTrace 74CTFFLAGS ?= -g -L VERSION 75CTFMFLAGS ?= -g -t -L VERSION 76 77# We don't define these here, we let the bsd.own.mk to do it 78#CTFCONVERT ?= ctfconvert 79#CTFMERGE ?= ctfmerge 80 81CXX?= c++ 82CXXFLAGS?= ${CFLAGS:N-Wno-traditional:N-Wstrict-prototypes:N-Wmissing-prototypes:N-Wno-pointer-sign:N-ffreestanding:N-std=gnu[0-9][0-9]:N-Wold-style-definition:N-Wno-format-zero-length} 83 84__ALLSRC1= ${empty(DESTDIR):?${.ALLSRC}:${.ALLSRC:S|^${DESTDIR}|^destdir|}} 85__ALLSRC2= ${empty(MAKEOBJDIR):?${__ALLSRC1}:${__ALLSRC1:S|^${MAKEOBJDIR}|^obj|}} 86__ALLSRC3= ${empty(NETBSDSRCDIR):?${__ALLSRC2}:${__ALLSRC2:S|^${NETBSDSRCDIR}|^src|}} 87__BUILDSEED= ${BUILDSEED}/${__ALLSRC3:O}/${.TARGET} 88_CXXSEED?= ${BUILDSEED:D-frandom-seed=${__BUILDSEED:hash}} 89 90COMPILE.cc?= ${CXX} ${_CXXSEED} ${CXXFLAGS} ${CPPFLAGS} -c 91LINK.cc?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS} 92 93OBJC?= ${CC} 94OBJCFLAGS?= ${CFLAGS} 95COMPILE.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c 96LINK.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS} 97 98CPP?= cpp 99CPPFLAGS?= 100 101FC?= f77 102FFLAGS?= -O 103RFLAGS?= 104COMPILE.f?= ${FC} ${FFLAGS} -c 105LINK.f?= ${FC} ${FFLAGS} ${LDFLAGS} 106COMPILE.F?= ${FC} ${FFLAGS} ${CPPFLAGS} -c 107LINK.F?= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS} 108COMPILE.r?= ${FC} ${FFLAGS} ${RFLAGS} -c 109LINK.r?= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS} 110 111INSTALL?= install 112 113LD?= ld 114 115LEX?= lex 116LFLAGS?= 117LEX.l?= ${LEX} ${LFLAGS} 118 119LINT?= lint 120LINTFLAGS?= -chapbxzFS 121 122LORDER?= lorder 123 124MAKE?= make 125 126NM?= nm 127 128PC?= pc 129PFLAGS?= 130COMPILE.p?= ${PC} ${PFLAGS} ${CPPFLAGS} -c 131LINK.p?= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS} 132 133SHELL?= sh 134 135SIZE?= size 136 137TSORT?= tsort -q 138 139YACC?= yacc 140YFLAGS?= 141YACC.y?= ${YACC} ${YFLAGS} 142 143# C 144.c: 145 ${LINK.c} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 146.if defined(CTFCONVERT) 147 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 148.endif 149.c.o: 150 ${COMPILE.c} ${.IMPSRC} 151.if defined(CTFCONVERT) 152 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 153.endif 154.c.a: 155 ${COMPILE.c} ${.IMPSRC} 156 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 157 rm -f ${.PREFIX}.o 158.c.ln: 159 ${LINT} ${LINTFLAGS} \ 160 ${CPPFLAGS:C/-([IDU])[ ]*/-\1/Wg:M-[IDU]*} \ 161 -i ${.IMPSRC} 162 163# C++ 164.cc .cpp .cxx .C: 165 ${LINK.cc} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 166.cc.o .cpp.o .cxx.o .C.o: 167 ${COMPILE.cc} ${.IMPSRC} 168.cc.a .cpp.a .cxx.a .C.a: 169 ${COMPILE.cc} ${.IMPSRC} 170 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 171 rm -f ${.PREFIX}.o 172 173# Fortran/Ratfor 174.f: 175 ${LINK.f} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 176.f.o: 177 ${COMPILE.f} ${.IMPSRC} 178.if defined(CTFCONVERT) 179 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 180.endif 181.f.a: 182 ${COMPILE.f} ${.IMPSRC} 183 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 184 rm -f ${.PREFIX}.o 185 186.F: 187 ${LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 188.if defined(CTFCONVERT) 189 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 190.endif 191.F.o: 192 ${COMPILE.F} ${.IMPSRC} 193.if defined(CTFCONVERT) 194 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 195.endif 196.F.a: 197 ${COMPILE.F} ${.IMPSRC} 198 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 199 rm -f ${.PREFIX}.o 200 201.r: 202 ${LINK.r} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 203.r.o: 204 ${COMPILE.r} ${.IMPSRC} 205.if defined(CTFCONVERT) 206 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 207.endif 208.r.a: 209 ${COMPILE.r} ${.IMPSRC} 210 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 211 rm -f ${.PREFIX}.o 212 213# Pascal 214.p: 215 ${LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 216.if defined(CTFCONVERT) 217 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 218.endif 219.p.o: 220 ${COMPILE.p} ${.IMPSRC} 221.if defined(CTFCONVERT) 222 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 223.endif 224.p.a: 225 ${COMPILE.p} ${.IMPSRC} 226 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 227 rm -f ${.PREFIX}.o 228 229# Assembly 230.s: 231 ${LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 232.if defined(CTFCONVERT) 233 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 234.endif 235.s.o: 236 ${COMPILE.s} ${.IMPSRC} 237.if defined(CTFCONVERT) 238 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 239.endif 240.s.a: 241 ${COMPILE.s} ${.IMPSRC} 242 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 243 rm -f ${.PREFIX}.o 244.S: 245 ${LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 246.if defined(CTFCONVERT) 247 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 248.endif 249.S.o: 250 ${COMPILE.S} ${.IMPSRC} 251.if defined(CTFCONVERT) 252 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 253.endif 254.S.a: 255 ${COMPILE.S} ${.IMPSRC} 256 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 257 rm -f ${.PREFIX}.o 258 259# Lex 260.l: 261 ${LEX.l} ${.IMPSRC} 262 ${LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll 263 rm -f lex.yy.c 264.l.c: 265 ${LEX.l} ${.IMPSRC} 266 mv lex.yy.c ${.TARGET} 267.l.o: 268 ${LEX.l} ${.IMPSRC} 269 ${COMPILE.c} -o ${.TARGET} lex.yy.c 270.if defined(CTFCONVERT) 271 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 272.endif 273 rm -f lex.yy.c 274 275# Yacc 276.y: 277 ${YACC.y} ${.IMPSRC} 278 ${LINK.c} -o ${.TARGET} y.tab.c ${LDLIBS} 279 rm -f y.tab.c 280.y.c: 281 ${YACC.y} ${.IMPSRC} 282 mv y.tab.c ${.TARGET} 283.y.o: 284 ${YACC.y} ${.IMPSRC} 285 ${COMPILE.c} -o ${.TARGET} y.tab.c 286.if defined(CTFCONVERT) 287 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 288.endif 289 rm -f y.tab.c 290 291# Shell 292.sh: 293 rm -f ${.TARGET} 294 cp ${.IMPSRC} ${.TARGET} 295 chmod a+x ${.TARGET} 296