Home | History | Annotate | Download | only in valgrind
      1 # Copyright (C) 2011 The Android Open Source Project
      2 #
      3 # Licensed under the Apache License, Version 2.0 (the "License");
      4 # you may not use this file except in compliance with the License.
      5 # You may obtain a copy of the License at
      6 #
      7 #      http://www.apache.org/licenses/LICENSE-2.0
      8 #
      9 # Unless required by applicable law or agreed to in writing, software
     10 # distributed under the License is distributed on an "AS IS" BASIS,
     11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 # See the License for the specific language governing permissions and
     13 # limitations under the License.
     14 
     15 LOCAL_PATH:= $(call my-dir)
     16 
     17 ANDROID_HARDWARE := ANDROID_HARDWARE_generic
     18 
     19 # When updating this list also update the list in art/build/Android.gtest.mk
     20 VALGRIND_SUPPORTED_ARCH := arm arm64 x86_64
     21 
     22 vg_arch:=$(TARGET_ARCH)
     23 
     24 ifneq ($(filter x86_64, $(TARGET_ARCH)),)
     25   vg_arch:=amd64
     26 endif
     27 
     28 common_cflags := \
     29 	-fno-strict-aliasing \
     30 	-fno-stack-protector \
     31 	-DVGO_linux=1 \
     32 	-DANDROID_SYMBOLS_DIR=\"/data/local/symbols\" \
     33 	-Wall \
     34 	-Werror \
     35 	-Wmissing-declarations \
     36 	-Wmissing-prototypes \
     37 	-Wpointer-arith \
     38 	-Wno-asm-operand-widths \
     39 	-Wno-cast-align \
     40 	-Wno-format \
     41 	-Wno-incompatible-library-redeclaration \
     42 	-Wno-incompatible-pointer-types \
     43 	-Wno-initializer-overrides \
     44 	-Wno-missing-field-initializers \
     45 	-Wno-pointer-sign \
     46 	-Wno-self-assign \
     47 	-Wno-shadow \
     48 	-Wno-sign-compare \
     49 	-Wno-tautological-compare \
     50 	-Wno-unused-parameter \
     51 	-std=gnu99
     52 
     53 ifeq ($(TARGET_IS_64_BIT),true)
     54   vg_target_module_path := /system/lib64/valgrind
     55 else
     56   vg_target_module_path := /system/lib/valgrind
     57 endif
     58 
     59 target_arch_cflags := \
     60 	-DVGA_$(vg_arch)=1 \
     61 	-DVGP_$(vg_arch)_linux=1 \
     62 	-DVGPV_$(vg_arch)_linux_android=1 \
     63 	-DVG_LIBDIR=\"$(vg_target_module_path)\" \
     64 	-DVG_PLATFORM=\"$(vg_arch)-linux\"
     65 
     66 ifdef TARGET_2ND_ARCH
     67 target_2nd_arch_cflags := \
     68 	-DVGA_$(TARGET_2ND_ARCH)=1 \
     69 	-DVGP_$(TARGET_2ND_ARCH)_linux=1 \
     70 	-DVGPV_$(TARGET_2ND_ARCH)_linux_android=1 \
     71 	-DVG_LIBDIR=\"$(vg_target_module_path)\" \
     72 	-DVG_PLATFORM=\"$(TARGET_2ND_ARCH)-linux\"
     73 vg_second_arch := $(TARGET_2ND_ARCH)
     74 
     75 endif
     76 
     77 # The supported host platform are linux amd64 and linux x86
     78 host_arch_cflags := \
     79   -DVGA_amd64=1 \
     80   -DVGP_amd64_linux=1 \
     81   -DVG_PLATFORM=\"amd64-linux\" \
     82   -DVG_LIBDIR=\"$(abspath $(HOST_OUT_SHARED_LIBRARIES))/valgrind\"
     83 
     84 host_2nd_arch_cflags := \
     85   -DVGA_x86=1 \
     86   -DVGP_x86_linux=1 \
     87   -DVG_PLATFORM=\"x86-linux\" \
     88   -DVG_LIBDIR=\"$(abspath $(HOST_OUT_SHARED_LIBRARIES))/valgrind\"
     89 
     90 common_includes := \
     91 	external/valgrind \
     92 	external/valgrind/include \
     93 	external/valgrind/VEX/pub \
     94 	external/valgrind/coregrind
     95 
     96 vex_ldflags := -nodefaultlibs
     97 
     98 ifeq (,$(filter $(TARGET_ARCH),arm arm64))
     99 tool_ldflags := -static -Wl,--build-id=none,-Ttext=0x38000000 -nodefaultlibs -nostartfiles -Wl,-e,_start
    100 else
    101 tool_ldflags := -static -Wl,-Ttext=0x38000000 -nodefaultlibs -nostartfiles -Wl,-e,_start
    102 endif
    103 
    104 common_cflags += -D$(ANDROID_HARDWARE)
    105 
    106 preload_ldflags := -nodefaultlibs -Wl,-z,interpose,-z,initfirst
    107 # Remove this when the all toolchains are GCC 4.4
    108 ifeq ($(TARGET_ARCH),arm)
    109   preload_ldflags += -Wl,--icf=none
    110 endif
    111 
    112 # Build libvex-($TARGET_ARCH)-linux.a
    113 vg_local_module=libvex
    114 
    115 vg_local_cflags := $(common_cflags) \
    116     -Wbad-function-cast \
    117     -Wcast-qual \
    118     -fstrict-aliasing \
    119 
    120 vg_local_src_files := \
    121 	VEX/priv/main_globals.c \
    122 	VEX/priv/main_main.c \
    123 	VEX/priv/main_util.c \
    124 	VEX/priv/ir_defs.c \
    125 	VEX/priv/ir_match.c \
    126 	VEX/priv/ir_opt.c \
    127 	VEX/priv/ir_inject.c \
    128 	VEX/priv/guest_generic_bb_to_IR.c \
    129 	VEX/priv/guest_generic_x87.c \
    130 	VEX/priv/guest_mips_helpers.c \
    131 	VEX/priv/guest_mips_toIR.c \
    132 	VEX/priv/guest_x86_helpers.c \
    133 	VEX/priv/guest_x86_toIR.c \
    134 	VEX/priv/guest_amd64_helpers.c \
    135 	VEX/priv/guest_amd64_toIR.c \
    136 	VEX/priv/guest_ppc_helpers.c \
    137 	VEX/priv/guest_ppc_toIR.c \
    138 	VEX/priv/guest_arm_helpers.c \
    139 	VEX/priv/guest_arm_toIR.c \
    140 	VEX/priv/guest_arm64_helpers.c \
    141 	VEX/priv/guest_arm64_toIR.c \
    142 	VEX/priv/guest_s390_helpers.c \
    143 	VEX/priv/guest_s390_toIR.c \
    144 	VEX/priv/host_generic_maddf.c \
    145 	VEX/priv/host_generic_regs.c \
    146 	VEX/priv/host_generic_simd64.c \
    147 	VEX/priv/host_generic_simd128.c \
    148 	VEX/priv/host_generic_simd256.c \
    149 	VEX/priv/host_generic_reg_alloc2.c \
    150 	VEX/priv/host_x86_defs.c \
    151 	VEX/priv/host_x86_isel.c \
    152 	VEX/priv/host_amd64_defs.c \
    153 	VEX/priv/host_amd64_isel.c \
    154 	VEX/priv/host_mips_defs.c \
    155 	VEX/priv/host_mips_isel.c \
    156 	VEX/priv/host_ppc_defs.c \
    157 	VEX/priv/host_ppc_isel.c \
    158 	VEX/priv/host_arm_defs.c \
    159 	VEX/priv/host_arm_isel.c \
    160 	VEX/priv/host_arm64_defs.c \
    161 	VEX/priv/host_arm64_isel.c \
    162 	VEX/priv/host_s390_defs.c \
    163 	VEX/priv/host_s390_isel.c \
    164 	VEX/priv/s390_disasm.c
    165 
    166 vg_local_target := STATIC_LIBRARY
    167 include $(LOCAL_PATH)/Android.build_all.mk
    168 
    169 # Build libcoregrind-$(TARGET_ARCH)-linux.a
    170 vg_local_module := libcoregrind
    171 vg_local_target := STATIC_LIBRARY
    172 
    173 vg_local_src_files := \
    174 	coregrind/m_addrinfo.c \
    175 	coregrind/m_cache.c \
    176 	coregrind/m_commandline.c \
    177 	coregrind/m_clientstate.c \
    178 	coregrind/m_cpuid.S \
    179 	coregrind/m_debuglog.c \
    180 	coregrind/m_errormgr.c \
    181 	coregrind/m_execontext.c \
    182 	coregrind/m_hashtable.c \
    183 	coregrind/m_libcbase.c \
    184 	coregrind/m_libcassert.c \
    185 	coregrind/m_libcfile.c \
    186 	coregrind/m_libcprint.c \
    187 	coregrind/m_libcproc.c \
    188 	coregrind/m_libcsetjmp.c \
    189 	coregrind/m_libcsignal.c \
    190 	coregrind/m_machine.c \
    191 	coregrind/m_main.c \
    192 	coregrind/m_mallocfree.c \
    193 	coregrind/m_options.c \
    194 	coregrind/m_oset.c \
    195 	coregrind/m_poolalloc.c \
    196 	coregrind/m_rangemap.c \
    197 	coregrind/m_redir.c \
    198 	coregrind/m_seqmatch.c \
    199 	coregrind/m_signals.c \
    200 	coregrind/m_sparsewa.c \
    201 	coregrind/m_stacks.c \
    202 	coregrind/m_stacktrace.c \
    203 	coregrind/m_syscall.c \
    204 	coregrind/m_threadstate.c \
    205 	coregrind/m_tooliface.c \
    206 	coregrind/m_trampoline.S \
    207 	coregrind/m_translate.c \
    208 	coregrind/m_transtab.c \
    209 	coregrind/m_vki.c \
    210 	coregrind/m_vkiscnums.c \
    211 	coregrind/m_wordfm.c \
    212 	coregrind/m_xarray.c \
    213 	coregrind/m_xtmemory.c \
    214 	coregrind/m_xtree.c \
    215 	coregrind/m_aspacehl.c \
    216 	coregrind/m_aspacemgr/aspacemgr-common.c \
    217 	coregrind/m_aspacemgr/aspacemgr-linux.c \
    218 	coregrind/m_aspacemgr/aspacemgr-segnames.c \
    219 	coregrind/m_coredump/coredump-elf.c \
    220 	coregrind/m_coredump/coredump-macho.c \
    221 	coregrind/m_debuginfo/image.c \
    222 	coregrind/m_debuginfo/misc.c \
    223 	coregrind/m_debuginfo/d3basics.c \
    224 	coregrind/m_debuginfo/debuginfo.c \
    225 	coregrind/m_debuginfo/readdwarf.c \
    226 	coregrind/m_debuginfo/readdwarf3.c \
    227 	coregrind/m_debuginfo/readelf.c \
    228 	coregrind/m_debuginfo/readexidx.c \
    229 	coregrind/m_debuginfo/readmacho.c \
    230 	coregrind/m_debuginfo/readpdb.c \
    231 	coregrind/m_debuginfo/storage.c \
    232 	coregrind/m_debuginfo/tinfl.c \
    233 	coregrind/m_debuginfo/tytypes.c \
    234 	coregrind/m_deduppoolalloc.c \
    235 	coregrind/m_demangle/cp-demangle.c \
    236 	coregrind/m_demangle/cplus-dem.c \
    237 	coregrind/m_demangle/d-demangle.c \
    238 	coregrind/m_demangle/demangle.c \
    239 	coregrind/m_demangle/dyn-string.c \
    240 	coregrind/m_demangle/rust-demangle.c \
    241 	coregrind/m_demangle/safe-ctype.c \
    242 	coregrind/m_dispatch/dispatch-x86-linux.S \
    243 	coregrind/m_dispatch/dispatch-amd64-linux.S \
    244 	coregrind/m_dispatch/dispatch-ppc32-linux.S \
    245 	coregrind/m_dispatch/dispatch-ppc64be-linux.S \
    246 	coregrind/m_dispatch/dispatch-ppc64le-linux.S \
    247 	coregrind/m_dispatch/dispatch-arm-linux.S \
    248 	coregrind/m_dispatch/dispatch-arm64-linux.S \
    249 	coregrind/m_dispatch/dispatch-x86-darwin.S \
    250 	coregrind/m_dispatch/dispatch-amd64-darwin.S \
    251 	coregrind/m_initimg/initimg-linux.c \
    252 	coregrind/m_initimg/initimg-darwin.c \
    253 	coregrind/m_initimg/initimg-pathscan.c \
    254 	coregrind/m_mach/mach_basics.c \
    255 	coregrind/m_mach/mach_msg.c \
    256 	coregrind/m_mach/mach_traps-x86-darwin.S \
    257 	coregrind/m_mach/mach_traps-amd64-darwin.S \
    258 	coregrind/m_replacemalloc/replacemalloc_core.c \
    259 	coregrind/m_sbprofile.c \
    260 	coregrind/m_scheduler/sched-lock.c \
    261 	coregrind/m_scheduler/sched-lock-generic.c \
    262 	coregrind/m_scheduler/scheduler.c \
    263 	coregrind/m_scheduler/sema.c \
    264 	coregrind/m_scheduler/ticket-lock-linux.c \
    265 	coregrind/m_sigframe/sigframe-common.c \
    266 	coregrind/m_sigframe/sigframe-x86-linux.c \
    267 	coregrind/m_sigframe/sigframe-amd64-linux.c \
    268 	coregrind/m_sigframe/sigframe-ppc32-linux.c \
    269 	coregrind/m_sigframe/sigframe-ppc64-linux.c \
    270 	coregrind/m_sigframe/sigframe-arm-linux.c \
    271 	coregrind/m_sigframe/sigframe-arm64-linux.c \
    272 	coregrind/m_sigframe/sigframe-x86-darwin.c \
    273 	coregrind/m_sigframe/sigframe-amd64-darwin.c \
    274 	coregrind/m_sigframe/sigframe-s390x-linux.c \
    275 	coregrind/m_syswrap/syscall-x86-linux.S \
    276 	coregrind/m_syswrap/syscall-amd64-linux.S \
    277 	coregrind/m_syswrap/syscall-ppc32-linux.S \
    278 	coregrind/m_syswrap/syscall-ppc64be-linux.S \
    279 	coregrind/m_syswrap/syscall-ppc64le-linux.S \
    280 	coregrind/m_syswrap/syscall-arm-linux.S \
    281 	coregrind/m_syswrap/syscall-arm64-linux.S \
    282 	coregrind/m_syswrap/syscall-x86-darwin.S \
    283 	coregrind/m_syswrap/syscall-amd64-darwin.S \
    284 	coregrind/m_syswrap/syscall-s390x-linux.S \
    285 	coregrind/m_syswrap/syswrap-main.c \
    286 	coregrind/m_syswrap/syswrap-generic.c \
    287 	coregrind/m_syswrap/syswrap-linux.c \
    288 	coregrind/m_syswrap/syswrap-linux-variants.c \
    289 	coregrind/m_syswrap/syswrap-darwin.c \
    290 	coregrind/m_syswrap/syswrap-x86-linux.c \
    291 	coregrind/m_syswrap/syswrap-amd64-linux.c \
    292 	coregrind/m_syswrap/syswrap-ppc32-linux.c \
    293 	coregrind/m_syswrap/syswrap-ppc64-linux.c \
    294 	coregrind/m_syswrap/syswrap-arm-linux.c \
    295 	coregrind/m_syswrap/syswrap-arm64-linux.c \
    296 	coregrind/m_syswrap/syswrap-x86-darwin.c \
    297 	coregrind/m_syswrap/syswrap-amd64-darwin.c \
    298 	coregrind/m_syswrap/syswrap-s390x-linux.c \
    299 	coregrind/m_syswrap/syswrap-xen.c \
    300 	coregrind/m_ume/elf.c \
    301 	coregrind/m_ume/macho.c \
    302 	coregrind/m_ume/main.c \
    303 	coregrind/m_ume/script.c \
    304 	coregrind/vgdb.c \
    305 	coregrind/m_gdbserver/inferiors.c \
    306 	coregrind/m_gdbserver/m_gdbserver.c \
    307 	coregrind/m_gdbserver/regcache.c \
    308 	coregrind/m_gdbserver/remote-utils.c \
    309 	coregrind/m_gdbserver/server.c \
    310 	coregrind/m_gdbserver/signals.c \
    311 	coregrind/m_gdbserver/target.c \
    312 	coregrind/m_gdbserver/utils.c \
    313 	coregrind/m_gdbserver/valgrind-low-amd64.c \
    314 	coregrind/m_gdbserver/valgrind-low-arm.c \
    315 	coregrind/m_gdbserver/valgrind-low-arm64.c \
    316 	coregrind/m_gdbserver/valgrind-low-ppc32.c \
    317 	coregrind/m_gdbserver/valgrind-low-ppc64.c \
    318 	coregrind/m_gdbserver/valgrind-low-s390x.c \
    319 	coregrind/m_gdbserver/valgrind-low-x86.c \
    320 	coregrind/m_gdbserver/version.c
    321 
    322 ifeq (arm64, $(TARGET_ARCH))
    323   vg_local_src_files += android/aarch64/setjmp.S
    324 endif
    325 
    326 vg_local_ldflags := $(vex_ldflags)
    327 vg_local_cflags := $(common_cflags)
    328 
    329 include $(LOCAL_PATH)/Android.build_all.mk
    330 
    331 # Build libreplacemalloc_toolpreload-$(TARGET_ARCH)-linux.a
    332 vg_local_module := libreplacemalloc_toolpreload
    333 vg_local_target := STATIC_LIBRARY
    334 
    335 vg_local_src_files := \
    336 	coregrind/m_replacemalloc/vg_replace_malloc.c
    337 
    338 vg_local_ldflags := $(preload_ldflags)
    339 
    340 vg_local_cflags := $(common_cflags)
    341 
    342 include $(LOCAL_PATH)/Android.build_all.mk
    343 
    344 # Build vgpreload_core-$(TARGET_ARCH)-linux.so
    345 vg_local_module := vgpreload_core
    346 vg_local_target := SHARED_LIBRARY
    347 vg_local_module_class := SHARED_LIBRARIES
    348 
    349 vg_local_src_files := \
    350 	coregrind/vg_preloaded.c
    351 
    352 #LOCAL_STRIP_MODULE := false
    353 #vg_local_no_crt := true
    354 
    355 vg_local_ldflags := $(preload_ldflags)
    356 vg_local_cflags := $(common_cflags)
    357 
    358 vg_local_arch_cflags := $(target_arch_cflags)
    359 
    360 include $(LOCAL_PATH)/Android.build_all.mk
    361 
    362 # Build memcheck-$(TARGET_ARCH)-linux
    363 vg_local_module := memcheck
    364 vg_local_target := EXECUTABLE
    365 vg_local_module_class := SHARED_LIBRARIES
    366 vg_local_src_files := \
    367 	memcheck/mc_leakcheck.c \
    368 	memcheck/mc_malloc_wrappers.c \
    369 	memcheck/mc_main.c \
    370 	memcheck/mc_translate.c \
    371 	memcheck/mc_machine.c \
    372 	memcheck/mc_errors.c
    373 
    374 vg_local_cflags := $(common_cflags)
    375 vg_local_ldflags := $(tool_ldflags)
    376 vg_local_static_libraries := libcoregrind libvex
    377 
    378 vg_local_without_system_shared_libraries := true
    379 vg_local_no_crt := true
    380 
    381 include $(LOCAL_PATH)/Android.build_all.mk
    382 
    383 # Build vgpreload_memcheck-$(TARGET_ARCH)-linux.so
    384 vg_local_module := vgpreload_memcheck
    385 vg_local_module_class := SHARED_LIBRARIES
    386 vg_local_target := SHARED_LIBRARY
    387 
    388 vg_local_src_files := \
    389 	memcheck/mc_replace_strmem.c
    390 
    391 vg_local_ldflags := $(preload_ldflags)
    392 vg_local_cflags := $(common_cflags)
    393 
    394 vg_local_whole_static_libraries := libreplacemalloc_toolpreload
    395 
    396 include $(LOCAL_PATH)/Android.build_all.mk
    397 
    398 # Build cachegrind-$(TARGET_ARCH)-linux
    399 vg_local_module := cachegrind
    400 vg_local_module_class := SHARED_LIBRARIES
    401 vg_local_target := EXECUTABLE
    402 vg_local_no_crt := true
    403 vg_local_without_system_shared_libraries := true
    404 
    405 vg_local_src_files := \
    406 	cachegrind/cg_arch.c \
    407 	cachegrind/cg_main.c
    408 
    409 vg_local_ldflags := $(tool_ldflags)
    410 vg_local_cflags := $(common_cflags)
    411 
    412 vg_local_static_libraries := libcoregrind libvex
    413 
    414 include $(LOCAL_PATH)/Android.build_all.mk
    415 
    416 #LOCAL_FORCE_STATIC_EXECUTABLE := true
    417 
    418 # Build callgrind-$(TARGET_ARCH)-linux
    419 
    420 vg_local_module := callgrind
    421 vg_local_module_class := SHARED_LIBRARIES
    422 vg_local_target := EXECUTABLE
    423 vg_local_no_crt := true
    424 vg_local_without_system_shared_libraries := true
    425 
    426 vg_local_src_files := \
    427 	callgrind/bb.c \
    428 	callgrind/bbcc.c \
    429 	callgrind/callstack.c \
    430 	callgrind/clo.c \
    431 	callgrind/context.c \
    432 	callgrind/costs.c \
    433 	callgrind/debug.c \
    434 	callgrind/dump.c \
    435 	callgrind/events.c \
    436 	callgrind/fn.c \
    437 	callgrind/jumps.c \
    438 	callgrind/main.c \
    439 	callgrind/sim.c \
    440 	callgrind/threads.c
    441 
    442 vg_local_c_includes := external/valgrind/cachegrind
    443 vg_local_ldflags := $(tool_ldflags)
    444 vg_local_cflags := $(common_cflags)
    445 vg_local_static_libraries := libcoregrind libvex
    446 
    447 include $(LOCAL_PATH)/Android.build_all.mk
    448 
    449 #LOCAL_FORCE_STATIC_EXECUTABLE := true
    450 
    451 # Build helgrind-$(TARGET_ARCH)-linux
    452 vg_local_module := helgrind
    453 vg_local_module_class := SHARED_LIBRARIES
    454 vg_local_target := EXECUTABLE
    455 vg_local_no_crt := true
    456 vg_local_without_system_shared_libraries := true
    457 vg_local_src_files := \
    458     helgrind/hg_addrdescr.c \
    459     helgrind/hg_basics.c \
    460     helgrind/hg_errors.c \
    461     helgrind/hg_lock_n_thread.c \
    462     helgrind/hg_main.c \
    463     helgrind/hg_wordset.c \
    464     helgrind/libhb_core.c
    465 
    466 vg_local_ldflags := $(tool_ldflags)
    467 vg_local_cflags := $(common_cflags)
    468 vg_local_static_libraries := libcoregrind libvex
    469 
    470 include $(LOCAL_PATH)/Android.build_all.mk
    471 
    472 #LOCAL_FORCE_STATIC_EXECUTABLE := true
    473 
    474 # Build vgpreload_helgrind-$(TARGET_ARCH)-linux.so
    475 vg_local_module := vgpreload_helgrind
    476 vg_local_module_class := SHARED_LIBRARIES
    477 vg_local_target := SHARED_LIBRARY
    478 #LOCAL_STRIP_MODULE := false
    479 vg_local_no_crt := true
    480 
    481 vg_local_src_files := \
    482 	helgrind/hg_intercepts.c
    483 
    484 
    485 vg_local_ldflags := $(preload_ldflags)
    486 vg_local_cflags := $(common_cflags)
    487 vg_local_whole_static_libraries := libreplacemalloc_toolpreload
    488 
    489 include $(LOCAL_PATH)/Android.build_all.mk
    490 
    491 # Build drd-$(TARGET_ARCH)-linux
    492 vg_local_module := drd
    493 vg_local_module_class := SHARED_LIBRARIES
    494 vg_local_target := EXECUTABLE
    495 #LOCAL_FORCE_STATIC_EXECUTABLE := true
    496 vg_local_no_crt := true
    497 vg_local_without_system_shared_libraries := true
    498 
    499 vg_local_src_files := \
    500 	drd/drd_barrier.c \
    501 	drd/drd_clientobj.c \
    502 	drd/drd_clientreq.c \
    503 	drd/drd_cond.c \
    504 	drd/drd_cond_initializer.c \
    505 	drd/drd_error.c \
    506 	drd/drd_hb.c \
    507 	drd/drd_load_store.c \
    508 	drd/drd_main.c \
    509 	drd/drd_malloc_wrappers.c \
    510 	drd/drd_mutex.c \
    511 	drd/drd_rwlock.c \
    512 	drd/drd_semaphore.c \
    513 	drd/drd_suppression.c
    514 
    515 vg_local_ldflags := $(tool_ldflags)
    516 vg_local_cflags := $(common_cflags)
    517 
    518 vg_local_static_libraries := libcoregrind libvex
    519 
    520 include $(LOCAL_PATH)/Android.build_all.mk
    521 
    522 # Build vgpreload_drd-$(TARGET_ARCH)-linux.so
    523 vg_local_module := vgpreload_drd
    524 vg_local_module_class := SHARED_LIBRARIES
    525 vg_local_target := SHARED_LIBRARY
    526 vg_local_no_crt := true
    527 
    528 vg_local_src_files := \
    529 	drd/drd_pthread_intercepts.c \
    530 	drd/drd_qtcore_intercepts.c \
    531 	drd/drd_strmem_intercepts.c
    532 
    533 vg_local_ldflags := $(preload_ldflags)
    534 vg_local_cflags := $(common_cflags)
    535 
    536 vg_local_whole_static_libraries := libreplacemalloc_toolpreload
    537 
    538 include $(LOCAL_PATH)/Android.build_all.mk
    539 
    540 # Build massif-$(TARGET_ARCH)-linux
    541 vg_local_module := massif
    542 vg_local_module_class := SHARED_LIBRARIES
    543 vg_local_target := EXECUTABLE
    544 vg_local_no_crt := true
    545 vg_local_without_system_shared_libraries := true
    546 
    547 vg_local_src_files := \
    548 	massif/ms_main.c
    549 
    550 vg_local_ldflags := $(tool_ldflags)
    551 vg_local_cflags := $(common_cflags)
    552 
    553 vg_local_static_libraries := libcoregrind libvex
    554 
    555 include $(LOCAL_PATH)/Android.build_all.mk
    556 
    557 # Build vgpreload_massif-$(TARGET_ARCH)-linux.so
    558 vg_local_module := vgpreload_massif
    559 vg_local_module_class := SHARED_LIBRARIES
    560 vg_local_target := SHARED_LIBRARY
    561 vg_local_no_crt := true
    562 
    563 vg_local_src_files :=
    564 
    565 vg_local_ldflags := $(preload_ldflags)
    566 vg_local_cflags := $(common_cflags)
    567 vg_local_whole_static_libraries := libreplacemalloc_toolpreload
    568 
    569 include $(LOCAL_PATH)/Android.build_all.mk
    570 
    571 # Build lackey-$(TARGET_ARCH)-linux
    572 vg_local_module := lackey
    573 vg_local_module_class := SHARED_LIBRARIES
    574 vg_local_target := EXECUTABLE
    575 vg_local_no_crt := true
    576 vg_local_without_system_shared_libraries := true
    577 vg_local_src_files := lackey/lk_main.c
    578 vg_local_ldflags := $(tool_ldflags)
    579 vg_local_cflags := $(common_cflags)
    580 vg_local_static_libraries := libcoregrind libvex
    581 include $(LOCAL_PATH)/Android.build_all.mk
    582 
    583 # Build vgpreload_lackey-$(TARGET_ARCH)-linux.so
    584 vg_local_module := vgpreload_lackey
    585 vg_local_module_class := SHARED_LIBRARIES
    586 vg_local_target := SHARED_LIBRARY
    587 vg_local_src_files :=
    588 vg_local_ldflags := $(preload_ldflags)
    589 vg_local_cflags := $(common_cflags)
    590 include $(LOCAL_PATH)/Android.build_all.mk
    591 
    592 # Build none-$(TARGET_ARCH)-linux
    593 vg_local_module := none
    594 vg_local_module_class := SHARED_LIBRARIES
    595 vg_local_target := EXECUTABLE
    596 
    597 vg_local_no_crt := true
    598 vg_local_without_system_shared_libraries := true
    599 
    600 vg_local_src_files := \
    601 	none/nl_main.c
    602 
    603 vg_local_ldflags := $(tool_ldflags)
    604 vg_local_cflags := $(common_cflags)
    605 vg_local_static_libraries := libcoregrind libvex
    606 
    607 include $(LOCAL_PATH)/Android.build_all.mk
    608 
    609 # Build valgrind
    610 include $(CLEAR_VARS)
    611 LOCAL_MODULE := valgrind
    612 LOCAL_ARM_MODE := arm
    613 LOCAL_SRC_FILES := \
    614 	coregrind/launcher-linux.c \
    615 	coregrind/m_debuglog.c
    616 
    617 LOCAL_C_INCLUDES := $(common_includes)
    618 LOCAL_CFLAGS := $(common_cflags)
    619 
    620 LOCAL_CFLAGS_$(TARGET_ARCH) = $(target_arch_cflags)
    621 
    622 include $(BUILD_EXECUTABLE)
    623 
    624 # Build standalone vgdb
    625 include $(CLEAR_VARS)
    626 LOCAL_MODULE := vgdb
    627 LOCAL_ARM_MODE := arm
    628 LOCAL_SRC_FILES := \
    629 	coregrind/vgdb.c \
    630 	coregrind/vgdb-invoker-none.c
    631 
    632 LOCAL_C_INCLUDES := $(common_includes)
    633 LOCAL_CFLAGS := $(common_cflags)
    634 LOCAL_CFLAGS_$(TARGET_ARCH) = $(target_arch_cflags)
    635 include $(BUILD_EXECUTABLE)
    636 
    637 # Build valgrind for linux host
    638 ifeq ($(HOST_OS), linux)
    639 include $(CLEAR_VARS)
    640 LOCAL_MODULE := valgrind
    641 LOCAL_SRC_FILES := \
    642 	coregrind/launcher-linux.c \
    643 	coregrind/m_debuglog.c
    644 
    645 LOCAL_C_INCLUDES := $(common_includes)
    646 LOCAL_CFLAGS := $(common_cflags) $(host_arch_cflags)
    647 LOCAL_MULTILIB := 64
    648 
    649 include $(BUILD_HOST_EXECUTABLE)
    650 endif
    651 
    652 #vg_build_tests := true
    653 # Build tests (some of them)...
    654 # TODO: tests need separate build framework it terms of 2ND_ARCH
    655 ifeq ($(vg_build_tests),true)
    656 ifeq ($(TARGET_ARCH),arm)
    657 test := v6intThumb
    658 include $(LOCAL_PATH)/Android.test.mk
    659 test := vfp
    660 include $(LOCAL_PATH)/Android.test.mk
    661 endif
    662 
    663 ifeq ($(TARGET_ARCH),arm64)
    664 test := integer
    665 include $(LOCAL_PATH)/Android.test.mk
    666 test := fp_and_simd
    667 include $(LOCAL_PATH)/Android.test.mk
    668 test := memory
    669 include $(LOCAL_PATH)/Android.test.mk
    670 endif
    671 endif
    672 
    673 # Copy prebuilt suppressions
    674 include $(CLEAR_VARS)
    675 LOCAL_MODULE := default.supp
    676 LOCAL_MODULE_CLASS := ETC
    677 LOCAL_MODULE_PATH := $(PRODUCT_OUT)$(vg_target_module_path)
    678 LOCAL_SRC_FILES := bionic.supp
    679 
    680 include $(BUILD_PREBUILT)
    681 
    682 ifeq ($(HOST_OS), linux)
    683 include $(CLEAR_VARS)
    684 LOCAL_IS_HOST_MODULE := true
    685 LOCAL_MODULE := default.supp
    686 LOCAL_MODULE_CLASS := ETC
    687 LOCAL_MODULE_PATH := $(HOST_OUT_SHARED_LIBRARIES)/valgrind
    688 LOCAL_SRC_FILES := bionic.supp
    689 
    690 include $(BUILD_PREBUILT)
    691 endif
    692