blob: 7a8343be9baeb1bd8c140377cf6b704175ca7278 [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
njn2521d322005-05-08 14:45:13 +00004MODULES = \
njn2521d322005-05-08 14:45:13 +00005 m_aspacemgr \
njn36b66df2005-05-12 05:13:04 +00006 m_demangle \
7 m_dispatch \
njn717cde52005-05-10 02:47:21 +00008 m_replacemalloc \
njn2521d322005-05-08 14:45:13 +00009 m_sigframe \
10 m_syscalls
11
njna5f1bcd2004-11-27 16:47:42 +000012## When building, we are only interested in the current arch/OS/platform.
13## But when doing 'make dist', we are interested in every arch/OS/platform.
14## That's what DIST_SUBDIRS specifies.
sewardj985fabb2005-04-24 14:18:14 +000015SUBDIRS = \
njn2521d322005-05-08 14:45:13 +000016 $(VG_ARCH) $(VG_OS) $(VG_PLATFORM) \
17 $(MODULES) .
sewardj985fabb2005-04-24 14:18:14 +000018
19DIST_SUBDIRS = \
20 $(VG_ARCH_ALL) $(VG_OS_ALL) $(VG_PLATFORM_ALL) \
njn2521d322005-05-08 14:45:13 +000021 $(MODULES) .
sewardjde4a1d02002-03-22 01:27:54 +000022
njn44e13682005-05-10 04:56:56 +000023AM_CPPFLAGS += -DVG_LIBDIR="\"$(valdir)"\" \
sewardjbc7df202005-05-02 10:25:34 +000024 -DKICKSTART_BASE=@KICKSTART_BASE@
25
sewardjb5f6f512005-03-10 23:59:00 +000026AM_CFLAGS = $(WERROR) -Wmissing-prototypes -Winline -Wall -Wshadow -O -g @ARCH_CORE_AM_CFLAGS@
sewardj2a99cf62004-11-24 10:44:19 +000027AM_CFLAGS += -fno-omit-frame-pointer
gobry3b777892002-04-04 09:18:39 +000028
29default.supp: $(SUPP_FILES)
sewardjde4a1d02002-03-22 01:27:54 +000030
fitzhardinge98abfc72003-12-16 02:05:15 +000031bin_PROGRAMS = \
32 valgrind
33
njn25e49d8e72002-09-23 09:36:25 +000034val_PROGRAMS = \
nethercote5f2ad772004-09-01 11:33:35 +000035 stage2 \
fitzhardinge98abfc72003-12-16 02:05:15 +000036 vg_inject.so
njn25cac76cb2002-09-23 11:21:57 +000037
nethercote799fb802004-10-20 18:40:40 +000038noinst_HEADERS = \
39 core.h \
njn2521d322005-05-08 14:45:13 +000040 pub_core_aspacemgr.h \
41 pub_core_debuglog.h \
njn44e13682005-05-10 04:56:56 +000042 pub_core_demangle.h \
njn36b66df2005-05-12 05:13:04 +000043 pub_core_dispatch.h \
njna733b5f2005-05-12 13:15:38 +000044 pub_core_dispatch_asm.h \
njnd2b17112005-04-19 04:10:25 +000045 pub_core_errormgr.h \
njnd01fef72005-03-25 23:35:48 +000046 pub_core_execontext.h \
njn81c00df2005-05-14 21:28:43 +000047 pub_core_hashtable.h \
njn717cde52005-05-10 02:47:21 +000048 pub_core_mallocfree.h \
49 pub_core_replacemalloc.h\
sewardj1cf558c2005-04-25 01:36:56 +000050 pub_core_sigframe.h \
njn641d5cc2005-05-12 04:37:27 +000051 pub_core_skiplist.h \
njn2521d322005-05-08 14:45:13 +000052 pub_core_stacktrace.h \
53 pub_core_syscalls.h \
njn43b9a8a2005-05-10 04:37:01 +000054 pub_core_tooliface.h \
njncf443512005-05-13 23:14:40 +000055 pub_core_translate.h \
njn8bddf582005-05-13 23:40:55 +000056 pub_core_transtab.h \
njn2e8f4ef2005-05-14 21:44:20 +000057 pub_core_transtab_asm.h \
nethercote799fb802004-10-20 18:40:40 +000058 ume.h \
59 vg_symtab2.h \
njn51d827b2005-05-09 01:02:08 +000060 vg_symtypes.h
nethercote799fb802004-10-20 18:40:40 +000061
fitzhardinge98abfc72003-12-16 02:05:15 +000062EXTRA_DIST = \
sewardjb5f6f512005-03-10 23:59:00 +000063 valgrind.vs \
njn51d827b2005-05-09 01:02:08 +000064 README_MODULES.txt
sewardjde4a1d02002-03-22 01:27:54 +000065
fitzhardinge98abfc72003-12-16 02:05:15 +000066valgrind_SOURCES = \
fitzhardinge98abfc72003-12-16 02:05:15 +000067 ume.c \
nethercote107e1c02004-10-13 17:55:31 +000068 \
69 stage1.c \
sewardj1cf558c2005-04-25 01:36:56 +000070 m_debuglog.c \
nethercote107e1c02004-10-13 17:55:31 +000071 ${VG_ARCH}/jmp_with_stack.c
fitzhardinge98abfc72003-12-16 02:05:15 +000072valgrind_DEPENDENCIES =
nethercotec25c4492004-10-18 11:52:17 +000073valgrind_LDFLAGS=-static -g
fitzhardinge98abfc72003-12-16 02:05:15 +000074valgrind_LDADD=
sewardjde4a1d02002-03-22 01:27:54 +000075
fitzhardinge98abfc72003-12-16 02:05:15 +000076stage2_SOURCES = \
njn43b9a8a2005-05-10 04:37:01 +000077 m_debuglog.c \
sewardj267100d2005-04-24 12:33:12 +000078 m_errormgr.c \
79 m_execontext.c \
njn81c00df2005-05-14 21:28:43 +000080 m_hashtable.c \
njn717cde52005-05-10 02:47:21 +000081 m_mallocfree.c \
njn641d5cc2005-05-12 04:37:27 +000082 m_skiplist.c \
sewardj267100d2005-04-24 12:33:12 +000083 m_stacktrace.c \
njn43b9a8a2005-05-10 04:37:01 +000084 m_tooliface.c \
njn3cbfbc12005-05-13 23:11:40 +000085 m_translate.c \
njn8bddf582005-05-13 23:40:55 +000086 m_transtab.c \
fitzhardinge98abfc72003-12-16 02:05:15 +000087 ume.c \
fitzhardinge98abfc72003-12-16 02:05:15 +000088 \
sewardj2e93c502002-04-12 11:12:52 +000089 vg_scheduler.c \
sewardjde4a1d02002-03-22 01:27:54 +000090 vg_main.c \
sewardjde4a1d02002-03-22 01:27:54 +000091 vg_messages.c \
92 vg_mylibc.c \
njn25e49d8e72002-09-23 09:36:25 +000093 vg_dummy_profile.c \
sewardjde4a1d02002-03-22 01:27:54 +000094 vg_signals.c \
sewardjde4a1d02002-03-22 01:27:54 +000095 vg_symtab2.c \
sewardjb5f6f512005-03-10 23:59:00 +000096 vg_threadmodel.c \
97 vg_pthreadmodel.c \
98 vg_redir.c \
njn7ea9adc2003-10-18 13:58:44 +000099 vg_dwarf.c \
100 vg_stabs.c \
njn8bddf582005-05-13 23:40:55 +0000101 vg_symtypes.c
nethercoteb77dee62004-11-16 17:13:24 +0000102
nethercote8ff888f2004-11-17 17:11:45 +0000103## libplatform.a must be before libarch.a and libos.a, it seems.
nethercoteb77dee62004-11-16 17:13:24 +0000104stage2_extra= \
njn36b66df2005-05-12 05:13:04 +0000105 m_dispatch/libdispatch.a \
njn44e13682005-05-10 04:56:56 +0000106 m_demangle/libdemangle.a \
sewardj55f9d1a2005-04-25 11:11:44 +0000107 m_aspacemgr/libaspacemgr.a \
njn2521d322005-05-08 14:45:13 +0000108 m_sigframe/libsigframe.a \
109 m_syscalls/libsyscalls.a \
nethercote8ff888f2004-11-17 17:11:45 +0000110 ${VG_PLATFORM}/libplatform.a \
nethercoteb77dee62004-11-16 17:13:24 +0000111 ${VG_ARCH}/libarch.a \
sewardj8b635a42004-11-22 19:01:47 +0000112 ${VG_OS}/libos.a \
113 @VEX_DIR@/libvex.a
nethercoteb77dee62004-11-16 17:13:24 +0000114
njn717cde52005-05-10 02:47:21 +0000115## These ones must be linked in with the --whole-archive flag, because they
116## wouldn't get pulled into stage otherwise (because they contain symbols
117## only referred to by tool shared objects).
118stage2_extra2 = \
119 m_replacemalloc/libreplacemalloc_core.a
120
121## Nb: older versions of automake don't seem to like having += within an
122## if-then-else, so we have to use these variables for the common parts.
123st2_DEPS_common = \
124 $(srcdir)/valgrind.vs \
125 $(stage2_extra) \
126 $(stage2_extra2)
127
128st2_LDFLAGS_common = \
129 -Wl,--export-dynamic -g \
130 -Wl,-version-script $(srcdir)/valgrind.vs
131
nethercotef8fbaaa2004-10-25 17:59:43 +0000132if USE_PIE
133stage2_CFLAGS = $(AM_CFLAGS) -fpie
njn717cde52005-05-10 02:47:21 +0000134stage2_DEPENDENCIES = $(st2_DEPS_common)
135stage2_LDFLAGS = \
136 $(st2_LDFLAGS_common) \
137 -Wl,--whole-archive $(stage2_extra2) -Wl,--no-whole-archive \
nethercotec69863e2004-10-25 19:13:41 +0000138 -pie
nethercote7f390022004-10-25 17:18:24 +0000139else
140stage2_CFLAGS = $(AM_CFLAGS)
njn717cde52005-05-10 02:47:21 +0000141stage2_DEPENDENCIES = $(st2_DEPS_common) ${VG_ARCH}/stage2.lds
142stage2_LDFLAGS = \
143 $(st2_LDFLAGS_common) \
144 -Wl,--whole-archive $(stage2_extra2) -Wl,--no-whole-archive \
nethercotec69863e2004-10-25 19:13:41 +0000145 -Wl,-defsym,kickstart_base=@KICKSTART_BASE@ -Wl,-T,${VG_ARCH}/stage2.lds
nethercote7f390022004-10-25 17:18:24 +0000146endif
nethercotec69863e2004-10-25 19:13:41 +0000147
njn717cde52005-05-10 02:47:21 +0000148stage2_LDADD= $(stage2_extra) \
149 -ldl
sewardjde4a1d02002-03-22 01:27:54 +0000150
sewardjb5f6f512005-03-10 23:59:00 +0000151vg_inject_so_SOURCES = vg_intercept.c
nethercote799fb802004-10-20 18:40:40 +0000152vg_inject_so_CFLAGS = $(AM_CFLAGS) -fpic
sewardjb5f6f512005-03-10 23:59:00 +0000153vg_inject_so_LDADD = -ldl
fitzhardinge98abfc72003-12-16 02:05:15 +0000154vg_inject_so_LDFLAGS = \
155 -shared \
156 -Wl,--soname,vg_inject.so \
157 -Wl,-z,initfirst
njn3e884182003-04-15 13:03:23 +0000158
sewardjb5f6f512005-03-10 23:59:00 +0000159MANUAL_DEPS = $(noinst_HEADERS) $(include_HEADERS)
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 \
sewardjb5f6f512005-03-10 23:59:00 +0000164 to=$(inplacedir)/$$i; \
fitzhardinge98abfc72003-12-16 02:05:15 +0000165 rm -f $$$to; \
nethercote03b19482004-08-25 11:57:21 +0000166 ln -sf ../$(subdir)/$$i $$to; \
fitzhardinge98abfc72003-12-16 02:05:15 +0000167 done
168