mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-03 18:13:01 +00:00
Improve AUTHORS a bit at the same time. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10309
268 lines
8.3 KiB
Makefile
268 lines
8.3 KiB
Makefile
|
|
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-ptrcheck
|
|
|
|
# DDD: once all tools work on Darwin, TEST_TOOLS and TEST_EXP_TOOLS can be
|
|
# replaced with TOOLS and EXP_TOOLS.
|
|
if !VGCONF_OS_IS_DARWIN
|
|
TEST_TOOLS = $(TOOLS)
|
|
TEST_EXP_TOOLS = $(EXP_TOOLS)
|
|
else
|
|
TEST_TOOLS = memcheck \
|
|
cachegrind \
|
|
callgrind \
|
|
massif \
|
|
lackey \
|
|
none
|
|
|
|
TEST_EXP_TOOLS =
|
|
endif
|
|
|
|
# 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 \
|
|
darwin9.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
|
|
if VGCONF_OS_IS_DARWIN
|
|
# GrP untested, possibly hopeless
|
|
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 $(TEST_TOOLS) $(TEST_EXP_TOOLS)
|
|
nonexp-regtest: check
|
|
@PERL@ tests/vg_regtest $(TEST_TOOLS)
|
|
exp-regtest: check
|
|
@PERL@ tests/vg_regtest $(TEST_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 = \
|
|
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 $@
|