| |
| AUTOMAKE_OPTIONS = foreign 1.7 dist-bzip2 |
| |
| include $(top_srcdir)/Makefile.all.am |
| |
| TOOLS = memcheck \ |
| cachegrind \ |
| callgrind \ |
| massif \ |
| lackey \ |
| none \ |
| helgrind \ |
| drd |
| |
| EXP_TOOLS = exp-omega \ |
| exp-ptrcheck |
| |
| # Put docs last because building the HTML is slow and we want to get |
| # everything else working before we try it. |
| SUBDIRS = include coregrind . tests perf auxprogs $(TOOLS) $(EXP_TOOLS) docs |
| DIST_SUBDIRS = $(SUBDIRS) |
| |
| SUPP_FILES = \ |
| glibc-2.2.supp glibc-2.3.supp glibc-2.4.supp glibc-2.5.supp \ |
| glibc-2.6.supp glibc-2.7.supp glibc-2.X.supp.in \ |
| aix5libc.supp xfree-3.supp xfree-4.supp \ |
| glibc-2.34567-NPTL-helgrind.supp \ |
| glibc-2.2-LinuxThreads-helgrind.supp \ |
| glibc-2.X-drd.supp \ |
| exp-ptrcheck.supp |
| DEFAULT_SUPP_FILES = @DEFAULT_SUPP@ |
| |
| # We include all the base .supp files in the distribution, but not |
| # default.supp, as it is built from the base .supp files at compile-time. |
| # The "val" in "val_DATA" ties in with $(valdir), defined in |
| # Makefile.all.am. From the automake info pages: |
| # |
| # Sometimes the standard directories--even as augmented by Automake--are |
| # not enough. In particular it is sometimes useful, for clarity, to |
| # install objects in a subdirectory of some predefined directory. To this |
| # end, Automake allows you to extend the list of possible installation |
| # directories. A given prefix (e.g., `zar') is valid if a variable of the |
| # same name with `dir' appended is defined (e.g., `zardir'). |
| # |
| dist_noinst_DATA = $(SUPP_FILES) |
| val_DATA = default.supp |
| |
| pkgconfigdir = $(libdir)/pkgconfig |
| pkgconfig_DATA = valgrind.pc |
| |
| incincdir = $(includedir)/valgrind |
| nodist_incinc_HEADERS = $(VEX_PUBLIC_HDRS) |
| |
| BUILT_SOURCES = default.supp valgrind.pc |
| CLEANFILES = default.supp |
| |
| if VGCONF_PLATFORMS_INCLUDE_X86_LINUX |
| BUILT_SOURCES += valt_load_address_x86_linux.lds |
| CLEANFILES += valt_load_address_x86_linux.lds |
| endif |
| if VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX |
| BUILT_SOURCES += valt_load_address_amd64_linux.lds |
| CLEANFILES += valt_load_address_amd64_linux.lds |
| endif |
| if VGCONF_PLATFORMS_INCLUDE_PPC32_LINUX |
| BUILT_SOURCES += valt_load_address_ppc32_linux.lds |
| CLEANFILES += valt_load_address_ppc32_linux.lds |
| endif |
| if VGCONF_PLATFORMS_INCLUDE_PPC64_LINUX |
| BUILT_SOURCES += valt_load_address_ppc64_linux.lds |
| CLEANFILES += valt_load_address_ppc64_linux.lds |
| endif |
| if VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5 |
| # No need to generate valt_load_address*.lds; the final executables |
| # can be linked to be at any address. They will be relocated by |
| # AIX kernel when they are loaded. |
| endif |
| if VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5 |
| # Ditto |
| endif |
| |
| default.supp: $(DEFAULT_SUPP_FILES) |
| echo "# This is a generated file, composed of the following suppression rules:" > default.supp |
| echo "# " $(DEFAULT_SUPP_FILES) >> default.supp |
| cat $(DEFAULT_SUPP_FILES) >> default.supp |
| |
| ## Preprend @PERL@ because tests/vg_regtest isn't executable |
| regtest: check |
| @PERL@ tests/vg_regtest $(TOOLS) $(EXP_TOOLS) |
| nonexp-regtest: check |
| @PERL@ tests/vg_regtest $(TOOLS) |
| exp-regtest: check |
| @PERL@ tests/vg_regtest $(EXP_TOOLS) |
| |
| ## Preprend @PERL@ because tests/vg_perf isn't executable |
| perf: check |
| @PERL@ perf/vg_perf perf |
| |
| # Nb: no need to include any Makefile.am files here, or files included from |
| # them, as automake includes them automatically. |
| EXTRA_DIST = \ |
| ACKNOWLEDGEMENTS \ |
| README_DEVELOPERS \ |
| README_PACKAGERS \ |
| README_MISSING_SYSCALL_OR_IOCTL \ |
| valgrind.spec.in valgrind.pc.in \ |
| $(vex_primary_sources) \ |
| vg-in-place |
| |
| install-exec-hook: |
| $(mkinstalldirs) $(DESTDIR)$(valdir) |
| |
| all-local: default.supp |
| mkdir -p $(inplacedir) |
| rm -f $(inplacedir)/default.supp |
| ln -s ../default.supp $(inplacedir) |
| |
| clean-local: |
| rm -rf $(inplacedir) |
| |
| # These list the bits of vex we need to install |
| |
| VEX_PUBLIC_HDRS = \ |
| @VEX_DIR@/pub/libvex_guest_amd64.h \ |
| @VEX_DIR@/pub/libvex_ir.h \ |
| @VEX_DIR@/pub/libvex_guest_ppc32.h \ |
| @VEX_DIR@/pub/libvex_guest_ppc64.h \ |
| @VEX_DIR@/pub/libvex_basictypes.h \ |
| @VEX_DIR@/pub/libvex_guest_offsets.h \ |
| @VEX_DIR@/pub/libvex_emwarn.h \ |
| @VEX_DIR@/pub/libvex.h \ |
| @VEX_DIR@/pub/libvex_trc_values.h \ |
| @VEX_DIR@/pub/libvex_guest_arm.h \ |
| @VEX_DIR@/pub/libvex_guest_x86.h |
| |
| # These list the bits of vex we need to copy into the tarball |
| |
| vex_primary_sources = \ |
| VEX/quote.txt \ |
| VEX/newline.txt \ |
| VEX/HACKING.README \ |
| VEX/LICENSE.README \ |
| VEX/LICENSE.GPL \ |
| 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_guest_ppc64.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-ppc/isel.c \ |
| VEX/priv/host-ppc/hdefs.c \ |
| VEX/priv/host-ppc/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-ppc/ghelpers.c \ |
| VEX/priv/guest-ppc/gdefs.h \ |
| VEX/priv/guest-ppc/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 |
| |
| |
| # Generate a linker script for linking the binaries. This is the |
| # standard gcc linker script, except hacked so that an alternative |
| # load address can be specified by (1) asking gcc to use this script |
| # (-Wl,-T,valt_load_address.lds) and (2) setting the symbol |
| # valt_load_address to the required value |
| # (-Wl,-defsym,valt_load_address=0x70000000). |
| # |
| # Extract ld's default linker script and hack it to our needs. |
| # First we cut everything above and below the "=====..." lines at the top |
| # and bottom. |
| # Then we have to replace the load address with "valt_load_address". |
| # The line to replace in has one of the following two forms: |
| # |
| # . = 0x08048000 + SIZEOF_HEADERS; |
| # |
| # or |
| # PROVIDE (__executable_start = 0x08048000); . = 0x08048000 + SIZEOF_HEADERS; |
| # |
| # So we search for the line with a hex value "+ SIZEOF_HEADERS", and replace |
| # all the hex values in that line with "valt_load_address". |
| valt_load_address_x86_linux.lds: Makefile |
| $(CC) @FLAG_M32@ -Wl,--verbose -nostdlib 2>&1 | sed \ |
| -e '1,/^=====\+$$/d' \ |
| -e '/^=====\+$$/,/.\*/d' \ |
| -e '/\. = \(0x[0-9A-Fa-f]\+\|SEGMENT_START("[^"]\+", 0x[0-9A-Fa-f]\+)\) + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/valt_load_address/g' > $@ \ |
| || rm -f $@ |
| |
| valt_load_address_amd64_linux.lds: Makefile |
| $(CC) -m64 -Wl,--verbose -nostdlib 2>&1 | sed \ |
| -e '1,/^=====\+$$/d' \ |
| -e '/^=====\+$$/,/.\*/d' \ |
| -e '/\. = \(0x[0-9A-Fa-f]\+\|SEGMENT_START("[^"]\+", 0x[0-9A-Fa-f]\+)\) + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/valt_load_address/g' > $@ \ |
| || rm -f $@ |
| |
| valt_load_address_ppc32_linux.lds: Makefile |
| $(CC) @FLAG_M32@ -Wl,--verbose -nostdlib 2>&1 | sed \ |
| -e '1,/^=====\+$$/d' \ |
| -e '/^=====\+$$/,/.\*/d' \ |
| -e '/\. = \(0x[0-9A-Fa-f]\+\|SEGMENT_START("[^"]\+", 0x[0-9A-Fa-f]\+)\) + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/valt_load_address/g' > $@ \ |
| || rm -f $@ |
| |
| valt_load_address_ppc64_linux.lds: Makefile |
| $(CC) -m64 -Wl,--verbose -nostdlib 2>&1 | sed \ |
| -e '1,/^=====\+$$/d' \ |
| -e '/^=====\+$$/,/.\*/d' \ |
| -e '/\. = \(0x[0-9A-Fa-f]\+\|SEGMENT_START("[^"]\+", 0x[0-9A-Fa-f]\+)\) + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/valt_load_address/g' > $@ \ |
| || rm -f $@ |