blob: 06b46f608bb64dfd6e11bd98238d5b7a105b6f47 [file] [log] [blame]
nethercote4388a402004-09-01 23:20:49 +00001include $(top_srcdir)/Makefile.all.am
2include $(top_srcdir)/Makefile.core-AM_CPPFLAGS.am
njn25e49d8e72002-09-23 09:36:25 +00003
njna5f1bcd2004-11-27 16:47:42 +00004## When building, we are only interested in the current arch/OS/platform.
5## But when doing 'make dist', we are interested in every arch/OS/platform.
6## That's what DIST_SUBDIRS specifies.
njn3e986b22004-11-30 10:43:45 +00007SUBDIRS = $(VG_ARCH) $(VG_OS) $(VG_PLATFORM) demangle .
8DIST_SUBDIRS = $(VG_ARCH_ALL) $(VG_OS_ALL) $(VG_PLATFORM_ALL) demangle .
sewardjde4a1d02002-03-22 01:27:54 +00009
nethercote4388a402004-09-01 23:20:49 +000010AM_CPPFLAGS += -DVG_LIBDIR="\"$(valdir)"\" -I$(srcdir)/demangle \
nethercote2b72e942004-10-25 14:05:56 +000011 -DKICKSTART_BASE=@KICKSTART_BASE@ \
nethercotea131bb82004-09-06 15:34:37 +000012 -DVG_PLATFORM="\"$(VG_PLATFORM)"\"
nethercotecf4d9972004-10-25 15:21:00 +000013AM_CFLAGS = $(WERROR) -Winline -Wall -Wshadow -O -g @ARCH_CORE_AM_CFLAGS@
sewardj2a99cf62004-11-24 10:44:19 +000014AM_CFLAGS += -fno-omit-frame-pointer
gobry3b777892002-04-04 09:18:39 +000015
16default.supp: $(SUPP_FILES)
sewardjde4a1d02002-03-22 01:27:54 +000017
fitzhardinge98abfc72003-12-16 02:05:15 +000018bin_PROGRAMS = \
19 valgrind
20
njn25e49d8e72002-09-23 09:36:25 +000021val_PROGRAMS = \
nethercote5f2ad772004-09-01 11:33:35 +000022 stage2 \
fitzhardinge98abfc72003-12-16 02:05:15 +000023 libpthread.so \
24 vg_inject.so
njn25cac76cb2002-09-23 11:21:57 +000025
nethercote799fb802004-10-20 18:40:40 +000026noinst_LIBRARIES = lib_replace_malloc.a
27
28noinst_HEADERS = \
29 core.h \
30 core_asm.h \
31 ume.h \
32 vg_symtab2.h \
33 vg_symtypes.h \
nethercote73b526f2004-10-31 18:48:21 +000034 vg_toolint.h
nethercote799fb802004-10-20 18:40:40 +000035
fitzhardinge98abfc72003-12-16 02:05:15 +000036EXTRA_DIST = \
37 vg_libpthread.vs valgrind.vs \
38 gen_toolint.pl toolfuncs.def \
nethercote187fdb72004-09-11 23:07:22 +000039 gen_intercepts.pl vg_replace_malloc.c.base vg_intercept.c.base
sewardjfed4dd02002-04-14 14:32:54 +000040
fitzhardinge98abfc72003-12-16 02:05:15 +000041BUILT_SOURCES = vg_toolint.c vg_toolint.h
rjwalshe4e779d2004-04-16 23:02:29 +000042CLEANFILES = vg_toolint.c vg_toolint.h vg_replace_malloc.c vg_intercept.c
sewardjde4a1d02002-03-22 01:27:54 +000043
fitzhardinge98abfc72003-12-16 02:05:15 +000044valgrind_SOURCES = \
fitzhardinge98abfc72003-12-16 02:05:15 +000045 ume.c \
nethercote107e1c02004-10-13 17:55:31 +000046 \
47 stage1.c \
48 ${VG_ARCH}/jmp_with_stack.c
fitzhardinge98abfc72003-12-16 02:05:15 +000049valgrind_DEPENDENCIES =
nethercotec25c4492004-10-18 11:52:17 +000050valgrind_LDFLAGS=-static -g
fitzhardinge98abfc72003-12-16 02:05:15 +000051valgrind_LDADD=
sewardjde4a1d02002-03-22 01:27:54 +000052
fitzhardinge98abfc72003-12-16 02:05:15 +000053stage2_SOURCES = \
fitzhardinge98abfc72003-12-16 02:05:15 +000054 ume.c \
fitzhardinge98abfc72003-12-16 02:05:15 +000055 \
sewardj2e93c502002-04-12 11:12:52 +000056 vg_scheduler.c \
njn25e49d8e72002-09-23 09:36:25 +000057 vg_default.c \
sewardjde4a1d02002-03-22 01:27:54 +000058 vg_demangle.c \
sewardjde4a1d02002-03-22 01:27:54 +000059 vg_errcontext.c \
60 vg_execontext.c \
njn3e884182003-04-15 13:03:23 +000061 vg_hashtable.c \
njn25e49d8e72002-09-23 09:36:25 +000062 vg_instrument.c \
sewardjde4a1d02002-03-22 01:27:54 +000063 vg_main.c \
64 vg_malloc2.c \
65 vg_memory.c \
66 vg_messages.c \
67 vg_mylibc.c \
njn810086f2002-11-14 12:42:47 +000068 vg_needs.c \
sewardjde4a1d02002-03-22 01:27:54 +000069 vg_procselfmaps.c \
jsgf855d93d2003-10-13 22:26:55 +000070 vg_proxylwp.c \
njn25e49d8e72002-09-23 09:36:25 +000071 vg_dummy_profile.c \
sewardjde4a1d02002-03-22 01:27:54 +000072 vg_signals.c \
sewardjde4a1d02002-03-22 01:27:54 +000073 vg_symtab2.c \
njn7ea9adc2003-10-18 13:58:44 +000074 vg_dwarf.c \
75 vg_stabs.c \
fitzhardinge98abfc72003-12-16 02:05:15 +000076 vg_skiplist.c \
jsgfcb1d1c02003-10-14 21:55:10 +000077 vg_symtypes.c \
njn25e49d8e72002-09-23 09:36:25 +000078 vg_syscalls.c \
fitzhardinge98abfc72003-12-16 02:05:15 +000079 vg_toolint.c \
sewardjde4a1d02002-03-22 01:27:54 +000080 vg_translate.c \
nethercote986202f2004-10-19 13:48:06 +000081 vg_transtab.c
nethercoteb77dee62004-11-16 17:13:24 +000082
nethercote8ff888f2004-11-17 17:11:45 +000083## libplatform.a must be before libarch.a and libos.a, it seems.
nethercoteb77dee62004-11-16 17:13:24 +000084stage2_extra= \
85 demangle/libdemangle.a \
nethercote8ff888f2004-11-17 17:11:45 +000086 ${VG_PLATFORM}/libplatform.a \
nethercoteb77dee62004-11-16 17:13:24 +000087 ${VG_ARCH}/libarch.a \
sewardj8b635a42004-11-22 19:01:47 +000088 ${VG_OS}/libos.a \
89 @VEX_DIR@/libvex.a
nethercoteb77dee62004-11-16 17:13:24 +000090
nethercotec69863e2004-10-25 19:13:41 +000091## Test repeated in both arms of the if-then-else because older versions of
92## automake don't seem to like having += within an if-then-else.
nethercotef8fbaaa2004-10-25 17:59:43 +000093if USE_PIE
94stage2_CFLAGS = $(AM_CFLAGS) -fpie
nethercoteb77dee62004-11-16 17:13:24 +000095stage2_DEPENDENCIES = \
96 $(srcdir)/valgrind.vs \
97 $(stage2_extra)
nethercotec69863e2004-10-25 19:13:41 +000098stage2_LDFLAGS = -Wl,--export-dynamic -g \
99 -Wl,-version-script $(srcdir)/valgrind.vs \
100 -pie
nethercote7f390022004-10-25 17:18:24 +0000101else
102stage2_CFLAGS = $(AM_CFLAGS)
nethercoteb77dee62004-11-16 17:13:24 +0000103stage2_DEPENDENCIES = \
104 $(srcdir)/valgrind.vs ${VG_ARCH}/stage2.lds \
105 $(stage2_extra)
nethercotec69863e2004-10-25 19:13:41 +0000106stage2_LDFLAGS = -Wl,--export-dynamic -g \
107 -Wl,-version-script $(srcdir)/valgrind.vs \
108 -Wl,-defsym,kickstart_base=@KICKSTART_BASE@ -Wl,-T,${VG_ARCH}/stage2.lds
nethercote7f390022004-10-25 17:18:24 +0000109endif
nethercotec69863e2004-10-25 19:13:41 +0000110
nethercoteb77dee62004-11-16 17:13:24 +0000111stage2_LDADD= $(stage2_extra) -ldl
112
sewardjde4a1d02002-03-22 01:27:54 +0000113
thughes1d4d6792004-06-29 09:45:37 +0000114vg_intercept.c: $(srcdir)/gen_intercepts.pl $(srcdir)/vg_intercept.c.base
rjwalshe4e779d2004-04-16 23:02:29 +0000115 rm -f $@
thughes1d4d6792004-06-29 09:45:37 +0000116 $(PERL) $(srcdir)/gen_intercepts.pl < $(srcdir)/vg_intercept.c.base > $@
rjwalshe4e779d2004-04-16 23:02:29 +0000117
thughes1d4d6792004-06-29 09:45:37 +0000118vg_replace_malloc.c: $(srcdir)/gen_intercepts.pl $(srcdir)/vg_replace_malloc.c.base
rjwalshe4e779d2004-04-16 23:02:29 +0000119 rm -f $@
thughes1d4d6792004-06-29 09:45:37 +0000120 $(PERL) $(srcdir)/gen_intercepts.pl < $(srcdir)/vg_replace_malloc.c.base > $@
rjwalshe4e779d2004-04-16 23:02:29 +0000121
thughes1d4d6792004-06-29 09:45:37 +0000122vg_toolint.c: $(srcdir)/gen_toolint.pl $(srcdir)/toolfuncs.def ./Makefile
fitzhardinge98abfc72003-12-16 02:05:15 +0000123 rm -f $@
124 $(PERL) $(srcdir)/gen_toolint.pl callwrap < $(srcdir)/toolfuncs.def > $@ || rm -f $@
125 $(PERL) $(srcdir)/gen_toolint.pl missingfuncs < $(srcdir)/toolfuncs.def >> $@ || rm -f $@
126 $(PERL) $(srcdir)/gen_toolint.pl initfunc < $(srcdir)/toolfuncs.def >> $@ || rm -f $@
127 $(PERL) $(srcdir)/gen_toolint.pl initdlsym < $(srcdir)/toolfuncs.def >> $@ || rm -f $@
128 $(PERL) $(srcdir)/gen_toolint.pl structdef < $(srcdir)/toolfuncs.def >> $@ || rm -f $@
njn3e884182003-04-15 13:03:23 +0000129
thughes1d4d6792004-06-29 09:45:37 +0000130vg_toolint.h: $(srcdir)/gen_toolint.pl $(srcdir)/toolfuncs.def ./Makefile
fitzhardinge98abfc72003-12-16 02:05:15 +0000131 rm -f $@
132 $(PERL) $(srcdir)/gen_toolint.pl proto < $(srcdir)/toolfuncs.def > $@ || rm -f $@
133 $(PERL) $(srcdir)/gen_toolint.pl struct < $(srcdir)/toolfuncs.def >> $@ || rm -f $@
134
135libpthread_so_SOURCES = \
136 vg_libpthread.c \
137 vg_libpthread_unimp.c \
nethercotebdf9a772004-10-19 14:23:46 +0000138 ${VG_ARCH}/libpthread.c \
139 ${VG_PLATFORM}/syscall.S
fitzhardinge98abfc72003-12-16 02:05:15 +0000140libpthread_so_DEPENDENCIES = $(srcdir)/vg_libpthread.vs
thughesbd234062004-10-28 13:47:14 +0000141libpthread_so_CFLAGS = $(AM_CFLAGS) -fpic -fno-omit-frame-pointer
fitzhardinge98abfc72003-12-16 02:05:15 +0000142libpthread_so_LDFLAGS = -Werror -fno-omit-frame-pointer -UVG_LIBDIR \
nethercote799fb802004-10-20 18:40:40 +0000143 -shared -ldl \
fitzhardinge98abfc72003-12-16 02:05:15 +0000144 -Wl,-version-script $(srcdir)/vg_libpthread.vs \
145 -Wl,-z,nodelete \
146 -Wl,--soname=libpthread.so.0
147
148vg_inject_so_SOURCES = \
149 vg_intercept.c
nethercote799fb802004-10-20 18:40:40 +0000150vg_inject_so_CFLAGS = $(AM_CFLAGS) -fpic
fitzhardinge98abfc72003-12-16 02:05:15 +0000151vg_inject_so_LDFLAGS = \
152 -shared \
153 -Wl,--soname,vg_inject.so \
154 -Wl,-z,initfirst
njn3e884182003-04-15 13:03:23 +0000155
nethercote799fb802004-10-20 18:40:40 +0000156lib_replace_malloc_a_SOURCES = vg_replace_malloc.c
thughesdac76662004-10-26 15:55:46 +0000157lib_replace_malloc_a_CFLAGS = $(AM_CFLAGS) -fpic -fno-omit-frame-pointer
sewardjde4a1d02002-03-22 01:27:54 +0000158
fitzhardinge98abfc72003-12-16 02:05:15 +0000159MANUAL_DEPS = $(noinst_HEADERS) $(include_HEADERS) $(inplacedir)/libpthread.so.0
sewardj71889e62002-05-10 03:03:57 +0000160
daywalker781132b2003-06-01 20:05:08 +0000161all-local:
fitzhardinge98abfc72003-12-16 02:05:15 +0000162 mkdir -p $(inplacedir)
163 for i in $(val_PROGRAMS); do \
164 to=$(inplacedir)/$$(echo $$i | sed 's,libpthread.so,libpthread.so.0,'); \
165 rm -f $$$to; \
nethercote03b19482004-08-25 11:57:21 +0000166 ln -sf ../$(subdir)/$$i $$to; \
fitzhardinge98abfc72003-12-16 02:05:15 +0000167 done
168