1e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov# Copyright (C) 2011 The Android Open Source Project 2e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov# 3e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov# Licensed under the Apache License, Version 2.0 (the "License"); 4e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov# you may not use this file except in compliance with the License. 5e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov# You may obtain a copy of the License at 6e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov# 7e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov# http://www.apache.org/licenses/LICENSE-2.0 8e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov# 9e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov# Unless required by applicable law or agreed to in writing, software 10e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov# distributed under the License is distributed on an "AS IS" BASIS, 11e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov# See the License for the specific language governing permissions and 13e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov# limitations under the License. 14e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov 15e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_PATH:= $(call my-dir) 16e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov 17e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanovifeq ($(TARGET_ARCH),arm) 18e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov arch := arm 19e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanovelse ifeq ($(TARGET_ARCH),x86) 20e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov arch := x86 21e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanovendif 22e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanovifdef arch 23e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov 24e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanovcommon_cflags := \ 25e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov -Wall -Wno-deprecated -fno-exceptions -fno-stack-protector \ 26e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov -DTS_VALGRIND=1 \ 27e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov -DTS_VERSION=\"exported\" \ 28e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov -DVGA_$(arch)=1 \ 29e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov -DVGO_linux=1 \ 30e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov -DVGP_$(arch)_linux=1 \ 31e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov -DVG_PLATFORM=\"$(arch)-linux\" \ 32e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov -D_STLP_NO_IOSTREAMS=1 33e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov 34e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanovcommon_includes := \ 35e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov external/valgrind/main \ 36e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov external/valgrind/main/include \ 37e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov external/valgrind/main/VEX/pub \ 38e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov external/valgrind/dynamic_annotations 39e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov 40e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanovifeq ($(TARGET_ARCH),arm) 41e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanovtool_ldflags := -static -Wl,--build-id=none,-Ttext=0x38000000 -nodefaultlibs -nostartfiles -u _start -e_start 42e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanovelse 43e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanovtool_ldflags := -static -Wl,-Ttext=0x38000000 -nodefaultlibs -nostartfiles -u _start -e_start 44e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanovendif 45e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov 46e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanovpreload_ldflags := -nodefaultlibs -Wl,-z,interpose,-z,initfirst 47e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov# Remove this when the all toolchains are GCC 4.4 48e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanovifeq ($(TARGET_ARCH),arm) 49e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov preload_ldflags += -Wl,--icf=none 50e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanovendif 51e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov 52e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov# TODO(eugenis): Add ts_event_names.h generation step 53e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov 54e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov# Build tsan-$(arch)-linux 55e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanovinclude $(CLEAR_VARS) 56e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov 57e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_MODULE := tsan-$(arch)-linux 58e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_MODULE_TAGS := optional 59e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_MODULE_CLASS := SHARED_LIBRARIES 60e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/valgrind 61e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_ARM_MODE := arm 62e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_FORCE_STATIC_EXECUTABLE := true 63e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_NO_CRT := true 64e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_SYSTEM_SHARED_LIBRARIES := 65e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_CPP_EXTENSION := .cc 66e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_SRC_FILES := \ 67e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov thread_sanitizer.cc \ 68e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov ts_valgrind.cc \ 69e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov ts_valgrind_libc.cc \ 70e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov ts_util.cc \ 71e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov suppressions.cc \ 72e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov ignore.cc \ 73e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov common_util.cc \ 74e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov ts_race_verifier.cc 75e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_C_INCLUDES := \ 76e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov bionic \ 77e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov external/stlport/stlport \ 78e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov $(common_includes) 79e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_LDFLAGS := $(tool_ldflags) 80e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_CFLAGS := $(common_cflags) 81e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_CXXFLAGS := $(common_cxxflags) 82b8da4d67974cf345c58e667abfe346c0a5dd0a56Doug KwanLOCAL_RTTI_FLAG := -fno-rtti 83e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_STATIC_LIBRARIES := libcoregrind-$(arch)-linux libvex-$(arch)-linux 84e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov 85e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanovinclude $(BUILD_EXECUTABLE) 86e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov 87e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov 88e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov# Build vgpreload_tsan-$(arch)-linux.so 89e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanovinclude $(CLEAR_VARS) 90e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov 91e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_MODULE := vgpreload_tsan-$(arch)-linux 92e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_MODULE_TAGS := optional 93e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_MODULE_CLASS := SHARED_LIBRARIES 94e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/valgrind 95e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_ARM_MODE := arm 96e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_STRIP_MODULE := false 97e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_NO_CRT := true 98dfa4f80f74b3652d0704cfb2a36cb19a0e7b5581Evgeniy StepanovLOCAL_PRELINK_MODULE := false 99e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_SRC_FILES := \ 100e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov ts_valgrind_intercepts.c 101e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_C_INCLUDES := $(common_includes) 102e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_LDFLAGS := $(preload_ldflags) 103e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy StepanovLOCAL_CFLAGS := $(common_cflags) 104b8da4d67974cf345c58e667abfe346c0a5dd0a56Doug KwanLOCAL_RTTI_FLAG := -fno-rtti 105e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov 106e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanovinclude $(BUILD_SHARED_LIBRARY) 107e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanov 108e907eacfd144e7e9983e20d2b7961aebfe453bc5Evgeniy Stepanovendif 109