blob: dd7d82715bddfd0e179a2f0991d5298fcc2f9fb0 [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
sewardjc0ee2ed2004-07-27 10:29:41 +000014PRIV_HEADERS = priv/host-x86/hdefs.h \
sewardjb7a0a112005-02-01 16:06:14 +000015 priv/host-amd64/hdefs.h \
cerion82edbb32004-12-16 14:06:34 +000016 priv/host-arm/hdefs.h \
ceriond0eae2d2005-12-23 11:43:01 +000017 priv/host-ppc/hdefs.h \
sewardjc0ee2ed2004-07-27 10:29:41 +000018 priv/host-generic/h_generic_regs.h \
sewardj38a3f862005-01-13 15:06:51 +000019 priv/host-generic/h_generic_simd64.h \
sewardj887a11a2004-07-05 17:26:47 +000020 priv/main/vex_globals.h \
sewardjc9a65702004-07-07 16:32:57 +000021 priv/main/vex_util.h \
sewardj52ff4cc2005-03-26 20:33:38 +000022 priv/guest-generic/g_generic_x87.h \
sewardj9e6491a2005-07-02 19:24:10 +000023 priv/guest-generic/bb_to_IR.h \
sewardj00ec7072004-08-18 13:58:59 +000024 priv/guest-x86/gdefs.h \
sewardjd20c8852005-01-20 20:04:07 +000025 priv/guest-amd64/gdefs.h \
sewardj33dba642004-11-25 13:07:51 +000026 priv/guest-arm/gdefs.h \
ceriond0eae2d2005-12-23 11:43:01 +000027 priv/guest-ppc/gdefs.h \
sewardj69933ac2004-12-20 04:12:14 +000028 priv/ir/irmatch.h \
sewardj00ec7072004-08-18 13:58:59 +000029 priv/ir/iropt.h
sewardj5cf515f2004-06-26 20:10:35 +000030
sewardjc0ee2ed2004-07-27 10:29:41 +000031LIB_OBJS = priv/ir/irdefs.o \
sewardj69933ac2004-12-20 04:12:14 +000032 priv/ir/irmatch.o \
sewardja1a370f2004-08-17 13:31:55 +000033 priv/ir/iropt.o \
sewardj887a11a2004-07-05 17:26:47 +000034 priv/main/vex_main.o \
35 priv/main/vex_globals.o \
sewardj35421a32004-07-05 13:12:34 +000036 priv/main/vex_util.o \
sewardjc0ee2ed2004-07-27 10:29:41 +000037 priv/host-x86/hdefs.o \
sewardjb7a0a112005-02-01 16:06:14 +000038 priv/host-amd64/hdefs.o \
cerion82edbb32004-12-16 14:06:34 +000039 priv/host-arm/hdefs.o \
ceriond0eae2d2005-12-23 11:43:01 +000040 priv/host-ppc/hdefs.o \
sewardjc0ee2ed2004-07-27 10:29:41 +000041 priv/host-x86/isel.o \
sewardjb7a0a112005-02-01 16:06:14 +000042 priv/host-amd64/isel.o \
cerioncee30312004-12-17 20:30:21 +000043 priv/host-arm/isel.o \
ceriond0eae2d2005-12-23 11:43:01 +000044 priv/host-ppc/isel.o \
sewardjc0ee2ed2004-07-27 10:29:41 +000045 priv/host-generic/h_generic_regs.o \
sewardj38a3f862005-01-13 15:06:51 +000046 priv/host-generic/h_generic_simd64.o \
sewardj432b1c92004-10-30 13:00:55 +000047 priv/host-generic/reg_alloc2.o \
sewardj52ff4cc2005-03-26 20:33:38 +000048 priv/guest-generic/g_generic_x87.o \
sewardj9e6491a2005-07-02 19:24:10 +000049 priv/guest-generic/bb_to_IR.o \
sewardjc0ee2ed2004-07-27 10:29:41 +000050 priv/guest-x86/ghelpers.o \
njn9c6acb02004-11-30 15:56:47 +000051 priv/guest-amd64/ghelpers.o \
sewardj33dba642004-11-25 13:07:51 +000052 priv/guest-arm/ghelpers.o \
ceriond0eae2d2005-12-23 11:43:01 +000053 priv/guest-ppc/ghelpers.o \
sewardj33dba642004-11-25 13:07:51 +000054 priv/guest-x86/toIR.o \
sewardjd20c8852005-01-20 20:04:07 +000055 priv/guest-amd64/toIR.o \
cerion896a1372005-01-25 12:24:25 +000056 priv/guest-arm/toIR.o \
ceriond0eae2d2005-12-23 11:43:01 +000057 priv/guest-ppc/toIR.o
sewardj5cf515f2004-06-26 20:10:35 +000058
sewardjac9af022004-07-05 01:15:34 +000059PUB_INCLUDES = -Ipub
60
sewardjc0ee2ed2004-07-27 10:29:41 +000061# Do not add any priv/host-ARCH or priv/guest-ARCH directories to this
62# list, as they contain duplicate file names (each host has a hdefs.h,
63# for example).
64PRIV_INCLUDES = -Ipriv
sewardjac9af022004-07-05 01:15:34 +000065
66
sewardj030fd362005-09-15 16:00:58 +000067ifndef $(CC)
sewardj967de5c2005-08-29 12:07:41 +000068 CC = gcc
69endif
sewardj030fd362005-09-15 16:00:58 +000070ifndef $(AR)
71 AR = ar
72endif
73
sewardj2573c252005-11-23 03:54:48 +000074# Put -g -O2 after any flags we inherit from V. -O2 vs -O
75# makes a significant difference, at least with gcc4.
76CCFLAGS = -Wall -Wmissing-prototypes -Wshadow -Winline \
sewardj59c07782005-01-21 21:23:07 +000077 -Wpointer-arith -Wbad-function-cast -Wcast-qual \
sewardj9a036bf2005-03-14 18:19:08 +000078 -Wcast-align -Wmissing-declarations \
sewardj2573c252005-11-23 03:54:48 +000079 $(EXTRA_CFLAGS) -g -O2
sewardj41f43bc2004-07-08 14:23:22 +000080
sewardje05c42c2004-07-08 20:25:10 +000081#CC = icc
sewardj52ff4cc2005-03-26 20:33:38 +000082#CCFLAGS = -g -Wall -wd981 -wd279 -wd1287 -wd869 -wd111 -wd188 -wd186
sewardj41f43bc2004-07-08 14:23:22 +000083# 981: operands are evaluated in unspecified order
84# 279: controlling expression is constant
85# 1287: invalid attribute for parameter
86# 869: parameter "..." was never referenced
sewardj41f43bc2004-07-08 14:23:22 +000087# 111: statement is unreachable
sewardjb7a0a112005-02-01 16:06:14 +000088# 188: enumerated type mixed with another type
sewardje05c42c2004-07-08 20:25:10 +000089# (the above are for icc 8.0 -- 8.0.0.55 I think)
sewardj52ff4cc2005-03-26 20:33:38 +000090# 186: pointless comparison of unsigned integer with zero
sewardjac9af022004-07-05 01:15:34 +000091
sewardj88c57962005-11-11 18:37:10 +000092# kludge: stops V biarch builds screwing up at -j 2 or above
93# The Right fix is to autoconf/automake-ise vex.
94.NOTPARALLEL:
sewardjb7a0a112005-02-01 16:06:14 +000095
sewardjb5d0f3d2004-12-31 17:21:28 +000096all: vex
sewardjbf31abd2004-07-25 00:07:35 +000097
sewardj030fd362005-09-15 16:00:58 +000098# Empty, needed for Valgrind
99install:
100
cerion9c47d812005-02-16 09:08:23 +0000101scratch: clean version all
102
sewardjc0ee2ed2004-07-27 10:29:41 +0000103vex: libvex.a test_main.o
sewardj80424fe2004-07-27 10:43:34 +0000104 $(CC) $(CCFLAGS) -o vex test_main.o libvex.a
sewardjac9af022004-07-05 01:15:34 +0000105
sewardj887a11a2004-07-05 17:26:47 +0000106libvex.a: $(LIB_OBJS)
107 rm -f libvex.a
sewardj030fd362005-09-15 16:00:58 +0000108 $(AR) clq libvex.a $(LIB_OBJS)
sewardjac9af022004-07-05 01:15:34 +0000109
sewardja1eb31c2005-11-07 14:59:13 +0000110
111# The idea with these TAG_s is to mark the flavour of libvex.a
112# most recently built, so if the same target is re-requested, we
113# don't rebuild everything, but if a different one is requested
114# then we scrub everything and start over.
115
116libvex_x86_linux.a: TAG_x86_linux libvex.a
117 mv -f libvex.a libvex_x86_linux.a
118TAG_x86_linux:
sewardjccd0c842005-11-07 15:37:24 +0000119 if [ ! -f TAG_x86_linux ] ; then rm -f $(LIB_OBJS) TAG_* libvex.a ; fi
sewardja1eb31c2005-11-07 14:59:13 +0000120 touch TAG_x86_linux
121
122libvex_amd64_linux.a: TAG_amd64_linux libvex.a
123 mv -f libvex.a libvex_amd64_linux.a
124TAG_amd64_linux:
sewardjccd0c842005-11-07 15:37:24 +0000125 if [ ! -f TAG_amd64_linux ] ; then rm -f $(LIB_OBJS) TAG_* libvex.a ; fi
sewardja1eb31c2005-11-07 14:59:13 +0000126 touch TAG_amd64_linux
127
128libvex_ppc32_linux.a: TAG_ppc32_linux libvex.a
129 mv -f libvex.a libvex_ppc32_linux.a
130TAG_ppc32_linux:
sewardjccd0c842005-11-07 15:37:24 +0000131 if [ ! -f TAG_ppc32_linux ] ; then rm -f $(LIB_OBJS) TAG_* libvex.a ; fi
sewardja1eb31c2005-11-07 14:59:13 +0000132 touch TAG_ppc32_linux
133
ceriond953ebb2005-11-29 13:27:20 +0000134libvex_ppc64_linux.a: TAG_ppc64_linux libvex.a
135 mv -f libvex.a libvex_ppc64_linux.a
136TAG_ppc64_linux:
137 if [ ! -f TAG_ppc64_linux ] ; then rm -f $(LIB_OBJS) TAG_* libvex.a ; fi
138 touch TAG_ppc64_linux
139
sewardja1eb31c2005-11-07 14:59:13 +0000140
sewardj08551a72005-07-26 22:44:27 +0000141# This doesn't get rid of priv/main/vex_svnversion.h, because
142# that can't be regenerated in the final Valgrind tarball, and
143# so if 'make clean' did get rid of it, then in the tarball,
144# doing 'make ; make clean ; make' (or distclean) would fail.
sewardj5cf515f2004-06-26 20:10:35 +0000145clean:
sewardjccd0c842005-11-07 15:37:24 +0000146 rm -f $(LIB_OBJS) *.a vex test_main.o TAG_* \
sewardj2825ac42005-03-08 16:43:27 +0000147 pub/libvex_guest_offsets.h
sewardjce605f92004-07-05 14:39:15 +0000148
sewardj80f5fce2004-12-20 04:37:50 +0000149version:
150 rm -f priv/main/vex_svnversion.h
151 echo -n "\"" > priv/main/vex_svnversion.h
152 svnversion -n . >> priv/main/vex_svnversion.h
153 echo "\"" >> priv/main/vex_svnversion.h
154
sewardjeecde932005-01-05 19:11:09 +0000155minidist: version
156 rm -f vex--minidist-2005MMDD.tar
157 tar cf vex--minidist-2005MMDD.tar $(PUB_HEADERS) $(PRIV_HEADERS) \
158 priv/main/vex_svnversion.h \
159 test_main.c test_main.h \
160 Makefile \
161 `echo $(LIB_OBJS) | sed "s/\.o/\.c/g"`
162 @echo
163 @echo minidist done, size and svnversion follow:
164 @ls -l vex--minidist-2005MMDD.tar
165 @cat priv/main/vex_svnversion.h
166 @echo
167
sewardj2825ac42005-03-08 16:43:27 +0000168pub/libvex_guest_offsets.h:
sewardj967de5c2005-08-29 12:07:41 +0000169 $(CC) -Wall -g -o auxprogs/genoffsets auxprogs/genoffsets.c
sewardj2825ac42005-03-08 16:43:27 +0000170 ./auxprogs/genoffsets > pub/libvex_guest_offsets.h
171
sewardjce605f92004-07-05 14:39:15 +0000172
sewardj35421a32004-07-05 13:12:34 +0000173ALL_HEADERS = $(PUB_HEADERS) $(PRIV_HEADERS)
174ALL_INCLUDES = $(PUB_INCLUDES) $(PRIV_INCLUDES)
175
sewardjabe017e2004-10-29 23:42:36 +0000176test_main.o: $(PUB_HEADERS) test_main.c test_main.h
sewardjce605f92004-07-05 14:39:15 +0000177 $(CC) $(CCFLAGS) $(PUB_INCLUDES) -o test_main.o \
178 -c test_main.c
179
sewardjc0ee2ed2004-07-27 10:29:41 +0000180priv/ir/irdefs.o: $(ALL_HEADERS) priv/ir/irdefs.c
181 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/ir/irdefs.o \
182 -c priv/ir/irdefs.c
sewardj35421a32004-07-05 13:12:34 +0000183
sewardj69933ac2004-12-20 04:12:14 +0000184priv/ir/irmatch.o: $(ALL_HEADERS) priv/ir/irmatch.c
185 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/ir/irmatch.o \
186 -c priv/ir/irmatch.c
187
sewardja1a370f2004-08-17 13:31:55 +0000188priv/ir/iropt.o: $(ALL_HEADERS) priv/ir/iropt.c
189 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/ir/iropt.o \
190 -c priv/ir/iropt.c
191
sewardj1fec1642004-12-20 04:42:49 +0000192priv/main/vex_main.o: $(ALL_HEADERS) priv/main/vex_main.c \
193 priv/main/vex_svnversion.h
sewardj887a11a2004-07-05 17:26:47 +0000194 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/main/vex_main.o \
195 -c priv/main/vex_main.c
sewardj35421a32004-07-05 13:12:34 +0000196
sewardj887a11a2004-07-05 17:26:47 +0000197priv/main/vex_globals.o: $(ALL_HEADERS) priv/main/vex_globals.c
198 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/main/vex_globals.o \
199 -c priv/main/vex_globals.c
sewardj35421a32004-07-05 13:12:34 +0000200
201priv/main/vex_util.o: $(ALL_HEADERS) priv/main/vex_util.c
202 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/main/vex_util.o \
203 -c priv/main/vex_util.c
204
sewardj5a820d92004-07-27 09:50:39 +0000205priv/host-x86/hdefs.o: $(ALL_HEADERS) priv/host-x86/hdefs.c
206 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-x86/hdefs.o \
207 -c priv/host-x86/hdefs.c
sewardj35421a32004-07-05 13:12:34 +0000208
sewardjb7a0a112005-02-01 16:06:14 +0000209priv/host-amd64/hdefs.o: $(ALL_HEADERS) priv/host-amd64/hdefs.c
210 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-amd64/hdefs.o \
211 -c priv/host-amd64/hdefs.c
212
cerion82edbb32004-12-16 14:06:34 +0000213priv/host-arm/hdefs.o: $(ALL_HEADERS) priv/host-arm/hdefs.c
214 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-arm/hdefs.o \
215 -c priv/host-arm/hdefs.c
216
ceriond0eae2d2005-12-23 11:43:01 +0000217priv/host-ppc/hdefs.o: $(ALL_HEADERS) priv/host-ppc/hdefs.c
218 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-ppc/hdefs.o \
219 -c priv/host-ppc/hdefs.c
cerionbcf8c3e2005-02-04 16:17:07 +0000220
sewardj5a820d92004-07-27 09:50:39 +0000221priv/host-x86/isel.o: $(ALL_HEADERS) priv/host-x86/isel.c
222 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-x86/isel.o \
223 -c priv/host-x86/isel.c
sewardj35421a32004-07-05 13:12:34 +0000224
sewardjb7a0a112005-02-01 16:06:14 +0000225priv/host-amd64/isel.o: $(ALL_HEADERS) priv/host-amd64/isel.c
226 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-amd64/isel.o \
227 -c priv/host-amd64/isel.c
228
cerioncee30312004-12-17 20:30:21 +0000229priv/host-arm/isel.o: $(ALL_HEADERS) priv/host-arm/isel.c
230 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-arm/isel.o \
231 -c priv/host-arm/isel.c
232
ceriond0eae2d2005-12-23 11:43:01 +0000233priv/host-ppc/isel.o: $(ALL_HEADERS) priv/host-ppc/isel.c
234 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-ppc/isel.o \
235 -c priv/host-ppc/isel.c
cerionbcf8c3e2005-02-04 16:17:07 +0000236
sewardjc0ee2ed2004-07-27 10:29:41 +0000237priv/host-generic/h_generic_regs.o: $(ALL_HEADERS) priv/host-generic/h_generic_regs.c
238 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-generic/h_generic_regs.o \
239 -c priv/host-generic/h_generic_regs.c
sewardj35421a32004-07-05 13:12:34 +0000240
sewardj38a3f862005-01-13 15:06:51 +0000241priv/host-generic/h_generic_simd64.o: $(ALL_HEADERS) priv/host-generic/h_generic_simd64.c
242 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-generic/h_generic_simd64.o \
243 -c priv/host-generic/h_generic_simd64.c
244
sewardj432b1c92004-10-30 13:00:55 +0000245priv/host-generic/reg_alloc2.o: $(ALL_HEADERS) priv/host-generic/reg_alloc2.c
246 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-generic/reg_alloc2.o \
247 -c priv/host-generic/reg_alloc2.c
248
sewardjc0ee2ed2004-07-27 10:29:41 +0000249priv/guest-x86/toIR.o: $(ALL_HEADERS) priv/guest-x86/toIR.c
250 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-x86/toIR.o \
251 -c priv/guest-x86/toIR.c
sewardj36ca5132004-07-24 13:12:23 +0000252
sewardj52ff4cc2005-03-26 20:33:38 +0000253priv/guest-generic/g_generic_x87.o: $(ALL_HEADERS) priv/guest-generic/g_generic_x87.c
254 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-generic/g_generic_x87.o \
255 -c priv/guest-generic/g_generic_x87.c
256
sewardj9e6491a2005-07-02 19:24:10 +0000257priv/guest-generic/bb_to_IR.o: $(ALL_HEADERS) priv/guest-generic/bb_to_IR.c
258 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-generic/bb_to_IR.o \
259 -c priv/guest-generic/bb_to_IR.c
260
sewardjc0ee2ed2004-07-27 10:29:41 +0000261priv/guest-x86/ghelpers.o: $(ALL_HEADERS) priv/guest-x86/ghelpers.c
262 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-x86/ghelpers.o \
263 -c priv/guest-x86/ghelpers.c
sewardj33dba642004-11-25 13:07:51 +0000264
njn9c6acb02004-11-30 15:56:47 +0000265priv/guest-amd64/ghelpers.o: $(ALL_HEADERS) priv/guest-amd64/ghelpers.c
266 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-amd64/ghelpers.o \
267 -c priv/guest-amd64/ghelpers.c
268
sewardjd20c8852005-01-20 20:04:07 +0000269priv/guest-amd64/toIR.o: $(ALL_HEADERS) priv/guest-amd64/toIR.c
270 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-amd64/toIR.o \
271 -c priv/guest-amd64/toIR.c
272
sewardj33dba642004-11-25 13:07:51 +0000273priv/guest-arm/ghelpers.o: $(ALL_HEADERS) priv/guest-arm/ghelpers.c
274 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-arm/ghelpers.o \
275 -c priv/guest-arm/ghelpers.c
276
277priv/guest-arm/toIR.o: $(ALL_HEADERS) priv/guest-arm/toIR.c
278 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-arm/toIR.o \
279 -c priv/guest-arm/toIR.c
cerion896a1372005-01-25 12:24:25 +0000280
ceriond0eae2d2005-12-23 11:43:01 +0000281priv/guest-ppc/ghelpers.o: $(ALL_HEADERS) priv/guest-ppc/ghelpers.c
282 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-ppc/ghelpers.o \
283 -c priv/guest-ppc/ghelpers.c
cerion896a1372005-01-25 12:24:25 +0000284
ceriond0eae2d2005-12-23 11:43:01 +0000285priv/guest-ppc/toIR.o: $(ALL_HEADERS) priv/guest-ppc/toIR.c
286 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-ppc/toIR.o \
287 -c priv/guest-ppc/toIR.c