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