#===- lib/asan/Makefile.old --------------------------------*- Makefile -*--===#
#
#                     The LLVM Compiler Infrastructure
#
# This file is distributed under the University of Illinois Open Source
# License. See LICENSE.TXT for details.
#
#===------------------------------------------------------------------------===#

OS=$(shell uname | tr '[A-Z]' '[a-z]')
ROOT=$(shell pwd)
MAKEFILE=Makefile.old  # this file.

ifeq ($(ARCH), android)
  ANDROID_CFLAGS= \
		-DANDROID \
		-D__WORDSIZE=32 \
		-I$(ANDROID_BUILD_TOP)/external/stlport/stlport \
		-I$(ANDROID_BUILD_TOP)/bionic \
		-I$(ANDROID_BUILD_TOP)/bionic/libstdc++/include \
		-I$(ANDROID_BUILD_TOP)/bionic/libc/arch-arm/include \
		-I$(ANDROID_BUILD_TOP)/bionic/libc/include \
		-I$(ANDROID_BUILD_TOP)/bionic/libc/kernel/common \
		-I$(ANDROID_BUILD_TOP)/bionic/libc/kernel/arch-arm \
		-I$(ANDROID_BUILD_TOP)/bionic/libm/include \
		-I$(ANDROID_BUILD_TOP)/bionic/libm/include/arm \
		-I$(ANDROID_BUILD_TOP)/bionic/libthread_db/include \
		-L$(ANDROID_PRODUCT_OUT)/obj/lib
  CLANG_FLAGS= \
		-ccc-host-triple arm-linux-androideabi \
		-D__compiler_offsetof=__builtin_offsetof \
		-D__ELF__=1 \
		-ccc-gcc-name arm-linux-androideabi-g++ \
		$(ANDROID_CFLAGS)
  CC=$(ANDROID_EABI_TOOLCHAIN)/arm-linux-androideabi-gcc $(ANDROID_CFLAGS)
  CXX=$(ANDROID_EABI_TOOLCHAIN)/arm-linux-androideabi-g++ $(ANDROID_CFLAGS)
endif

ifeq ($(ARCH), arm)
  # Example make command line:
  # CROSSTOOL=$HOME/x-tools/arm-unknown-linux-gnueabi/ PATH=$CROSSTOOL/bin:$PATH make ARCH=arm asan_test
  CLANG_FLAGS= \
		-ccc-host-triple arm-unknown-linux-gnueabi \
		-march=armv7-a -mfloat-abi=softfp -mfp=neon \
		-ccc-gcc-name arm-unknown-linux-gnueabi-g++ \
		-B$(CROSSTOOL)/lib/gcc/arm-unknown-linux-gnueabi/4.4.4 \
		-B$(CROSSTOOL)/arm-unknown-linux-gnueabi/sys-root/usr/lib \
		-I$(CROSSTOOL)/lib/gcc/arm-unknown-linux-gnueabi/4.4.4/include \
		-I$(CROSSTOOL)/arm-unknown-linux-gnueabi/include/c++/4.4.4 \
		-I$(CROSSTOOL)/arm-unknown-linux-gnueabi/include/c++/4.4.4/arm-unknown-linux-gnueabi \
		-I$(CROSSTOOL)/arm-unknown-linux-gnueabi/sys-root/include \
		-I$(CROSSTOOL)/arm-unknown-linux-gnueabi/sys-root/usr/include \
		-L$(CROSSTOOL)/lib/gcc/arm-unknown-linux-gnueabi/4.4.4 \
		-L$(CROSSTOOL)/arm-unknown-linux-gnueabi/sys-root/lib \
		-L$(CROSSTOOL)/arm-unknown-linux-gnueabi/sys-root/usr/lib
  CC=$(CROSSTOOL)/bin/arm-unknown-linux-gnueabi-gcc 
  CXX=$(CROSSTOOL)/bin/arm-unknown-linux-gnueabi-g++
endif

CLANG_FLAGS=
CLANG_VERSION=3.2
CLANG_BUILD=$(ROOT)/../../../../build/Release+Asserts
CLANG_CC=$(CLANG_BUILD)/bin/clang $(CLANG_FLAGS)
CLANG_CXX=$(CLANG_BUILD)/bin/clang++ $(CLANG_FLAGS)
FILE_CHECK=$(CLANG_BUILD)/bin/FileCheck

CC=$(CLANG_CC)
CXX=$(CLANG_CXX)

CFLAGS:=-Wall -fvisibility=hidden

CLEANROOM_CXX=$(CXX) -Wall

INSTALL_DIR=../asan_clang_$(OS)
BIN=bin_$(OS)

LIBS=#-lpthread -ldl
ARCH=x86_64

