1# $NetBSD: sys.mk,v 1.136 2018/07/10 23:25:27 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 8unix?= We run NetBSD. 9 10.SUFFIXES: .a .o .ln .s .S .c .cc .cpp .cxx .C .f .F .r .p .l .y .sh 11 12.LIBS: .a 13 14AR?= ar 15ARFLAGS?= rl 16RANLIB?= ranlib 17 18AS?= as 19AFLAGS?= 20COMPILE.s?= ${CC} ${AFLAGS} ${AFLAGS.${<:T}} -c 21LINK.s?= ${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${LDFLAGS} 22_ASM_TRADITIONAL_CPP= -x assembler-with-cpp 23COMPILE.S?= ${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${CPPFLAGS} ${_ASM_TRADITIONAL_CPP} -c 24LINK.S?= ${CC} ${AFLAGS} ${AFLAGS.${<:T}} ${CPPFLAGS} ${LDFLAGS} 25 26CC?= cc 27.if ${MACHINE_ARCH} == "sh3el" || ${MACHINE_ARCH} == "sh3eb" 28# -O2 is too -falign-* zealous for low-memory sh3 machines 29DBG?= -Os -freorder-blocks 30.elif ${MACHINE_ARCH} == "m68k" || ${MACHINE_ARCH} == "m68000" 31# -freorder-blocks (enabled by -O2) produces much bigger code 32DBG?= -O2 -fno-reorder-blocks 33.elif ${MACHINE_ARCH} == "coldfire" 34DBG?= -O1 35.elif !empty(MACHINE_ARCH:Maarch64*) 36DBG?= -O2 ${"${.TARGET:M*.po}" == "":? -fomit-frame-pointer:} 37.else 38DBG?= -O2 39.endif 40.if ${MKDTRACE:Uno} != "no" 41DTRACE_OPTS?= -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-ipa-sra -fno-ipa-icf 42.endif 43CFLAGS?= ${DBG} 44LDFLAGS?= 45COMPILE.c?= ${CC} ${CFLAGS} ${DTRACE_OPTS} ${CPPFLAGS} -c 46LINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} 47 48# C Type Format data is required for DTrace 49CTFFLAGS ?= -g -L VERSION 50CTFMFLAGS ?= -t -g -L VERSION 51 52CXX?= c++ 53# Strip flags unsupported by C++ compilers 54# Remove -Wsystem-headers because C++ headers aren't clean of warnings 55CXXFLAGS?= ${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:N-Wsystem-headers} 56 57# Use the sources, as the seed... Normalize all paths... 58__ALLSRC1= ${empty(DESTDIR):?${.ALLSRC}:${.ALLSRC:S|^${DESTDIR}|^destdir|}} 59__ALLSRC2= ${empty(MAKEOBJDIR):?${__ALLSRC1}:${__ALLSRC1:S|^${MAKEOBJDIR}|^obj|}} 60__ALLSRC3= ${empty(NETBSDSRCDIR):?${__ALLSRC2}:${__ALLSRC2:S|^${NETBSDSRCDIR}|^src|}} 61__ALLSRC4= ${empty(X11SRCDIR):?${__ALLSRC3}:${__ALLSRC3:S|^${X11SRCDIR}|^xsrc|}} 62# Skip paths that contain relative components and can't be normalized, sort.. 63__INITSEED= ${__ALLSRC4:N*/../*:O} 64 65__BUILDSEED= ${BUILDSEED}/${__INITSEED}/${.TARGET} 66_CXXSEED?= ${BUILDSEED:D-frandom-seed=${__BUILDSEED:hash}} 67 68COMPILE.cc?= echo "random-seed is ${__BUILDSEED}"; ${CXX} ${_CXXSEED} ${CXXFLAGS} ${DTRACE_OPTS} ${CPPFLAGS} -c 69LINK.cc?= echo "random-seed is ${__BUILDSEED}"; ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS} 70 71OBJC?= ${CC} 72OBJCFLAGS?= ${CFLAGS} 73COMPILE.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c 74LINK.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS} 75 76CPP?= cpp 77CPPFLAGS?= 78 79FC?= f77 80FFLAGS?= -O 81RFLAGS?= 82COMPILE.f?= ${FC} ${FFLAGS} -c 83LINK.f?= ${FC} ${FFLAGS} ${LDFLAGS} 84COMPILE.F?= ${FC} ${FFLAGS} ${CPPFLAGS} -c 85LINK.F?= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS} 86COMPILE.r?= ${FC} ${FFLAGS} ${RFLAGS} -c 87LINK.r?= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS} 88 89INSTALL?= install 90 91LD?= ld 92 93LEX?= lex 94LFLAGS?= 95LEX.l?= ${LEX} ${LFLAGS} 96 97LINT?= lint 98LINTFLAGS?= -chapbxzgFS 99 100LORDER?= lorder 101 102MAKE?= make 103 104NM?= nm 105 106PC?= pc 107PFLAGS?= 108COMPILE.p?= ${PC} ${PFLAGS} ${CPPFLAGS} -c 109LINK.p?= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS} 110 111SHELL?= sh 112 113SIZE?= size 114 115TSORT?= tsort -q 116 117YACC?= yacc 118YFLAGS?= 119YACC.y?= ${YACC} ${YFLAGS} 120 121# C 122.c: 123 ${LINK.c} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 124# XXX: disable for now 125# ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 126.c.o: 127 ${COMPILE.c} ${.IMPSRC} 128 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 129.c.a: 130 ${COMPILE.c} ${.IMPSRC} 131 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 132 rm -f ${.PREFIX}.o 133.c.ln: 134 ${LINT} ${LINTFLAGS} \ 135 ${CPPFLAGS:C/-([IDU])[ ]*/-\1/Wg:M-[IDU]*} \ 136 -i ${.IMPSRC} 137 138# C++ 139.cc .cpp .cxx .C: 140 ${LINK.cc} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 141.cc.o .cpp.o .cxx.o .C.o: 142 ${COMPILE.cc} ${.IMPSRC} 143.cc.a .cpp.a .cxx.a .C.a: 144 ${COMPILE.cc} ${.IMPSRC} 145 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 146 rm -f ${.PREFIX}.o 147 148# Fortran/Ratfor 149.f: 150 ${LINK.f} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 151.f.o: 152 ${COMPILE.f} ${.IMPSRC} 153 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 154.f.a: 155 ${COMPILE.f} ${.IMPSRC} 156 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 157 rm -f ${.PREFIX}.o 158 159.F: 160 ${LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 161 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 162.F.o: 163 ${COMPILE.F} ${.IMPSRC} 164 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 165.F.a: 166 ${COMPILE.F} ${.IMPSRC} 167 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 168 rm -f ${.PREFIX}.o 169 170.r: 171 ${LINK.r} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 172.r.o: 173 ${COMPILE.r} ${.IMPSRC} 174 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 175.r.a: 176 ${COMPILE.r} ${.IMPSRC} 177 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 178 rm -f ${.PREFIX}.o 179 180# Pascal 181.p: 182 ${LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 183 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 184.p.o: 185 ${COMPILE.p} ${.IMPSRC} 186 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 187.p.a: 188 ${COMPILE.p} ${.IMPSRC} 189 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 190 rm -f ${.PREFIX}.o 191 192# Assembly 193.s: 194 ${LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 195 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 196.s.o: 197 ${COMPILE.s} ${.IMPSRC} 198 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 199.s.a: 200 ${COMPILE.s} ${.IMPSRC} 201 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 202 rm -f ${.PREFIX}.o 203.S: 204 ${LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 205 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 206.S.o: 207 ${COMPILE.S} ${.IMPSRC} 208 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 209.S.a: 210 ${COMPILE.S} ${.IMPSRC} 211 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 212 rm -f ${.PREFIX}.o 213 214# Lex 215.l: 216 ${LEX.l} ${.IMPSRC} 217 ${LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll 218 rm -f lex.yy.c 219.l.c: 220 ${LEX.l} ${.IMPSRC} 221 mv lex.yy.c ${.TARGET} 222.l.o: 223 ${LEX.l} ${.IMPSRC} 224 ${COMPILE.c} -o ${.TARGET} lex.yy.c 225 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 226 rm -f lex.yy.c 227 228# Yacc 229.y: 230 ${YACC.y} ${.IMPSRC} 231 ${LINK.c} -o ${.TARGET} y.tab.c ${LDLIBS} 232 rm -f y.tab.c 233.y.c: 234 ${YACC.y} ${.IMPSRC} 235 mv y.tab.c ${.TARGET} 236.y.o: 237 ${YACC.y} ${.IMPSRC} 238 ${COMPILE.c} -o ${.TARGET} y.tab.c 239 ${defined(CTFCONVERT):?${CTFCONVERT} ${CTFFLAGS} ${.TARGET}:} 240 rm -f y.tab.c 241 242# Shell 243.sh: 244 rm -f ${.TARGET} 245 cp ${.IMPSRC} ${.TARGET} 246 chmod a+x ${.TARGET} 247