##===- unittests/Makefile.unittest -------------------------*- Makefile -*-===##
#
#                     The LLVM Compiler Infrastructure
#
# This file is distributed under the University of Illinois Open Source
# License. See LICENSE.TXT for details.
#
##===----------------------------------------------------------------------===##
#
# This file is included by all of the unit test makefiles.
#
##===----------------------------------------------------------------------===##

# Set up variables for building a unit test.
ifdef TESTNAME

LLVMUnitTestDir := $(LLVM_OBJ_ROOT)/$(BuildMode)/unittests
LLVMUnitTestExe := $(LLVMUnitTestDir)/$(TESTNAME)Tests$(EXEEXT)

include $(LEVEL)/Makefile.common

CPP.Flags += -I$(LLVM_SRC_ROOT)/utils/unittest/googletest/include/
CPP.Flags += -Wno-variadic-macros
LD.Flags += -lGoogleTest -lUnitTestMain

$(LLVMUnitTestExe): $(ObjectsO) $(ProjLibsPaths) $(LLVMLibsPaths)
	$(Echo) Linking $(BuildMode) unit test $(TESTNAME) $(StripWarnMsg)
	$(Verb) $(LTLink) -o $@ $(TOOLLINKOPTS) $(ObjectsO) $(ProjLibsOptions) \
	$(LLVMLibsOptions) $(ExtraLibs) $(TOOLLINKOPTSB) $(LIBS)
	$(Echo) ======= Finished Linking $(BuildMode) Unit test $(TESTNAME) \
          $(StripWarnMsg)

all:: $(LLVMUnitTestExe)
	$(LLVMUnitTestExe)

endif
