# The following variables will likely need to be modified, depending on where
# and how you built LLVM & Clang. They can be overridden in a command-line
# invocation of make, like:
#
#   make LLVM_SRC_PATH=<path> LIBCXX_INSTALL_PATH=<path> CLANG_PATH=<path> \
#        PNACL_BIN_PATH=<path> ...
#

# LLVM_SRC_PATH is the path to the root of the checked out source code. This
# directory should contain the configure script, the include/ and lib/
# directories of LLVM, Clang in tools/clang/, etc.
# Alternatively, if you're building vs. a binary download of LLVM, then
# LLVM_SRC_PATH can point to the main untarred directory.
LLVM_SRC_PATH ?= ../llvm

# The x86-32-specific sandboxed translator directory.
# It holds sandboxed versions of libraries and binaries.
SB_LLVM_PATH ?= $(shell readlink -e \
  ../../out/sandboxed_translators_work/translator-i686/llvm-sb/Release)

# NACL_ROOT is the root of the native client repository.
NACL_ROOT ?= $(shell python -c "import sys; sys.path.insert(0, 'pydir'); \
  import utils; print utils.FindBaseNaCl()")

# TOOLCHAIN_ROOT is the location of NaCl/PNaCl toolchains and other
# tools like qemu.
TOOLCHAIN_ROOT ?= $(shell readlink -e $(NACL_ROOT)/toolchain/linux_x86)

# PNACL_TOOLCHAIN_ROOT is the location of the PNaCl toolchain.
# This is used as the default root for finding binutils, libcxx, etc.
PNACL_TOOLCHAIN_ROOT ?= $(shell readlink -e $(TOOLCHAIN_ROOT)/pnacl_newlib_raw)

# The location of PNaCl tools (e.g., binutils objdump, pnacl-clang++, etc.).
PNACL_BIN_PATH ?= $(shell readlink -e $(PNACL_TOOLCHAIN_ROOT)/bin)

# Allow tests to be overridden, e.g.:
#   make -f Makefile.standalone check-lit \
#     CHECK_LIT_TESTS="tests_lit/llvm2ice_tests/{alloc,arith}.ll"
#   make -f Makefile.standalone check-xtest \
#     CHECK_XTEST_TESTS=crosstest/Output/simple_loop_x8632_native_O2_sse2.xtest
CHECK_LIT_TESTS ?= tests_lit
CHECK_XTEST_TESTS ?= crosstest/Output

# Hack to auto-detect autoconf versus cmake build of LLVM.  If the LLVM tools
# were dynamically linked with something like libLLVM-3.7svn.so, it is an
# autoconf build, otherwise it is a cmake build.  AUTOCONF is set to 0 for
# cmake, nonzero for autoconf.
AUTOCONF ?= $(shell ldd $(PNACL_BIN_PATH)/opt | grep -c libLLVM-)

# CLANG_PATH is the location of the clang compiler to use for building
# the host binaries.
CLANG_PATH ?= $(shell readlink -e \
  $(NACL_ROOT)/../third_party/llvm-build/Release+Asserts/bin)

# LIBCXX_INSTALL_PATH is the directory where libc++ is located. It should
# contain header files and corresponding libraries. This is used for
# building the host binaries in conjuction with clang.
LIBCXX_INSTALL_PATH ?= $(PNACL_TOOLCHAIN_ROOT)
STDLIB_FLAGS := -stdlib=libc++ -I$(LIBCXX_INSTALL_PATH)/include/c++/v1

HOST_ARCH ?= x86_64
ifeq ($(HOST_ARCH),x86_64)
  HOST_FLAGS = -m64
else
  ifeq ($(HOST_ARCH),x86)
    HOST_FLAGS = -m32
  endif
endif

ifdef DEBUG
  OBJDIR = build/Debug
  OPTLEVEL = -O0
  LINKOPTLEVEL = -O0
else
  OBJDIR = build/Release
  OPTLEVEL = -O2 -ffunction-sections -fdata-sections
  LINKOPTLEVEL = -O2
endif

# The list of CXX defines that are dependent on build parameters.
BASE_CXX_DEFINES =
CXX_EXTRA =
LD_EXTRA =

ifdef MINIMAL
  NOASSERT = 1
  NODUMP = 1
  OBJDIR := $(OBJDIR)+Min
  BASE_CXX_DEFINES += -DALLOW_LLVM_CL=0 -DALLOW_LLVM_IR=0 \
    -DALLOW_LLVM_IR_AS_INPUT=0 -DALLOW_TIMERS=0 -DALLOW_MINIMAL_BUILD=1
else
  BASE_CXX_DEFINES += -DALLOW_LLVM_CL=1 -DALLOW_LLVM_IR=1 \
    -DALLOW_LLVM_IR_AS_INPUT=1 -DALLOW_TIMERS=1 -DALLOW_MINIMAL_BUILD=0
