blob: b8696479afa4e98d586f1535a82eb7f02eabd426 [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
fitzhardingee3c6b6f2004-03-12 10:51:39 +00004SUBDIRS = x86 demangle . docs
sewardjde4a1d02002-03-22 01:27:54 +00005
nethercote4388a402004-09-01 23:20:49 +00006AM_CPPFLAGS += -DVG_LIBDIR="\"$(valdir)"\" -I$(srcdir)/demangle \
7 -I$(srcdir)/x86 \
nethercoteb669ef72004-08-25 16:16:56 +00008 -DKICKSTART_BASE=$(KICKSTART_BASE)
fitzhardinge98abfc72003-12-16 02:05:15 +00009AM_CFLAGS = $(WERROR) -Winline -Wall -Wshadow -O -fno-omit-frame-pointer \
10 @PREFERRED_STACK_BOUNDARY@ -g -DELFSZ=32
11AM_CCASFLAGS = $(add_includes) -I..
gobry3b777892002-04-04 09:18:39 +000012
13default.supp: $(SUPP_FILES)
sewardjde4a1d02002-03-22 01:27:54 +000014
fitzhardinge98abfc72003-12-16 02:05:15 +000015bin_PROGRAMS = \
16 valgrind
17
njn25e49d8e72002-09-23 09:36:25 +000018val_PROGRAMS = \
nethercote5f2ad772004-09-01 11:33:35 +000019 stage2 \
fitzhardinge98abfc72003-12-16 02:05:15 +000020 libpthread.so \
21 vg_inject.so
njn25cac76cb2002-09-23 11:21:57 +000022
fitzhardinge98abfc72003-12-16 02:05:15 +000023EXTRA_DIST = \
24 vg_libpthread.vs valgrind.vs \
25 gen_toolint.pl toolfuncs.def \
ossi4b0dc1a2004-06-17 13:25:47 +000026 gen_intercepts.pl vg_replace_malloc.c.base vg_intercept.c.base \
fitzhardinge98abfc72003-12-16 02:05:15 +000027 vg_replace_malloc.c
sewardjfed4dd02002-04-14 14:32:54 +000028
fitzhardinge98abfc72003-12-16 02:05:15 +000029BUILT_SOURCES = vg_toolint.c vg_toolint.h
rjwalshe4e779d2004-04-16 23:02:29 +000030CLEANFILES = vg_toolint.c vg_toolint.h vg_replace_malloc.c vg_intercept.c
sewardjde4a1d02002-03-22 01:27:54 +000031
fitzhardinge98abfc72003-12-16 02:05:15 +000032valgrind_SOURCES = \
33 stage1.c \
34 ume.c \
35 x86/ume_entry.S \
36 x86/ume_go.c
37valgrind_DEPENDENCIES =
38valgrind_LDFLAGS=-static -g -Wl,-e,_ume_entry
39valgrind_LDADD=
sewardjde4a1d02002-03-22 01:27:54 +000040
nethercoteb669ef72004-08-25 16:16:56 +000041# Where stage2 will be put.
42# Nb: Hard-wiring this sucks. A configure-time test would be better. A
43# load-time test would be even better, but would require building stage2 in
44# a position-independent way...
45KICKSTART_BASE=0xb0000000
46
fitzhardinge98abfc72003-12-16 02:05:15 +000047stage2_SOURCES = \
fitzhardinge98abfc72003-12-16 02:05:15 +000048 ume.c \
49 x86/ume_entry.S \
50 x86/ume_go.c \
51 \
sewardj2e93c502002-04-12 11:12:52 +000052 vg_scheduler.c \
njn25e49d8e72002-09-23 09:36:25 +000053 vg_default.c \
sewardjde4a1d02002-03-22 01:27:54 +000054 vg_demangle.c \
55 vg_dispatch.S \
56 vg_errcontext.c \
57 vg_execontext.c \
58 vg_from_ucode.c \
njn3e884182003-04-15 13:03:23 +000059 vg_hashtable.c \
sewardjde4a1d02002-03-22 01:27:54 +000060 vg_helpers.S \
njn25e49d8e72002-09-23 09:36:25 +000061 vg_instrument.c \
sewardjde4a1d02002-03-22 01:27:54 +000062 vg_main.c \
63 vg_malloc2.c \
64 vg_memory.c \
65 vg_messages.c \
66 vg_mylibc.c \
njn810086f2002-11-14 12:42:47 +000067 vg_needs.c \
sewardjde4a1d02002-03-22 01:27:54 +000068 vg_procselfmaps.c \
jsgf855d93d2003-10-13 22:26:55 +000069 vg_proxylwp.c \
njn25e49d8e72002-09-23 09:36:25 +000070 vg_dummy_profile.c \
sewardjde4a1d02002-03-22 01:27:54 +000071 vg_signals.c \
sewardjde4a1d02002-03-22 01:27:54 +000072 vg_symtab2.c \
njn7ea9adc2003-10-18 13:58:44 +000073 vg_dwarf.c \
74 vg_stabs.c \
fitzhardinge98abfc72003-12-16 02:05:15 +000075 vg_skiplist.c \
jsgfcb1d1c02003-10-14 21:55:10 +000076 vg_symtypes.c \
njn25e49d8e72002-09-23 09:36:25 +000077 vg_syscalls.c \
sewardjde4a1d02002-03-22 01:27:54 +000078 vg_syscall.S \
79 vg_to_ucode.c \
fitzhardinge98abfc72003-12-16 02:05:15 +000080 vg_toolint.c \
sewardjde4a1d02002-03-22 01:27:54 +000081 vg_translate.c \
sewardj92a59562002-09-30 00:53:10 +000082 vg_transtab.c \
thughes4ee64962004-06-16 20:51:45 +000083 vg_ldt.c \
84 vg_cpuid.S
fitzhardingee3c6b6f2004-03-12 10:51:39 +000085stage2_DEPENDENCIES = $(srcdir)/valgrind.vs x86/stage2.lds
fitzhardinge98abfc72003-12-16 02:05:15 +000086stage2_LDFLAGS=-Wl,--export-dynamic -Wl,-e,_ume_entry -g \
nethercoteb669ef72004-08-25 16:16:56 +000087 -Wl,-defsym,kickstart_base=$(KICKSTART_BASE) \
fitzhardingee3c6b6f2004-03-12 10:51:39 +000088 -Wl,-T,x86/stage2.lds \
jsgf855d93d2003-10-13 22:26:55 +000089 -Wl,-version-script $(srcdir)/valgrind.vs
fitzhardinge98abfc72003-12-16 02:05:15 +000090stage2_LDADD= \
sewardjde4a1d02002-03-22 01:27:54 +000091 demangle/cp-demangle.o \
92 demangle/cplus-dem.o \
93 demangle/dyn-string.o \
fitzhardinge98abfc72003-12-16 02:05:15 +000094 demangle/safe-ctype.o \
95 -ldl
sewardjde4a1d02002-03-22 01:27:54 +000096
thughes1d4d6792004-06-29 09:45:37 +000097vg_intercept.c: $(srcdir)/gen_intercepts.pl $(srcdir)/vg_intercept.c.base
rjwalshe4e779d2004-04-16 23:02:29 +000098 rm -f $@
thughes1d4d6792004-06-29 09:45:37 +000099 $(PERL) $(srcdir)/gen_intercepts.pl < $(srcdir)/vg_intercept.c.base > $@
rjwalshe4e779d2004-04-16 23:02:29 +0000100
thughes1d4d6792004-06-29 09:45:37 +0000101vg_replace_malloc.c: $(srcdir)/gen_intercepts.pl $(srcdir)/vg_replace_malloc.c.base
rjwalshe4e779d2004-04-16 23:02:29 +0000102 rm -f $@
thughes1d4d6792004-06-29 09:45:37 +0000103 $(PERL) $(srcdir)/gen_intercepts.pl < $(srcdir)/vg_replace_malloc.c.base > $@
rjwalshe4e779d2004-04-16 23:02:29 +0000104
thughes1d4d6792004-06-29 09:45:37 +0000105vg_toolint.c: $(srcdir)/gen_toolint.pl $(srcdir)/toolfuncs.def ./Makefile
fitzhardinge98abfc72003-12-16 02:05:15 +0000106 rm -f $@
107 $(PERL) $(srcdir)/gen_toolint.pl callwrap < $(srcdir)/toolfuncs.def > $@ || rm -f $@
108 $(PERL) $(srcdir)/gen_toolint.pl missingfuncs < $(srcdir)/toolfuncs.def >> $@ || rm -f $@
109 $(PERL) $(srcdir)/gen_toolint.pl initfunc < $(srcdir)/toolfuncs.def >> $@ || rm -f $@
110 $(PERL) $(srcdir)/gen_toolint.pl initdlsym < $(srcdir)/toolfuncs.def >> $@ || rm -f $@
111 $(PERL) $(srcdir)/gen_toolint.pl structdef < $(srcdir)/toolfuncs.def >> $@ || rm -f $@
njn3e884182003-04-15 13:03:23 +0000112
thughes1d4d6792004-06-29 09:45:37 +0000113vg_toolint.h: $(srcdir)/gen_toolint.pl $(srcdir)/toolfuncs.def ./Makefile
fitzhardinge98abfc72003-12-16 02:05:15 +0000114 rm -f $@
115 $(PERL) $(srcdir)/gen_toolint.pl proto < $(srcdir)/toolfuncs.def > $@ || rm -f $@
116 $(PERL) $(srcdir)/gen_toolint.pl struct < $(srcdir)/toolfuncs.def >> $@ || rm -f $@
117
118libpthread_so_SOURCES = \
119 vg_libpthread.c \
120 vg_libpthread_unimp.c \
121 vg_syscall.S
122libpthread_so_DEPENDENCIES = $(srcdir)/vg_libpthread.vs
123libpthread_so_LDFLAGS = -Werror -fno-omit-frame-pointer -UVG_LIBDIR \
fitzhardinge47735af2004-01-21 01:27:27 +0000124 -shared -fpic -ldl \
fitzhardinge98abfc72003-12-16 02:05:15 +0000125 -Wl,-version-script $(srcdir)/vg_libpthread.vs \
126 -Wl,-z,nodelete \
127 -Wl,--soname=libpthread.so.0
128
129vg_inject_so_SOURCES = \
130 vg_intercept.c
131
132# Not really true, but we need to build vg_replace_malloc.o somehow
133vg_inject_so_DEPENDENCIES = \
134 vg_replace_malloc.o
135
136vg_inject_so_LDFLAGS = \
137 -shared \
138 -Wl,--soname,vg_inject.so \
139 -Wl,-z,initfirst
njn3e884182003-04-15 13:03:23 +0000140
sewardjde4a1d02002-03-22 01:27:54 +0000141noinst_HEADERS = \
fitzhardinge98abfc72003-12-16 02:05:15 +0000142 ume.h \
143 ume_arch.h \
sewardjde4a1d02002-03-22 01:27:54 +0000144 vg_include.h \
sewardjde4a1d02002-03-22 01:27:54 +0000145 vg_constants.h \
jsgfcb1d1c02003-10-14 21:55:10 +0000146 vg_symtab2.h \
mueller69801fb2003-11-01 01:59:23 +0000147 vg_unistd.h \
jsgfcb1d1c02003-10-14 21:55:10 +0000148 vg_symtypes.h \
fitzhardinge98abfc72003-12-16 02:05:15 +0000149 vg_toolint.h \
njn3e884182003-04-15 13:03:23 +0000150 vg_unsafe.h
sewardjde4a1d02002-03-22 01:27:54 +0000151
fitzhardinge98abfc72003-12-16 02:05:15 +0000152MANUAL_DEPS = $(noinst_HEADERS) $(include_HEADERS) $(inplacedir)/libpthread.so.0
sewardj71889e62002-05-10 03:03:57 +0000153
fitzhardinge98abfc72003-12-16 02:05:15 +0000154vg_replace_malloc.o vg_intercept.o vg_libpthread.o: CFLAGS += -fno-omit-frame-pointer -g -fpic
njn01fe69e2002-11-11 18:54:42 +0000155
daywalker781132b2003-06-01 20:05:08 +0000156all-local:
fitzhardinge98abfc72003-12-16 02:05:15 +0000157 mkdir -p $(inplacedir)
158 for i in $(val_PROGRAMS); do \
159 to=$(inplacedir)/$$(echo $$i | sed 's,libpthread.so,libpthread.so.0,'); \
160 rm -f $$$to; \
nethercote03b19482004-08-25 11:57:21 +0000161 ln -sf ../$(subdir)/$$i $$to; \
fitzhardinge98abfc72003-12-16 02:05:15 +0000162 done
163