# 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_emnote.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_guest_arm64.h \
	pub/libvex_guest_s390x.h \
	pub/libvex_guest_mips32.h \
	pub/libvex_guest_mips64.h \
	pub/libvex_s390x_common.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/guest_arm64_defs.h \
	priv/guest_s390_defs.h \
	priv/guest_mips_defs.h \
	priv/host_generic_regs.h \
	priv/host_generic_simd64.h \
	priv/host_generic_simd128.h \
	priv/host_generic_simd256.h \
	priv/host_generic_maddf.h \
	priv/host_x86_defs.h \
	priv/host_amd64_defs.h \
	priv/host_ppc_defs.h \
	priv/host_arm_defs.h \
	priv/host_arm64_defs.h \
	priv/host_s390_defs.h \
	priv/s390_disasm.h \
	priv/s390_defs.h \
	priv/host_mips_defs.h

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

if COMPILER_IS_CLANG
CFLAGS_FOR_GENOFFSETS = $(CFLAGS) -no-integrated-as
else
CFLAGS_FOR_GENOFFSETS = $(CFLAGS)
endif

# 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 \
			    pub/libvex_guest_arm64.h \
			    pub/libvex_guest_s390x.h \
			    pub/libvex_guest_mips32.h \
			    pub/libvex_guest_mips64.h
	rm -f auxprogs/genoffsets.s
	$(mkdir_p) auxprogs pub
	$(CC) $(CFLAGS_FOR_GENOFFSETS) \
	      $(LIBVEX_CFLAGS) \
	      $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) \
				-O -S -o auxprogs/genoffsets.s \
					 $(srcdir)/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_inject.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/guest_arm64_helpers.c \
	priv/guest_arm64_toIR.c \
	priv/guest_s390_helpers.c \
	priv/guest_s390_toIR.c \
	priv/guest_mips_helpers.c \
	priv/guest_mips_toIR.c \
	priv/host_generic_regs.c \
	priv/host_generic_simd64.c \
	priv/host_generic_simd128.c \
	priv/host_generic_simd256.c \
	priv/host_generic_maddf.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 \
	priv/host_arm64_defs.c \
	priv/host_arm64_isel.c \
	priv/host_s390_defs.c \
	priv/host_s390_isel.c \
	priv/s390_disasm.c \
	priv/host_mips_defs.c \
	priv/host_mips_isel.c

LIBVEX_CFLAGS = \
	-Wbad-function-cast \
	-Wcast-qual \
	-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

