1# $NetBSD: sys.mk,v 1.124 2014/04/18 00:37:46 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# see src/doc/HACKS for details 32DBG?= -Os 33.elif ${MACHINE_ARCH} == "coldfire" 34DBG?= -O1 35.elif ${MACHINE_ARCH} == "vax" 36DBG?= -O1 -fgcse -fstrength-reduce -fgcse-after-reload 37.else 38DBG?= -O2 39.endif 40CFLAGS?= ${DBG} 41LDFLAGS?= 42COMPILE.c?= ${CC} ${CFLAGS} ${CPPFLAGS} -c 43LINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} 44 45# C Type Format data is required for DTrace 46CTFFLAGS ?= -g -L VERSION 47# Use only one thread for now. 48CTFMFLAGS ?= -S 1 -g -t -L VERSION 49 50# We have to define these here, because if we don't the rules below will 51# not work 52CTFCONVERT ?= : ctfconvert 53CTFMERGE ?= : ctfmerge 54 55CXX?= c++ 56CXXFLAGS?= ${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} 57 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__BUILDSEED= ${BUILDSEED}/${__ALLSRC3:O}/${.TARGET} 62_CXXSEED?= ${BUILDSEED:D-frandom-seed=${__BUILDSEED:hash}} 63 64COMPILE.cc?= ${CXX} ${_CXXSEED} ${CXXFLAGS} ${CPPFLAGS} -c 65LINK.cc?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS} 66 67OBJC?= ${CC} 68OBJCFLAGS?= ${CFLAGS} 69COMPILE.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c 70LINK.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS} 71 72CPP?= cpp 73CPPFLAGS?= 74 75FC?= f77 76FFLAGS?= -O 77RFLAGS?= 78COMPILE.f?= ${FC} ${FFLAGS} -c 79LINK.f?= ${FC} ${FFLAGS} ${LDFLAGS} 80COMPILE.F?= ${FC} ${FFLAGS} ${CPPFLAGS} -c 81LINK.F?= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS} 82COMPILE.r?= ${FC} ${FFLAGS} ${RFLAGS} -c 83LINK.r?= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS} 84 85INSTALL?= install 86 87LD?= ld 88 89LEX?= lex 90LFLAGS?= 91LEX.l?= ${LEX} ${LFLAGS} 92 93LINT?= lint 94LINTFLAGS?= -chapbxzgFS 95 96LORDER?= lorder 97 98MAKE?= make 99 100NM?= nm 101 102PC?= pc 103PFLAGS?= 104COMPILE.p?= ${PC} ${PFLAGS} ${CPPFLAGS} -c 105LINK.p?= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS} 106 107SHELL?= sh 108 109SIZE?= size 110 111TSORT?= tsort -q 112 113YACC?= yacc 114YFLAGS?= 115YACC.y?= ${YACC} ${YFLAGS} 116 117# C 118.c: 119 ${LINK.c} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 120# XXX: disable for now 121# ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 122.c.o: 123 ${COMPILE.c} ${.IMPSRC} 124 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 125.c.a: 126 ${COMPILE.c} ${.IMPSRC} 127 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 128 rm -f ${.PREFIX}.o 129.c.ln: 130 ${LINT} ${LINTFLAGS} \ 131 ${CPPFLAGS:C/-([IDU])[ ]*/-\1/Wg:M-[IDU]*} \ 132 -i ${.IMPSRC} 133 134# C++ 135.cc .cpp .cxx .C: 136 ${LINK.cc} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 137.cc.o .cpp.o .cxx.o .C.o: 138 ${COMPILE.cc} ${.IMPSRC} 139.cc.a .cpp.a .cxx.a .C.a: 140 ${COMPILE.cc} ${.IMPSRC} 141 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 142 rm -f ${.PREFIX}.o 143 144# Fortran/Ratfor 145.f: 146 ${LINK.f} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 147.f.o: 148 ${COMPILE.f} ${.IMPSRC} 149 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 150.f.a: 151 ${COMPILE.f} ${.IMPSRC} 152 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 153 rm -f ${.PREFIX}.o 154 155.F: 156 ${LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 157 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 158.F.o: 159 ${COMPILE.F} ${.IMPSRC} 160 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 161.F.a: 162 ${COMPILE.F} ${.IMPSRC} 163 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 164 rm -f ${.PREFIX}.o 165 166.r: 167 ${LINK.r} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 168.r.o: 169 ${COMPILE.r} ${.IMPSRC} 170 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 171.r.a: 172 ${COMPILE.r} ${.IMPSRC} 173 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 174 rm -f ${.PREFIX}.o 175 176# Pascal 177.p: 178 ${LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 179 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 180.p.o: 181 ${COMPILE.p} ${.IMPSRC} 182 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 183.p.a: 184 ${COMPILE.p} ${.IMPSRC} 185 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 186 rm -f ${.PREFIX}.o 187 188# Assembly 189.s: 190 ${LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 191 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 192.s.o: 193 ${COMPILE.s} ${.IMPSRC} 194 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 195.s.a: 196 ${COMPILE.s} ${.IMPSRC} 197 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 198 rm -f ${.PREFIX}.o 199.S: 200 ${LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 201 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 202.S.o: 203 ${COMPILE.S} ${.IMPSRC} 204 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 205.S.a: 206 ${COMPILE.S} ${.IMPSRC} 207 ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o 208 rm -f ${.PREFIX}.o 209 210# Lex 211.l: 212 ${LEX.l} ${.IMPSRC} 213 ${LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll 214 rm -f lex.yy.c 215.l.c: 216 ${LEX.l} ${.IMPSRC} 217 mv lex.yy.c ${.TARGET} 218.l.o: 219 ${LEX.l} ${.IMPSRC} 220 ${COMPILE.c} -o ${.TARGET} lex.yy.c 221 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 222 rm -f lex.yy.c 223 224# Yacc 225.y: 226 ${YACC.y} ${.IMPSRC} 227 ${LINK.c} -o ${.TARGET} y.tab.c ${LDLIBS} 228 rm -f y.tab.c 229.y.c: 230 ${YACC.y} ${.IMPSRC} 231 mv y.tab.c ${.TARGET} 232.y.o: 233 ${YACC.y} ${.IMPSRC} 234 ${COMPILE.c} -o ${.TARGET} y.tab.c 235 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 236 rm -f y.tab.c 237 238# Shell 239.sh: 240 rm -f ${.TARGET} 241 cp ${.IMPSRC} ${.TARGET} 242 chmod a+x ${.TARGET} 243