1KOKKOS_PATH = ../../..
2KOKKOS_SRC_PATH = ${KOKKOS_PATH}
3SRC = $(wildcard ${KOKKOS_SRC_PATH}/example/tutorial/03_simple_view/*.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 = 03_simple_view.cuda
15KOKKOS_DEVICES = "Cuda,OpenMP"
16KOKKOS_ARCH = "SNB,Kepler35"
17else
18CXX = g++
19CXXFLAGS = -O3
20LINK = ${CXX}
21LDFLAGS =
22EXE = 03_simple_view.host
23KOKKOS_DEVICES = "OpenMP"
24KOKKOS_ARCH = "SNB"
25endif
26
27
28DEPFLAGS = -M
29
30OBJ = $(notdir $(SRC:.cpp=.o))
31LIB =
32
33include $(KOKKOS_PATH)/Makefile.kokkos
34
35build: $(EXE)
36
37#for unit testing only, for best performance with OpenMP 4.0 or better
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