ASAN_STACK=1
ASAN_GLOBALS=1
ASAN_SCALE=0  # default will be used
ASAN_OFFSET=-1  #default will be used
ASAN_UAR=0
ASAN_HAS_EXCEPTIONS=1
ASAN_FLEXIBLE_MAPPING_AND_OFFSET=0
ASAN_HAS_BLACKLIST=1
ASAN_NEEDS_SEGV=1
ASAN_PIE=0

ifeq ($(ARCH), i386)
BITS=32
SUFF=$(BITS)
CFLAGS:=$(CFLAGS) -m$(BITS)
endif

ifeq ($(ARCH), x86_64)
BITS=64
SUFF=$(BITS)
CFLAGS:=$(CFLAGS) -m$(BITS)
endif

ifeq ($(ARCH), arm)
BITS=32
SUFF=_arm
CFLAGS:=$(CFLAGS) -march=armv7-a
ASAN_HAS_EXCEPTIONS=0
endif

ifeq ($(ARCH), android)
BITS=32
SUFF=_android
CFLAGS:=$(CFLAGS)
ASAN_HAS_EXCEPTIONS=0
endif

PIE=
ifeq ($(ASAN_PIE), 1)
  PIE=-fPIE -pie
endif

# This will build libasan on linux for both x86_64 and i386 in the
# desired location. The Mac library is already build by the clang's make.
# $(CLANG_BUILD)/lib/clang/$(CLANG_VERSION)/lib/$(OS)/libclang_rt.asan-$(ARCH).a
LIBASAN_INST_DIR=$(CLANG_BUILD)/lib/clang/$(CLANG_VERSION)/lib/$(OS)
LIBASAN_A=$(LIBASAN_INST_DIR)/libclang_rt.asan-$(ARCH).a

BLACKLIST=
ifeq ($(ASAN_HAS_BLACKLIST), 1)
  BLACKLIST=-mllvm -asan-blacklist=$(ROOT)/tests/asan_test.ignore
endif

COMMON_ASAN_DEFINES=\
                -DASAN_UAR=$(ASAN_UAR) \
		-DASAN_HAS_EXCEPTIONS=$(ASAN_HAS_EXCEPTIONS) \
		-DASAN_NEEDS_SEGV=$(ASAN_NEEDS_SEGV) \
		-DASAN_HAS_BLACKLIST=$(ASAN_HAS_BLACKLIST)

CLANG_ASAN_CXX=$(CLANG_CXX) \
	       -faddress-sanitizer \
		$(BLACKLIST)  \
		-mllvm -asan-stack=$(ASAN_STACK)      \
		-mllvm -asan-globals=$(ASAN_GLOBALS)  \
		-mllvm -asan-mapping-scale=$(ASAN_SCALE) \
		-mllvm -asan-mapping-offset-log=$(ASAN_OFFSET) \
		-mllvm -asan-use-after-return=$(ASAN_UAR) \
		$(COMMON_ASAN_DEFINES)

CLANG_ASAN_LD=$(CLANG_CXX) -faddress-sanitizer

GCC_ASAN_PATH=SET_FROM_COMMAND_LINE
GCC_ASAN_CXX=$(GCC_ASAN_PATH)/g++ \
	     -faddress-sanitizer \
	     $(COMMON_ASAN_DEFINES)

GCC_ASAN_LD=$(GCC_ASAN_PATH)/g++ -ldl -lpthread

ASAN_COMPILER=clang

ifeq ($(ASAN_COMPILER), clang)
  ASAN_CXX=$(CLANG_ASAN_CXX)
  ASAN_LD=$(CLANG_ASAN_LD)
  ASAN_LD_TAIL=
endif

ifeq ($(ASAN_COMPILER), gcc)
  ASAN_CXX=$(GCC_ASAN_CXX)
  ASAN_LD=$(GCC_ASAN_LD)
  ASAN_LD_TAIL=$(LIBASAN_A)
endif

INTERCEPTION=../interception
MACH_OVERRIDE=$(INTERCEPTION)/mach_override
COMMON=../sanitizer_common

