# Copyright 2013, 2014 by Martin Moene
#
# Distributed under the Boost Software License, Version 1.0. (See accompanying
# file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

# -Dlest_FEATURE_COLOURISE=0
# -Dlest_FEATURE_LITERAL_SUFFIX=0
# -Dlest_FEATURE_REGEX_SEARCH=0
# -Dlest_FEATURE_TIME=1

CXXFLAGS   := -Wall -Wextra -I../include
CXXFLAGS03 := $(CXXFLAGS) -std=c++03
CXXFLAGS11 := $(CXXFLAGS) -std=c++11

vpath %.hpp ../include/lest

all: 01-basic 02-basic 03-decompose 04-c++03 \
     05-select 06-approx 07-udt 08-tag \
     09-fixture 10-bdd 11-auto-reg 12-module \
     13-module-auto-reg 14-module-cpp03 \
     15-extract-function 15-extract-lambda \
     15-extract-template-function

01-basic: 01-basic.cpp lest_basic.hpp
	$(CXX) $(CXXFLAGS11) -o 01-basic 01-basic.cpp
	-./01-basic

02-basic: 02-basic.cpp lest_basic.hpp
	$(CXX) $(CXXFLAGS11) -o 02-basic 02-basic.cpp
	-./02-basic

03-decompose: 03-decompose.cpp lest_decompose.hpp
	$(CXX) $(CXXFLAGS11) -o 03-decompose 03-decompose.cpp
	-./03-decompose

04-c++03: 04-c++03.cpp lest_cpp03.hpp
	$(CXX) $(CXXFLAGS03) -o 04-c++03 04-c++03.cpp
	-./04-c++03

05-select: 05-select.cpp lest.hpp
	$(CXX) $(CXXFLAGS11) -o 05-select 05-select.cpp
	-./05-select

06-approx: 06-approx.cpp lest.hpp
	$(CXX) $(CXXFLAGS11) -o 06-approx 06-approx.cpp
	-./06-approx

07-udt: 07-udt.cpp lest.hpp
	$(CXX) $(CXXFLAGS11) -o 07-udt 07-udt.cpp
	-./07-udt

08-tag: 08-tag.cpp lest.hpp
	$(CXX) $(CXXFLAGS11) -o 08-tag 08-tag.cpp
	-./08-tag

09-fixture: 09-fixture.cpp lest.hpp
	$(CXX) $(CXXFLAGS11) -o 09-fixture 09-fixture.cpp
	-./09-fixture

10-bdd: 10-bdd.cpp lest.hpp
	$(CXX) $(CXXFLAGS11) -o 10-bdd 10-bdd.cpp
	-./10-bdd

11-auto-reg: 11-auto-reg.cpp lest.hpp
	$(CXX) $(CXXFLAGS11) -Dlest_FEATURE_AUTO_REGISTER=1 -o 11-auto-reg 11-auto-reg.cpp
	-./11-auto-reg

12-module: 12-module-1.cpp 12-module-2.cpp 12-module-3.cpp lest.hpp
	$(CXX) $(CXXFLAGS11) -o 12-module 12-module-1.cpp 12-module-2.cpp 12-module-3.cpp
	-./12-module

13-module-auto-reg: 13-module-auto-reg-1.cpp 13-module-auto-reg-2.cpp 13-module-auto-reg-3.cpp lest.hpp
	$(CXX) $(CXXFLAGS11) -Dlest_FEATURE_AUTO_REGISTER=1 -o 13-module-auto-reg 13-module-auto-reg-1.cpp 13-module-auto-reg-2.cpp 13-module-auto-reg-3.cpp
	-./13-module-auto-reg

14-module-cpp03: 14-module-cpp03-1.cpp 14-module-cpp03-2.cpp 14-module-cpp03-3.cpp lest_cpp03.hpp
	$(CXX) $(CXXFLAGS11) -o 14-module-cpp03 14-module-cpp03-1.cpp 14-module-cpp03-2.cpp 14-module-cpp03-3.cpp
	-./14-module-cpp03

15-extract-function: 15-extract-function.cpp lest.hpp
	$(CXX) $(CXXFLAGS11) -Dlest_FEATURE_AUTO_REGISTER=1 -o 15-extract-function 15-extract-function.cpp
	-./15-extract-function

15-extract-lambda: 15-extract-lambda.cpp lest.hpp
	$(CXX) $(CXXFLAGS11) -Dlest_FEATURE_AUTO_REGISTER=1 -o 15-extract-lambda 15-extract-lambda.cpp
	-./15-extract-lambda

15-extract-template-function: 15-extract-template-function.cpp lest.hpp
	$(CXX) $(CXXFLAGS11) -Dlest_FEATURE_AUTO_REGISTER=1 -o 15-extract-template-function 15-extract-template-function.cpp
	-./15-extract-template-function

clean:
	-rm 01-basic 02-basic 03-decompose 04-c++03 \
	    05-select 06-approx 07-udt 08-tag \
	    09-fixture 10-bdd 11-auto-reg \
	    12-module 13-module-auto-reg 14-module-cpp03 \
	    15-extract-function 15-extract-lambda \
	    15-extract-template-function
