# VEX/Makefile is generated from this file at configure-time.

include $(top_srcdir)/Makefile.all.am

#----------------------------------------------------------------------------
# Headers, etc
#----------------------------------------------------------------------------

EXTRA_DIST = \
	HACKING.README \
	LICENSE.README \
	LICENSE.GPL \
	quote.txt \
	newline.txt \
	auxprogs/genoffsets.c

pkginclude_HEADERS = \
	pub/libvex.h \
	pub/libvex_basictypes.h \
	pub/libvex_emwarn.h \
	pub/libvex_guest_offsets.h \
	pub/libvex_guest_x86.h \
	pub/libvex_guest_amd64.h \
	pub/libvex_guest_ppc32.h \
	pub/libvex_guest_ppc64.h \
	pub/libvex_guest_arm.h \
	pub/libvex_ir.h \
	pub/libvex_trc_values.h

noinst_HEADERS = \
	priv/main_globals.h \
	priv/main_util.h \
	priv/ir_match.h \
	priv/ir_opt.h \
	priv/guest_generic_bb_to_IR.h \
	priv/guest_generic_x87.h \
	priv/guest_x86_defs.h \
	priv/guest_amd64_defs.h \
	priv/guest_ppc_defs.h \
	priv/guest_arm_defs.h \
	priv/host_generic_regs.h \
	priv/host_generic_simd64.h \
	priv/host_generic_simd128.h \
	priv/host_x86_defs.h \
	priv/host_amd64_defs.h \
	priv/host_ppc_defs.h \
	priv/host_arm_defs.h

BUILT_SOURCES = pub/libvex_guest_offsets.h
CLEANFILES    = pub/libvex_guest_offsets.h

# This is very uggerly.  Need to sed out both "xyzzyN" and
# "xyzzy$N" since gcc on different targets emits the constants
# differently -- with a leading $ on x86/amd64 but none on ppc32/64.
pub/libvex_guest_offsets.h: auxprogs/genoffsets.c \
			    pub/libvex_basictypes.h \
			    pub/libvex_guest_x86.h \
			    pub/libvex_guest_amd64.h \
			    pub/libvex_guest_ppc32.h \
			    pub/libvex_guest_ppc64.h \
			    pub/libvex_guest_arm.h
	rm -f auxprogs/genoffsets.s
	$(CC) $(LIBVEX_CFLAGS) \
	      $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) \
				-O -S -o auxprogs/genoffsets.s \
					 auxprogs/genoffsets.c
	grep xyzzy auxprogs/genoffsets.s | grep define \
	   | sed "s/xyzzy\\$$//g" \
	   | sed "s/xyzzy#//g" \
	   | sed "s/xyzzy//g" \
	   > pub/libvex_guest_offsets.h
	rm -f auxprogs/genoffsets.s

#----------------------------------------------------------------------------
# libvex-<platform>.a
#----------------------------------------------------------------------------

pkglib_LIBRARIES  = libvex-@VGCONF_ARCH_PRI@-@VGCONF_OS@.a
if VGCONF_HAVE_PLATFORM_SEC
pkglib_LIBRARIES += libvex-@VGCONF_ARCH_SEC@-@VGCONF_OS@.a
endif

LIBVEX_SOURCES_COMMON = \
	priv/main_globals.c \
	priv/main_main.c \
	priv/main_util.c \
	priv/ir_defs.c \
	priv/ir_match.c \
	priv/ir_opt.c \
	priv/guest_generic_bb_to_IR.c \
	priv/guest_generic_x87.c \
	priv/guest_x86_helpers.c \
	priv/guest_x86_toIR.c \
	priv/guest_amd64_helpers.c \
	priv/guest_amd64_toIR.c \
	priv/guest_ppc_helpers.c \
	priv/guest_ppc_toIR.c \
	priv/guest_arm_helpers.c \
	priv/guest_arm_toIR.c \
	priv/host_generic_regs.c \
	priv/host_generic_simd64.c \
	priv/host_generic_simd128.c \
	priv/host_generic_reg_alloc2.c \
	priv/host_x86_defs.c \
	priv/host_x86_isel.c \
	priv/host_amd64_defs.c \
	priv/host_amd64_isel.c \
	priv/host_ppc_defs.c \
	priv/host_ppc_isel.c \
	priv/host_arm_defs.c \
	priv/host_arm_isel.c

LIBVEX_CFLAGS = \
	-Wbad-function-cast \
	-Wcast-qual \
	-Wcast-align \
	-fstrict-aliasing

libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES  = $(LIBVEX_SOURCES_COMMON)
libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS = \
        $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) -Ipriv
libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS   = \
        $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) $(LIBVEX_CFLAGS)
if VGCONF_HAVE_PLATFORM_SEC
libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES  = $(LIBVEX_SOURCES_COMMON)
libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS = \
        $(AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) -Ipriv
libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS   = \
        $(AM_CFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) $(LIBVEX_CFLAGS)
endif