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