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