Dual architecture support - this commit is a major rework of the build
system that allows multiple copies of valgrind to be built so that we
can build both x86 and amd64 versions of the tools on amd64 machines.

The launcher is then modified to look at the program being run and
decide which tool to use to run it.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5027 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/massif/Makefile.am b/massif/Makefile.am
index f922a4c..ca30d72 100644
--- a/massif/Makefile.am
+++ b/massif/Makefile.am
@@ -2,17 +2,60 @@
 
 SUBDIRS += hp2ps
 
-val_PROGRAMS = massif vgpreload_massif.so
+noinst_PROGRAMS = 
+if VG_X86_LINUX
+noinst_PROGRAMS += massif-x86-linux vgpreload_massif-x86-linux.so
+endif
+if VG_AMD64_LINUX
+noinst_PROGRAMS += massif-amd64-linux vgpreload_massif-amd64-linux.so
+endif
+if VG_PPC32_LINUX
+noinst_PROGRAMS += massif-ppc32-linux vgpreload_massif-ppc32-linux.so
+endif
 
-vgpreload_massif_so_SOURCES      = 
-vgpreload_massif_so_DEPENDENCIES = $(LIBREPLACEMALLOC)
-vgpreload_massif_so_LDFLAGS      = \
-	-shared -Wl,-z,interpose,-z,initfirst \
-	-Wl,--whole-archive \
-	$(LIBREPLACEMALLOC) \
-	-Wl,--no-whole-archive
+vgpreload_massif_x86_linux_so_SOURCES      = 
+vgpreload_massif_x86_linux_so_CPPFLAGS     = $(AM_CPPFLAGS_X86_LINUX)
+vgpreload_massif_x86_linux_so_CFLAGS       = $(AM_CFLAGS_X86_LINUX) $(AM_CFLAGS_PIC)
+vgpreload_massif_x86_linux_so_DEPENDENCIES = $(LIBREPLACEMALLOC_X86_LINUX)
+vgpreload_massif_x86_linux_so_LDFLAGS      = \
+	$(PRELOAD_LDFLAGS_X86_LINUX) \
+	$(LIBREPLACEMALLOC_LDFLAGS_X86_LINUX)
 
-massif_SOURCES      = ms_main.c
-massif_DEPENDENCIES = $(COREGRIND_LIBS)
-massif_LDADD        = $(TOOL_LINKADD)
-massif_LDFLAGS 	    = $(TOOL_LINKFLAGS)
+vgpreload_massif_amd64_linux_so_SOURCES      = 
+vgpreload_massif_amd64_linux_so_CPPFLAGS     = $(AM_CPPFLAGS_AMD64_LINUX)
+vgpreload_massif_amd64_linux_so_CFLAGS       = $(AM_CFLAGS_AMD64_LINUX) $(AM_CFLAGS_PIC)
+vgpreload_massif_amd64_linux_so_DEPENDENCIES = $(LIBREPLACEMALLOC_AMD64_LINUX)
+vgpreload_massif_amd64_linux_so_LDFLAGS      = \
+	$(PRELOAD_LDFLAGS_AMD64_LINUX) \
+	$(LIBREPLACEMALLOC_LDFLAGS_AMD64_LINUX)
+
+vgpreload_massif_ppc32_linux_so_SOURCES      = 
+vgpreload_massif_ppc32_linux_so_CPPFLAGS     = $(AM_CPPFLAGS_PPC32_LINUX)
+vgpreload_massif_ppc32_linux_so_CFLAGS       = $(AM_CFLAGS_PPC32_LINUX) $(AM_CFLAGS_PIC)
+vgpreload_massif_ppc32_linux_so_DEPENDENCIES = $(LIBREPLACEMALLOC_PPC32_LINUX)
+vgpreload_massif_ppc32_linux_so_LDFLAGS      = \
+	$(PRELOAD_LDFLAGS_PPC32_LINUX) \
+	$(LIBREPLACEMALLOC_LDFLAGS_PPC32_LINUX)
+
+MASSIF_SOURCES_COMMON = ms_main.c
+
+massif_x86_linux_SOURCES      = $(MASSIF_SOURCES_COMMON)
+massif_x86_linux_CPPFLAGS     = $(AM_CPPFLAGS_X86_LINUX)
+massif_x86_linux_CFLAGS       = $(AM_CFLAGS_X86_LINUX)
+massif_x86_linux_DEPENDENCIES = $(COREGRIND_LIBS_X86_LINUX)
+massif_x86_linux_LDADD        = $(TOOL_LDADD_X86_LINUX)
+massif_x86_linux_LDFLAGS      = $(TOOL_LDFLAGS_X86_LINUX)
+
+massif_amd64_linux_SOURCES      = $(MASSIF_SOURCES_COMMON)
+massif_amd64_linux_CPPFLAGS     = $(AM_CPPFLAGS_AMD64_LINUX)
+massif_amd64_linux_CFLAGS       = $(AM_CFLAGS_AMD64_LINUX)
+massif_amd64_linux_DEPENDENCIES = $(COREGRIND_LIBS_AMD64_LINUX)
+massif_amd64_linux_LDADD        = $(TOOL_LDADD_AMD64_LINUX)
+massif_amd64_linux_LDFLAGS      = $(TOOL_LDFLAGS_AMD64_LINUX)
+
+massif_ppc32_linux_SOURCES      = $(MASSIF_SOURCES_COMMON)
+massif_ppc32_linux_CPPFLAGS     = $(AM_CPPFLAGS_PPC32_LINUX)
+massif_ppc32_linux_CFLAGS       = $(AM_CFLAGS_PPC32_LINUX)
+massif_ppc32_linux_DEPENDENCIES = $(COREGRIND_LIBS_PPC32_LINUX)
+massif_ppc32_linux_LDADD        = $(TOOL_LDADD_PPC32_LINUX)
+massif_ppc32_linux_LDFLAGS      = $(TOOL_LDFLAGS_PPC32_LINUX)