endif

ifdef NODUMP
  OBJDIR := $(OBJDIR)+NoDump
  BASE_CXX_DEFINES += -DALLOW_DUMP=0
else
  BASE_CXX_DEFINES += -DALLOW_DUMP=1
endif

# Restrict to a single supported target.  Current options:
#   SZTARGET=ARM32
#   SZTARGET=MIPS32
#   SZTARGET=X8632
#   SZTARGET=X8664
ifdef SZTARGET
  OBJDIR := $(OBJDIR)+T_$(SZTARGET)
  BASE_CXX_DEFINES += -DSZTARGET=$(SZTARGET)
endif

CXX_DEFINES := $(BASE_CXX_DEFINES) -DPNACL_BROWSER_TRANSLATOR=0

ifdef NOASSERT
  ASSERTIONS = -DNDEBUG
else
  ASSERTIONS =
  OBJDIR := $(OBJDIR)+Asserts
endif

ifdef UBSAN
  OBJDIR := $(OBJDIR)+UBSan
  CXX_EXTRA += -fsanitize=undefined -fno-sanitize=vptr \
               -fno-sanitize=nonnull-attribute
  LD_EXTRA += -fsanitize=undefined
endif

ifdef UBSAN_TRAP
  OBJDIR := $(OBJDIR)+UBSan_Trap
  CXX_EXTRA += -fsanitize=undefined-trap -fsanitize-undefined-trap-on-error \
               -fno-sanitize=vptr -fno-sanitize=nonnull-attribute
  LD_EXTRA += -fsanitize=undefined-trap
endif

ifdef TSAN
  OBJDIR := $(OBJDIR)+TSan
  CXX_EXTRA += -fsanitize=thread
  LD_EXTRA += -fsanitize=thread
endif

ifdef ASAN
  OBJDIR := $(OBJDIR)+ASan
  CXX_EXTRA += -fsanitize=address
  LD_EXTRA += -fsanitize=address
endif

ifdef MSAN
  # TODO(ascull): this has an as yet undiagnosed uninitialized memory access
  OBJDIR := $(OBJDIR)+MSan
  CXX_EXTRA += -fsanitize=memory
  LD_EXTRA += -fsanitize=memory
endif

ifdef FORCEASM
  FORCEASM_FLAG = --filetype=asm
  # With --filetype=asm and --sandbox, the llvm-mc assembler emits the lock and
  # 16-bit prefixes in the "wrong" order, causing the validator to reject the
  # resulting nexe.  So we just disable those tests for now.
  FORCEASM_XTEST_EXCLUDES = -e x8632,sandbox,test_sync_atomic
  FORCEASM_LIT_PARAM = --param=FORCEASM
  # x86 sandboxing lit tests are disabled because filetype=asm does not
  # handle bundle_lock pad-to-end correctly.
  # TODO(jpp): fix this.
  FORCEASM_LIT_TEST_EXCLUDES = --filter='^(?!.*/x86/sandboxing.ll).*'
else
  FORCEASM_FLAG =
  FORCEASM_XTEST_EXCLUDES =
  FORCEASM_LIT_PARAM =
  FORCEASM_LIT_TEST_EXCLUDES =
endif

ifdef LINUX_MALLOC_PROFILE
  OBJDIR := $(OBJDIR)+MalProf
  CXX_EXTRA += -DALLOW_LINUX_MALLOC_PROFILE=1
  LD_EXTRA += -Wl,--export-dynamic
endif

SB_OBJDIR := $(OBJDIR)+Sandboxed
SBB_OBJDIR := $(OBJDIR)+SandboxedBrowser

$(info -----------------------------------------------)
$(info Using LLVM_SRC_PATH = $(LLVM_SRC_PATH))
$(info Using SB_LLVM_PATH = $(SB_LLVM_PATH))
$(info Using NACL_ROOT = $(NACL_ROOT))
$(info Using TOOLCHAIN_ROOT = $(TOOLCHAIN_ROOT))
$(info Using PNACL_TOOLCHAIN_ROOT = $(PNACL_TOOLCHAIN_ROOT))
$(info Using PNACL_BIN_PATH = $(PNACL_BIN_PATH))
$(info Using CLANG_PATH = $(CLANG_PATH))
$(info Using LIBCXX_INSTALL_PATH = $(LIBCXX_INSTALL_PATH))
$(info Using HOST_ARCH     = $(HOST_ARCH))
$(info -----------------------------------------------)

LLVM_CXXFLAGS := `$(PNACL_BIN_PATH)/llvm-config --cxxflags`
SB_LLVM_CXXFLAGS := $(LLVM_CXXFLAGS)

# Listing specific libraries that are needed for pnacl-sz
# and the unittests, since we build "tools-only" for the
# sandboxed_translators (which doesn't include every library
# listed by llvm-config).

