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