# Test Makefile (for nmake)
#
# SYNOPSIS:
#
#   make [all]         - makes everything.
#   make test          - makes everything and run.
#   make TARGET        - makes the given target.
#   make run_$(TARGET) - makes the given target and run.
#   make clean         - removes all files generated by make.

#
# Command
#
RM = del

#
# Optimize
#
#OPTIMIZE += /O2

#
# Flags
#
CXXFLAGS =$(CXXFLAGS) /EHsc /nologo $(OPTIMIZE)
CXXFLAGS =$(CXXFLAGS) $(DEFS) $(STDFLAG)

!ifdef OUTPUTXML
CXXFLAGS =$(CXXFLAGS) -DOUTPUTXML
!endif

#
# include
#
!include <CommonMakefile.in>

RUN_TARGETS = $(ALLTESTS_TARGET) $(TARGETS1) $(TARGETS2) $(TARGETS_IUTEST_ONLY)
BUILD_TARGETS = $(RUN_TARGETS) $(BUILD_ONLY) $(COMPILEERROR_TARGETS)
TARGETS = $(BUILD_TARGETS)

SRCS   = $(BUILD_TARGETS:_tests=_tests.cpp)
RUNNER = $(RUN_TARGETS:_tests=_tests_run)


# build targets.

default : $(TARGETS)

all : clean default test

clean :
	$(RM) *.exe *.obj *.dump
!ifdef OUTPUTXML
	$(RM) *.xml
!endif

check: test
run : test
test : $(BUILD_ONLY) $(RUNNER)

showcxxversion:
	-$(CXX)

$(RUNNER) : $(@:_run=)
	@echo $@
!ifdef OUTPUTXML
	$(@:_run=) $(RUN_OPTION) --iutest_output=xml:$<.xml
!else
	$(@:_run=) $(RUN_OPTION)
!endif

# Builds a sample test.  

TARGETS_EXCLUDE_ALLTESTS= $(TARGETS1) $(TARGETS2) $(TARGETS_IUTEST_ONLY) $(BUILD_ONLY)
$(ALLTESTS_TARGET) : $(ALLTESTS_SRCS) $(IUTEST_HEADERS) Makefile
	$(CXX) $(IUTEST_INCLUDE) $(CXXFLAGS) /Fe$@ $(ALLTESTS_SRCS) $(LDFLAGS)

$(TARGETS_EXCLUDE_ALLTESTS) : $(SRCS) $(IUTEST_HEADERS) Makefile
	$(CXX) $(IUTEST_INCLUDE) $(CXXFLAGS) /Fe$@ $@.cpp $(LDFLAGS)

$(COMPILEERROR_TARGETS) : $(SRCS) $(IUTEST_HEADERS) Makefile
#	-$(CXX) $(IUTEST_INCLUDE) $(CXXFLAGS) /Fe$@ $@.cpp $(LDFLAGS)
	$(CXX) $(IUTEST_INCLUDE) $(CXXFLAGS) /Fe$@ $@.cpp $(LDFLAGS) | python ../tools/python/iutest_compile_error_test.py -c $(CXX)