LLVM_LIBS_LIST := -lLLVMIRReader -lLLVMBitReader -lLLVMNaClBitTestUtils \
    -lLLVMNaClBitReader -lLLVMNaClBitAnalysis -lLLVMNaClBitWriter \
    -lLLVMAsmParser -lLLVMNaClAnalysis -lLLVMCore -lLLVMSupport

ifeq ($(AUTOCONF), 0)
  # LLVM cmake build
  LLVM_LIBS := $(LLVM_LIBS_LIST)
  # For the cmake build, the gtest libs end up in the same place as the LLVM
  # libs, so no "-L..." arg is needed.
  GTEST_LIB_PATH ?=
  CLANG_FORMAT_PATH ?= $(PNACL_BIN_PATH)
else
  # LLVM autoconf build
  LLVM_LIBS := -lLLVM-3.7svn
  GTEST_LIB_PATH ?= -L../../out/llvm_x86_64_linux_work/Release+Asserts/lib
  CLANG_FORMAT_PATH ?= ../../out/llvm_x86_64_linux_work/Release+Asserts/bin
endif

LLVM_LDFLAGS := $(LLVM_LIBS) \
                `$(PNACL_BIN_PATH)/llvm-config --ldflags` \
                `$(PNACL_BIN_PATH)/llvm-config --system-libs`
SB_LLVM_LDFLAGS := -Wl,--start-group $(LLVM_LIBS_LIST) -Wl,--end-group \
                   -L$(SB_LLVM_PATH)/lib

CCACHE := `command -v ccache`
CXX := CCACHE_CPP2=yes $(CCACHE) $(CLANG_PATH)/clang++
SB_CXX := CCACHE_CPP2=yes $(CCACHE) $(PNACL_BIN_PATH)/pnacl-clang++
SB_TRANSLATE := $(PNACL_BIN_PATH)/pnacl-translate
SB_FINALIZE := $(PNACL_BIN_PATH)/pnacl-finalize --no-strip-syms

# Extra warnings that LLVM's build system adds in addition to -Wall.
LLVM_EXTRA_WARNINGS := -Wcovered-switch-default

# Use g++ to compile, to check for errors/warnings that clang++ might have
# missed.  It's unlikely to link, unless LLVM was also built with g++, so the
# compile_only target should be used.  Note: This ifdef section is deliberately
# placed here instead of with the other ifdef sections, so that its redefinition
# of CXX/STDLIB_FLAGS/LLVM_EXTRA_WARNINGS follows their normal definitions.
ifdef GPLUSPLUS
  CXX := CCACHE_CPP2=yes $(CCACHE) g++
  STDLIB_FLAGS :=
  LLVM_EXTRA_WARNINGS := \
    -Wcast-qual \
    -Wno-comment \
    -Wno-long-long \
    -Wno-maybe-uninitialized \
    -Wno-missing-field-initializers \
    -Wno-unused-parameter \
    -Wwrite-strings
  OBJDIR := $(OBJDIR)+Gplusplus
endif

BASE_CXXFLAGS := -std=gnu++11 -Wall -Wextra -Werror -fno-rtti \
  -fno-exceptions $(OPTLEVEL) $(ASSERTIONS) -g -pedantic \
  $(LLVM_EXTRA_WARNINGS) $(CXX_EXTRA) -MP -MD

CXXFLAGS := $(LLVM_CXXFLAGS) $(BASE_CXXFLAGS) $(CXX_DEFINES) $(HOST_FLAGS) \
  $(STDLIB_FLAGS)
SB_CXXFLAGS := $(SB_LLVM_CXXFLAGS) $(BASE_CXXFLAGS) $(BASE_CXX_DEFINES) \
               -Wno-unknown-pragmas -I$(NACL_ROOT) -I$(NACL_ROOT)/..

LDFLAGS := $(HOST_FLAGS) -L$(LIBCXX_INSTALL_PATH)/lib -Wl,--gc-sections \
  $(LD_EXTRA) $(STDLIB_FLAGS)
# Not specifying -Wl,--gc-sections but instead doing bitcode linking GC w/ LTO.
SB_LDFLAGS := $(LINKOPTLEVEL) $(LD_EXTRA)

