blob: 4e664d777bc79f2bff56a7c9c2aea4195166de00 [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 \
11 pub/libvex_guest_offsets.h
sewardj5cf515f2004-06-26 20:10:35 +000012
sewardjc0ee2ed2004-07-27 10:29:41 +000013PRIV_HEADERS = priv/host-x86/hdefs.h \
sewardjb7a0a112005-02-01 16:06:14 +000014 priv/host-amd64/hdefs.h \
cerion82edbb32004-12-16 14:06:34 +000015 priv/host-arm/hdefs.h \
cerionbcf8c3e2005-02-04 16:17:07 +000016 priv/host-ppc32/hdefs.h \
sewardjc0ee2ed2004-07-27 10:29:41 +000017 priv/host-generic/h_generic_regs.h \
sewardj38a3f862005-01-13 15:06:51 +000018 priv/host-generic/h_generic_simd64.h \
sewardj887a11a2004-07-05 17:26:47 +000019 priv/main/vex_globals.h \
sewardjc9a65702004-07-07 16:32:57 +000020 priv/main/vex_util.h \
sewardj52ff4cc2005-03-26 20:33:38 +000021 priv/guest-generic/g_generic_x87.h \
sewardj9e6491a2005-07-02 19:24:10 +000022 priv/guest-generic/bb_to_IR.h \
sewardj00ec7072004-08-18 13:58:59 +000023 priv/guest-x86/gdefs.h \
sewardjd20c8852005-01-20 20:04:07 +000024 priv/guest-amd64/gdefs.h \
sewardj33dba642004-11-25 13:07:51 +000025 priv/guest-arm/gdefs.h \
cerion1515db92005-01-25 17:21:23 +000026 priv/guest-ppc32/gdefs.h \
sewardj69933ac2004-12-20 04:12:14 +000027 priv/ir/irmatch.h \
sewardj00ec7072004-08-18 13:58:59 +000028 priv/ir/iropt.h
sewardj5cf515f2004-06-26 20:10:35 +000029
sewardjc0ee2ed2004-07-27 10:29:41 +000030LIB_OBJS = priv/ir/irdefs.o \
sewardj69933ac2004-12-20 04:12:14 +000031 priv/ir/irmatch.o \
sewardja1a370f2004-08-17 13:31:55 +000032 priv/ir/iropt.o \
sewardj887a11a2004-07-05 17:26:47 +000033 priv/main/vex_main.o \
34 priv/main/vex_globals.o \
sewardj35421a32004-07-05 13:12:34 +000035 priv/main/vex_util.o \
sewardjc0ee2ed2004-07-27 10:29:41 +000036 priv/host-x86/hdefs.o \
sewardjb7a0a112005-02-01 16:06:14 +000037 priv/host-amd64/hdefs.o \
cerion82edbb32004-12-16 14:06:34 +000038 priv/host-arm/hdefs.o \
cerionbcf8c3e2005-02-04 16:17:07 +000039 priv/host-ppc32/hdefs.o \
sewardjc0ee2ed2004-07-27 10:29:41 +000040 priv/host-x86/isel.o \
sewardjb7a0a112005-02-01 16:06:14 +000041 priv/host-amd64/isel.o \
cerioncee30312004-12-17 20:30:21 +000042 priv/host-arm/isel.o \
cerionbcf8c3e2005-02-04 16:17:07 +000043 priv/host-ppc32/isel.o \
sewardjc0ee2ed2004-07-27 10:29:41 +000044 priv/host-generic/h_generic_regs.o \
sewardj38a3f862005-01-13 15:06:51 +000045 priv/host-generic/h_generic_simd64.o \
sewardj432b1c92004-10-30 13:00:55 +000046 priv/host-generic/reg_alloc2.o \
sewardj52ff4cc2005-03-26 20:33:38 +000047 priv/guest-generic/g_generic_x87.o \
sewardj9e6491a2005-07-02 19:24:10 +000048 priv/guest-generic/bb_to_IR.o \
sewardjc0ee2ed2004-07-27 10:29:41 +000049 priv/guest-x86/ghelpers.o \
njn9c6acb02004-11-30 15:56:47 +000050 priv/guest-amd64/ghelpers.o \
sewardj33dba642004-11-25 13:07:51 +000051 priv/guest-arm/ghelpers.o \
cerion1515db92005-01-25 17:21:23 +000052 priv/guest-ppc32/ghelpers.o \
sewardj33dba642004-11-25 13:07:51 +000053 priv/guest-x86/toIR.o \
sewardjd20c8852005-01-20 20:04:07 +000054 priv/guest-amd64/toIR.o \
cerion896a1372005-01-25 12:24:25 +000055 priv/guest-arm/toIR.o \
cerion1515db92005-01-25 17:21:23 +000056 priv/guest-ppc32/toIR.o
sewardj5cf515f2004-06-26 20:10:35 +000057
sewardjac9af022004-07-05 01:15:34 +000058PUB_INCLUDES = -Ipub
59
sewardjc0ee2ed2004-07-27 10:29:41 +000060# Do not add any priv/host-ARCH or priv/guest-ARCH directories to this
61# list, as they contain duplicate file names (each host has a hdefs.h,
62# for example).
63PRIV_INCLUDES = -Ipriv
sewardjac9af022004-07-05 01:15:34 +000064
65
sewardj030fd362005-09-15 16:00:58 +000066ifndef $(CC)
sewardj967de5c2005-08-29 12:07:41 +000067 CC = gcc
68endif
sewardj030fd362005-09-15 16:00:58 +000069ifndef $(AR)
70 AR = ar
71endif
72
sewardj59c07782005-01-21 21:23:07 +000073CCFLAGS = -g -O -Wall -Wmissing-prototypes -Wshadow -Winline \
74 -Wpointer-arith -Wbad-function-cast -Wcast-qual \
sewardj9a036bf2005-03-14 18:19:08 +000075 -Wcast-align -Wmissing-declarations \
sewardj59c07782005-01-21 21:23:07 +000076 $(EXTRA_CFLAGS)
sewardj41f43bc2004-07-08 14:23:22 +000077
sewardje05c42c2004-07-08 20:25:10 +000078#CC = icc
sewardj52ff4cc2005-03-26 20:33:38 +000079#CCFLAGS = -g -Wall -wd981 -wd279 -wd1287 -wd869 -wd111 -wd188 -wd186
sewardj41f43bc2004-07-08 14:23:22 +000080# 981: operands are evaluated in unspecified order
81# 279: controlling expression is constant
82# 1287: invalid attribute for parameter
83# 869: parameter "..." was never referenced
sewardj41f43bc2004-07-08 14:23:22 +000084# 111: statement is unreachable
sewardjb7a0a112005-02-01 16:06:14 +000085# 188: enumerated type mixed with another type
sewardje05c42c2004-07-08 20:25:10 +000086# (the above are for icc 8.0 -- 8.0.0.55 I think)
sewardj52ff4cc2005-03-26 20:33:38 +000087# 186: pointless comparison of unsigned integer with zero
sewardjac9af022004-07-05 01:15:34 +000088
sewardjb7a0a112005-02-01 16:06:14 +000089
sewardjb5d0f3d2004-12-31 17:21:28 +000090all: vex
sewardjbf31abd2004-07-25 00:07:35 +000091
sewardj030fd362005-09-15 16:00:58 +000092# Empty, needed for Valgrind
93install:
94
cerion9c47d812005-02-16 09:08:23 +000095scratch: clean version all
96
sewardjc0ee2ed2004-07-27 10:29:41 +000097vex: libvex.a test_main.o
sewardj80424fe2004-07-27 10:43:34 +000098 $(CC) $(CCFLAGS) -o vex test_main.o libvex.a
sewardjac9af022004-07-05 01:15:34 +000099
sewardj887a11a2004-07-05 17:26:47 +0000100libvex.a: $(LIB_OBJS)
101 rm -f libvex.a
sewardj030fd362005-09-15 16:00:58 +0000102 $(AR) clq libvex.a $(LIB_OBJS)
sewardjac9af022004-07-05 01:15:34 +0000103
sewardj08551a72005-07-26 22:44:27 +0000104# This doesn't get rid of priv/main/vex_svnversion.h, because
105# that can't be regenerated in the final Valgrind tarball, and
106# so if 'make clean' did get rid of it, then in the tarball,
107# doing 'make ; make clean ; make' (or distclean) would fail.
sewardj5cf515f2004-06-26 20:10:35 +0000108clean:
sewardj2825ac42005-03-08 16:43:27 +0000109 rm -f $(LIB_OBJS) libvex.a vex test_main.o \
sewardj2825ac42005-03-08 16:43:27 +0000110 pub/libvex_guest_offsets.h
sewardjce605f92004-07-05 14:39:15 +0000111
sewardj80f5fce2004-12-20 04:37:50 +0000112version:
113 rm -f priv/main/vex_svnversion.h
114 echo -n "\"" > priv/main/vex_svnversion.h
115 svnversion -n . >> priv/main/vex_svnversion.h
116 echo "\"" >> priv/main/vex_svnversion.h
117
sewardjeecde932005-01-05 19:11:09 +0000118minidist: version
119 rm -f vex--minidist-2005MMDD.tar
120 tar cf vex--minidist-2005MMDD.tar $(PUB_HEADERS) $(PRIV_HEADERS) \
121 priv/main/vex_svnversion.h \
122 test_main.c test_main.h \
123 Makefile \
124 `echo $(LIB_OBJS) | sed "s/\.o/\.c/g"`
125 @echo
126 @echo minidist done, size and svnversion follow:
127 @ls -l vex--minidist-2005MMDD.tar
128 @cat priv/main/vex_svnversion.h
129 @echo
130
sewardj2825ac42005-03-08 16:43:27 +0000131pub/libvex_guest_offsets.h:
sewardj967de5c2005-08-29 12:07:41 +0000132 $(CC) -Wall -g -o auxprogs/genoffsets auxprogs/genoffsets.c
sewardj2825ac42005-03-08 16:43:27 +0000133 ./auxprogs/genoffsets > pub/libvex_guest_offsets.h
134
sewardjce605f92004-07-05 14:39:15 +0000135
sewardj35421a32004-07-05 13:12:34 +0000136ALL_HEADERS = $(PUB_HEADERS) $(PRIV_HEADERS)
137ALL_INCLUDES = $(PUB_INCLUDES) $(PRIV_INCLUDES)
138
sewardjabe017e2004-10-29 23:42:36 +0000139test_main.o: $(PUB_HEADERS) test_main.c test_main.h
sewardjce605f92004-07-05 14:39:15 +0000140 $(CC) $(CCFLAGS) $(PUB_INCLUDES) -o test_main.o \
141 -c test_main.c
142
sewardjc0ee2ed2004-07-27 10:29:41 +0000143priv/ir/irdefs.o: $(ALL_HEADERS) priv/ir/irdefs.c
144 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/ir/irdefs.o \
145 -c priv/ir/irdefs.c
sewardj35421a32004-07-05 13:12:34 +0000146
sewardj69933ac2004-12-20 04:12:14 +0000147priv/ir/irmatch.o: $(ALL_HEADERS) priv/ir/irmatch.c
148 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/ir/irmatch.o \
149 -c priv/ir/irmatch.c
150
sewardja1a370f2004-08-17 13:31:55 +0000151priv/ir/iropt.o: $(ALL_HEADERS) priv/ir/iropt.c
152 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/ir/iropt.o \
153 -c priv/ir/iropt.c
154
sewardj1fec1642004-12-20 04:42:49 +0000155priv/main/vex_main.o: $(ALL_HEADERS) priv/main/vex_main.c \
156 priv/main/vex_svnversion.h
sewardj887a11a2004-07-05 17:26:47 +0000157 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/main/vex_main.o \
158 -c priv/main/vex_main.c
sewardj35421a32004-07-05 13:12:34 +0000159
sewardj887a11a2004-07-05 17:26:47 +0000160priv/main/vex_globals.o: $(ALL_HEADERS) priv/main/vex_globals.c
161 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/main/vex_globals.o \
162 -c priv/main/vex_globals.c
sewardj35421a32004-07-05 13:12:34 +0000163
164priv/main/vex_util.o: $(ALL_HEADERS) priv/main/vex_util.c
165 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/main/vex_util.o \
166 -c priv/main/vex_util.c
167
sewardj5a820d92004-07-27 09:50:39 +0000168priv/host-x86/hdefs.o: $(ALL_HEADERS) priv/host-x86/hdefs.c
169 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-x86/hdefs.o \
170 -c priv/host-x86/hdefs.c
sewardj35421a32004-07-05 13:12:34 +0000171
sewardjb7a0a112005-02-01 16:06:14 +0000172priv/host-amd64/hdefs.o: $(ALL_HEADERS) priv/host-amd64/hdefs.c
173 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-amd64/hdefs.o \
174 -c priv/host-amd64/hdefs.c
175
cerion82edbb32004-12-16 14:06:34 +0000176priv/host-arm/hdefs.o: $(ALL_HEADERS) priv/host-arm/hdefs.c
177 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-arm/hdefs.o \
178 -c priv/host-arm/hdefs.c
179
cerionbcf8c3e2005-02-04 16:17:07 +0000180priv/host-ppc32/hdefs.o: $(ALL_HEADERS) priv/host-ppc32/hdefs.c
181 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-ppc32/hdefs.o \
182 -c priv/host-ppc32/hdefs.c
183
sewardj5a820d92004-07-27 09:50:39 +0000184priv/host-x86/isel.o: $(ALL_HEADERS) priv/host-x86/isel.c
185 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-x86/isel.o \
186 -c priv/host-x86/isel.c
sewardj35421a32004-07-05 13:12:34 +0000187
sewardjb7a0a112005-02-01 16:06:14 +0000188priv/host-amd64/isel.o: $(ALL_HEADERS) priv/host-amd64/isel.c
189 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-amd64/isel.o \
190 -c priv/host-amd64/isel.c
191
cerioncee30312004-12-17 20:30:21 +0000192priv/host-arm/isel.o: $(ALL_HEADERS) priv/host-arm/isel.c
193 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-arm/isel.o \
194 -c priv/host-arm/isel.c
195
cerionbcf8c3e2005-02-04 16:17:07 +0000196priv/host-ppc32/isel.o: $(ALL_HEADERS) priv/host-ppc32/isel.c
197 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-ppc32/isel.o \
198 -c priv/host-ppc32/isel.c
199
sewardjc0ee2ed2004-07-27 10:29:41 +0000200priv/host-generic/h_generic_regs.o: $(ALL_HEADERS) priv/host-generic/h_generic_regs.c
201 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-generic/h_generic_regs.o \
202 -c priv/host-generic/h_generic_regs.c
sewardj35421a32004-07-05 13:12:34 +0000203
sewardj38a3f862005-01-13 15:06:51 +0000204priv/host-generic/h_generic_simd64.o: $(ALL_HEADERS) priv/host-generic/h_generic_simd64.c
205 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-generic/h_generic_simd64.o \
206 -c priv/host-generic/h_generic_simd64.c
207
sewardj432b1c92004-10-30 13:00:55 +0000208priv/host-generic/reg_alloc2.o: $(ALL_HEADERS) priv/host-generic/reg_alloc2.c
209 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-generic/reg_alloc2.o \
210 -c priv/host-generic/reg_alloc2.c
211
sewardjc0ee2ed2004-07-27 10:29:41 +0000212priv/guest-x86/toIR.o: $(ALL_HEADERS) priv/guest-x86/toIR.c
213 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-x86/toIR.o \
214 -c priv/guest-x86/toIR.c
sewardj36ca5132004-07-24 13:12:23 +0000215
sewardj52ff4cc2005-03-26 20:33:38 +0000216priv/guest-generic/g_generic_x87.o: $(ALL_HEADERS) priv/guest-generic/g_generic_x87.c
217 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-generic/g_generic_x87.o \
218 -c priv/guest-generic/g_generic_x87.c
219
sewardj9e6491a2005-07-02 19:24:10 +0000220priv/guest-generic/bb_to_IR.o: $(ALL_HEADERS) priv/guest-generic/bb_to_IR.c
221 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-generic/bb_to_IR.o \
222 -c priv/guest-generic/bb_to_IR.c
223
sewardjc0ee2ed2004-07-27 10:29:41 +0000224priv/guest-x86/ghelpers.o: $(ALL_HEADERS) priv/guest-x86/ghelpers.c
225 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-x86/ghelpers.o \
226 -c priv/guest-x86/ghelpers.c
sewardj33dba642004-11-25 13:07:51 +0000227
njn9c6acb02004-11-30 15:56:47 +0000228priv/guest-amd64/ghelpers.o: $(ALL_HEADERS) priv/guest-amd64/ghelpers.c
229 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-amd64/ghelpers.o \
230 -c priv/guest-amd64/ghelpers.c
231
sewardjd20c8852005-01-20 20:04:07 +0000232priv/guest-amd64/toIR.o: $(ALL_HEADERS) priv/guest-amd64/toIR.c
233 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-amd64/toIR.o \
234 -c priv/guest-amd64/toIR.c
235
sewardj33dba642004-11-25 13:07:51 +0000236priv/guest-arm/ghelpers.o: $(ALL_HEADERS) priv/guest-arm/ghelpers.c
237 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-arm/ghelpers.o \
238 -c priv/guest-arm/ghelpers.c
239
240priv/guest-arm/toIR.o: $(ALL_HEADERS) priv/guest-arm/toIR.c
241 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-arm/toIR.o \
242 -c priv/guest-arm/toIR.c
cerion896a1372005-01-25 12:24:25 +0000243
cerion1515db92005-01-25 17:21:23 +0000244priv/guest-ppc32/ghelpers.o: $(ALL_HEADERS) priv/guest-ppc32/ghelpers.c
245 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-ppc32/ghelpers.o \
246 -c priv/guest-ppc32/ghelpers.c
cerion896a1372005-01-25 12:24:25 +0000247
cerion1515db92005-01-25 17:21:23 +0000248priv/guest-ppc32/toIR.o: $(ALL_HEADERS) priv/guest-ppc32/toIR.c
249 $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-ppc32/toIR.o \
250 -c priv/guest-ppc32/toIR.c