2 PUB_HEADERS = pub/libvex_basictypes.h \
5 pub/libvex_trc_values.h \
7 pub/libvex_guest_x86.h \
8 pub/libvex_guest_amd64.h \
9 pub/libvex_guest_arm.h \
10 pub/libvex_guest_ppc32.h \
11 pub/libvex_guest_ppc64.h \
12 pub/libvex_guest_s390x.h \
13 pub/libvex_s390x_common.h \
14 pub/libvex_guest_offsets.h
16 PRIV_HEADERS = priv/host_x86_defs.h \
17 priv/host_amd64_defs.h \
18 priv/host_arm_defs.h \
19 priv/host_ppc_defs.h \
20 priv/host_s390_defs.h \
21 priv/host_s390_disasm.h \
22 priv/host_generic_regs.h \
23 priv/host_generic_simd64.h \
24 priv/host_generic_simd128.h \
27 priv/guest_generic_x87.h \
28 priv/guest_generic_bb_to_IR.h \
29 priv/guest_x86_defs.h \
30 priv/guest_amd64_defs.h \
31 priv/guest_arm_defs.h \
32 priv/guest_ppc_defs.h \
36 LIB_OBJS = priv/ir_defs.o \
42 priv/host_x86_defs.o \
43 priv/host_amd64_defs.o \
44 priv/host_arm_defs.o \
45 priv/host_ppc_defs.o \
46 priv/host_s390_defs.o \
47 priv/host_x86_isel.o \
48 priv/host_amd64_isel.o \
49 priv/host_arm_isel.o \
50 priv/host_ppc_isel.o \
51 priv/host_s390_isel.o \
52 priv/host_s390_disasm.o \
53 priv/host_generic_regs.o \
54 priv/host_generic_simd64.o \
55 priv/host_generic_simd128.o \
56 priv/host_generic_reg_alloc2.o \
57 priv/guest_generic_x87.o \
58 priv/guest_generic_bb_to_IR.o \
59 priv/guest_x86_helpers.o \
60 priv/guest_amd64_helpers.o \
61 priv/guest_arm_helpers.o \
62 priv/guest_ppc_helpers.o \
63 priv/guest_s390_helpers.o \
64 priv/guest_x86_toIR.o \
65 priv/guest_amd64_toIR.o \
66 priv/guest_arm_toIR.o \
67 priv/guest_ppc_toIR.o \
68 priv/guest_s390_toIR.o
72 # Do not add any priv/host-ARCH or priv/guest-ARCH directories to this
73 # list, as they contain duplicate file names (each host has a hdefs.h,
75 PRIV_INCLUDES = -Ipriv
85 # Put -g -O2 after any flags we inherit from V. -O2 vs -O
86 # makes a significant difference, at least with gcc4.
87 CCFLAGS = -Wall -Wmissing-prototypes -Wshadow \
88 -Wpointer-arith -Wbad-function-cast -Wcast-qual \
89 -Wcast-align -Wmissing-declarations \
90 $(EXTRA_CFLAGS) -g -O2 -fstrict-aliasing
93 #CCFLAGS = -g -Wall -wd981 -wd279 -wd1287 -wd869 -wd111 -wd188 -wd186
94 # 981: operands are evaluated in unspecified order
95 # 279: controlling expression is constant
96 # 1287: invalid attribute for parameter
97 # 869: parameter "..." was never referenced
98 # 111: statement is unreachable
99 # 188: enumerated type mixed with another type
100 # (the above are for icc 8.0 -- 8.0.0.55 I think)
101 # 186: pointless comparison of unsigned integer with zero
103 # kludge: stops V biarch builds screwing up at -j 2 or above
104 # The Right fix is to autoconf/automake-ise vex.
109 # Empty, needed for Valgrind
114 vex: libvex.a test_main.o
115 $(CC) $(CCFLAGS) -o vex test_main.o libvex.a
117 libvex.a: $(LIB_OBJS)
119 $(AR) crus libvex.a $(LIB_OBJS)
122 # The idea with these TAG-s is to mark the flavour of libvex.a
123 # most recently built, so if the same target is re-requested, we
124 # don't rebuild everything, but if a different one is requested
125 # then we scrub everything and start over.
127 libvex-x86-linux.a: TAG-x86-linux libvex.a
128 mv -f libvex.a libvex-x86-linux.a
130 if [ ! -f TAG-x86-linux ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi
133 libvex-amd64-linux.a: TAG-amd64-linux libvex.a
134 mv -f libvex.a libvex-amd64-linux.a
136 if [ ! -f TAG-amd64-linux ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi
137 touch TAG-amd64-linux
139 libvex-ppc32-linux.a: TAG-ppc32-linux libvex.a
140 mv -f libvex.a libvex-ppc32-linux.a
142 if [ ! -f TAG-ppc32-linux ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi
143 touch TAG-ppc32-linux
145 libvex-ppc64-linux.a: TAG-ppc64-linux libvex.a
146 mv -f libvex.a libvex-ppc64-linux.a
148 if [ ! -f TAG-ppc64-linux ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi
149 touch TAG-ppc64-linux
151 libvex-ppc32-aix5.a: TAG-ppc32-aix5 libvex.a
152 mv -f libvex.a libvex-ppc32-aix5.a
154 if [ ! -f TAG-ppc32-aix5 ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi
157 libvex-ppc64-aix5.a: TAG-ppc64-aix5 libvex.a
158 mv -f libvex.a libvex-ppc64-aix5.a
160 if [ ! -f TAG-ppc64-aix5 ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi
163 libvex-x86-darwin.a: TAG-x86-darwin libvex.a
164 mv -f libvex.a libvex-x86-darwin.a
166 if [ ! -f TAG-x86-darwin ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi
169 libvex-amd64-darwin.a: TAG-amd64-darwin libvex.a
170 mv -f libvex.a libvex-amd64-darwin.a
172 if [ ! -f TAG-amd64-darwin ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi
173 touch TAG-amd64-darwin
175 libvex-x86-l4re.a: TAG-x86-l4re libvex.a
176 mv -f libvex.a libvex-x86-l4re.a
178 if [ ! -f TAG_x86_l4re ] ; then rm -f $(LIB_OBJS) TAG_* libvex.a ; fi
183 rm -f $(LIB_OBJS) *.a vex test_main.o TAG-* \
184 pub/libvex_guest_offsets.h \
185 auxprogs/genoffsets.s
188 rm -f vex--minidist-2005MMDD.tar
189 tar cf vex--minidist-2005MMDD.tar $(PUB_HEADERS) $(PRIV_HEADERS) \
190 test_main.c test_main.h \
192 `echo $(LIB_OBJS) | sed "s/\.o/\.c/g"`
194 @echo minidist done, size follows:
195 @ls -l vex--minidist-2005MMDD.tar
198 # This is very uggerly. Need to sed out both "xyzzyN" and
199 # "xyzzy$N" since gcc on different targets emits the constants
200 # differently -- with a leading $ on x86/amd64 but none on ppc32/64.
201 pub/libvex_guest_offsets.h:
202 rm -f auxprogs/genoffsets.s
203 $(CC) $(CCFLAGS) -O -S -o auxprogs/genoffsets.s \
204 auxprogs/genoffsets.c
205 grep xyzzy auxprogs/genoffsets.s | grep define \
206 | sed "s/xyzzy\\$$//g" \
207 | sed "s/xyzzy#//g" \
209 > pub/libvex_guest_offsets.h
210 rm -f auxprogs/genoffsets.s
213 ALL_HEADERS = $(PUB_HEADERS) $(PRIV_HEADERS)
214 ALL_INCLUDES = $(PUB_INCLUDES) $(PRIV_INCLUDES)
216 test_main.o: $(PUB_HEADERS) test_main.c test_main.h
217 $(CC) $(CCFLAGS) $(PUB_INCLUDES) -o test_main.o \
220 priv/ir_defs.o: $(ALL_HEADERS) priv/ir_defs.c
221 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/ir_defs.o \
224 priv/ir_match.o: $(ALL_HEADERS) priv/ir_match.c
225 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/ir_match.o \
228 priv/ir_opt.o: $(ALL_HEADERS) priv/ir_opt.c
229 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/ir_opt.o \
232 priv/main_main.o: $(ALL_HEADERS) priv/main_main.c
233 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/main_main.o \
236 priv/main_globals.o: $(ALL_HEADERS) priv/main_globals.c
237 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/main_globals.o \
238 -c priv/main_globals.c
240 priv/main_util.o: $(ALL_HEADERS) priv/main_util.c
241 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/main_util.o \
244 priv/host_x86_defs.o: $(ALL_HEADERS) priv/host_x86_defs.c
245 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_x86_defs.o \
246 -c priv/host_x86_defs.c
248 priv/host_amd64_defs.o: $(ALL_HEADERS) priv/host_amd64_defs.c
249 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_amd64_defs.o \
250 -c priv/host_amd64_defs.c
252 priv/host_arm_defs.o: $(ALL_HEADERS) priv/host_arm_defs.c
253 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_arm_defs.o \
254 -c priv/host_arm_defs.c
256 priv/host_ppc_defs.o: $(ALL_HEADERS) priv/host_ppc_defs.c
257 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_ppc_defs.o \
258 -c priv/host_ppc_defs.c
260 priv/host_s390_defs.o: $(ALL_HEADERS) priv/host_s390_defs.c
261 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_s390_defs.o \
262 -c priv/host_s390_defs.c
264 priv/host_x86_isel.o: $(ALL_HEADERS) priv/host_x86_isel.c
265 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_x86_isel.o \
266 -c priv/host_x86_isel.c
268 priv/host_amd64_isel.o: $(ALL_HEADERS) priv/host_amd64_isel.c
269 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_amd64_isel.o \
270 -c priv/host_amd64_isel.c
272 priv/host_arm_isel.o: $(ALL_HEADERS) priv/host_arm_isel.c
273 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_arm_isel.o \
274 -c priv/host_arm_isel.c
276 priv/host_ppc_isel.o: $(ALL_HEADERS) priv/host_ppc_isel.c
277 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_ppc_isel.o \
278 -c priv/host_ppc_isel.c
280 priv/host_s390_isel.o: $(ALL_HEADERS) priv/host_s390_isel.c
281 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_s390_isel.o \
282 -c priv/host_s390_isel.c
284 priv/host_generic_regs.o: $(ALL_HEADERS) priv/host_generic_regs.c
285 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_generic_regs.o \
286 -c priv/host_generic_regs.c
288 priv/host_generic_simd64.o: $(ALL_HEADERS) priv/host_generic_simd64.c
289 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_generic_simd64.o \
290 -c priv/host_generic_simd64.c
292 priv/host_generic_simd128.o: $(ALL_HEADERS) priv/host_generic_simd128.c
293 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_generic_simd128.o \
294 -c priv/host_generic_simd128.c
296 priv/host_generic_reg_alloc2.o: $(ALL_HEADERS) priv/host_generic_reg_alloc2.c
297 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_generic_reg_alloc2.o \
298 -c priv/host_generic_reg_alloc2.c
300 priv/guest_x86_toIR.o: $(ALL_HEADERS) priv/guest_x86_toIR.c
301 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_x86_toIR.o \
302 -c priv/guest_x86_toIR.c
304 priv/guest_generic_x87.o: $(ALL_HEADERS) priv/guest_generic_x87.c
305 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_generic_x87.o \
306 -c priv/guest_generic_x87.c
308 priv/guest_generic_bb_to_IR.o: $(ALL_HEADERS) priv/guest_generic_bb_to_IR.c
309 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_generic_bb_to_IR.o \
310 -c priv/guest_generic_bb_to_IR.c
312 priv/guest_x86_helpers.o: $(ALL_HEADERS) priv/guest_x86_helpers.c
313 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_x86_helpers.o \
314 -c priv/guest_x86_helpers.c
316 priv/guest_amd64_helpers.o: $(ALL_HEADERS) priv/guest_amd64_helpers.c
317 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_amd64_helpers.o \
318 -c priv/guest_amd64_helpers.c
320 priv/guest_amd64_toIR.o: $(ALL_HEADERS) priv/guest_amd64_toIR.c
321 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_amd64_toIR.o \
322 -c priv/guest_amd64_toIR.c
324 priv/guest_arm_helpers.o: $(ALL_HEADERS) priv/guest_arm_helpers.c
325 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_arm_helpers.o \
326 -c priv/guest_arm_helpers.c
328 priv/guest_arm_toIR.o: $(ALL_HEADERS) priv/guest_arm_toIR.c
329 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_arm_toIR.o \
330 -c priv/guest_arm_toIR.c
332 priv/guest_ppc_helpers.o: $(ALL_HEADERS) priv/guest_ppc_helpers.c
333 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_ppc_helpers.o \
334 -c priv/guest_ppc_helpers.c
336 priv/guest_s390_helpers.o: $(ALL_HEADERS) priv/guest_s390_helpers.c
337 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_s390_helpers.o \
338 -c priv/guest_s390_helpers.c
340 priv/guest_ppc_toIR.o: $(ALL_HEADERS) priv/guest_ppc_toIR.c
341 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_ppc_toIR.o \
342 -c priv/guest_ppc_toIR.c
344 priv/guest_s390_toIR.o: $(ALL_HEADERS) priv/guest_s390_toIR.c
345 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_s390_toIR.o \
346 -c priv/guest_s390_toIR.c
348 priv/host_s390_disasm.o: $(ALL_HEADERS) priv/host_s390_disasm.c
349 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_s390_disasm.o \
350 -c priv/host_s390_disasm.c