# List the target-specific source files first, which generally take longer to
# compile, in the hope of improving parallel build time.
SRCS = \
  IceAssemblerARM32.cpp \
  IceInstARM32.cpp \
  IceInstMIPS32.cpp \
  IceInstX8632.cpp \
  IceInstX8664.cpp \
  IceTargetLowering.cpp \
  IceTargetLoweringARM32.cpp \
  IceTargetLoweringMIPS32.cpp \
  IceTargetLoweringX86.cpp \
  IceTargetLoweringX8632.cpp \
  IceTargetLoweringX8664.cpp \
  IceAssembler.cpp \
  IceBrowserCompileServer.cpp \
  IceCfg.cpp \
  IceCfgNode.cpp \
  IceClFlags.cpp \
  IceCompiler.cpp \
  IceCompileServer.cpp \
  IceELFObjectWriter.cpp \
  IceELFSection.cpp \
  IceFixups.cpp \
  IceGlobalContext.cpp \
  IceGlobalInits.cpp \
  IceInst.cpp \
  IceIntrinsics.cpp \
  IceLiveness.cpp \
  IceLoopAnalyzer.cpp \
  IceMangling.cpp \
  IceMemory.cpp \
  IceOperand.cpp \
  IceRegAlloc.cpp \
  IceRNG.cpp \
  IceSwitchLowering.cpp \
  IceThreading.cpp \
  IceTimerTree.cpp \
  IceTranslator.cpp \
  IceTypes.cpp \
  LinuxMallocProfiling.cpp \
  main.cpp \
  PNaClTranslator.cpp

ifndef MINIMAL
  SRCS += \
    IceConverter.cpp \
    IceTypeConverter.cpp
endif

OBJS=$(patsubst %.cpp, $(OBJDIR)/%.o, $(SRCS))
SB_OBJS=$(patsubst %.cpp, $(SB_OBJDIR)/%.o, $(SRCS))
SBB_OBJS=$(patsubst %.cpp, $(SBB_OBJDIR)/%.o, $(SRCS))

UNITTEST_SRCS = \
  BitcodeMunge.cpp \
  IceELFSectionTest.cpp \
  IceParseInstsTest.cpp

# The X86 assembler tests take too long to compile. Given how infrequently the
# assembler will change, we disable them.
ifdef CHECK_X86_ASM
  ifndef DEBUG
  $(error Run check-unit with DEBUG=1 lest your machine perish)
  endif
  UNITTEST_SRCS += AssemblerX8632/LowLevel.cpp \
    AssemblerX8632/DataMov.cpp \
    AssemblerX8632/Locked.cpp \
    AssemblerX8632/GPRArith.cpp \
    AssemblerX8632/XmmArith.cpp \
    AssemblerX8632/ControlFlow.cpp \
    AssemblerX8632/Other.cpp \
    AssemblerX8632/X87.cpp \
    AssemblerX8664/LowLevel.cpp \
    AssemblerX8664/DataMov.cpp \
    AssemblerX8664/Locked.cpp \
    AssemblerX8664/GPRArith.cpp \
    AssemblerX8664/XmmArith.cpp \
    AssemblerX8664/ControlFlow.cpp \
    AssemblerX8664/Other.cpp
endif

UNITTEST_OBJS = $(patsubst %.cpp, $(OBJDIR)/unittest/%.o, $(UNITTEST_SRCS))
UNITTEST_LIB_OBJS = $(filter-out $(OBJDIR)/main.o,$(OBJS))

NEXES = $(SB_OBJDIR)/pnacl-sz.x8632.nexe \
        $(SB_OBJDIR)/pnacl-sz.x8664.nexe \
        $(SBB_OBJDIR)/pnacl_public_x86_32_pnacl_sz_nexe \
        $(SBB_OBJDIR)/pnacl_public_x86_64_pnacl_sz_nexe
NEXES_LITE = $(SB_OBJDIR)/pnacl-sz.x8664.nexe

# Keep all the first target so it's the default.
all: $(OBJDIR)/pnacl-sz make_symlink runtime

ifdef TSAN
sb sb-lite:
	@echo "Skipping pnacl-sz.*.nexe: TSAN isn't supported under NaCl."
else
sb: $(NEXES) sb_make_symlink exists-sbtc
sb-lite: $(NEXES_LITE) exists-sbtc
endif

# SHOW_BUILD_ATTS is an executable that is run to show what build
# attributes were used to build pnacl-sz.
SHOW_BUILD_ATTS = $(OBJDIR)/pnacl-sz --build-atts

# Creates symbolic link so that testing is easier. Also runs
# pnacl-sz to verify that the defines flags have valid values,
# as well as describe the corresponding build attributes.
make_symlink: $(OBJDIR)/pnacl-sz
	rm -rf pnacl-sz
	ln -s $(OBJDIR)/pnacl-sz
	@echo "Build Attributes:"
	@$(SHOW_BUILD_ATTS)

sb_make_symlink: $(NEXES)
	$(foreach nexe,$(NEXES),rm -rf $(notdir $(nexe)); ln -s $(nexe);)

%.pexe : %.nonfinal.pexe
	$(SB_FINALIZE) -o $@ $<

.PHONY: all compile_only make_symlink runtime bloat sb docs help \
  help-check-lit help-check-xtest exists-nonsfi-x8632 \
  exists-nonsfi-arm32 exists-sbtc exists-spec

