login: SIGINT should interrupt motd printing
[unleashed.git] / bin / bmake / mk / sys / Generic.mk
blobacf78329cf841525f0f4514e6a97aade24eb8c4b
1 # $Id: Generic.mk,v 1.12 2016/03/22 20:45:14 sjg Exp $
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
8 .LIBS: .a
10 tools = \
11 ar \
12 lorder \
13 ranlib \
14 tsort
16 .for t in ${tools}
17 ${t:tu} := ${t:${M_whence}}
18 .endfor
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
26 .if !empty(TSORT)
27 TSORT += -q
28 .endif
30 ARFLAGS?= rl
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}
42 CC?= cc
43 DBG?= -O2
44 CFLAGS?= ${DBG}
45 COMPILE.c?= ${CC} ${CFLAGS} ${CPPFLAGS} -c
46 LINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
48 CXX?= c++
49 CXXFLAGS?= ${CFLAGS}
50 COMPILE.cc?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c
51 LINK.cc?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
53 OBJC?= ${CC}
54 OBJCFLAGS?= ${CFLAGS}
55 COMPILE.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c
56 LINK.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS}
58 CPP?= cpp
59 CPPFLAGS?=
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}
71 INSTALL?= install
73 LEX?= lex
74 LFLAGS?=
75 LEX.l?= ${LEX} ${LFLAGS}
77 LD?= ld
78 LDFLAGS?=
80 LINT?= lint
81 LINTFLAGS?= -chapbxzF
83 MAKE?= ${.MAKE}
85 NM?= nm
87 PC?= pc
88 PFLAGS?=
89 COMPILE.p?= ${PC} ${PFLAGS} ${CPPFLAGS} -c
90 LINK.p?= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
92 SHELL?= sh
94 SIZE?= size
96 YACC?= yacc
97 YFLAGS?=
98 YACC.y?= ${YACC} ${YFLAGS}
102 ${LINK.c} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
103 .c.o:
104 ${COMPILE.c} ${.IMPSRC}
105 .c.a:
106 ${COMPILE.c} ${.IMPSRC}
107 ${AR} ${ARFLAGS} $@ $*.o
108 rm -f $*.o
109 .c.ln:
110 ${LINT} ${LINTFLAGS} ${CPPFLAGS:M-[IDU]*} -i ${.IMPSRC}
112 # C++
113 ${CXX_SUFFIXES}:
114 ${LINK.cc} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
115 ${CXX_SUFFIXES:%=%.o}:
116 ${COMPILE.cc} ${.IMPSRC}
117 ${CXX_SUFFIXES:%=%.a}:
118 ${COMPILE.cc} ${.IMPSRC}
119 ${AR} ${ARFLAGS} $@ $*.o
120 rm -f $*.o
122 # Fortran/Ratfor
124 ${LINK.f} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
125 .f.o:
126 ${COMPILE.f} ${.IMPSRC}
127 .f.a:
128 ${COMPILE.f} ${.IMPSRC}
129 ${AR} ${ARFLAGS} $@ $*.o
130 rm -f $*.o
133 ${LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
134 .F.o:
135 ${COMPILE.F} ${.IMPSRC}
136 .F.a:
137 ${COMPILE.F} ${.IMPSRC}
138 ${AR} ${ARFLAGS} $@ $*.o
139 rm -f $*.o
142 ${LINK.r} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
143 .r.o:
144 ${COMPILE.r} ${.IMPSRC}
145 .r.a:
146 ${COMPILE.r} ${.IMPSRC}
147 ${AR} ${ARFLAGS} $@ $*.o
148 rm -f $*.o
150 # Pascal
152 ${LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
153 .p.o:
154 ${COMPILE.p} ${.IMPSRC}
155 .p.a:
156 ${COMPILE.p} ${.IMPSRC}
157 ${AR} ${ARFLAGS} $@ $*.o
158 rm -f $*.o
160 # Assembly
162 ${LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
163 .s.o:
164 ${COMPILE.s} ${.IMPSRC}
165 .s.a:
166 ${COMPILE.s} ${.IMPSRC}
167 ${AR} ${ARFLAGS} $@ $*.o
168 rm -f $*.o
170 ${LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
171 .S.o:
172 ${COMPILE.S} ${.IMPSRC}
173 .S.a:
174 ${COMPILE.S} ${.IMPSRC}
175 ${AR} ${ARFLAGS} $@ $*.o
176 rm -f $*.o
178 # Lex
180 ${LEX.l} ${.IMPSRC}
181 ${LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll
182 rm -f lex.yy.c
183 .l.c:
184 ${LEX.l} ${.IMPSRC}
185 mv lex.yy.c ${.TARGET}
186 .l.o:
187 ${LEX.l} ${.IMPSRC}
188 ${COMPILE.c} -o ${.TARGET} lex.yy.c
189 rm -f lex.yy.c
191 # Yacc
193 ${YACC.y} ${.IMPSRC}
194 ${LINK.c} -o ${.TARGET} y.tab.c ${LDLIBS}
195 rm -f y.tab.c
196 .y.c:
197 ${YACC.y} ${.IMPSRC}
198 mv y.tab.c ${.TARGET}
199 .y.o:
200 ${YACC.y} ${.IMPSRC}
201 ${COMPILE.c} -o ${.TARGET} y.tab.c
202 rm -f y.tab.c
204 # Shell
205 .sh:
206 rm -f ${.TARGET}
207 cp ${.IMPSRC} ${.TARGET}