# Copyright (C) 2011 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
LOCAL_PATH:= $(call my-dir)
ifeq ($(TARGET_ARCH),arm)
arch := arm
else ifeq ($(TARGET_ARCH),x86)
arch := x86
endif
ifdef arch
common_cflags := \
-Wall -Wno-deprecated -fno-exceptions -fno-stack-protector \
-DTS_VALGRIND=1 \
-DTS_VERSION=\"exported\" \
-DVGA_$(arch)=1 \
-DVGO_linux=1 \
-DVGP_$(arch)_linux=1 \
-DVG_PLATFORM=\"$(arch)-linux\" \
-D_STLP_NO_IOSTREAMS=1
common_includes := \
external/valgrind/main \
external/valgrind/main/include \
external/valgrind/main/VEX/pub \
external/valgrind/dynamic_annotations
ifeq ($(TARGET_ARCH),arm)
tool_ldflags := -static -Wl,--build-id=none,-Ttext=0x38000000 -nodefaultlibs -nostartfiles -u _start -e_start
else
tool_ldflags := -static -Wl,-Ttext=0x38000000 -nodefaultlibs -nostartfiles -u _start -e_start
endif
preload_ldflags := -nodefaultlibs -Wl,-z,interpose,-z,initfirst
# Remove this when the all toolchains are GCC 4.4
ifeq ($(TARGET_ARCH),arm)
preload_ldflags += -Wl,--icf=none
endif
# TODO(eugenis): Add ts_event_names.h generation step
# Build tsan-$(arch)-linux
include $(CLEAR_VARS)
LOCAL_MODULE := tsan-$(arch)-linux
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/valgrind
LOCAL_ARM_MODE := arm
LOCAL_FORCE_STATIC_EXECUTABLE := true
LOCAL_NO_CRT := true
LOCAL_SYSTEM_SHARED_LIBRARIES :=
LOCAL_CPP_EXTENSION := .cc
LOCAL_SRC_FILES := \
thread_sanitizer.cc \
ts_valgrind.cc \
ts_valgrind_libc.cc \
ts_util.cc \
suppressions.cc \
ignore.cc \
common_util.cc \
ts_race_verifier.cc
LOCAL_C_INCLUDES := \
bionic \
external/stlport/stlport \
$(common_includes)
LOCAL_LDFLAGS := $(tool_ldflags)
LOCAL_CFLAGS := $(common_cflags)
LOCAL_CXXFLAGS := $(common_cxxflags)
LOCAL_RTTI_FLAG := -fno-rtti
LOCAL_STATIC_LIBRARIES := libcoregrind-$(arch)-linux libvex-$(arch)-linux
include $(BUILD_EXECUTABLE)
# Build vgpreload_tsan-$(arch)-linux.so
include $(CLEAR_VARS)
LOCAL_MODULE := vgpreload_tsan-$(arch)-linux
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/valgrind
LOCAL_ARM_MODE := arm
LOCAL_STRIP_MODULE := false
LOCAL_NO_CRT := true
LOCAL_PRELINK_MODULE := false
LOCAL_SRC_FILES := \
ts_valgrind_intercepts.c
LOCAL_C_INCLUDES := $(common_includes)
LOCAL_LDFLAGS := $(preload_ldflags)
LOCAL_CFLAGS := $(common_cflags)
LOCAL_RTTI_FLAG := -fno-rtti
include $(BUILD_SHARED_LIBRARY)
endif