1# $NetBSD: sys.mk,v 1.128 2015/07/06 00:21:51 chs 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.if ${MKMAGIC:Uno} == "yes" || ${MKASR:Uno} == "yes" 26CPPFLAGS+= -D_MINIX_MAGIC=1 27STRIPFLAG= -s 28DBG=-g 29.endif 30 31#LSC: Be a bit smarter about the default compiler 32.if exists(/usr/pkg/bin/clang) || exists(/usr/bin/clang) 33CC?= clang 34.endif 35 36.if exists(/usr/pkg/bin/gcc) || exists(/usr/bin/gcc) 37CC?= gcc 38.endif 39.endif # defined(__MINIX) 40 41.LIBS: .a 42 43AR?= ar 44ARFLAGS?= rl 45RANLIB?= ranlib 46 47AS?= as 48AFLAGS?= 49COMPILE.s?= ${CC} ${AFLAGS} ${AFLAGS.${<:T}} -c 50LINK.s?= ${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${LDFLAGS} 51_ASM_TRADITIONAL_CPP= -x assembler-with-cpp 52COMPILE.S?= ${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${CPPFLAGS} ${_ASM_TRADITIONAL_CPP} -c 53LINK.S?= ${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${CPPFLAGS} ${LDFLAGS} 54 55CC?= cc 56.if ${MACHINE_ARCH} == "sh3el" || ${MACHINE_ARCH} == "sh3eb" 57# -O2 is too -falign-* zealous for low-memory sh3 machines 58DBG?= -Os -freorder-blocks 59.elif ${MACHINE_ARCH} == "m68k" || ${MACHINE_ARCH} == "m68000" 60# -freorder-blocks (enabled by -O2) produces much bigger code 61DBG?= -O2 -fno-reorder-blocks 62.elif ${MACHINE_ARCH} == "coldfire" 63DBG?= -O1 64.elif !empty(MACHINE_ARCH:Maarch64*) 65DBG?= -O2 ${"${.TARGET:M*.po}" == "":? -fomit-frame-pointer:} 66.elif ${MACHINE_ARCH} == "vax" 67DBG?= -O1 -fgcse -fstrength-reduce -fgcse-after-reload 68.else 69DBG?= -O2 70.endif 71.if !defined(__MINIX) 72CFLAGS?= ${DBG} 73.else 74CFLAGS+= ${DBG} 75.endif # !defined(__MINIX) 76LDFLAGS?= 77COMPILE.c?= ${CC} ${CFLAGS} ${CPPFLAGS} -c 78LINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} 79 80# C Type Format data is required for DTrace 81CTFFLAGS ?= -g -L VERSION 82CTFMFLAGS ?= -t -g -L VERSION 83 84CXX?= c++ 85CXXFLAGS?= ${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} 86 87__ALLSRC1= ${empty(DESTDIR):?${.ALLSRC}:${.ALLSRC:S|^${DESTDIR}|^destdir|}} 88__ALLSRC2= ${empty(MAKEOBJDIR):?${__ALLSRC1}:${__ALLSRC1:S|^${MAKEOBJDIR}|^obj|}} 89__ALLSRC3= ${empty(NETBSDSRCDIR):?${__ALLSRC2}:${__ALLSRC2:S|^${NETBSDSRCDIR}|^src|}} 90__BUILDSEED= ${BUILDSEED}/${__ALLSRC3:O}/${.TARGET} 91_CXXSEED?= ${BUILDSEED:D-frandom-seed=${__BUILDSEED:hash}} 92 93COMPILE.cc?= ${CXX} ${_CXXSEED} ${CXXFLAGS} ${CPPFLAGS} -c 94LINK.cc?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS} 95 96OBJC?= ${CC} 97OBJCFLAGS?= ${CFLAGS} 98COMPILE.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c 99LINK.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS} 100 101CPP?= cpp 102CPPFLAGS?= 103 104FC?= f77 105FFLAGS?= -O 106RFLAGS?= 107COMPILE.f?= ${FC} ${FFLAGS} -c 108LINK.f?= ${FC} ${FFLAGS} ${LDFLAGS} 109COMPILE.F?= ${FC} ${FFLAGS} ${CPPFLAGS} -c 110LINK.F?= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS} 111COMPILE.r?= ${FC} ${FFLAGS} ${RFLAGS} -c 112LINK.r?= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS} 113 114INSTALL?= install 115 116LD?= ld 117 118LEX?= lex 119LFLAGS?= 120LEX.l?= ${LEX} ${LFLAGS} 121 122LINT?= lint 123LINTFLAGS?= -chapbxzgFS 124 125LORDER?= lorder 126 127MAKE?= make 128 129NM?= nm 130 131PC?= pc 132PFLAGS?= 133COMPILE.p?= ${PC} ${PFLAGS} ${CPPFLAGS} -c 134LINK.p?= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS} 135 136SHELL?= sh 137 138SIZE?= size 139 140TSORT?= tsort -q 141 142YACC?= yacc 143YFLAGS?= 144YACC.y?= ${YACC} ${YFLAGS} 145 146# C 147.c: 148 ${LINK.c} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 149# XXX: disable for now 150# ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 151.c.o: 152 ${COMPILE.c} ${.IMPSRC} 153 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 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 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 179.f.a: 180 ${COMPILE.f} ${.IMPSRC} 181 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 182 rm -f ${.PREFIX}.o 183 184.F: 185 ${LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 186 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 187.F.o: 188 ${COMPILE.F} ${.IMPSRC} 189 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 190.F.a: 191 ${COMPILE.F} ${.IMPSRC} 192 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 193 rm -f ${.PREFIX}.o 194 195.r: 196 ${LINK.r} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 197.r.o: 198 ${COMPILE.r} ${.IMPSRC} 199 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 200.r.a: 201 ${COMPILE.r} ${.IMPSRC} 202 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 203 rm -f ${.PREFIX}.o 204 205# Pascal 206.p: 207 ${LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 208 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 209.p.o: 210 ${COMPILE.p} ${.IMPSRC} 211 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 212.p.a: 213 ${COMPILE.p} ${.IMPSRC} 214 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 215 rm -f ${.PREFIX}.o 216 217# Assembly 218.s: 219 ${LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 220 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 221.s.o: 222 ${COMPILE.s} ${.IMPSRC} 223 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 224.s.a: 225 ${COMPILE.s} ${.IMPSRC} 226 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 227 rm -f ${.PREFIX}.o 228.S: 229 ${LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 230 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 231.S.o: 232 ${COMPILE.S} ${.IMPSRC} 233 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 234.S.a: 235 ${COMPILE.S} ${.IMPSRC} 236 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 237 rm -f ${.PREFIX}.o 238 239# Lex 240.l: 241 ${LEX.l} ${.IMPSRC} 242 ${LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll 243 rm -f lex.yy.c 244.l.c: 245 ${LEX.l} ${.IMPSRC} 246 mv lex.yy.c ${.TARGET} 247.l.o: 248 ${LEX.l} ${.IMPSRC} 249 ${COMPILE.c} -o ${.TARGET} lex.yy.c 250 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 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 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 265 rm -f y.tab.c 266 267# Shell 268.sh: 269 rm -f ${.TARGET} 270 cp ${.IMPSRC} ${.TARGET} 271 chmod a+x ${.TARGET} 272