-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
99 lines (83 loc) · 2.4 KB
/
Makefile
File metadata and controls
99 lines (83 loc) · 2.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# C++ Compiler
CC = /usr/bin/g++-7
CFLAGS = -g -Wall
OPENCV = opencv
LDFLAGS = `pkg-config --libs --cflags $(OPENCV)`
# CUDA Compiler
CUDA_PATH ?= /usr/local/cuda
CUDA_INC_PATH ?= $(CUDA_PATH)/include
CUDA_BIN_PATH ?= $(CUDA_PATH)/bin
CUDA_LIB_PATH ?= $(CUDA_PATH)/lib
# CUDA code generation flags
GENCODE_FLAGS := -gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=sm_50 \
-gencode arch=compute_52,code=sm_52 \
-gencode arch=compute_60,code=sm_60 \
-gencode arch=compute_61,code=sm_61 \
-gencode arch=compute_61,code=compute_61
# Common binaries
NVCC ?= $(CUDA_BIN_PATH)/nvcc
# OS-specific build flags
ifeq ($(shell uname),Darwin)
LDFLAGS := $(LDFLAGS) -Xlinker -rpath $(CUDA_LIB_PATH) -L$(CUDA_LIB_PATH) -lcudart -lcufft
CCFLAGS := -arch $(OS_ARCH)
else
ifeq ($(OS_SIZE),32)
LDFLAGS := $(LDFLAGS) -L$(CUDA_LIB_PATH) -lcudart
CCFLAGS := -m32
else
CUDA_LIB_PATH := $(CUDA_LIB_PATH)64
LDFLAGS := $(LDFLAGS) -L$(CUDA_LIB_PATH) -lcudart
CCFLAGS := -m64
endif
endif
# OS-architecture specific flags
ifeq ($(OS_SIZE),32)
NVCCFLAGS := -m32
else
NVCCFLAGS := -m64
endif
# Folders
BINDIR = bin
OBJDIR = obj
SRCDIR = src
# Files
SRC_CPP = $(wildcard $(SRCDIR)/*.cpp)
SRC_CUDA = $(wildcard $(SRCDIR)/*.cu)
OBJECTS = $(SRC_CPP:$(SRCDIR)/%.cpp=$(OBJDIR)/%.o) $(SRC_CUDA:$(SRCDIR)/%.cu=$(OBJDIR)/%.o)
TARGET = $(BINDIR)/wfc
.PHONY: all
all: build
.PHONY: clean
clean:
@echo "Cleaning ..."
@rm -rf $(OBJDIR)
@rm -rf $(BINDIR)
@rm -rf results
.PHONY: dirs
dirs:
@mkdir -p $(OBJDIR)
@mkdir -p $(BINDIR)
@mkdir -p results
.PHONY: build
build: dirs $(TARGET)
.PHONY: test
test:
@echo "Running Red Tests:"
bin/wfc tiles/red/ 2 1 1 16 16 0 0 red
@echo "\nRunning Spirals Tests:"
bin/wfc tiles/spirals/ 3 1 1 16 16 0 0 spirals
@echo "\nRunning Dungeons Tests:"
bin/wfc tiles/dungeons/ 3 0 1 16 16 0 0 dungeons
@echo "\nRunning Paths Tests:"
bin/wfc tiles/paths/ 3 0 1 16 16 0 0 paths
$(OBJDIR)/%.o: $(SRCDIR)/%.cu
@echo "Compiling cuda objects: $@"
$(NVCC) $(NVCCFLAGS) -O3 $(EXTRA_NVCCFLAGS) $(GENCODE_FLAGS) -I$(CUDA_INC_PATH) -o $@ -c $< $(LDFLAGS)
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
@echo "Compiling cpp objects: $@"
$(CC) $(CFLAGS) -MP -MMD -c $< -o $@ $(LDFLAGS) -I$(CUDA_INC_PATH)
$(TARGET): $(OBJECTS)
@echo "Linking: $@"
$(CC) $(OBJECTS) -o $@ $(LDFLAGS)