Home | History | Annotate | Download | only in tsan
      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 ifeq ($(TARGET_ARCH),arm)
     18 	arch := arm
     19 else ifeq ($(TARGET_ARCH),x86)
     20 	arch := x86
     21 endif
     22 ifdef arch
     23 
     24 common_cflags := \
     25 	-Wall -Wno-deprecated -fno-exceptions -fno-stack-protector \
     26 	-DTS_VALGRIND=1 \
     27 	-DTS_VERSION=\"exported\" \
     28 	-DVGA_$(arch)=1 \
     29 	-DVGO_linux=1 \
     30 	-DVGP_$(arch)_linux=1 \
     31 	-DVG_PLATFORM=\"$(arch)-linux\" \
     32 	-D_STLP_NO_IOSTREAMS=1
     33 
     34 common_includes := \
     35 	external/valgrind/main \
     36 	external/valgrind/main/include \
     37 	external/valgrind/main/VEX/pub \
     38 	external/valgrind/dynamic_annotations
     39 
     40 ifeq ($(TARGET_ARCH),arm)
     41 tool_ldflags := -static -Wl,--build-id=none,-Ttext=0x38000000 -nodefaultlibs -nostartfiles -u _start -e_start
     42 else
     43 tool_ldflags := -static -Wl,-Ttext=0x38000000 -nodefaultlibs -nostartfiles -u _start -e_start
     44 endif
     45 
     46 preload_ldflags := -nodefaultlibs -Wl,-z,interpose,-z,initfirst
     47 # Remove this when the all toolchains are GCC 4.4
     48 ifeq ($(TARGET_ARCH),arm)
     49   preload_ldflags += -Wl,--icf=none
     50 endif
     51 
     52 # TODO(eugenis): Add ts_event_names.h generation step
     53 
     54 # Build tsan-$(arch)-linux
     55 include $(CLEAR_VARS)
     56 
     57 LOCAL_MODULE := tsan-$(arch)-linux
     58 LOCAL_MODULE_TAGS := optional
     59 LOCAL_MODULE_CLASS := SHARED_LIBRARIES
     60 LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/valgrind
     61 LOCAL_ARM_MODE := arm
     62 LOCAL_FORCE_STATIC_EXECUTABLE := true
     63 LOCAL_NO_CRT := true
     64 LOCAL_SYSTEM_SHARED_LIBRARIES :=
     65 LOCAL_CPP_EXTENSION := .cc
     66 LOCAL_SRC_FILES := \
     67 	thread_sanitizer.cc \
     68 	ts_valgrind.cc \
     69 	ts_valgrind_libc.cc \
     70 	ts_util.cc \
     71 	suppressions.cc \
     72 	ignore.cc \
     73 	common_util.cc \
     74 	ts_race_verifier.cc
     75 LOCAL_C_INCLUDES := \
     76         bionic \
     77         external/stlport/stlport \
     78 	$(common_includes)
     79 LOCAL_LDFLAGS := $(tool_ldflags)
     80 LOCAL_CFLAGS := $(common_cflags)
     81 LOCAL_CXXFLAGS := $(common_cxxflags)
     82 LOCAL_RTTI_FLAG := -fno-rtti
     83 LOCAL_STATIC_LIBRARIES := libcoregrind-$(arch)-linux libvex-$(arch)-linux
     84 
     85 include $(BUILD_EXECUTABLE)
     86 
     87 
     88 # Build vgpreload_tsan-$(arch)-linux.so
     89 include $(CLEAR_VARS)
     90 
     91 LOCAL_MODULE := vgpreload_tsan-$(arch)-linux
     92 LOCAL_MODULE_TAGS := optional
     93 LOCAL_MODULE_CLASS := SHARED_LIBRARIES
     94 LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/valgrind
     95 LOCAL_ARM_MODE := arm
     96 LOCAL_STRIP_MODULE := false
     97 LOCAL_NO_CRT := true
     98 LOCAL_PRELINK_MODULE := false
     99 LOCAL_SRC_FILES := \
    100 	ts_valgrind_intercepts.c
    101 LOCAL_C_INCLUDES := $(common_includes)
    102 LOCAL_LDFLAGS := $(preload_ldflags)
    103 LOCAL_CFLAGS := $(common_cflags)
    104 LOCAL_RTTI_FLAG := -fno-rtti
    105 
    106 include $(BUILD_SHARED_LIBRARY)
    107 
    108 endif
    109