blob: 95f29cfcdd8b86efbaa0824f4bd61d50e6444af0 [file] [log] [blame]
njn25e49d8e72002-09-23 09:36:25 +00001
mueller531d34d2004-01-03 12:47:32 +00002AUTOMAKE_OPTIONS = foreign 1.6 dist-bzip2
sewardj31f6cb52003-03-01 01:26:55 +00003
njn3e986b22004-11-30 10:43:45 +00004include $(top_srcdir)/Makefile.all.am
nethercote4388a402004-09-01 23:20:49 +00005
njn3e884182003-04-15 13:03:23 +00006## addrcheck must come after memcheck, for mac_*.o
njn86f12dc2005-03-14 01:16:05 +00007TOOLS = memcheck \
njn6a3009b2005-03-20 00:20:06 +00008 cachegrind \
njn6a3009b2005-03-20 00:20:06 +00009 massif \
10 lackey \
11 none
sewardjb5f6f512005-03-10 23:59:00 +000012
sewardjd0469f72005-04-20 14:30:19 +000013## addrcheck \
14
sewardj45f4e7c2005-09-27 19:20:21 +000015# Temporary: we want to compile Helgrind, but not regtest it.
16# And we want to include Addrcheck in the distro, but not compile/test it.
njn3f7e9112005-06-19 05:43:21 +000017# Put docs last because building the HTML is slow and we want to get
18# everything else working before we try it.
sewardj45f4e7c2005-09-27 19:20:21 +000019SUBDIRS = include coregrind . tests auxprogs $(TOOLS) helgrind docs
20DIST_SUBDIRS = $(SUBDIRS) addrcheck
sewardjde4a1d02002-03-22 01:27:54 +000021
njna63e2d72003-06-12 14:13:05 +000022SUPP_FILES = \
njnb8824022005-07-03 17:10:04 +000023 glibc-2.2.supp glibc-2.3.supp glibc-2.4.supp \
njna63e2d72003-06-12 14:13:05 +000024 xfree-3.supp xfree-4.supp
gobry3b777892002-04-04 09:18:39 +000025
nethercote537e8942004-08-25 11:40:07 +000026dist_val_DATA = $(SUPP_FILES) default.supp
gobry3b777892002-04-04 09:18:39 +000027
muellerbddd6072003-11-19 21:50:07 +000028pkgconfigdir = $(libdir)/pkgconfig
29pkgconfig_DATA = valgrind.pc
30
njn541e50e2005-07-26 23:06:18 +000031incincdir = $(includedir)/valgrind
tom97245202005-07-27 09:25:08 +000032nodist_incinc_HEADERS = $(VEX_PUBLIC_HDRS)
njn541e50e2005-07-26 23:06:18 +000033
sewardj45f4e7c2005-09-27 19:20:21 +000034BUILT_SOURCES = default.supp valgrind.pc valt_load_address.lds
35CLEANFILES = valt_load_address.lds
njnda762d42003-09-29 20:50:49 +000036DISTCLEANFILES = default.supp
daywalkerf5ef1852003-02-25 01:48:15 +000037
gobry3b777892002-04-04 09:18:39 +000038default.supp: $(SUPP_FILES)
sewardjde4a1d02002-03-22 01:27:54 +000039
njn71fe3e62003-04-23 21:48:20 +000040## Preprend @PERL@ because tests/vg_regtest isn't executable
daywalkerc60b3a12003-04-23 16:39:31 +000041regtest: check
sewardjb5f6f512005-03-10 23:59:00 +000042 @PERL@ tests/vg_regtest $(TOOLS)
njn55b98e92003-04-08 10:29:13 +000043
nethercote537e8942004-08-25 11:40:07 +000044EXTRA_DIST = \
njn4e59bd92003-04-22 20:58:47 +000045 FAQ.txt \
fitzhardingecf826ad2004-01-07 08:47:44 +000046 ACKNOWLEDGEMENTS \
nethercote16b59ee2004-10-09 15:59:05 +000047 README_DEVELOPERS \
nethercote5da1e172003-12-03 21:44:45 +000048 README_PACKAGERS \
njnf7c00b12005-07-19 21:46:19 +000049 README_MISSING_SYSCALL_OR_IOCTL \
njn22ae5c02005-07-24 23:21:28 +000050 valgrind.spec.in valgrind.pc.in \
njn73dc2c72005-08-28 04:48:12 +000051 Makefile.all.am Makefile.tool.am Makefile.core.am \
sewardj85a9dca2005-07-26 10:42:57 +000052 Makefile.tool-inplace.am \
tomab568f62005-07-27 07:36:22 +000053 $(VEX_PRIMARY_SOURCES)
sewardjfed4dd02002-04-14 14:32:54 +000054
gobryb0a955e2002-04-14 15:31:19 +000055install-exec-hook:
daywalker47160d62002-04-15 00:54:13 +000056 $(mkinstalldirs) $(DESTDIR)$(valdir)
njn25e49d8e72002-09-23 09:36:25 +000057
fitzhardinge98abfc72003-12-16 02:05:15 +000058all-local:
nethercoteb7dceef2004-08-25 11:50:46 +000059 mkdir -p $(inplacedir)
60 rm -f $(addprefix $(inplacedir)/,default.supp $(SUPP_FILES))
61 ln -s ../default.supp $(inplacedir)
62 ln -s $(addprefix ../$(top_srcdir)/,$(SUPP_FILES)) $(inplacedir)
fitzhardinge98abfc72003-12-16 02:05:15 +000063
thughes734160c2004-06-28 21:52:40 +000064distclean-local:
nethercoteb7dceef2004-08-25 11:50:46 +000065 rm -rf $(inplacedir)
sewardj85a9dca2005-07-26 10:42:57 +000066
tomab568f62005-07-27 07:36:22 +000067# These list the bits of vex we need to install
sewardj85a9dca2005-07-26 10:42:57 +000068
njn541e50e2005-07-26 23:06:18 +000069VEX_PUBLIC_HDRS = \
tomab568f62005-07-27 07:36:22 +000070 @VEX_DIR@/pub/libvex_guest_amd64.h \
71 @VEX_DIR@/pub/libvex_ir.h \
72 @VEX_DIR@/pub/libvex_guest_ppc32.h \
73 @VEX_DIR@/pub/libvex_basictypes.h \
74 @VEX_DIR@/pub/libvex_guest_offsets.h \
75 @VEX_DIR@/pub/libvex_emwarn.h \
76 @VEX_DIR@/pub/libvex.h \
77 @VEX_DIR@/pub/libvex_trc_values.h \
78 @VEX_DIR@/pub/libvex_guest_arm.h \
79 @VEX_DIR@/pub/libvex_guest_x86.h
80
81# These list the bits of vex we need to copy into the tarball
82
83VEX_PRIMARY_SOURCES = \
sewardjb1916722005-08-03 16:39:44 +000084 VEX/HACKING.README \
85 VEX/LICENSE.README \
86 VEX/LICENSE.GPL \
tomab568f62005-07-27 07:36:22 +000087 VEX/Makefile \
88 VEX/auxprogs/genoffsets.c \
sewardj85a9dca2005-07-26 10:42:57 +000089 VEX/pub/libvex_guest_amd64.h \
90 VEX/pub/libvex_ir.h \
91 VEX/pub/libvex_guest_ppc32.h \
92 VEX/pub/libvex_basictypes.h \
93 VEX/pub/libvex_guest_offsets.h \
94 VEX/pub/libvex_emwarn.h \
95 VEX/pub/libvex.h \
96 VEX/pub/libvex_trc_values.h \
97 VEX/pub/libvex_guest_arm.h \
tomab568f62005-07-27 07:36:22 +000098 VEX/pub/libvex_guest_x86.h \
sewardj85a9dca2005-07-26 10:42:57 +000099 VEX/priv/ir/irmatch.c \
100 VEX/priv/ir/irmatch.h \
101 VEX/priv/ir/irdefs.c \
102 VEX/priv/ir/iropt.c \
103 VEX/priv/ir/iropt.h \
104 VEX/priv/host-ppc32/isel.c \
105 VEX/priv/host-ppc32/hdefs.c \
106 VEX/priv/host-ppc32/hdefs.h \
107 VEX/priv/main/vex_svnversion.h \
108 VEX/priv/main/vex_globals.c \
109 VEX/priv/main/vex_globals.h \
110 VEX/priv/main/vex_main.c \
111 VEX/priv/main/vex_util.c \
112 VEX/priv/main/vex_util.h \
113 VEX/priv/guest-arm/ghelpers.c \
114 VEX/priv/guest-arm/gdefs.h \
115 VEX/priv/guest-arm/toIR.c \
116 VEX/priv/guest-x86/ghelpers.c \
117 VEX/priv/guest-x86/gdefs.h \
118 VEX/priv/guest-x86/toIR.c \
119 VEX/priv/guest-generic/g_generic_x87.c \
120 VEX/priv/guest-generic/g_generic_x87.h \
121 VEX/priv/guest-generic/bb_to_IR.c \
122 VEX/priv/guest-generic/bb_to_IR.h \
123 VEX/priv/host-arm/isel.c \
124 VEX/priv/host-arm/hdefs.c \
125 VEX/priv/host-arm/hdefs.h \
126 VEX/priv/host-x86/isel.c \
127 VEX/priv/host-x86/hdefs.c \
128 VEX/priv/host-x86/hdefs.h \
129 VEX/priv/guest-amd64/ghelpers.c \
130 VEX/priv/guest-amd64/gdefs.h \
131 VEX/priv/guest-amd64/toIR.c \
132 VEX/priv/guest-ppc32/ghelpers.c \
133 VEX/priv/guest-ppc32/gdefs.h \
134 VEX/priv/guest-ppc32/toIR.c \
135 VEX/priv/host-generic/reg_alloc2.c \
136 VEX/priv/host-generic/h_generic_regs.c \
137 VEX/priv/host-generic/h_generic_regs.h \
138 VEX/priv/host-generic/h_generic_simd64.c \
139 VEX/priv/host-generic/h_generic_simd64.h \
140 VEX/priv/host-amd64/isel.c \
141 VEX/priv/host-amd64/hdefs.c \
142 VEX/priv/host-amd64/hdefs.h
sewardj45f4e7c2005-09-27 19:20:21 +0000143
144
145# Generate a linker script for linking the binaries. This is the
146# standard gcc linker script, except hacked so that an alternative
147# load address can be specified by (1) asking gcc to use this script
148# (-Wl,-T,valt_load_address.lds) and (2) setting the symbol
149# valt_load_address to the required value
150# (-Wl,-defsym,valt_load_address=0x70000000).
151#
152# Extract ld's default linker script and hack it to our needs.
153# First we cut everything above and below the "=====..." lines at the top
154# and bottom.
155# Then we have to replace the load address with "valt_load_address".
156# The line to replace in has one of the following two forms:
157#
158# . = 0x08048000 + SIZEOF_HEADERS;
159#
160# or
161# PROVIDE (__executable_start = 0x08048000); . = 0x08048000 + SIZEOF_HEADERS;
162#
163# So we search for the line with a hex value "+ SIZEOF_HEADERS", and replace
164# all the hex values in that line with "valt_load_address".
165valt_load_address.lds: Makefile
166 $(CC) -Wl,--verbose -nostdlib 2>&1 | sed \
167 -e '1,/^=====\+$$/d' \
168 -e '/^=====\+$$/d' \
169 -e '/\. = 0x[0-9A-Fa-f]\+ + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/valt_load_address/g' > $@ \
170 || rm -f $@
171