mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-03 18:13:01 +00:00
tarball, and thus its contents depended on the machine 'make dist' was run on, not the install machine. This commit excludes it from the tarball, so it will be built at compile-time. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9909
250 lines
8.0 KiB
Makefile
250 lines
8.0 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-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 $@
|