1KOKKOS_PATH = ../../..
2KOKKOS_SRC_PATH = ${KOKKOS_PATH}
3SRC = $(wildcard ${KOKKOS_SRC_PATH}/example/tutorial/02_simple_reduce_lambda/*.cpp)
4vpath %.cpp $(sort $(dir $(SRC)))
5
6default: build
7	echo "Start Build"
8
9ifneq (,$(findstring Cuda,$(KOKKOS_DEVICES)))
10CXX = ${KOKKOS_PATH}/bin/nvcc_wrapper
11CXXFLAGS = -O3
12LINK = ${CXX}
13LDFLAGS =
14EXE = 02_simple_reduce_lambda.cuda
15KOKKOS_DEVICES = "Cuda,OpenMP"
16KOKKOS_ARCH = "SNB,Kepler35"
17KOKKOS_CUDA_OPTIONS += "enable_lambda"
18else
19CXX = g++
20CXXFLAGS = -O3
21LINK = ${CXX}
22LDFLAGS =
23EXE = 02_simple_reduce_lambda.host
24KOKKOS_DEVICES = "OpenMP"
25KOKKOS_ARCH = "SNB"
26endif
27
28
29DEPFLAGS = -M
30
31OBJ = $(notdir $(SRC:.cpp=.o))
32LIB =
33
34include $(KOKKOS_PATH)/Makefile.kokkos
35
36build: $(EXE)
37
38test: $(EXE)
39	./$(EXE)
40
41$(EXE): $(OBJ) $(KOKKOS_LINK_DEPENDS)
42	$(LINK) $(KOKKOS_LDFLAGS) $(LDFLAGS) $(EXTRA_PATH) $(OBJ) $(KOKKOS_LIBS) $(LIB) -o $(EXE)
43
44clean: kokkos-clean
45	rm -f *.o *.cuda *.host
46
47# Compilation rules
48
49%.o:%.cpp $(KOKKOS_CPP_DEPENDS)
50	$(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) $(EXTRA_INC) -c $< -o $(notdir $@)
51