blob: d1e1df4837bd564e7c640a63f64de0da1d254945 [file] [log] [blame]
sewardj20e56c12004-03-31 22:08:37 +00001
sewardj887a11a2004-07-05 17:26:47 +00002PUB_HEADERS = pub/libvex_basictypes.h \
3 pub/libvex_ir.h \
sewardj7d0960d2004-09-06 23:22:55 +00004 pub/libvex.h \
sewardjc4278f42004-11-26 13:18:19 +00005 pub/libvex_trc_values.h \
sewardj893aada2004-11-29 19:57:54 +00006 pub/libvex_emwarn.h \
sewardjd584f8f2004-11-22 16:02:34 +00007 pub/libvex_guest_x86.h \
sewardj33dba642004-11-25 13:07:51 +00008 pub/libvex_guest_amd64.h \
cerion896a1372005-01-25 12:24:25 +00009 pub/libvex_guest_arm.h \
sewardj2825ac42005-03-08 16:43:27 +000010 pub/libvex_guest_ppc32.h \
ceriond0eae2d2005-12-23 11:43:01 +000011 pub/libvex_guest_ppc64.h \
sewardj2825ac42005-03-08 16:43:27 +000012 pub/libvex_guest_offsets.h
sewardj5cf515f2004-06-26 20:10:35 +000013
sewardj32bf7912009-09-06 20:45:21 +000014PRIV_HEADERS = priv/host_x86_defs.h \
15 priv/host_amd64_defs.h \
16 priv/host_arm_defs.h \
17 priv/host_ppc_defs.h \
18 priv/host_generic_regs.h \
19 priv/host_generic_simd64.h \
sewardj69d98e32010-06-18 08:17:41 +000020 priv/host_generic_simd128.h \
sewardj32bf7912009-09-06 20:45:21 +000021 priv/main_globals.h \
22 priv/main_util.h \
23 priv/guest_generic_x87.h \
24 priv/guest_generic_bb_to_IR.h \
25 priv/guest_x86_defs.h \
26 priv/guest_amd64_defs.h \
27 priv/guest_arm_defs.h \
28 priv/guest_ppc_defs.h \
29 priv/ir_match.h \
30 priv/ir_opt.h
sewardj5cf515f2004-06-26 20:10:35 +000031
sewardj32bf7912009-09-06 20:45:21 +000032LIB_OBJS = priv/ir_defs.o \
33 priv/ir_match.o \
34 priv/ir_opt.o \
35 priv/main_main.o \
36 priv/main_globals.o \
37 priv/main_util.o \
38 priv/host_x86_defs.o \
39 priv/host_amd64_defs.o \
40 priv/host_arm_defs.o \
41 priv/host_ppc_defs.o \
42 priv/host_x86_isel.o \
43 priv/host_amd64_isel.o \
44 priv/host_arm_isel.o \
45 priv/host_ppc_isel.o \
46 priv/host_generic_regs.o \
47 priv/host_generic_simd64.o \
sewardj69d98e32010-06-18 08:17:41 +000048 priv/host_generic_simd128.o \
sewardj32bf7912009-09-06 20:45:21 +000049 priv/host_generic_reg_alloc2.o \
50 priv/guest_generic_x87.o \
51 priv/guest_generic_bb_to_IR.o \
52 priv/guest_x86_helpers.o \
53 priv/guest_amd64_helpers.o \
54 priv/guest_arm_helpers.o \
55 priv/guest_ppc_helpers.o \
56 priv/guest_x86_toIR.o \
57 priv/guest_amd64_toIR.o \
58 priv/guest_arm_toIR.o \
59 priv/guest_ppc_toIR.o
sewardj5cf515f2004-06-26 20:10:35 +000060
sewardjac9af022004-07-05 01:15:34 +000061PUB_INCLUDES = -Ipub
62
sewardjc0ee2ed2004-07-27 10:29:41 +000063# Do not add any priv/host-ARCH or priv/guest-ARCH directories to this
64# list, as they contain duplicate file names (each host has a hdefs.h,
65# for example).
66PRIV_INCLUDES = -Ipriv
sewardjac9af022004-07-05 01:15:34 +000067
68
sewardj7937c5e2007-01-04 16:13:14 +000069ifndef CC
sewardj967de5c2005-08-29 12:07:41 +000070 CC = gcc
71endif
sewardj7937c5e2007-01-04 16:13:14 +000072ifndef AR
sewardj030fd362005-09-15 16:00:58 +000073 AR = ar
74endif
75
sewardj2573c252005-11-23 03:54:48 +000076# Put -g -O2 after any flags we inherit from V. -O2 vs -O
77# makes a significant difference, at least with gcc4.
sewardj48b279b2007-11-16 12:43:32 +000078CCFLAGS = -Wall -Wmissing-prototypes -Wshadow \
sewardj59c07782005-01-21 21:23:07 +000079 -Wpointer-arith -Wbad-function-cast -Wcast-qual \
sewardj9a036bf2005-03-14 18:19:08 +000080 -Wcast-align -Wmissing-declarations \
sewardj48b279b2007-11-16 12:43:32 +000081 $(EXTRA_CFLAGS) -g -O2 -fstrict-aliasing
sewardj41f43bc2004-07-08 14:23:22 +000082
sewardje05c42c2004-07-08 20:25:10 +000083#CC = icc
sewardj52ff4cc2005-03-26 20:33:38 +000084#CCFLAGS = -g -Wall -wd981 -wd279 -wd1287 -wd869 -wd111 -wd188 -wd186
sewardj41f43bc2004-07-08 14:23:22 +000085# 981: operands are evaluated in unspecified order
86# 279: controlling expression is constant
87# 1287: invalid attribute for parameter
88# 869: parameter "..." was never referenced
sewardj41f43bc2004-07-08 14:23:22 +000089# 111: statement is unreachable
sewardjb7a0a112005-02-01 16:06:14 +000090# 188: enumerated type mixed with another type
sewardje05c42c2004-07-08 20:25:10 +000091# (the above are for icc 8.0 -- 8.0.0.55 I think)
sewardj52ff4cc2005-03-26 20:33:38 +000092# 186: pointless comparison of unsigned integer with zero
sewardjac9af022004-07-05 01:15:34 +000093
sewardj88c57962005-11-11 18:37:10 +000094# kludge: stops V biarch builds screwing up at -j 2 or above
95# The Right fix is to autoconf/automake-ise vex.
96.NOTPARALLEL:
sewardjb7a0a112005-02-01 16:06:14 +000097
sewardjb5d0f3d2004-12-31 17:21:28 +000098all: vex
sewardjbf31abd2004-07-25 00:07:35 +000099
sewardj030fd362005-09-15 16:00:58 +0000100# Empty, needed for Valgrind
101install:
102
sewardj6c299f32009-12-31 18:00:12 +0000103scratch: clean all
cerion9c47d812005-02-16 09:08:23 +0000104
sewardjc0ee2ed2004-07-27 10:29:41 +0000105vex: libvex.a test_main.o
sewardj80424fe2004-07-27 10:43:34 +0000106 $(CC) $(CCFLAGS) -o vex test_main.o libvex.a
sewardjac9af022004-07-05 01:15:34 +0000107
sewardj887a11a2004-07-05 17:26:47 +0000108libvex.a: $(LIB_OBJS)
109 rm -f libvex.a
sewardj16a59602009-06-09 23:00:49 +0000110 $(AR) crus libvex.a $(LIB_OBJS)
sewardjac9af022004-07-05 01:15:34 +0000111
sewardja1eb31c2005-11-07 14:59:13 +0000112
sewardj47712302009-02-22 23:38:55 +0000113# The idea with these TAG-s is to mark the flavour of libvex.a
sewardja1eb31c2005-11-07 14:59:13 +0000114# most recently built, so if the same target is re-requested, we
115# don't rebuild everything, but if a different one is requested
116# then we scrub everything and start over.
117
sewardj47712302009-02-22 23:38:55 +0000118libvex-x86-linux.a: TAG-x86-linux libvex.a
119 mv -f libvex.a libvex-x86-linux.a
120TAG-x86-linux:
121 if [ ! -f TAG-x86-linux ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi
122 touch TAG-x86-linux
sewardja1eb31c2005-11-07 14:59:13 +0000123
sewardj47712302009-02-22 23:38:55 +0000124libvex-amd64-linux.a: TAG-amd64-linux libvex.a
125 mv -f libvex.a libvex-amd64-linux.a
126TAG-amd64-linux:
127 if [ ! -f TAG-amd64-linux ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi
128 touch TAG-amd64-linux
sewardja1eb31c2005-11-07 14:59:13 +0000129
sewardj47712302009-02-22 23:38:55 +0000130libvex-ppc32-linux.a: TAG-ppc32-linux libvex.a
131 mv -f libvex.a libvex-ppc32-linux.a
132TAG-ppc32-linux:
133 if [ ! -f TAG-ppc32-linux ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi
134 touch TAG-ppc32-linux
sewardjd660d412008-12-03 21:29:59 +0000135
sewardj47712302009-02-22 23:38:55 +0000136libvex-ppc64-linux.a: TAG-ppc64-linux libvex.a
137 mv -f libvex.a libvex-ppc64-linux.a
138TAG-ppc64-linux:
139 if [ ! -f TAG-ppc64-linux ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi
140 touch TAG-ppc64-linux
sewardjd660d412008-12-03 21:29:59 +0000141
sewardj47712302009-02-22 23:38:55 +0000142libvex-ppc32-aix5.a: TAG-ppc32-aix5 libvex.a
143 mv -f libvex.a libvex-ppc32-aix5.a
144TAG-ppc32-aix5:
145 if [ ! -f TAG-ppc32-aix5 ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi
146 touch TAG-ppc32-aix5
sewardja1eb31c2005-11-07 14:59:13 +0000147
sewardj47712302009-02-22 23:38:55 +0000148libvex-ppc64-aix5.a: TAG-ppc64-aix5 libvex.a
149 mv -f libvex.a libvex-ppc64-aix5.a
150TAG-ppc64-aix5:
151 if [ ! -f TAG-ppc64-aix5 ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi
152 touch TAG-ppc64-aix5
ceriond953ebb2005-11-29 13:27:20 +0000153
sewardj47712302009-02-22 23:38:55 +0000154libvex-x86-darwin.a: TAG-x86-darwin libvex.a
155 mv -f libvex.a libvex-x86-darwin.a
156TAG-x86-darwin:
157 if [ ! -f TAG-x86-darwin ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi
158 touch TAG-x86-darwin
sewardjaca070a2006-10-17 00:28:22 +0000159
sewardj47712302009-02-22 23:38:55 +0000160libvex-amd64-darwin.a: TAG-amd64-darwin libvex.a
161 mv -f libvex.a libvex-amd64-darwin.a
162TAG-amd64-darwin:
163 if [ ! -f TAG-amd64-darwin ] ; then rm -f $(LIB_OBJS) TAG-* libvex.a ; fi
164 touch TAG-amd64-darwin
sewardjaca070a2006-10-17 00:28:22 +0000165
sewardja1eb31c2005-11-07 14:59:13 +0000166
sewardj5cf515f2004-06-26 20:10:35 +0000167clean:
sewardj47712302009-02-22 23:38:55 +0000168 rm -f $(LIB_OBJS) *.a vex test_main.o TAG-* \
sewardjba69ffb2008-12-17 22:37:49 +0000169 pub/libvex_guest_offsets.h \
170 auxprogs/genoffsets.s
sewardjce605f92004-07-05 14:39:15 +0000171
sewardj6c299f32009-12-31 18:00:12 +0000172minidist:
sewardjeecde932005-01-05 19:11:09 +0000173 rm -f vex--minidist-2005MMDD.tar
174 tar cf vex--minidist-2005MMDD.tar $(PUB_HEADERS) $(PRIV_HEADERS) \
sewardjeecde932005-01-05 19:11:09 +0000175 test_main.c test_main.h \
176 Makefile \
177 `echo $(LIB_OBJS) | sed "s/\.o/\.c/g"`
178 @echo
sewardj6c299f32009-12-31 18:00:12 +0000179 @echo minidist done, size follows:
sewardjeecde932005-01-05 19:11:09 +0000180 @ls -l vex--minidist-2005MMDD.tar
sewardjeecde932005-01-05 19:11:09 +0000181 @echo
182
sewardjba69ffb2008-12-17 22:37:49 +0000183# This is very uggerly. Need to sed out both "xyzzyN" and
184# "xyzzy$N" since gcc on different targets emits the constants
185# differently -- with a leading $ on x86/amd64 but none on ppc32/64.
sewardj2825ac42005-03-08 16:43:27 +0000186pub/libvex_guest_offsets.h:
sewardjba69ffb2008-12-17 22:37:49 +0000187 rm -f auxprogs/genoffsets.s
sewardjd2dc14a2008-12-19 09:32:25 +0000188 $(CC) $(CCFLAGS) -O -S -o auxprogs/genoffsets.s \
sewardjba69ffb2008-12-17 22:37:49 +0000189 auxprogs/genoffsets.c
190 grep xyzzy auxprogs/genoffsets.s | grep define \
191 | sed "s/xyzzy\\$$//g" | sed "s/xyzzy//g" \
192 > pub/libvex_guest_offsets.h
193 rm -f auxprogs/genoffsets.s
sewardj2825ac42005-03-08 16:43:27 +0000194
sewardjce605f92004-07-05 14:39:15 +0000195
sewardj35421a32004-07-05 13:12:34 +0000196ALL_HEADERS = $(PUB_HEADERS) $(PRIV_HEADERS)
197ALL_INCLUDES = $(PUB_INCLUDES) $(PRIV_INCLUDES)
198
sewardjabe017e2004-10-29 23:42:36 +0000199test_main.o: $(PUB_HEADERS) test_main.c test_main.h
sewardjce605f92004-07-05 14:39:15 +0000200 $(CC) $(CCFLAGS) $(PUB_INCLUDES) -o test_main.o \
201 -c test_main.c
202
sewardj32bf7912009-09-06 20:45:21 +0000203priv/ir_defs.o: $(ALL_HEADERS) priv/ir_defs.c
204 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/ir_defs.o \
205 -c priv/ir_defs.c
sewardj35421a32004-07-05 13:12:34 +0000206
sewardj32bf7912009-09-06 20:45:21 +0000207priv/ir_match.o: $(ALL_HEADERS) priv/ir_match.c
208 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/ir_match.o \
209 -c priv/ir_match.c
sewardj69933ac2004-12-20 04:12:14 +0000210
sewardj32bf7912009-09-06 20:45:21 +0000211priv/ir_opt.o: $(ALL_HEADERS) priv/ir_opt.c
212 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/ir_opt.o \
213 -c priv/ir_opt.c
sewardja1a370f2004-08-17 13:31:55 +0000214
sewardj6c299f32009-12-31 18:00:12 +0000215priv/main_main.o: $(ALL_HEADERS) priv/main_main.c
sewardj32bf7912009-09-06 20:45:21 +0000216 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/main_main.o \
217 -c priv/main_main.c
sewardj35421a32004-07-05 13:12:34 +0000218
sewardj32bf7912009-09-06 20:45:21 +0000219priv/main_globals.o: $(ALL_HEADERS) priv/main_globals.c
220 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/main_globals.o \
221 -c priv/main_globals.c
sewardj35421a32004-07-05 13:12:34 +0000222
sewardj32bf7912009-09-06 20:45:21 +0000223priv/main_util.o: $(ALL_HEADERS) priv/main_util.c
224 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/main_util.o \
225 -c priv/main_util.c
sewardj35421a32004-07-05 13:12:34 +0000226
sewardj32bf7912009-09-06 20:45:21 +0000227priv/host_x86_defs.o: $(ALL_HEADERS) priv/host_x86_defs.c
228 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_x86_defs.o \
229 -c priv/host_x86_defs.c
sewardj35421a32004-07-05 13:12:34 +0000230
sewardj32bf7912009-09-06 20:45:21 +0000231priv/host_amd64_defs.o: $(ALL_HEADERS) priv/host_amd64_defs.c
232 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_amd64_defs.o \
233 -c priv/host_amd64_defs.c
sewardjb7a0a112005-02-01 16:06:14 +0000234
sewardj32bf7912009-09-06 20:45:21 +0000235priv/host_arm_defs.o: $(ALL_HEADERS) priv/host_arm_defs.c
236 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_arm_defs.o \
237 -c priv/host_arm_defs.c
cerion82edbb32004-12-16 14:06:34 +0000238
sewardj32bf7912009-09-06 20:45:21 +0000239priv/host_ppc_defs.o: $(ALL_HEADERS) priv/host_ppc_defs.c
240 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_ppc_defs.o \
241 -c priv/host_ppc_defs.c
cerionbcf8c3e2005-02-04 16:17:07 +0000242
sewardj32bf7912009-09-06 20:45:21 +0000243priv/host_x86_isel.o: $(ALL_HEADERS) priv/host_x86_isel.c
244 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_x86_isel.o \
245 -c priv/host_x86_isel.c
sewardj35421a32004-07-05 13:12:34 +0000246
sewardj32bf7912009-09-06 20:45:21 +0000247priv/host_amd64_isel.o: $(ALL_HEADERS) priv/host_amd64_isel.c
248 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_amd64_isel.o \
249 -c priv/host_amd64_isel.c
sewardjb7a0a112005-02-01 16:06:14 +0000250
sewardj32bf7912009-09-06 20:45:21 +0000251priv/host_arm_isel.o: $(ALL_HEADERS) priv/host_arm_isel.c
252 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_arm_isel.o \
253 -c priv/host_arm_isel.c
cerioncee30312004-12-17 20:30:21 +0000254
sewardj32bf7912009-09-06 20:45:21 +0000255priv/host_ppc_isel.o: $(ALL_HEADERS) priv/host_ppc_isel.c
256 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_ppc_isel.o \
257 -c priv/host_ppc_isel.c
cerionbcf8c3e2005-02-04 16:17:07 +0000258
sewardj32bf7912009-09-06 20:45:21 +0000259priv/host_generic_regs.o: $(ALL_HEADERS) priv/host_generic_regs.c
260 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_generic_regs.o \
261 -c priv/host_generic_regs.c
sewardj35421a32004-07-05 13:12:34 +0000262
sewardj32bf7912009-09-06 20:45:21 +0000263priv/host_generic_simd64.o: $(ALL_HEADERS) priv/host_generic_simd64.c
264 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_generic_simd64.o \
265 -c priv/host_generic_simd64.c
sewardj38a3f862005-01-13 15:06:51 +0000266
sewardj69d98e32010-06-18 08:17:41 +0000267priv/host_generic_simd128.o: $(ALL_HEADERS) priv/host_generic_simd128.c
268 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_generic_simd128.o \
269 -c priv/host_generic_simd128.c
270
sewardj32bf7912009-09-06 20:45:21 +0000271priv/host_generic_reg_alloc2.o: $(ALL_HEADERS) priv/host_generic_reg_alloc2.c
272 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host_generic_reg_alloc2.o \
273 -c priv/host_generic_reg_alloc2.c
sewardj432b1c92004-10-30 13:00:55 +0000274
sewardj32bf7912009-09-06 20:45:21 +0000275priv/guest_x86_toIR.o: $(ALL_HEADERS) priv/guest_x86_toIR.c
276 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_x86_toIR.o \
277 -c priv/guest_x86_toIR.c
sewardj36ca5132004-07-24 13:12:23 +0000278
sewardj32bf7912009-09-06 20:45:21 +0000279priv/guest_generic_x87.o: $(ALL_HEADERS) priv/guest_generic_x87.c
280 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_generic_x87.o \
281 -c priv/guest_generic_x87.c
sewardj52ff4cc2005-03-26 20:33:38 +0000282
sewardj32bf7912009-09-06 20:45:21 +0000283priv/guest_generic_bb_to_IR.o: $(ALL_HEADERS) priv/guest_generic_bb_to_IR.c
284 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_generic_bb_to_IR.o \
285 -c priv/guest_generic_bb_to_IR.c
sewardj9e6491a2005-07-02 19:24:10 +0000286
sewardj32bf7912009-09-06 20:45:21 +0000287priv/guest_x86_helpers.o: $(ALL_HEADERS) priv/guest_x86_helpers.c
288 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_x86_helpers.o \
289 -c priv/guest_x86_helpers.c
sewardj33dba642004-11-25 13:07:51 +0000290
sewardj32bf7912009-09-06 20:45:21 +0000291priv/guest_amd64_helpers.o: $(ALL_HEADERS) priv/guest_amd64_helpers.c
292 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_amd64_helpers.o \
293 -c priv/guest_amd64_helpers.c
njn9c6acb02004-11-30 15:56:47 +0000294
sewardj32bf7912009-09-06 20:45:21 +0000295priv/guest_amd64_toIR.o: $(ALL_HEADERS) priv/guest_amd64_toIR.c
296 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_amd64_toIR.o \
297 -c priv/guest_amd64_toIR.c
sewardjd20c8852005-01-20 20:04:07 +0000298
sewardj32bf7912009-09-06 20:45:21 +0000299priv/guest_arm_helpers.o: $(ALL_HEADERS) priv/guest_arm_helpers.c
300 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_arm_helpers.o \
301 -c priv/guest_arm_helpers.c
sewardj33dba642004-11-25 13:07:51 +0000302
sewardj32bf7912009-09-06 20:45:21 +0000303priv/guest_arm_toIR.o: $(ALL_HEADERS) priv/guest_arm_toIR.c
304 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_arm_toIR.o \
305 -c priv/guest_arm_toIR.c
cerion896a1372005-01-25 12:24:25 +0000306
sewardj32bf7912009-09-06 20:45:21 +0000307priv/guest_ppc_helpers.o: $(ALL_HEADERS) priv/guest_ppc_helpers.c
308 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_ppc_helpers.o \
309 -c priv/guest_ppc_helpers.c
cerion896a1372005-01-25 12:24:25 +0000310
sewardj32bf7912009-09-06 20:45:21 +0000311priv/guest_ppc_toIR.o: $(ALL_HEADERS) priv/guest_ppc_toIR.c
312 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest_ppc_toIR.o \
313 -c priv/guest_ppc_toIR.c