Makefile stuff, partly from Tom, which uses the SVN-externall'd VEX
tree a bit better. Also, fixes to make 'make dist' include into the
final tarball a minimal but workable subset of the stuff in the VEX
directory.
Note, you must do 'make' or 'make install' before 'make dist' since
otherwise VEX/priv/main/vex_svnversion.h will not exist.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4266 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/Makefile.am b/Makefile.am
index 8370e13..0898a37 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -46,7 +46,8 @@
README_MISSING_SYSCALL_OR_IOCTL \
valgrind.spec.in valgrind.pc.in \
Makefile.all.am Makefile.tool.am Makefile.core-AM_CPPFLAGS.am \
- Makefile.tool-inplace.am
+ Makefile.tool-inplace.am \
+ $(VEX_PRIMARY_SOURCES)
install-exec-hook:
$(mkinstalldirs) $(DESTDIR)$(valdir)
@@ -59,3 +60,66 @@
distclean-local:
rm -rf $(inplacedir)
+
+
+# This lists the bits of vex we need to copy into the tarball
+
+VEX_PRIMARY_SOURCES = \
+ VEX/README \
+ VEX/COPYING \
+ VEX/Makefile \
+ VEX/auxprogs/genoffsets.c \
+ VEX/pub/libvex_guest_amd64.h \
+ VEX/pub/libvex_ir.h \
+ VEX/pub/libvex_guest_ppc32.h \
+ VEX/pub/libvex_basictypes.h \
+ VEX/pub/libvex_guest_offsets.h \
+ VEX/pub/libvex_emwarn.h \
+ VEX/pub/libvex.h \
+ VEX/pub/libvex_trc_values.h \
+ VEX/pub/libvex_guest_arm.h \
+ VEX/pub/libvex_guest_x86.h \
+ VEX/priv/ir/irmatch.c \
+ VEX/priv/ir/irmatch.h \
+ VEX/priv/ir/irdefs.c \
+ VEX/priv/ir/iropt.c \
+ VEX/priv/ir/iropt.h \
+ VEX/priv/host-ppc32/isel.c \
+ VEX/priv/host-ppc32/hdefs.c \
+ VEX/priv/host-ppc32/hdefs.h \
+ VEX/priv/main/vex_svnversion.h \
+ VEX/priv/main/vex_globals.c \
+ VEX/priv/main/vex_globals.h \
+ VEX/priv/main/vex_main.c \
+ VEX/priv/main/vex_util.c \
+ VEX/priv/main/vex_util.h \
+ VEX/priv/guest-arm/ghelpers.c \
+ VEX/priv/guest-arm/gdefs.h \
+ VEX/priv/guest-arm/toIR.c \
+ VEX/priv/guest-x86/ghelpers.c \
+ VEX/priv/guest-x86/gdefs.h \
+ VEX/priv/guest-x86/toIR.c \
+ VEX/priv/guest-generic/g_generic_x87.c \
+ VEX/priv/guest-generic/g_generic_x87.h \
+ VEX/priv/guest-generic/bb_to_IR.c \
+ VEX/priv/guest-generic/bb_to_IR.h \
+ VEX/priv/host-arm/isel.c \
+ VEX/priv/host-arm/hdefs.c \
+ VEX/priv/host-arm/hdefs.h \
+ VEX/priv/host-x86/isel.c \
+ VEX/priv/host-x86/hdefs.c \
+ VEX/priv/host-x86/hdefs.h \
+ VEX/priv/guest-amd64/ghelpers.c \
+ VEX/priv/guest-amd64/gdefs.h \
+ VEX/priv/guest-amd64/toIR.c \
+ VEX/priv/guest-ppc32/ghelpers.c \
+ VEX/priv/guest-ppc32/gdefs.h \
+ VEX/priv/guest-ppc32/toIR.c \
+ VEX/priv/host-generic/reg_alloc2.c \
+ VEX/priv/host-generic/h_generic_regs.c \
+ VEX/priv/host-generic/h_generic_regs.h \
+ VEX/priv/host-generic/h_generic_simd64.c \
+ VEX/priv/host-generic/h_generic_simd64.h \
+ VEX/priv/host-amd64/isel.c \
+ VEX/priv/host-amd64/hdefs.c \
+ VEX/priv/host-amd64/hdefs.h
diff --git a/configure.in b/configure.in
index e2d4b1a..9880707 100644
--- a/configure.in
+++ b/configure.in
@@ -10,17 +10,17 @@
# Nb: For the 2nd arg, the help string, AS_HELP_STRING is the proper way, but
# older autoconfs don't support it... here's what it would say:
#
-# AS_HELP_STRING([--with-vex], [Vex directory (must be specified!)]),
+# AS_HELP_STRING([--with-vex], [Vex directory]),
#
AC_ARG_WITH(vex,
- [ --with-vex=/path/to/vex/dir Vex directory (must be specified!)],
+ [ --with-vex=/path/to/vex/dir Vex directory],
[
AC_CHECK_FILE($withval/pub/libvex.h,
[VEX_DIR=$withval],
[AC_MSG_ERROR([Directory '$withval' does not exist, or does not contain Vex])])
],
[
- AC_MSG_ERROR([You must specify --with-vex=/path/to/vex/dir])
+ VEX_DIR=`pwd`/VEX
])
AC_SUBST(VEX_DIR)
diff --git a/coregrind/Makefile.am b/coregrind/Makefile.am
index 978e8bb..a84be3d 100644
--- a/coregrind/Makefile.am
+++ b/coregrind/Makefile.am
@@ -82,7 +82,7 @@
BUILT_SOURCES = stage2.lds
CLEANFILES = stage2.lds
-
+
valgrind_SOURCES = \
stage1.c \
m_debuglog.c \
@@ -195,6 +195,15 @@
-e '/\. = 0x[0-9A-Fa-f]\+ + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/kickstart_base/g' > $@ \
|| rm -f $@
+@VEX_DIR@/libvex.a: @VEX_DIR@/priv/main/vex_svnversion.h
+ $(MAKE) -C @VEX_DIR@ libvex.a EXTRA_CFLAGS="@PIE_AM_CFLAGS@"
+
+@VEX_DIR@/priv/main/vex_svnversion.h:
+ $(MAKE) -C @VEX_DIR@ version
+
+clean-local:
+ $(MAKE) -C @VEX_DIR@ clean
+
MANUAL_DEPS = $(noinst_HEADERS) $(include_HEADERS)
all-local:
diff --git a/coregrind/m_dispatch/Makefile.am b/coregrind/m_dispatch/Makefile.am
index 3af6290..a6045dc 100644
--- a/coregrind/m_dispatch/Makefile.am
+++ b/coregrind/m_dispatch/Makefile.am
@@ -9,3 +9,8 @@
libdispatch_a_SOURCES = \
dispatch-@VG_ARCH@.S
+
+dispatch-@VG_ARCH@.S: libvex_guest_offsets.h
+
+libvex_guest_offsets.h:
+ $(MAKE) -C @VEX_DIR@ pub/libvex_guest_offsets.h
diff --git a/coregrind/m_syswrap/Makefile.am b/coregrind/m_syswrap/Makefile.am
index a08df24..cddaa91 100644
--- a/coregrind/m_syswrap/Makefile.am
+++ b/coregrind/m_syswrap/Makefile.am
@@ -21,3 +21,9 @@
syswrap-@VG_OS@.c \
syswrap-@VG_PLATFORM@.c \
syswrap-main.c
+
+syscall-@VG_PLATFORM@.S: libvex_guest_offsets.h
+syswrap-main.c: libvex_guest_offsets.h
+
+libvex_guest_offsets.h:
+ $(MAKE) -C @VEX_DIR@ pub/libvex_guest_offsets.h