]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/bmake/mk/sys/Generic.mk
Update to bmake-20200710
[FreeBSD/FreeBSD.git] / contrib / bmake / mk / sys / Generic.mk
1 #       $Id: Generic.mk,v 1.16 2020/06/29 14:34:42 sjg Exp $
2 #
3
4 # some reasonable defaults
5 .SUFFIXES: .out .a .ln .o .s .S .c ${CXX_SUFFIXES} .F .f .r .y .l .cl .p .h
6 .SUFFIXES: .sh .m4
7
8 .LIBS:          .a
9
10 tools  ?= \
11         ar \
12         lorder \
13         ranlib \
14         tsort
15
16 .for t in ${tools}
17 ${t:tu} := ${t:${M_whence}}
18 .endfor
19
20 # need to make sure this is set
21 MACHINE_ARCH.${MACHINE} ?= ${MACHINE}
22 .if empty(MACHINE_ARCH)
23 MACHINE_ARCH = ${MACHINE_ARCH.${MACHINE}}
24 .endif
25
26 .if !empty(TSORT)
27 TSORT += -q
28 .endif
29
30 ARFLAGS ?=      rl
31
32 AS ?=           as
33 AFLAGS ?=
34 .if ${MACHINE_ARCH} == "sparc64" 
35 AFLAGS+= -Wa,-Av9a
36 .endif
37 COMPILE.s ?=    ${CC} ${AFLAGS} -c
38 LINK.s ?=       ${CC} ${AFLAGS} ${LDFLAGS}
39 COMPILE.S ?=    ${CC} ${AFLAGS} ${CPPFLAGS} -c -traditional-cpp
40 LINK.S ?=       ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
41
42 CC ?=           cc
43 DBG ?=          -O2
44 CFLAGS ?=       ${DBG}
45 COMPILE.c ?=    ${CC} ${CFLAGS} ${CPPFLAGS} -c
46 LINK.c ?=       ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
47
48 CXX ?=          c++
49 CXXFLAGS ?=     ${CFLAGS}
50 COMPILE.cc ?=   ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c
51 LINK.cc ?=      ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
52
53 OBJC ?=         ${CC}
54 OBJCFLAGS ?=    ${CFLAGS}
55 COMPILE.m ?=    ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c
56 LINK.m ?=       ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS}
57
58 CPP ?=          cpp
59 CPPFLAGS ?=     
60
61 FC ?=           f77
62 FFLAGS ?=       -O
63 RFLAGS ?=
64 COMPILE.f ?=    ${FC} ${FFLAGS} -c
65 LINK.f ?=       ${FC} ${FFLAGS} ${LDFLAGS}
66 COMPILE.F ?=    ${FC} ${FFLAGS} ${CPPFLAGS} -c
67 LINK.F ?=       ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
68 COMPILE.r ?=    ${FC} ${FFLAGS} ${RFLAGS} -c
69 LINK.r ?=       ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
70
71 INSTALL ?=      install
72
73 LEX ?=          lex
74 LFLAGS ?=
75 LEX.l ?=                ${LEX} ${LFLAGS}
76
77 LD ?=           ld
78 LDFLAGS ?=
79
80 LINT ?=         lint
81 LINTFLAGS ?=    -chapbxzF
82
83 NM ?=           nm
84
85 PC ?=           pc
86 PFLAGS ?=
87 COMPILE.p ?=    ${PC} ${PFLAGS} ${CPPFLAGS} -c
88 LINK.p ?=       ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
89
90 SIZE ?=         size
91
92 YACC ?=         yacc
93 YFLAGS ?=
94 YACC.y ?=       ${YACC} ${YFLAGS}
95
96 # C
97 .c:
98         ${LINK.c} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
99 .c.o:
100         ${COMPILE.c} ${.IMPSRC}
101 .c.a:
102         ${COMPILE.c} ${.IMPSRC}
103         ${AR} ${ARFLAGS} $@ $*.o
104         rm -f $*.o
105 .c.ln:
106         ${LINT} ${LINTFLAGS} ${CPPFLAGS:M-[IDU]*} -i ${.IMPSRC}
107
108 # C++
109 ${CXX_SUFFIXES}:
110         ${LINK.cc} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
111 ${CXX_SUFFIXES:%=%.o}:
112         ${COMPILE.cc} ${.IMPSRC}
113 ${CXX_SUFFIXES:%=%.a}:
114         ${COMPILE.cc} ${.IMPSRC}
115         ${AR} ${ARFLAGS} $@ $*.o
116         rm -f $*.o
117
118 # Fortran/Ratfor
119 .f:
120         ${LINK.f} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
121 .f.o:
122         ${COMPILE.f} ${.IMPSRC}
123 .f.a:
124         ${COMPILE.f} ${.IMPSRC}
125         ${AR} ${ARFLAGS} $@ $*.o
126         rm -f $*.o
127
128 .F:
129         ${LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
130 .F.o:
131         ${COMPILE.F} ${.IMPSRC}
132 .F.a:
133         ${COMPILE.F} ${.IMPSRC}
134         ${AR} ${ARFLAGS} $@ $*.o
135         rm -f $*.o
136
137 .r:
138         ${LINK.r} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
139 .r.o:
140         ${COMPILE.r} ${.IMPSRC}
141 .r.a:
142         ${COMPILE.r} ${.IMPSRC}
143         ${AR} ${ARFLAGS} $@ $*.o
144         rm -f $*.o
145
146 # Pascal
147 .p:
148         ${LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
149 .p.o:
150         ${COMPILE.p} ${.IMPSRC}
151 .p.a:
152         ${COMPILE.p} ${.IMPSRC}
153         ${AR} ${ARFLAGS} $@ $*.o
154         rm -f $*.o
155
156 # Assembly
157 .s:
158         ${LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
159 .s.o:
160         ${COMPILE.s} ${.IMPSRC}
161 .s.a:
162         ${COMPILE.s} ${.IMPSRC}
163         ${AR} ${ARFLAGS} $@ $*.o
164         rm -f $*.o
165 .S:
166         ${LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
167 .S.o:
168         ${COMPILE.S} ${.IMPSRC}
169 .S.a:
170         ${COMPILE.S} ${.IMPSRC}
171         ${AR} ${ARFLAGS} $@ $*.o
172         rm -f $*.o
173
174 # Lex
175 .l:
176         ${LEX.l} ${.IMPSRC}
177         ${LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll
178         rm -f lex.yy.c
179 .l.c:
180         ${LEX.l} ${.IMPSRC}
181         mv lex.yy.c ${.TARGET}
182 .l.o:
183         ${LEX.l} ${.IMPSRC}
184         ${COMPILE.c} -o ${.TARGET} lex.yy.c 
185         rm -f lex.yy.c
186
187 # Yacc
188 .y:
189         ${YACC.y} ${.IMPSRC}
190         ${LINK.c} -o ${.TARGET} y.tab.c ${LDLIBS}
191         rm -f y.tab.c
192 .y.c:
193         ${YACC.y} ${.IMPSRC}
194         mv y.tab.c ${.TARGET}
195 .y.o:
196         ${YACC.y} ${.IMPSRC}
197         ${COMPILE.c} -o ${.TARGET} y.tab.c
198         rm -f y.tab.c
199
200 # Shell
201 .sh:
202         rm -f ${.TARGET}
203         cp ${.IMPSRC} ${.TARGET}
204