forked from PennyLaneAI/catalyst
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
133 lines (110 loc) · 4.15 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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
PYTHON := python3 -m
BLACKVERSIONMAJOR := $(shell black --version 2> /dev/null | head -n1 | awk '{ print $$2 }' | cut -d. -f1)
BLACKVERSIONMAJOR := $(if $(BLACKVERSIONMAJOR),$(BLACKVERSIONMAJOR),0)
BLACKVERSIONMINOR := $(shell black --version 2> /dev/null | head -n1 | awk '{ print $$2 }' | cut -d. -f2)
BLACKVERSIONMINOR := $(if $(BLACKVERSIONMINOR),$(BLACKVERSIONMINOR),0)
MK_ABSPATH := $(abspath $(lastword $(MAKEFILE_LIST)))
MK_DIR := $(dir $(MK_ABSPATH))
DIALECTS_BUILD_DIR ?= $(MK_DIR)/mlir/build
COVERAGE_REPORT ?= term-missing
TEST_BACKEND ?= "lightning.qubit"
TEST_BRAKET ?= OFF
.PHONY: help
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " all to build and install all Catalyst modules and its MLIR dependencies"
@echo " frontend to install Catalyst Frontend"
@echo " mlir to build MLIR and custom Catalyst dialects"
@echo " runtime to build Catalyst Runtime with PennyLane-Lightning"
@echo " test to run the Catalyst test suites"
@echo " docs to build the documentation for Catalyst"
@echo " clean to uninstall Catalyst and delete all temporary and cache files"
@echo " clean-all to uninstall Catalyst and delete all temporary, cache, and build files"
@echo " clean-docs to delete all built documentation"
@echo " coverage to generate a coverage report"
@echo " format [check=1] to apply C++ and Python formatter; use with 'check=1' to check instead of modify (requires black, pylint and clang-format)"
@echo " format [version=?] to apply C++ and Python formatter; use with 'version={version}' to run clang-format-{version} instead of clang-format"
.PHONY: all
all: runtime mlir frontend
.PHONY: frontend
frontend:
@echo "install Catalyst Frontend"
$(PYTHON) pip install -e .
.PHONY: mlir llvm mhlo dialects runtime qir
mlir:
$(MAKE) -C mlir all
llvm:
$(MAKE) -C mlir llvm
mhlo:
$(MAKE) -C mlir mhlo
dialects:
$(MAKE) -C mlir dialects
runtime:
$(MAKE) -C runtime all
qir:
$(MAKE) -C runtime qir
.PHONY: test test-runtime test-frontend lit pytest test-demos
test: test-runtime test-frontend test-demos
test-runtime:
$(MAKE) -C runtime test
test-frontend: lit pytest
lit:
@echo "check the Catalyst lit test suite"
cmake --build $(DIALECTS_BUILD_DIR) --target check-frontend
pytest:
@echo "check the Catalyst PyTest suite"
ifdef remotetests
$(PYTHON) pytest frontend/test/pytest --tb=native --backend=$(TEST_BACKEND) --runbraket=$(TEST_BRAKET) -n auto
else
$(PYTHON) pytest frontend/test/pytest --tb=native --backend=$(TEST_BACKEND) --runbraket=$(TEST_BRAKET) -k "not remotetests" -n auto
endif
test-demos:
@echo "check the Catalyst demos"
MDD_BENCHMARK_PRECISION=1 \
$(PYTHON) pytest demos/*.ipynb --nbmake -n auto
.PHONY: clean clean-all
clean:
@echo "uninstall catalyst and delete all temporary and cache files"
$(PYTHON) pip uninstall -y pennylane-catalyst
rm -rf dist __pycache__
rm -rf .coverage coverage_html_report
clean-all:
@echo "uninstall catalyst and delete all temporary, cache files"
$(PYTHON) pip uninstall -y pennylane-catalyst
rm -rf dist __pycache__
rm -rf .coverage coverage_html_report/
$(MAKE) -C mlir clean
$(MAKE) -C runtime clean
.PHONY: coverage coverage-frontend coverage-runtime
coverage: coverage-frontend coverage-runtime
coverage-frontend:
@echo "Generating coverage report for the frontend"
$(PYTHON) pytest frontend/test/pytest -n auto --cov=catalyst --tb=native --cov-report=$(COVERAGE_REPORT)
coverage-runtime:
$(MAKE) -C runtime coverage
.PHONY: examples-runtime
examples-runtime:
$(MAKE) -C runtime examples
.PHONY: format
format:
ifeq ($(shell test $(BLACKVERSIONMAJOR) -lt 22; echo $$?), 0)
$(error black version is too old, please update to at least 22.10)
endif
ifeq ($(shell test $(BLACKVERSIONMAJOR) -eq 22 -a $(BLACKVERSIONMINOR) -lt 10; echo $$?), 0)
$(error black version is too old, please update to at least 22.10)
endif
$(MAKE) -C mlir format
$(MAKE) -C runtime format
ifdef check
black --check --verbose .
isort --check --diff .
else
black .
isort .
endif
pylint frontend
.PHONY: docs clean-docs
docs:
$(MAKE) -C doc html
clean-docs:
$(MAKE) -C doc clean