llvm-project/compiler-rt/lib/tsan/Makefile.old

92 lines
2.8 KiB
Makefile

DEBUG=0
LDFLAGS=-ldl -lpthread -pie
CXXFLAGS = -fPIE -g -Wall -Werror -DTSAN_DEBUG=$(DEBUG)
# Silence warnings that Clang produces for gtest code.
# Use -Wno-attributes so that gcc doesn't complain about unknown warning types.
CXXFLAGS += -Wno-attributes
ifeq ($(DEBUG), 0)
CXXFLAGS += -O3
endif
ifeq ($(CXX), clang++)
CXXFLAGS+= -Wno-unused-private-field -Wno-static-in-inline
endif
LIBTSAN=rtl/libtsan.a
GTEST_ROOT=third_party/googletest
GTEST_INCLUDE=-I$(GTEST_ROOT)/include
GTEST_BUILD_DIR=$(GTEST_ROOT)/build
GTEST_LIB=$(GTEST_BUILD_DIR)/gtest-all.o
SANITIZER_COMMON_TESTS_SRC=$(wildcard ../sanitizer_common/tests/*_test.cc)
SANITIZER_COMMON_TESTS_OBJ=$(patsubst %.cc,%.o,$(SANITIZER_COMMON_TESTS_SRC))
RTL_TEST_SRC=$(wildcard tests/rtl/*.cc)
RTL_TEST_OBJ=$(patsubst %.cc,%.o,$(RTL_TEST_SRC))
UNIT_TEST_SRC=$(wildcard tests/unit/*_test.cc)
UNIT_TEST_OBJ=$(patsubst %.cc,%.o,$(UNIT_TEST_SRC))
UNIT_TEST_HDR=$(wildcard rtl/*.h) $(wildcard ../sanitizer_common/*.h)
INCLUDES=-Irtl -I.. -I../../include $(GTEST_INCLUDE)
all: libtsan test
help:
@ echo "A little help is always welcome!"
@ echo "The most useful targets are:"
@ echo " make install_deps # Install third-party dependencies required for building"
@ echo " make presubmit # Run it every time before committing"
@ echo
@ echo "For more info, see http://code.google.com/p/data-race-test/wiki/ThreadSanitizer2"
$(LIBTSAN): libtsan
libtsan:
$(MAKE) -C rtl -f Makefile.old DEBUG=$(DEBUG)
%.o: %.cc $(UNIT_TEST_HDR) $(LIBTSAN)
$(CXX) $(CXXFLAGS) $(CFLAGS) $(INCLUDES) -o $@ -c $<
tsan_test: $(UNIT_TEST_OBJ) $(RTL_TEST_OBJ) \
$(SANITIZER_COMMON_TESTS_OBJ) $(LIBTSAN) $(GTEST_LIB)
$(CXX) $^ -o $@ $(LDFLAGS)
test: libtsan tsan_test
run: all
(ulimit -s 8192; ./tsan_test)
./lit_tests/test_output.sh
presubmit:
# Debug build with clang.
$(MAKE) -f Makefile.old clean
$(MAKE) -f Makefile.old run DEBUG=1 -j 16 CC=clang CXX=clang++
# Release build with clang.
$(MAKE) -f Makefile.old clean
$(MAKE) -f Makefile.old run DEBUG=0 -j 16 CC=clang CXX=clang++
# Debug build with gcc
$(MAKE) -f Makefile.old clean
$(MAKE) -f Makefile.old run DEBUG=1 -j 16 CC=gcc CXX=g++
# Release build with gcc
$(MAKE) -f Makefile.old clean
$(MAKE) -f Makefile.old run DEBUG=0 -j 16 CC=gcc CXX=g++
./check_analyze.sh
# Sanity check for Go runtime
(cd go && ./buildgo.sh)
@ echo PRESUBMIT PASSED
install_deps:
rm -rf third_party
mkdir third_party
(cd third_party && \
svn co -r613 http://googletest.googlecode.com/svn/trunk googletest \
)
$(GTEST_LIB):
mkdir -p $(GTEST_BUILD_DIR) && \
cd $(GTEST_BUILD_DIR) && \
$(MAKE) -f ../make/Makefile CXXFLAGS="$(CXXFLAGS)" CFLAGS="$(CFLAGS)" CC=$(CC) CXX=$(CXX)
clean:
rm -f asm_*.s libtsan.nm libtsan.objdump */*.o tsan_test
rm -rf $(GTEST_BUILD_DIR)
$(MAKE) clean -C rtl -f Makefile.old