compile_only: $(OBJS)

$(OBJDIR)/pnacl-sz: $(OBJS)
	$(CXX) $(LDFLAGS) -o $@ $^ $(LLVM_LDFLAGS) \
          -Wl,-rpath=$(abspath $(LIBCXX_INSTALL_PATH)/lib)

$(SB_OBJDIR)/pnacl-sz.nonfinal.pexe: $(SB_OBJS)
	$(SB_CXX) $(SB_LDFLAGS) -o $@ $^ $(SB_LLVM_LDFLAGS)

$(SBB_OBJDIR)/pnacl-sz.nonfinal.pexe: $(SBB_OBJS)
	$(SB_CXX) $(SB_LDFLAGS) -o $@ $^ $(SB_LLVM_LDFLAGS) \
          --pnacl-disable-abi-check

$(SB_OBJDIR)/pnacl-sz.x8632.nexe: $(SB_OBJDIR)/pnacl-sz.pexe
	$(SB_TRANSLATE) -arch x86-32 $^ -o $@

$(SB_OBJDIR)/pnacl-sz.x8664.nexe: $(SB_OBJDIR)/pnacl-sz.pexe
	$(SB_TRANSLATE) -arch x86-64 $^ -o $@

$(SBB_OBJDIR)/pnacl_public_x86_32_pnacl_sz_nexe: $(SBB_OBJDIR)/pnacl-sz.pexe
	$(SB_TRANSLATE) -arch x86-32 $^ -o $@

$(SBB_OBJDIR)/pnacl_public_x86_64_pnacl_sz_nexe: $(SBB_OBJDIR)/pnacl-sz.pexe
	$(SB_TRANSLATE) -arch x86-64 $^ -o $@

src/IceRegistersARM32.def: pydir/gen_arm32_reg_tables.py
	python $< > $@

-include $(foreach dep,$(SRCS:.cpp=.d),$(OBJDIR)/$(dep))
$(OBJS): $(OBJDIR)/%.o: src/%.cpp
	$(CXX) -c $(CXXFLAGS) $< -o $@

-include $(foreach dep,$(SRCS:.cpp=.d),$(SB_OBJDIR)/$(dep))
$(SB_OBJS): $(SB_OBJDIR)/%.o: src/%.cpp
	$(SB_CXX) -c $(SB_CXXFLAGS) -DPNACL_BROWSER_TRANSLATOR=0 $< -o $@

-include $(foreach dep,$(SRCS:.cpp=.d),$(SBB_OBJDIR)/$(dep))
$(SBB_OBJS): $(SBB_OBJDIR)/%.o: src/%.cpp
	$(SB_CXX) -c $(SB_CXXFLAGS) -DPNACL_BROWSER_TRANSLATOR=1 $< -o $@

$(OBJDIR)/run_unittests: $(UNITTEST_OBJS) $(UNITTEST_LIB_OBJS)
	$(CXX) $(GTEST_LIB_PATH) $(LDFLAGS) -o $@ $^ $(LLVM_LDFLAGS) \
          -lgtest -lgtest_main -ldl \
          -Wl,-rpath=$(abspath $(LIBCXX_INSTALL_PATH)/lib)

-include $(foreach dep,$(UNITTEST_SRCS:.cpp=.d),$(OBJDIR)/unittest/$(dep))
$(UNITTEST_OBJS): $(OBJDIR)/unittest/%.o: unittest/%.cpp
	$(CXX) -c $(CXXFLAGS) \
          -Isrc/ \
          -Iunittest/ \
          -I$(LLVM_SRC_PATH)/utils/unittest/googletest/include \
          -I$(LLVM_SRC_PATH) \
          -DGTEST_HAS_RTTI=0 -DGTEST_USE_OWN_TR1_TUPLE \
          -Wno-expansion-to-defined \
          $< -o $@

$(OBJS): | $(OBJDIR)
$(SB_OBJS): | $(SB_OBJDIR)
$(SBB_OBJS): | $(SBB_OBJDIR)

$(UNITTEST_OBJS): | $(OBJDIR)/unittest $(OBJDIR)/unittest/AssemblerX8632 \
                    $(OBJDIR)/unittest/AssemblerX8664

$(OBJDIR):
	@mkdir -p $@
$(SB_OBJDIR):
	@mkdir -p $@
$(SBB_OBJDIR):
	@mkdir -p $@

$(OBJDIR)/unittest: $(OBJDIR)
	@mkdir -p $@

$(OBJDIR)/unittest/AssemblerX8632: $(OBJDIR)/unittest
	@mkdir -p $@
$(OBJDIR)/unittest/AssemblerX8664: $(OBJDIR)/unittest
	@mkdir -p $@

