-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathMakefile
More file actions
122 lines (107 loc) · 4.23 KB
/
Makefile
File metadata and controls
122 lines (107 loc) · 4.23 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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
SHELL=/bin/bash
### Config parameters.
ENABLE_CUDA=0
BUILDDIR := build
.PHONY: all prepare kvsp iyokan iyokan-avx2 iyokan-avx512 cahp-sim yosys cahp-ruby cahp-pearl llvm-cahp cahp-rt clean
all: kvsp iyokan-avx2 iyokan-avx512 cahp-sim cahp-ruby cahp-pearl cahp-rt
@echo "Build successfully completed!"
prepare:
@echo "Preparing for build..."
mkdir -p $(BUILDDIR)/bin
mkdir -p $(BUILDDIR)/share/kvsp
cp -a share/* $(BUILDDIR)/share/kvsp/
kvsp: prepare
@echo "Building kvsp..."
mkdir -p $(BUILDDIR)/kvsp
cd kvsp && \
if [ ! -f go.mod ]; then \
go mod init github.com/kvsp/kvsp && \
go get github.com/BurntSushi/toml@latest && \
go mod tidy; \
fi && \
go build -o ../$(BUILDDIR)/kvsp/kvsp -ldflags "\
-X main.kvspVersion=$$(git describe --tags --abbrev=0 || echo "unk") \
-X main.kvspRevision=$$(git rev-parse --short HEAD || echo "unk") \
-X main.iyokanRevision=$$(git -C ../Iyokan rev-parse --short HEAD || echo "unk") \
-X main.cahpRubyRevision=$$(git -C ../cahp-ruby rev-parse --short HEAD || echo "unk") \
-X main.cahpPearlRevision=$$(git -C ../cahp-pearl rev-parse --short HEAD || echo "unk") \
-X main.cahpRtRevision=$$(git -C ../cahp-rt rev-parse --short HEAD || echo "unk") \
-X main.cahpSimRevision=$$(git -C ../cahp-sim rev-parse --short HEAD || echo "unk") \
-X main.llvmCahpRevision=$$(git -C ../llvm-cahp rev-parse --short HEAD || echo "unk") \
-X main.yosysRevision=$$(git -C ../yosys rev-parse --short HEAD || echo "unk")"
cp -a $(BUILDDIR)/kvsp/kvsp $(BUILDDIR)/bin/
iyokan: iyokan-avx512
iyokan-avx2: prepare
@echo "Building Iyokan (AVX2, -march=x86-64-v3, USE_AVX512=OFF)..."
mkdir -p $(BUILDDIR)/Iyokan-avx2
cd $(BUILDDIR)/Iyokan-avx2 && \
if [ ! -f CMakeCache.txt ]; then cmake \
-DCMAKE_BUILD_TYPE="Release" \
-DIYOKAN_ENABLE_CUDA=$(ENABLE_CUDA) \
-DIYOKAN_MARCH=x86-64-v3 \
-DUSE_AVX512=OFF \
../../Iyokan; fi && \
$(MAKE) iyokan iyokan-packet
cp -a $(BUILDDIR)/Iyokan-avx2/bin/iyokan $(BUILDDIR)/bin/iyokan-avx2
cp -a $(BUILDDIR)/Iyokan-avx2/bin/iyokan-packet $(BUILDDIR)/bin/iyokan-packet-avx2
iyokan-avx512: prepare
@echo "Building Iyokan (AVX512, -march=native, USE_AVX512=ON)..."
mkdir -p $(BUILDDIR)/Iyokan-avx512
cd $(BUILDDIR)/Iyokan-avx512 && \
if [ ! -f CMakeCache.txt ]; then cmake \
-DCMAKE_BUILD_TYPE="Release" \
-DIYOKAN_ENABLE_CUDA=$(ENABLE_CUDA) \
-DUSE_AVX512=ON \
../../Iyokan; fi && \
$(MAKE) iyokan iyokan-packet
cp -a $(BUILDDIR)/Iyokan-avx512/bin/iyokan $(BUILDDIR)/bin/iyokan
cp -a $(BUILDDIR)/Iyokan-avx512/bin/iyokan-packet $(BUILDDIR)/bin/iyokan-packet
cahp-sim: prepare
@echo "Building cahp-sim..."
mkdir -p $(BUILDDIR)/cahp-sim
cd $(BUILDDIR)/cahp-sim && \
if [ ! -f CMakeCache.txt ]; then cmake \
-DCMAKE_BUILD_TYPE="Release" \
../../cahp-sim; fi && \
$(MAKE) cahp-sim
cp -a $(BUILDDIR)/cahp-sim/src/cahp-sim $(BUILDDIR)/bin/
yosys: prepare
@echo "Building Yosys..."
if [ ! -e "./$(BUILDDIR)/yosys" ]; then ln -s ${PWD}/yosys $(BUILDDIR)/yosys; fi
cd $(BUILDDIR)/yosys && $(MAKE)
cahp-ruby: yosys prepare
@echo "Building cahp-ruby..."
cp -a cahp-ruby $(BUILDDIR)/
cd $(BUILDDIR)/cahp-ruby && sbt run
cd $(BUILDDIR)/cahp-ruby && \
../yosys/yosys build.ys
cp $(BUILDDIR)/cahp-ruby/vsp-core-ruby.json $(BUILDDIR)/share/kvsp/ruby-core.json
cahp-pearl: yosys prepare
@echo "Building cahp-pearl..."
cp -a cahp-pearl $(BUILDDIR)/
cd $(BUILDDIR)/cahp-pearl && sbt run
cd $(BUILDDIR)/cahp-pearl && \
../yosys/yosys build.ys
cp $(BUILDDIR)/cahp-pearl/vsp-core-pearl.json $(BUILDDIR)/share/kvsp/pearl-core.json
llvm-cahp: prepare
@echo "Building llvm-cahp..."
mkdir -p $(BUILDDIR)/llvm-cahp
cd $(BUILDDIR)/llvm-cahp && \
if [ ! -f CMakeCache.txt ]; then cmake \
-DCMAKE_BUILD_TYPE="Release" \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DLLVM_ENABLE_PROJECTS="lld;clang" \
-DLLVM_TARGETS_TO_BUILD="" \
-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="CAHP" \
../../llvm-cahp/llvm; fi && \
$(MAKE)
cp -a $(BUILDDIR)/llvm-cahp/bin/* $(BUILDDIR)/bin/
cahp-rt: llvm-cahp prepare
@echo "Building cahp-rt..."
cp -a cahp-rt $(BUILDDIR)/
cd $(BUILDDIR)/cahp-rt && CC=../llvm-cahp/bin/clang $(MAKE)
mkdir -p $(BUILDDIR)/share/kvsp/cahp-rt
cd $(BUILDDIR)/cahp-rt && \
cp -a crt0.o libc.a cahp.lds ../share/kvsp/cahp-rt/
clean:
rm -rf $(BUILDDIR)