
#SYNOPSIS:
#
#   make [all]  - makes everything.
#   make TARGET - makes the given target.
#   make clean  - removes all files generated by make.

include ${TRICK_HOME}/share/trick/makefiles/Makefile.common

# Flags passed to the preprocessor.
TRICK_CXXFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -DGTEST_HAS_TR1_TUPLE=0
ifeq ($(HAVE_GSL),1)
TRICK_CXXFLAGS += -D_HAVE_GSL
ifneq ($(GSL_HOME),/usr)
TRICK_CXXFLAGS += -I${GSL_HOME}/include
endif
endif

TRICK_LIBS = -L${TRICK_LIB_DIR} -ltrick -ltrick_pyip -ltrick_comm -ltrick_math -ltrick_mm -ltrick_units
TRICK_EXEC_LINK_LIBS += ${GTEST_HOME}/lib/libgtest.a ${GTEST_HOME}/lib/libgtest_main.a

# All tests produced by this Makefile.  Remember to add new tests you
# created to the list.
TESTS = MonteCarlo_test MonteCarlo_exceptions


OTHER_OBJECTS = ../../include/object_${TRICK_HOST_CPU}/io_JobData.o \
                ../../include/object_${TRICK_HOST_CPU}/io_SimObject.o \
		  ../../include/object_${TRICK_HOST_CPU}/io_MonteCarlo.o \
		  ../../include/object_${TRICK_HOST_CPU}/io_RemoteShell.o

# House-keeping build targets.

all : $(TESTS)

test: $(TESTS)
	-./MonteCarlo_test --gtest_output=xml:${TRICK_HOME}/trick_test/MonteCarlo.xml
	-./MonteCarlo_exceptions --gtest_output=xml:${TRICK_HOME}/trick_test/MonteCarlo_exceptions.xml

clean :
	rm -f $(TESTS) *.o

MonteCarlo_test.o : MonteCarlo_test.cpp
	$(TRICK_CPPC) $(TRICK_CXXFLAGS) -c $<

MonteCarlo_test : MonteCarlo_test.o
	$(TRICK_LD) $(TRICK_LDFLAGS) -o $@ $^ $(OTHER_OBJECTS) $(TRICK_LIBS) $(TRICK_LIBS) $(TRICK_EXEC_LINK_LIBS)

MonteCarlo_exceptions.o : MonteCarlo_exceptions.cpp
	$(TRICK_CPPC) $(TRICK_CXXFLAGS) -c $<

MonteCarlo_exceptions : MonteCarlo_exceptions.o
	$(TRICK_LD) $(TRICK_LDFLAGS) -o $@ $^ $(OTHER_OBJECTS) $(TRICK_LIBS) $(TRICK_LIBS) $(TRICK_EXEC_LINK_LIBS)