RT_SRC := runtime/szrt.c runtime/szrt_ll.ll runtime/szrt_profiler.c \
          runtime/szrt_asm_x8632.s runtime/szrt_asm_x8664.s \
          runtime/szrt_asm_arm32.s
RT_OBJ := build/runtime/szrt_native_x8632.o build/runtime/szrt_sb_x8632.o \
          build/runtime/szrt_nonsfi_x8632.o \
          build/runtime/szrt_native_x8664.o build/runtime/szrt_sb_x8664.o \
          build/runtime/szrt_nonsfi_x8664.o \
          build/runtime/szrt_native_arm32.o build/runtime/szrt_sb_arm32.o \
          build/runtime/szrt_nonsfi_arm32.o

runtime: $(RT_OBJ)

# Use runtime.is.built so that build-runtime.py is invoked only once
# even in a parallel build.
.INTERMEDIATE: runtime.is.built
$(RT_OBJ): runtime.is.built
runtime.is.built: $(RT_SRC) pydir/build-runtime.py
	@echo ================ Building Subzero runtime ================
	./pydir/build-runtime.py -v --pnacl-root $(PNACL_TOOLCHAIN_ROOT)

check-lit: $(OBJDIR)/pnacl-sz make_symlink
	PNACL_BIN_PATH=$(PNACL_BIN_PATH) \
	$(LLVM_SRC_PATH)/utils/lit/lit.py -sv $(CHECK_LIT_TESTS) \
            $(FORCEASM_LIT_TEST_EXCLUDES) $(FORCEASM_LIT_PARAM)

ifdef MINIMAL
check-xtest check-xtest-lite: $(OBJDIR)/pnacl-sz make_symlink runtime
	@echo "Crosstests disabled, minimal build"
else
check-xtest: $(OBJDIR)/pnacl-sz make_symlink runtime \
  exists-nonsfi-x8632 exists-nonsfi-arm32
       # Do all native/sse2 tests, but only test_vector_ops for native/sse4.1.
       # For (slow) sandboxed tests, limit to Om1/sse4.1.
       # run.py (used to run the sandboxed xtests) does not support
       # specifying -cpu cortex-a15 to qemu, hence we disable the
       # hwdiv-arm tests.
	./pydir/crosstest_generator.py -v --lit \
          --toolchain-root $(TOOLCHAIN_ROOT) \
          $(FORCEASM_FLAG) \
          $(FORCEASM_XTEST_EXCLUDES) \
          -i x8632,native,sse2 \
          -i x8632,native,sse4.1,test_vector_ops \
          -i x8632,sandbox,sse4.1,Om1 \
          -i x8632,nonsfi,sse2,O2 \
          -i x8664,native,sse2 \
          -i x8664,native,sse4.1,test_vector_ops \
          -i x8664,sandbox,sse4.1,Om1 \
          -i arm32 \
          -e arm32,sandbox,hwdiv-arm
	PNACL_BIN_PATH=$(PNACL_BIN_PATH) \
	$(LLVM_SRC_PATH)/utils/lit/lit.py -sv $(CHECK_XTEST_TESTS)
check-xtest-lite: $(OBJDIR)/pnacl-sz make_symlink runtime \
  exists-nonsfi-x8632 exists-nonsfi-arm32
       # Do all native/sse2/neon tests, which are relatively fast.
       # Limit to test_global+mem_intrin for sandbox+nonsfi because sandbox and
       # nonsfi builds are slow, and test_global and mem_intrin are the most
       # common sources of problems.
	./pydir/crosstest_generator.py -v --lit \
          --toolchain-root $(TOOLCHAIN_ROOT) \
          $(FORCEASM_FLAG) \
          $(FORCEASM_XTEST_EXCLUDES) \
          -i x8632,native,sse2,O2 \
          -i x8664,native,sse2,O2 \
          -i arm32,native,neon,O2 \
	  -i x8632,sse2,O2,test_global \
	  -i x8632,sse2,O2,mem_intrin \
	  -i x8664,sse2,O2,test_global \
	  -i x8664,sse2,O2,mem_intrin \
	  -i arm32,neon,O2,test_global \
	  -i arm32,neon,O2,mem_intrin \
          -e x8664,nonsfi
	PNACL_BIN_PATH=$(PNACL_BIN_PATH) \
	$(LLVM_SRC_PATH)/utils/lit/lit.py -sv $(CHECK_XTEST_TESTS)
endif

check-unit: $(OBJDIR)/run_unittests
	$(OBJDIR)/run_unittests

# List the spec2k components in roughly reverse order of runtime, to help with
# parallel execution speed.
ALLSPEC := 253.perlbmk 177.mesa 188.ammp 256.bzip2 164.gzip 179.art 183.equake \
           175.vpr 176.gcc 181.mcf 186.crafty 197.parser 254.gap 255.vortex \
           300.twolf 252.eon
