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