| # 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 |