.PHONY: $(ALLSPEC)

TARGET := x8632
ifeq ($(TARGET),x8632)
  TARGETFLAG=x8632
  SETUP=SetupGccX8632Opt
  SPEC := --filetype=obj
endif
ifeq ($(TARGET),x8664)
  TARGETFLAG=x8664
  SETUP=SetupGccX8664Opt
  SPEC := --filetype=obj
endif
ifeq ($(TARGET),arm32)
  TARGETFLAG=arm32
  SETUP=SetupGccArmOpt
  SPEC := --filetype=obj
endif
SPECFLAGS := -O2
SPECBUILDONLY := false
%.spec2k: % $(OBJDIR)/pnacl-sz make_symlink runtime
	./pydir/szbuild_spec2k.py -v \
          $(SPECFLAGS) --target=$(TARGETFLAG) $(SPEC) $<
	$(SPECBUILDONLY) || ( cd ../../../tests/spec2k; \
	 ./run_all.sh RunTimedBenchmarks $(SETUP) train $< )

check-spec: exists-spec $(ALLSPEC:=.spec2k)

check: check-lit check-unit check-xtest

NONSFI_LOADER_X8632 = \
  $(NACL_ROOT)/scons-out/opt-linux-x86-32/obj/src/nonsfi/loader/nonsfi_loader
NONSFI_LOADER_ARM32 = \
  $(NACL_ROOT)/scons-out/opt-linux-arm/obj/src/nonsfi/loader/nonsfi_loader
SBTC_LIBFILE = $(SB_LLVM_PATH)/lib/libLLVMSupport.a
SPEC_SAMPLE_PEXE = $(NACL_ROOT)/tests/spec2k/176.gcc/gcc.opt.stripped.pexe

exists-nonsfi-x8632:
	@if [ ! -f $(NONSFI_LOADER_X8632) ] ; then \
          echo "Missing file $(NONSFI_LOADER_X8632)"; \
          echo "Consider running 'scons nonsfi_loader'" \
               "in the native_client directory."; \
          exit 1 ; \
        fi

exists-nonsfi-arm32:
	@if [ ! -f $(NONSFI_LOADER_ARM32) ] ; then \
          echo "Missing file $(NONSFI_LOADER_ARM32)"; \
          echo "Consider running 'scons platform=arm32 nonsfi_loader'" \
               "in the native_client directory."; \
          exit 1 ; \
        fi

exists-sbtc:
	@if [ ! -f $(SBTC_LIBFILE) ] ; then \
          echo "Missing file $(SBTC_LIBFILE)"; \
          echo "Consider running 'toolchain_build_pnacl.py --build-sbtc'."; \
          exit 1 ; \
        fi

exists-spec:
	@if [ ! -f $(SPEC_SAMPLE_PEXE) ] ; then \
          echo "Missing file $(SPEC_SAMPLE_PEXE)"; \
          echo "Consider running" \
               "'run_all.sh BuildBenchmarks 0 SetupPnaclX8632Opt'" \
               "in the native_client/tests/spec2k directory."; \
          exit 1 ; \
        fi

check-presubmit presubmit: exists-nonsfi-x8632 exists-nonsfi-arm32 \
  exists-sbtc exists-spec
# Make sure clang-format gets run.
	+make -f Makefile.standalone format
# Verify MINIMAL build, plus proper usage of REQUIRES in lit tests.
	+make -f Makefile.standalone \
          MINIMAL=1 check
# Check that there are no g++ build errors or warnings.
	+make -f Makefile.standalone \
	  GPLUSPLUS=1 compile_only
# Check the x86 assembler unit tests.
	+make -f Makefile.standalone \
          DEBUG=1 CHECK_X86_ASM=1 check-unit sb
# Run lit tests, cross tests, unit tests, and spec2k/x86-32.
	+make -f Makefile.standalone \
          check check-spec
# Run spec2k/x86-64.
	+make -f Makefile.standalone \
          TARGET=x8664 check-spec
# Build spec2k under -Om1/x86-32, to check for liveness errors.
	+make -f Makefile.standalone \
          SPECFLAGS='-Om1' SPECBUILDONLY=true check-spec
# Build spec2k under -Om1/x86-64, to check for liveness errors.
	+make -f Makefile.standalone \
          SPECFLAGS='-Om1' TARGET=x8664 SPECBUILDONLY=true check-spec
# Run spec2k for x86-32 without advanced phi lowering.
	+make -f Makefile.standalone \
          SPECFLAGS='-O2 --sz=--phi-edge-split=0' check-spec
# Run spec2k for x86-64 without advanced phi lowering.
	+make -f Makefile.standalone \
          SPECFLAGS='-O2 --sz=--phi-edge-split=0' TARGET=x8664 check-spec
