forked from codespaghettifier/helix-solver
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
107 lines (83 loc) · 3.03 KB
/
Makefile
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
100
101
102
103
104
105
106
107
CC := dpcpp
# CFLAGS := -std=c++17 -g -O0 -Og
CFLAGS := -std=c++17 -O3
WFLAGS := -Wall -Wextra
INPUT_ARGS := config.json
LIBS := libs
SRCDIR := src
BUILDDIR := build
TESTBUILDDIR := testbuild
DEVCLOUD_EXEC := exec
INCDIR := include
BINDIR := bin
EXEC := HelixSolver.out
TESTSRCDIR := test
TESTEXEC := Test.out
TARGET := $(BINDIR)/$(EXEC)
TESTTARGET := $(BINDIR)/$(TESTEXEC)
SRCEXT := cpp
LINKBOOST := -lboost_program_options
ROOT_INCLUDE := $(LIBS)/root/include
ROOT_CONFIG := $(shell root-config --glibs --libs)
NLOHMAN_INCLUDE := $(LIBS)/nlohmann
SRC := $(shell find $(SRCDIR) -type f -name *.$(SRCEXT))
OBJ := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SRC:.$(SRCEXT)=.o))
INC := -I $(INCDIR) -I $(ROOT_INCLUDE) -I $(NLOHMAN_INCLUDE)
# INC := -I $(INCDIR) -I $(ROOT_INCLUDE) -I $(shell root-config --incdir)
TESTSRC := $(shell find $(TESTSRCDIR) -type f -name *.$(SRCEXT))
TESTOBJ := $(patsubst $(TESTSRCDIR)/%,$(TESTBUILDDIR)/%,$(TESTSRC:.$(SRCEXT)=.o))
GTESTINC := -I libs/googletest/googletest/include -I libs/googletest/googlemock/include
GTESTLIBPATH := $(LIBS)/build-gtest/lib
ARRIA_FLAGS_FOR_REPORT := -fintelfpga -Xshardware -fsycl-link=early -Xsboard=intel_a10gx_pac:pac_a10
STRATIX_FLAGS_FOR_REPORT := -fintelfpga -Xshardware -fsycl-link=early -Xsboard=intel_s10sx_pac:pac_s10
ARRIA_FLAGS := -fintelfpga -Xshardware -Xsboard=intel_a10gx_pac:pac_a10
STRATIX_FLAGS := -fintelfpga -Xshardware -Xsboard=intel_s10sx_pac:pac_s10
CPU_FLAGS :=
GPU_FLAGS :=
FPGA_FLAGS :=
FPGA_EMULATOR_FLAGS := -fintelfpga
PLATFOMR_FLAGS := $(CPU_FLAGS)
# PLATFOMR_FLAGS := $(GPU_FLAGS)
# PLATFOMR_FLAGS := $(FPGA_FLAGS)
# PLATFOMR_FLAGS := $(FPGA_EMULATOR_FLAGS)
fpga_hw:
$(CC) $(CFLAGS) $(STRATIX_FLAGS) $(INC) $(SRCDIR)/*.cpp -o bin/fpga_out.fpga
report:
$(CC) $(CFLAGS) $(STRATIX_FLAGS_FOR_REPORT) $(INC) $(SRCDIR)/*.cpp -o bin/fpga_compile_report.a
run: $(TARGET)
./$< $(INPUT_ARGS)
build: $(TARGET)
$(TARGET): $(OBJ)
mkdir -p $(BINDIR)
$(CC) $(CFLAGS) $(PLATFOMR_FLAGS) $(ROOT_CONFIG) $(INC) $(LINKBOOST) $^ -o $@
$(BUILDDIR)/%.o: $(SRCDIR)/%.$(SRCEXT)
mkdir -p $(BUILDDIR)
$(CC) $(CFLAGS) $(PLATFOMR_FLAGS) $(INC) $< -c -o $@ $(WFLAGS)
test: $(TESTTARGET)
./$<
$(TESTTARGET): $(TESTOBJ)
mkdir -p $(BINDIR)
$(CC) $(CFLAGS) -pthread $(LIBS)/gtest-obj/*.o $^ -o $@
$(TESTBUILDDIR)/%.o: $(TESTSRCDIR)/%.$(SRCEXT)
mkdir -p $(TESTBUILDDIR)
$(CC) $(CFLAGS) $(INC) $(GTESTINC) $< -c -o $@ $(WFLAGS)
build_gtest:
mkdir -p $(LIBS)/build-gtest
mkdir -p $(LIBS)/gtest-obj
cd $(LIBS)/build-gtest && cmake ../googletest
make -C $(LIBS)/build-gtest
cd $(LIBS)/gtest-obj && ar xv ../build-gtest/lib/libgmock.a
cd $(LIBS)/gtest-obj && ar xv ../build-gtest/lib/libgtest.a
cd $(LIBS)/gtest-obj && ar xv ../build-gtest/lib/libgtest_main.a
clean:
rm -rf $(BUILDDIR) $(BINDIR) $(TESTBUILDDIR)
rm -rf $(DEVCLOUD_EXEC)/build.sh.*
rm -rf $(DEVCLOUD_EXEC)/run.sh.*
rm -rf *.sh.o*
rm -rf *.sh.e*
rm -rf *.png
rm -rf detected-circles.txt
clean_external:
rm -rf $(LIBS)/build-gtest
rm -rf $(LIBS)/gtest-obj
.PHONY: clean, run, build, test, build_gtest, clean_external, report, fpga_hw