RTL_HDR=$(wildcard *.h) \
	$(wildcard $(INTERCEPTION)/*.h) \
	$(wildcard $(MACH_OVERRIDE)/*.h) \
	$(wildcard $(COMMON)/*.h)

LIBTSAN_SRC=$(wildcard *.cc)
INTERCEPTION_SRC=$(wildcard $(INTERCEPTION)/*.cc)
MACH_OVERRIDE_SRC=$(wildcard $(MACH_OVERRIDE)/*.c)
COMMON_SRC=$(wildcard $(COMMON)/*.cc)


LIBASAN_OBJ=$(patsubst %.cc,$(BIN)/%$(SUFF).o,$(LIBTSAN_SRC)) \
	    $(patsubst $(INTERCEPTION)/%.cc,$(BIN)/%$(SUFF).o,$(INTERCEPTION_SRC)) \
	    $(patsubst $(COMMON)/%.cc,$(BIN)/%$(SUFF).o,$(COMMON_SRC)) \
	    $(patsubst $(MACH_OVERRIDE)/%.c,$(BIN)/%$(SUFF).o,$(MACH_OVERRIDE_SRC))

GTEST_ROOT=third_party/googletest
GTEST_INCLUDE=-I$(GTEST_ROOT)/include
GTEST_MAKE_DIR=$(GTEST_ROOT)/make-$(OS)$(SUFF)
GTEST_LIB=$(GTEST_MAKE_DIR)/gtest-all.o

all: b64 b32

test: t64 t32 output_tests lint
	@echo "ALL TESTS PASSED"

output_tests: b32 b64
	cd output_tests && ./test_output.sh $(CLANG_CXX) $(CLANG_CC) $(FILE_CHECK)

t64: b64
	$(BIN)/asan_test64
t32: b32
	$(BIN)/asan_test32

b64: | mk_bin_dir
	$(MAKE) -f $(MAKEFILE) ARCH=x86_64 asan_test asan_benchmarks
b32: | mk_bin_dir
	$(MAKE) -f $(MAKEFILE) ARCH=i386 asan_test asan_benchmarks

lib64:
	$(MAKE) -f $(MAKEFILE) ARCH=x86_64 lib
lib32:
	$(MAKE) -f $(MAKEFILE) ARCH=i386 lib

mk_bin_dir:
	mkdir -p $(BIN)

clang:
	cd ../ && llvm/rebuild_clang_and_asan.sh > /dev/null

install: install_clang

$(INSTALL_DIR):
	mkdir -p $(INSTALL_DIR) $(INSTALL_DIR)/bin $(INSTALL_DIR)/lib

install_clang: | $(INSTALL_DIR)
	cp -v $(CLANG_BUILD)/bin/clang $(INSTALL_DIR)/bin
	cp -rv $(CLANG_BUILD)/lib/clang $(INSTALL_DIR)/lib
	(cd $(INSTALL_DIR)/bin; ln -sf clang clang++)

#install_lib: | $(INSTALL_DIR)
#	cp -v $(CLANG_BUILD)/lib/libasan*.a $(INSTALL_DIR)/lib

$(BIN)/asan_noinst_test$(SUFF).o: tests/asan_noinst_test.cc $(RTL_HDR) $(MAKEFILE)
	$(CLEANROOM_CXX) $(PIE) $(CFLAGS) $(GTEST_INCLUDE) -I. -I.. -g -c $< -O2 -o $@

$(BIN)/asan_break_optimization$(SUFF).o: tests/asan_break_optimization.cc $(MAKEFILE)
	$(CLEANROOM_CXX) $(PIE) $(CFLAGS) -c $< -O0 -o $@

$(BIN)/%_test$(SUFF).o: tests/%_test.cc $(RTL_HDR) $(MAKEFILE)
	$(ASAN_CXX) $(GTEST_INCLUDE) -I. -I.. -g -c $< -O2 -o $@ $(PIE) $(CFLAGS)

$(BIN)/%_test$(SUFF).o: tests/%_test.mm $(RTL_HDR) $(MAKEFILE)
	$(ASAN_CXX) $(GTEST_INCLUDE) -I. -I.. -g -c $< -O2 -o $@ -ObjC $(PIE) $(CFLAGS)

RTL_COMMON_FLAGS=$(PIE) $(CFLAGS) -fPIC -c -O2 -fno-exceptions -funwind-tables \
	   -Ithird_party -I.. $(ASAN_FLAGS)

$(BIN)/%$(SUFF).o: $(INTERCEPTION)/%.cc $(RTL_HDR) $(MAKEFILE)
	$(CXX) $(RTL_COMMON_FLAGS) -o $@ -g $<

$(BIN)/%$(SUFF).o: $(COMMON)/%.cc $(RTL_HDR) $(MAKEFILE)
	$(CXX) $(RTL_COMMON_FLAGS) -o $@ -g $<

$(BIN)/%$(SUFF).o: $(MACH_OVERRIDE)/%.c $(RTL_HDR) $(MAKEFILE)
	$(CC) $(RTL_COMMON_FLAGS) -o $@ -g $<

$(BIN)/%$(SUFF).o: %.cc $(RTL_HDR) $(MAKEFILE)
	$(CXX) $(RTL_COMMON_FLAGS) -o $@ -g $<  \
		-DASAN_NEEDS_SEGV=$(ASAN_NEEDS_SEGV) \
		-DASAN_HAS_EXCEPTIONS=$(ASAN_HAS_EXCEPTIONS) \
		-DASAN_FLEXIBLE_MAPPING_AND_OFFSET=$(ASAN_FLEXIBLE_MAPPING_AND_OFFSET)

$(BIN)/%$(SUFF).o: %.c $(RTL_HDR) $(MAKEFILE)
	$(CC) $(PIE) $(CFLAGS) -fPIC -c -O2 -o $@ -g $< -Ithird_party \
		$(ASAN_FLAGS)

ifeq ($(OS),darwin)
LD_FLAGS=-framework Foundation
else
LD_FLAGS=
endif

lib: $(LIBASAN_A)

$(LIBASAN_A): mk_bin_dir $(LIBASAN_OBJ) $(MAKEFILE)
	mkdir -p $(LIBASAN_INST_DIR)
	ar ru $@ $(LIBASAN_OBJ)
	$(CXX) -shared $(CFLAGS) $(LIBASAN_OBJ) $(LD_FLAGS) -o $(BIN)/libasan$(SUFF).so

TEST_OBJECTS_COMMON=\
	     $(BIN)/asan_globals_test$(SUFF).o \
	     $(BIN)/asan_break_optimization$(SUFF).o \
	     $(BIN)/asan_noinst_test$(SUFF).o \
	     $(BIN)/asan_test$(SUFF).o

BENCHMARK_OBJECTS=\
	     $(BIN)/asan_benchmarks_test$(SUFF).o \
	     $(BIN)/asan_break_optimization$(SUFF).o

ifeq ($(OS),darwin)
TEST_OBJECTS=$(TEST_OBJECTS_COMMON) \
	     $(BIN)/asan_mac_test$(SUFF).o
else
TEST_OBJECTS=$(TEST_OBJECTS_COMMON)
endif

$(BIN)/asan_test$(SUFF): $(TEST_OBJECTS) $(LIBASAN_A) $(MAKEFILE) tests/asan_test.ignore $(GTEST_LIB)
	$(ASAN_LD) $(PIE) $(CFLAGS) -g -O3 $(TEST_OBJECTS) \
		$(LD_FLAGS) -o $@ $(LIBS) $(GTEST_LIB) $(ASAN_LD_TAIL)

$(BIN)/asan_benchmarks$(SUFF): $(BENCHMARK_OBJECTS) $(LIBASAN_A) $(MAKEFILE) $(GTEST_LIB)
	$(ASAN_LD) $(PIE) $(CFLAGS) -g -O3 $(BENCHMARK_OBJECTS) \
		$(LD_FLAGS) -o $@ $(LIBS) $(GTEST_LIB) $(ASAN_LD_TAIL)

asan_test: $(BIN)/asan_test$(SUFF)

asan_benchmarks: $(BIN)/asan_benchmarks$(SUFF)

# for now, build gtest with clang/asan even if we use a different compiler.
$(GTEST_LIB):
	mkdir -p $(GTEST_MAKE_DIR) && \
	cd $(GTEST_MAKE_DIR) && \
	$(MAKE) -f ../make/Makefile CXXFLAGS="$(PIE) $(CFLAGS) -g -w" \
	  CXX="$(CLANG_CXX)"

RTL_LINT_FILTER=-readability/casting,-readability/check,-build/include,-build/header_guard,-build/class,-legal/copyright,-build/namespaces
# TODO(kcc): remove these filters one by one
TEST_LINT_FILTER=-readability/casting,-build/include,-legal/copyright,-whitespace/newline,-runtime/sizeof,-runtime/int,-runtime/printf

LLVM_LINT_FILTER=-,+whitespace

ADDRESS_SANITIZER_CPP=../../../../lib/Transforms/Instrumentation/AddressSanitizer.cpp

lint:
	third_party/cpplint/cpplint.py --filter=$(LLVM_LINT_FILTER) $(ADDRESS_SANITIZER_CPP)
	third_party/cpplint/cpplint.py --filter=$(RTL_LINT_FILTER) asan_*.cc asan_*.h
	third_party/cpplint/cpplint.py --filter=$(RTL_LINT_FILTER) $(INTERCEPTION)/interception*.h $(INTERCEPTION)/interception*.cc
	third_party/cpplint/cpplint.py --filter=$(RTL_LINT_FILTER) $(COMMON)/sanitizer_*.h $(COMMON)/sanitizer_*.cc
	third_party/cpplint/cpplint.py --filter=$(TEST_LINT_FILTER) tests/*.cc output_tests/*.cc

get_third_party:
	rm -rf third_party
	mkdir third_party
	(cd third_party && \
	svn co -r375        http://googletest.googlecode.com/svn/trunk googletest && \
	svn co -r69 http://google-styleguide.googlecode.com/svn/trunk/cpplint cpplint \
	)

clean:
	rm -f *.o *.ll *.S *.a *.log asan_test64* asan_test32*  a.out perf.data log
	rm -f $(LIBASAN_INST_DIR)/libclang_rt.asan-*.a
	rm -rf $(BIN)
	rm -rf $(GTEST_ROOT)/make-*