# Run cross tests and lit tests to validate filetype=asm output.
	+make -f Makefile.standalone \
          FORCEASM=1 check-xtest check-lit
# Build spec2k for arm32.
	+make -f Makefile.standalone \
          TARGET=arm32 SPECBUILDONLY=true check-spec
# Build spec2k under -Om1/arm32.
	+make -f Makefile.standalone \
          TARGET=arm32 SPECFLAGS='-Om1' SPECBUILDONLY=true check-spec
# Run a few spec2k tests for arm32 using qemu. Keep the list sorted in
# roughly reverse order of runtime.
	+make -f Makefile.standalone \
          TARGET=arm32 ALLSPEC='252.eon 254.gap 176.gcc 181.mcf' check-spec
# Provide validation of user awesomeness!
	echo Success

presubmit-lite: exists-nonsfi-x8632 exists-nonsfi-arm32 \
  exists-sbtc exists-spec
# Make sure clang-format gets run.
	+make -f Makefile.standalone format
# Verify MINIMAL build, plus proper usage of REQUIRES in lit tests.
	+make -f Makefile.standalone \
          MINIMAL=1 check sb-lite
# Check that there are no g++ build errors or warnings.
	+make -f Makefile.standalone \
	  GPLUSPLUS=1 compile_only
# Run lit tests, cross tests, unit tests, and spec2k/x86-32.
	+make -f Makefile.standalone \
          check-lit check-unit check-spec
	+make -f Makefile.standalone \
          check-xtest-lite
# Run spec2k/x86-64.
	+make -f Makefile.standalone \
          TARGET=x8664 check-spec
# Build spec2k under -Om1/x86-32, to check for liveness errors.
	+make -f Makefile.standalone \
          SPECFLAGS='-Om1' SPECBUILDONLY=true check-spec
# Build spec2k under -Om1/x86-64, to check for liveness errors.
	+make -f Makefile.standalone \
          SPECFLAGS='-Om1' TARGET=x8664 SPECBUILDONLY=true check-spec
# Run cross tests and lit tests to validate filetype=asm output.
	+make -f Makefile.standalone \
          FORCEASM=1 check-lit
	+make -f Makefile.standalone \
          FORCEASM=1 check-xtest-lite
# Build spec2k under -Om1/arm32.
	+make -f Makefile.standalone \
          TARGET=arm32 SPECFLAGS='-Om1' SPECBUILDONLY=true check-spec
# Run a few spec2k tests for arm32 using qemu. Keep the list sorted in
# roughly reverse order of runtime.
	+make -f Makefile.standalone \
          TARGET=arm32 ALLSPEC='254.gap 176.gcc 181.mcf' check-spec
# Provide validation of user awesomeness!
	echo Success

FORMAT_BLACKLIST =
# Add one of the following lines for each source file to ignore.
FORMAT_BLACKLIST += ! -name IceParseInstsTest.cpp
FORMAT_BLACKLIST += ! -name IceParseTypesTest.cpp
FORMAT_BLACKLIST += ! -name assembler_arm.h
FORMAT_BLACKLIST += ! -name assembler_arm.cc
format:
	$(CLANG_FORMAT_PATH)/clang-format -style=LLVM -i \
          `find . -regex '.*\.\(c\|h\|cpp\)' $(FORMAT_BLACKLIST)`

format-diff:
	git diff -U0 `git merge-base HEAD master` | \
          PATH=$(PNACL_BIN_PATH):$(PATH) \
          $(LLVM_SRC_PATH)/../clang/tools/clang-format/clang-format-diff.py \
          -p1 -style=LLVM -i

bloat: make_symlink
	nm -C -S -l pnacl-sz | \
          bloat/bloat.py --nm-output=/dev/stdin syms > build/pnacl-sz.bloat.json
	@echo See Subzero size breakdown in bloat/pnacl-sz.bloat.html

bloat-sb: sb_make_symlink
	$(foreach nexe,$(NEXES),nm -C -S -l $(nexe) | bloat/bloat.py \
          --nm-output=/dev/stdin syms > build/$(notdir $(nexe)).bloat.json;)
	@echo "See Subzero size breakdown in:"
	@$(foreach nexe,$(NEXES),echo "  bloat/$(notdir $(nexe)).bloat.html";)

docs:
	make -C docs -f Makefile.standalone

help:
	@cat Makefile.standalone-help/help.txt

help-check-lit:
	@cat Makefile.standalone-help/check-lit.txt

help-check-xtest:
	@cat Makefile.standalone-help/check-xtest.txt

clean:
	rm -rf pnacl-sz *.o $(foreach nexe,$(NEXES),$(notdir $(nexe))) \
          $(OBJDIR) $(SB_OBJDIR) $(SBB_OBJDIR) build/*.bloat.json

clean-all: clean
	rm -rf build/ crosstest/Output/
