-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathMakefile
More file actions
106 lines (85 loc) · 3.54 KB
/
Makefile
File metadata and controls
106 lines (85 loc) · 3.54 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
SHELL := /bin/bash
.SHELLFLAGS := -eu -o pipefail -c
.PHONY: all init build install appimage test test_all test_vpi_all test_mem_direct_all \
test_all_java test_all_scala clean wheel wheel_install tests smoke_tests unit_tests
export NPROC := $(shell (nproc 2>/dev/null || sysctl -n hw.ncpu) 2>/dev/null)
export BUILD_XSPCOMM_SWIG ?= python
# Default target should not destroy previous builds
all: init build
init:
@bash scripts/init.sh
build:
cmake . -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_BUILD_PARALLEL=$(NPROC) $(ARGS)
cd build && $(MAKE) -j$(NPROC)
clean_build:
rm -rf build
rebuild: clean_build build
install: build
cd build && $(MAKE) install
appimage: init
rm -rf AppDir
# Reuse existing build if present; otherwise configure and build
@if [ ! -d build ]; then \
cmake -DCMAKE_INSTALL_PREFIX=/usr . -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_BUILD_PARALLEL=$(NPROC) $(ARGS); \
cd build && $(MAKE) -j$(NPROC); \
else \
echo "Using existing build directory for AppImage"; \
fi
# Install into AppDir
cd build && $(MAKE) install DESTDIR=`pwd`/../AppDir
# Pack Final AppImage
linuxdeploy --appdir AppDir/ --output appimage --desktop-file src/appimage/picker.desktop --icon-file src/appimage/logo256.png
test: build
./build/bin/picker -h
./build/bin/picker pack -h
./build/bin/picker exports -h
test_all:
rm -rf picker_out_*
./example/Adder/release-verilator.sh --lang python
./example/RandomGenerator/release-verilator.sh --lang python
./example/AdderMultiInstance/release-verilator.sh --lang python
./example/Cache/release-verilator.sh --lang python
test_vpi_all:
bash example/InternalSignals/release-verilator.sh --lang cpp
bash example/InternalSignals/release-verilator.sh --lang golang
bash example/InternalSignals/release-verilator.sh --lang java
bash example/InternalSignals/release-verilator.sh --lang lua
bash example/InternalSignals/release-verilator.sh --lang python
bash example/InternalSignals/release-verilator.sh --lang scala
test_mem_direct_all:
bash example/CacheSignalCFG/release-verilator.sh --lang cpp
bash example/CacheSignalCFG/release-verilator.sh --lang golang
bash example/CacheSignalCFG/release-verilator.sh --lang java
bash example/CacheSignalCFG/release-verilator.sh --lang lua
bash example/CacheSignalCFG/release-verilator.sh --lang python
bash example/CacheSignalCFG/release-verilator.sh --lang scala
test_all_java:
bash example/Adder/release-verilator.sh --lang java
bash example/RandomGenerator/release-verilator.sh --lang java
bash example/DualPortStackCb/release-verilator.sh --lang java
bash example/InternalSignals/release-verilator.sh --lang java
bash example/CacheSignalCFG/release-verilator.sh --lang java
test_all_scala:
bash example/Adder/release-verilator.sh --lang scala
bash example/RandomGenerator/release-verilator.sh --lang scala
bash example/DualPortStackCb/release-verilator.sh --lang scala
bash example/InternalSignals/release-verilator.sh --lang scala
bash example/CacheSignalCFG/release-verilator.sh --lang scala
clean:
rm -rf temp build dist picker_out* app_image_build AppDir
wheel: init
cd dependence/xcomm && $(MAKE) wheel
NO_BUILD_XSPCOMM=1 pipx run build
mkdir -p dist && cp dependence/xcomm/dist/* ./dist
wheel_install: wheel
pip3 uninstall -y xspcomm picker || true
pip3 install dist/xspcomm*.whl dist/picker*.whl
# Run test suite
tests:
$(MAKE) -C test all
smoke_tests:
$(MAKE) -C test smoke
unit_tests:
cmake . -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_BUILD_PARALLEL=$(NPROC) $(ARGS)
cd build && $(MAKE) -j$(NPROC)
cd build && ctest --output-on-failure -j$(NPROC)