1# VEX/Makefile is generated from this file at configure-time.
2
3include $(top_srcdir)/Makefile.all.am
4
5#----------------------------------------------------------------------------
6# Headers, etc
7#----------------------------------------------------------------------------
8
9EXTRA_DIST = \
10	HACKING.README \
11	LICENSE.README \
12	LICENSE.GPL \
13	auxprogs/genoffsets.c
14
15pkginclude_HEADERS = \
16	pub/libvex.h \
17	pub/libvex_basictypes.h \
18	pub/libvex_emnote.h \
19	pub/libvex_guest_offsets.h \
20	pub/libvex_guest_x86.h \
21	pub/libvex_guest_amd64.h \
22	pub/libvex_guest_ppc32.h \
23	pub/libvex_guest_ppc64.h \
24	pub/libvex_guest_arm.h \
25	pub/libvex_guest_arm64.h \
26	pub/libvex_guest_s390x.h \
27	pub/libvex_guest_mips32.h \
28	pub/libvex_guest_mips64.h \
29	pub/libvex_guest_tilegx.h \
30	pub/libvex_s390x_common.h \
31	pub/libvex_ir.h \
32	pub/libvex_trc_values.h
33
34noinst_HEADERS = \
35	priv/main_globals.h \
36	priv/main_util.h \
37	priv/ir_match.h \
38	priv/ir_opt.h \
39	priv/guest_generic_bb_to_IR.h \
40	priv/guest_generic_x87.h \
41	priv/guest_x86_defs.h \
42	priv/guest_amd64_defs.h \
43	priv/guest_ppc_defs.h \
44	priv/guest_arm_defs.h \
45	priv/guest_arm64_defs.h \
46	priv/guest_s390_defs.h \
47	priv/guest_mips_defs.h \
48	priv/guest_tilegx_defs.h \
49	priv/host_generic_regs.h \
50	priv/host_generic_simd64.h \
51	priv/host_generic_simd128.h \
52	priv/host_generic_simd256.h \
53	priv/host_generic_maddf.h \
54	priv/host_x86_defs.h \
55	priv/host_amd64_defs.h \
56	priv/host_ppc_defs.h \
57	priv/host_arm_defs.h \
58	priv/host_arm64_defs.h \
59	priv/host_s390_defs.h \
60	priv/host_tilegx_defs.h \
61	priv/s390_disasm.h \
62	priv/s390_defs.h \
63	priv/host_mips_defs.h \
64	priv/tilegx_disasm.h
65
66BUILT_SOURCES = pub/libvex_guest_offsets.h
67CLEANFILES    = pub/libvex_guest_offsets.h
68
69if COMPILER_IS_CLANG
70CFLAGS_FOR_GENOFFSETS = $(CFLAGS) -no-integrated-as
71else
72CFLAGS_FOR_GENOFFSETS = $(CFLAGS)
73endif
74
75# This is very uggerly.  Need to sed out both "xyzzyN" and
76# "xyzzy$N" since gcc on different targets emits the constants
77# differently -- with a leading $ on x86/amd64 but none on ppc32/64.
78# ICC also emits the constants differently with a leading # #define
79pub/libvex_guest_offsets.h: auxprogs/genoffsets.c \
80			    pub/libvex_basictypes.h \
81			    pub/libvex_guest_x86.h \
82			    pub/libvex_guest_amd64.h \
83			    pub/libvex_guest_ppc32.h \
84			    pub/libvex_guest_ppc64.h \
85			    pub/libvex_guest_arm.h \
86			    pub/libvex_guest_arm64.h \
87			    pub/libvex_guest_s390x.h \
88			    pub/libvex_guest_mips32.h \
89			    pub/libvex_guest_mips64.h \
90			    pub/libvex_guest_tilegx.h
91	rm -f auxprogs/genoffsets.s
92	$(mkdir_p) auxprogs pub
93	$(CC) $(CFLAGS_FOR_GENOFFSETS) \
94	      $(LIBVEX_CFLAGS) \
95	      $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) \
96				-O -S -o auxprogs/genoffsets.s \
97					 $(srcdir)/auxprogs/genoffsets.c
98	grep xyzzy auxprogs/genoffsets.s | grep "^[# ]*#define" \
99	   | sed "s/# #define/#define/g" \
100	   | sed "s/xyzzy\\$$//g" \
101	   | sed "s/xyzzy#//g" \
102	   | sed "s/xyzzy//g" \
103	   > pub/libvex_guest_offsets.h
104	rm -f auxprogs/genoffsets.s
105
106#----------------------------------------------------------------------------
107# libvex-<platform>-<os>.a : containing all VEX objects, including
108# a main_main.o compiled in single arch (guest==host).
109# libvexmultiarch-<platform>-<os>.a, only containing multiarch_main_main.o,
110# which is main_main.c compiled so that any guest/host combination
111# can be done at runtime.
112#----------------------------------------------------------------------------
113
114pkglib_LIBRARIES  = libvex-@VGCONF_ARCH_PRI@-@VGCONF_OS@.a \
115	libvexmultiarch-@VGCONF_ARCH_PRI@-@VGCONF_OS@.a
116if VGCONF_HAVE_PLATFORM_SEC
117pkglib_LIBRARIES += libvex-@VGCONF_ARCH_SEC@-@VGCONF_OS@.a \
118	libvexmultiarch-@VGCONF_ARCH_SEC@-@VGCONF_OS@.a
119endif
120
121LIBVEX_SOURCES_COMMON = \
122	priv/main_globals.c \
123	priv/main_main.c \
124	priv/main_util.c \
125	priv/ir_defs.c \
126	priv/ir_inject.c \
127	priv/ir_match.c \
128	priv/ir_opt.c \
129	priv/guest_generic_bb_to_IR.c \
130	priv/guest_generic_x87.c \
131	priv/guest_x86_helpers.c \
132	priv/guest_x86_toIR.c \
133	priv/guest_amd64_helpers.c \
134	priv/guest_amd64_toIR.c \
135	priv/guest_ppc_helpers.c \
136	priv/guest_ppc_toIR.c \
137	priv/guest_arm_helpers.c \
138	priv/guest_arm_toIR.c \
139	priv/guest_arm64_helpers.c \
140	priv/guest_arm64_toIR.c \
141	priv/guest_s390_helpers.c \
142	priv/guest_s390_toIR.c \
143	priv/guest_mips_helpers.c \
144	priv/guest_mips_toIR.c \
145	priv/guest_tilegx_helpers.c \
146	priv/guest_tilegx_toIR.c \
147	priv/host_generic_regs.c \
148	priv/host_generic_simd64.c \
149	priv/host_generic_simd128.c \
150	priv/host_generic_simd256.c \
151	priv/host_generic_maddf.c \
152	priv/host_generic_reg_alloc2.c \
153	priv/host_x86_defs.c \
154	priv/host_x86_isel.c \
155	priv/host_amd64_defs.c \
156	priv/host_amd64_isel.c \
157	priv/host_ppc_defs.c \
158	priv/host_ppc_isel.c \
159	priv/host_arm_defs.c \
160	priv/host_arm_isel.c \
161	priv/host_arm64_defs.c \
162	priv/host_arm64_isel.c \
163	priv/host_s390_defs.c \
164	priv/host_s390_isel.c \
165	priv/s390_disasm.c \
166	priv/host_mips_defs.c \
167	priv/host_mips_isel.c \
168	priv/host_tilegx_defs.c \
169	priv/host_tilegx_isel.c \
170	priv/tilegx_disasm.c
171
172LIBVEXMULTIARCH_SOURCES = priv/multiarch_main_main.c
173
174LIBVEX_CFLAGS = \
175	-Wbad-function-cast \
176	-fstrict-aliasing
177
178libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES  = $(LIBVEX_SOURCES_COMMON)
179libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS = \
180        $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) -Ipriv
181libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS   = \
182        $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) $(LIBVEX_CFLAGS)
183if VGCONF_HAVE_PLATFORM_SEC
184libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES  = $(LIBVEX_SOURCES_COMMON)
185libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS = \
186        $(AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) -Ipriv
187libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS   = \
188        $(AM_CFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) $(LIBVEX_CFLAGS)
189endif
190
191libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES  = \
192	$(LIBVEXMULTIARCH_SOURCES)
193libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS = \
194        $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) -Ipriv
195libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS   = \
196        $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) $(LIBVEX_CFLAGS)
197if VGCONF_HAVE_PLATFORM_SEC
198libvexmultiarch_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES  = \
199	$(LIBVEXMULTIARCH_SOURCES)
200libvexmultiarch_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS = \
201        $(AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) -Ipriv
202libvexmultiarch_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS   = \
203        $(AM_CFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) $(LIBVEX_CFLAGS)
204endif
205
206