Better checking of available solvers
[SymbiYosys.git] / Makefile
1
2 DESTDIR =
3 PREFIX = /usr/local
4 PROGRAM_PREFIX =
5
6 # On Windows, manually setting absolute path to Python binary may be required
7 # for launcher executable to work. From MSYS2, this can be done using the
8 # following command: "which python3 | cygpath -w -m -f -".
9 ifeq ($(OS), Windows_NT)
10 PYTHON = $(shell cygpath -w -m $(PREFIX)/bin/python3)
11 endif
12
13 .PHONY: help install ci test html clean
14
15 help:
16 @echo ""
17 @echo "sudo make install"
18 @echo " build and install SymbiYosys (sby)"
19 @echo ""
20 @echo "make html"
21 @echo " build documentation in docs/build/html/"
22 @echo ""
23 @echo "make test"
24 @echo " run tests"
25 @echo ""
26 @echo "make ci"
27 @echo " run tests and check examples"
28 @echo " note: this requires a full Tabby CAD Suite or OSS CAD Suite install"
29 @echo ""
30 @echo "make clean"
31 @echo " cleanup"
32 @echo ""
33
34 install:
35 mkdir -p $(DESTDIR)$(PREFIX)/bin
36 mkdir -p $(DESTDIR)$(PREFIX)/share/yosys/python3
37 cp sbysrc/sby_*.py $(DESTDIR)$(PREFIX)/share/yosys/python3/
38 sed -e 's|##yosys-program-prefix##|"'$(PROGRAM_PREFIX)'"|' < sbysrc/sby_core.py > $(DESTDIR)$(PREFIX)/share/yosys/python3/sby_core.py
39 ifeq ($(OS), Windows_NT)
40 sed -e 's|##yosys-sys-path##|sys.path += [os.path.dirname(__file__) + p for p in ["/share/python3", "/../share/yosys/python3"]]|;' \
41 -e "s|#!/usr/bin/env python3|#!$(PYTHON)|" < sbysrc/sby.py > $(DESTDIR)$(PREFIX)/bin/sby-script.py
42 gcc -DGUI=0 -O -s -o $(DESTDIR)$(PREFIX)/bin/sby.exe extern/launcher.c
43 else
44 sed 's|##yosys-sys-path##|sys.path += [os.path.dirname(__file__) + p for p in ["/share/python3", "/../share/yosys/python3"]]|;' < sbysrc/sby.py > $(DESTDIR)$(PREFIX)/bin/sby
45 chmod +x $(DESTDIR)$(PREFIX)/bin/sby
46 endif
47
48 ci: \
49 test_demo1 test_demo2 test_demo3 \
50 test_abstract_abstr test_abstract_props \
51 test_demos_fib_cover test_demos_fib_prove test_demos_fib_live \
52 test_multiclk_dpmem \
53 test_puzzles_djb2hash test_puzzles_pour853to4 test_puzzles_wolfgoatcabbage \
54 test_puzzles_primegen_primegen test_puzzles_primegen_primes_pass test_puzzles_primegen_primes_fail \
55 test_quickstart_demo test_quickstart_cover test_quickstart_prove test_quickstart_memory \
56 test
57 if yosys -qp 'read -verific' 2> /dev/null; then set -x; \
58 YOSYS_NOVERIFIC=1 $(MAKE) ci; \
59 fi
60
61 test_demo1:
62 cd sbysrc && python3 sby.py -f demo1.sby
63
64 test_demo2:
65 cd sbysrc && python3 sby.py -f demo2.sby
66
67 test_demo3:
68 cd sbysrc && python3 sby.py -f demo3.sby
69
70 test_abstract_abstr:
71 @if yosys -qp 'read -verific' 2> /dev/null; then set -x; \
72 cd docs/examples/abstract && python3 ../../../sbysrc/sby.py -f abstr.sby; \
73 else echo "skipping $@"; fi
74
75 test_abstract_props:
76 if yosys -qp 'read -verific' 2> /dev/null; then set -x; \
77 cd docs/examples/abstract && python3 ../../../sbysrc/sby.py -f props.sby; \
78 else echo "skipping $@"; fi
79
80 test_demos_fib_cover:
81 cd docs/examples/demos && python3 ../../../sbysrc/sby.py -f fib.sby cover
82
83 test_demos_fib_prove:
84 cd docs/examples/demos && python3 ../../../sbysrc/sby.py -f fib.sby prove
85
86 test_demos_fib_live:
87 cd docs/examples/demos && python3 ../../../sbysrc/sby.py -f fib.sby live
88
89 test_multiclk_dpmem:
90 cd docs/examples/multiclk && python3 ../../../sbysrc/sby.py -f dpmem.sby
91
92 test_puzzles_djb2hash:
93 cd docs/examples/puzzles && python3 ../../../sbysrc/sby.py -f djb2hash.sby
94
95 test_puzzles_pour853to4:
96 cd docs/examples/puzzles && python3 ../../../sbysrc/sby.py -f pour_853_to_4.sby
97
98 test_puzzles_wolfgoatcabbage:
99 cd docs/examples/puzzles && python3 ../../../sbysrc/sby.py -f wolf_goat_cabbage.sby
100
101 test_puzzles_primegen_primegen:
102 cd docs/examples/puzzles && python3 ../../../sbysrc/sby.py -f primegen.sby primegen
103
104 test_puzzles_primegen_primes_pass:
105 cd docs/examples/puzzles && python3 ../../../sbysrc/sby.py -f primegen.sby primes_pass
106
107 test_puzzles_primegen_primes_fail:
108 cd docs/examples/puzzles && python3 ../../../sbysrc/sby.py -f primegen.sby primes_fail
109
110 test_quickstart_demo:
111 cd docs/examples/quickstart && python3 ../../../sbysrc/sby.py -f demo.sby
112
113 test_quickstart_cover:
114 cd docs/examples/quickstart && python3 ../../../sbysrc/sby.py -f cover.sby
115
116 test_quickstart_prove:
117 cd docs/examples/quickstart && python3 ../../../sbysrc/sby.py -f prove.sby
118
119 test_quickstart_memory:
120 cd docs/examples/quickstart && python3 ../../../sbysrc/sby.py -f memory.sby
121
122 test:
123 $(MAKE) -C tests test
124
125 html:
126 $(MAKE) -C docs html
127
128 clean:
129 $(MAKE) -C docs clean
130 rm -rf docs/build sbysrc/sby sbysrc/__pycache__