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