blob: 862bee8080f622b1ea016b1f5149924b7fe53b20 [file] [log] [blame]
# 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/vex_globals.h \
priv/main/vex_util.h \
priv/ir/irmatch.h \
priv/ir/iropt.h \
priv/guest-generic/bb_to_IR.h \
priv/guest-generic/g_generic_x87.h \
priv/guest-x86/gdefs.h \
priv/guest-amd64/gdefs.h \
priv/guest-ppc/gdefs.h \
priv/guest-arm/gdefs.h \
priv/host-generic/h_generic_regs.h \
priv/host-generic/h_generic_simd64.h \
priv/host-x86/hdefs.h \
priv/host-amd64/hdefs.h \
priv/host-ppc/hdefs.h \
priv/host-arm/hdefs.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:
rm -f auxprogs/genoffsets.s
$(CC) $(LIBVEX_CFLAGS) -O -S -o auxprogs/genoffsets.s \
auxprogs/genoffsets.c
grep xyzzy auxprogs/genoffsets.s | grep define \
| sed "s/xyzzy\\$$//g" | sed "s/xyzzy//g" \
> pub/libvex_guest_offsets.h
rm -f auxprogs/genoffsets.s
#----------------------------------------------------------------------------
# vex_svnversion.h
#----------------------------------------------------------------------------
# The contents of vex_svnversion.h depends on the Vex revision number. The
# ideal way to deal with it would be if SVN had post-update hooks: we'd
# generate/regenerate it every time we did "svn co"/"svn up", and otherwise
# never delete it or regenerate it.
#
# But SVN lacks post-update hooks. So instead we generate it when building
# (it's in BUILT_SOURCES) if it's not present (we test for that in the
# generation rule), or if 'make version' is run. (Thus it can get
# out-of-date when developing; the 'make version' target lets that be
# remedied manually.) Otherwise, we never delete it or regenerate it (in
# particular, it is not present in CLEANFILES). Furthermore, at 'make dist'
# time, we regenerate it, and copy it into the dist tarball, thus ensuring
# the distributed version is up-to-date. Note that if a user manually
# deletes it and rebuilds, or does 'make dist' from a distributed version,
# it will be regenerated incorrectly, containing the string "exported"
# instead of the SVN revision number.
BUILT_SOURCES += priv/main/vex_svnversion.h
# Generate it at build time if not present. Nb: generating a file and
# putting it in $(srcdir) rather than $(builddir) seems like bad form. But
# because this file won't be regenerated post-distribution, then it's more
# like a non-generated file and so is reasonable to put in $(srcdir).
priv/main/vex_svnversion.h: version
if [ ! -f priv/main/vex_svnversion.h ] ; then \
mv $(top_srcdir)/vex_svnversion.h $(srcdir)/priv/main/; \
else \
rm -f $(top_srcdir)/vex_svnversion.h; \
fi
# Regenerate it and copy it into the dist tarball at 'make dist' time.
dist-hook: version
mv $(top_srcdir)/vex_svnversion.h $(distdir)/priv/main/
# Generate it.
version:
cat quote.txt > $(top_srcdir)/vex_svnversion.h
svnversion -n . >> $(top_srcdir)/vex_svnversion.h
cat quote.txt >> $(top_srcdir)/vex_svnversion.h
cat newline.txt >> $(top_srcdir)/vex_svnversion.h
#----------------------------------------------------------------------------
# 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
# XXX: automake cannot handle having multiple files of the same name in
# different directories. The plan is to change the Vex filenames to avoid
# this. In the meantime, we use some hacky rules to copy the like-named
# files to differently-named files.
LIBVEX_SOURCES_COMMON = \
priv/main/vex_globals.c \
priv/main/vex_main.c \
priv/main/vex_util.c \
priv/ir/irdefs.c \
priv/ir/irmatch.c \
priv/ir/iropt.c \
priv/guest-generic/bb_to_IR.c \
priv/guest-generic/g_generic_x87.c \
priv/guest-x86/ghelpers-x86.c \
priv/guest-x86/toIR-x86.c \
priv/guest-amd64/ghelpers-amd64.c \
priv/guest-amd64/toIR-amd64.c \
priv/guest-ppc/ghelpers-ppc.c \
priv/guest-ppc/toIR-ppc.c \
priv/guest-arm/ghelpers-arm.c \
priv/guest-arm/toIR-arm.c \
priv/host-generic/h_generic_regs.c \
priv/host-generic/h_generic_simd64.c \
priv/host-generic/reg_alloc2.c \
priv/host-x86/hdefs-x86.c \
priv/host-x86/isel-x86.c \
priv/host-amd64/hdefs-amd64.c \
priv/host-amd64/isel-amd64.c \
priv/host-ppc/hdefs-ppc.c \
priv/host-ppc/isel-ppc.c \
priv/host-arm/hdefs-arm.c \
priv/host-arm/isel-arm.c
# XXX: temporary
TMP_FILES = \
priv/guest-x86/ghelpers-x86.c \
priv/guest-amd64/ghelpers-amd64.c \
priv/guest-ppc/ghelpers-ppc.c \
priv/guest-arm/ghelpers-arm.c \
\
priv/guest-x86/toIR-x86.c \
priv/guest-amd64/toIR-amd64.c \
priv/guest-ppc/toIR-ppc.c \
priv/guest-arm/toIR-arm.c \
\
priv/host-x86/hdefs-x86.c \
priv/host-amd64/hdefs-amd64.c \
priv/host-ppc/hdefs-ppc.c \
priv/host-arm/hdefs-arm.c \
\
priv/host-x86/isel-x86.c \
priv/host-amd64/isel-amd64.c \
priv/host-ppc/isel-ppc.c \
priv/host-arm/isel-arm.c
BUILT_SOURCES += $(TMP_FILES)
CLEANFILES += $(TMP_FILES)
# XXX: temporary
EXTRA_DIST += \
priv/guest-x86/ghelpers.c \
priv/guest-amd64/ghelpers.c \
priv/guest-ppc/ghelpers.c \
priv/guest-arm/ghelpers.c \
\
priv/guest-x86/toIR.c \
priv/guest-amd64/toIR.c \
priv/guest-ppc/toIR.c \
priv/guest-arm/toIR.c \
\
priv/host-x86/hdefs.c \
priv/host-amd64/hdefs.c \
priv/host-ppc/hdefs.c \
priv/host-arm/hdefs.c \
\
priv/host-x86/isel.c \
priv/host-amd64/isel.c \
priv/host-ppc/isel.c \
priv/host-arm/isel.c
# XXX: ghelpers
priv/guest-x86/ghelpers-x86.c: priv/guest-x86/ghelpers.c
cp priv/guest-x86/ghelpers.c priv/guest-x86/ghelpers-x86.c
priv/guest-amd64/ghelpers-amd64.c: priv/guest-amd64/ghelpers.c
cp priv/guest-amd64/ghelpers.c priv/guest-amd64/ghelpers-amd64.c
priv/guest-ppc/ghelpers-ppc.c: priv/guest-ppc/ghelpers.c
cp priv/guest-ppc/ghelpers.c priv/guest-ppc/ghelpers-ppc.c
priv/guest-arm/ghelpers-arm.c: priv/guest-arm/ghelpers.c
cp priv/guest-arm/ghelpers.c priv/guest-arm/ghelpers-arm.c
# XXX: toIR
priv/guest-x86/toIR-x86.c: priv/guest-x86/toIR.c
cp priv/guest-x86/toIR.c priv/guest-x86/toIR-x86.c
priv/guest-amd64/toIR-amd64.c: priv/guest-amd64/toIR.c
cp priv/guest-amd64/toIR.c priv/guest-amd64/toIR-amd64.c
priv/guest-ppc/toIR-ppc.c: priv/guest-ppc/toIR.c
cp priv/guest-ppc/toIR.c priv/guest-ppc/toIR-ppc.c
priv/guest-arm/toIR-arm.c: priv/guest-arm/toIR.c
cp priv/guest-arm/toIR.c priv/guest-arm/toIR-arm.c
# XXX: hdefs
priv/host-x86/hdefs-x86.c: priv/host-x86/hdefs.c
cp priv/host-x86/hdefs.c priv/host-x86/hdefs-x86.c
priv/host-amd64/hdefs-amd64.c: priv/host-amd64/hdefs.c
cp priv/host-amd64/hdefs.c priv/host-amd64/hdefs-amd64.c
priv/host-ppc/hdefs-ppc.c: priv/host-ppc/hdefs.c
cp priv/host-ppc/hdefs.c priv/host-ppc/hdefs-ppc.c
priv/host-arm/hdefs-arm.c: priv/host-arm/hdefs.c
cp priv/host-arm/hdefs.c priv/host-arm/hdefs-arm.c
# XXX: isel
priv/host-x86/isel-x86.c: priv/host-x86/isel.c
cp priv/host-x86/isel.c priv/host-x86/isel-x86.c
priv/host-amd64/isel-amd64.c: priv/host-amd64/isel.c
cp priv/host-amd64/isel.c priv/host-amd64/isel-amd64.c
priv/host-ppc/isel-ppc.c: priv/host-ppc/isel.c
cp priv/host-ppc/isel.c priv/host-ppc/isel-ppc.c
priv/host-arm/isel-arm.c: priv/host-arm/isel.c
cp priv/host-arm/isel.c priv/host-arm/isel-arm.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