-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
157 lines (115 loc) · 4.32 KB
/
Copy pathMakefile
File metadata and controls
157 lines (115 loc) · 4.32 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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#########
# BUILD #
#########
.PHONY: develop build build-verible install dependencies-linux dependencies-macos dependencies-win copy-verible
BAZELISK_VERSION := v1.25.0
develop: ## install dependencies and build library
uv pip install -e .[develop]
requirements: ## install prerequisite python build requirements
python -m pip install --upgrade pip toml
python -m pip install `python -c 'import toml; c = toml.load("pyproject.toml"); print("\n".join(c["build-system"]["requires"]))'`
python -m pip install `python -c 'import toml; c = toml.load("pyproject.toml"); print(" ".join(c["project"]["optional-dependencies"]["develop"]))'`
build: ## build the python library
python -m build -n -w
dependencies-linux:
yum install ccache -y
if ! command -v bazelisk &> /dev/null; then \
curl -L -o /usr/local/bin/bazelisk https://github.com/bazelbuild/bazelisk/releases/download/$(BAZELISK_VERSION)/bazelisk-linux-amd64 && \
chmod +x /usr/local/bin/bazelisk && \
ln -sf /usr/local/bin/bazelisk /usr/local/bin/bazel; \
fi
dependencies-macos:
HOMEBREW_NO_AUTO_UPDATE=1 brew install ccache bazelisk make ninja
ln -sf $$(which bazelisk) /usr/local/bin/bazel || true
dependencies-win:
choco install bazelisk curl ninja unzip zip --no-progress -y
build-verible: ## build verible
git submodule update --init --recursive
cd src && bazel build -c opt //...
mkdir -p verible/bin
find src/bazel-bin/verible/verilog/tools -type f -name 'verible-verilog-*' ! -name '*.runfiles_manifest' ! -name '*.repo_mapping' ! -name '*.params' ! -name '*.cppmap' ! -name '*.d' ! -name '*.o' -exec cp {} verible/bin/ \; || true
find verible/bin -name '*.runfiles_manifest' -delete
find verible/bin -name '*.runfiles' -type d -prune -exec rm -rf {} + 2>/dev/null || true
copy-verible: ## copy verible artifacts and cleanup
rm -rf src build .gitmodules
install: ## install library
uv pip install .
#########
# LINTS #
#########
.PHONY: lint-py lint-docs fix-py fix-docs lint lints fix format
lint-py: ## lint python with ruff
python -m ruff check verible
python -m ruff format --check verible
lint-docs: ## lint docs with mdformat and codespell
python -m mdformat --check README.md
python -m codespell_lib README.md
fix-py: ## autoformat python code with ruff
python -m ruff check --fix verible
python -m ruff format verible
fix-docs: ## autoformat docs with mdformat and codespell
python -m mdformat README.md
python -m codespell_lib --write README.md
lint: lint-py lint-docs ## run all linters
lints: lint
fix: fix-py fix-docs ## run all autoformatters
format: fix
################
# Other Checks #
################
.PHONY: check-dist check-types checks check
check-dist: ## check python sdist and wheel with check-dist
check-dist -v
check-types: ## check python types with ty
ty check --python $$(which python)
checks: check-dist
# Alias
check: checks
#########
# TESTS #
#########
.PHONY: test coverage tests
test: ## run python tests
python -m pytest -v verible/tests
coverage: ## run tests and collect test coverage
python -m pytest -v verible/tests --cov=verible --cov-report term-missing --cov-report xml
# Alias
tests: test
###########
# VERSION #
###########
.PHONY: show-version patch minor major
show-version: ## show current library version
@bump-my-version show current_version
patch: ## bump a patch version
@bump-my-version bump patch
minor: ## bump a minor version
@bump-my-version bump minor
major: ## bump a major version
@bump-my-version bump major
########
# DIST #
########
.PHONY: dist dist-build dist-sdist dist-local-wheel publish
dist-build: # build python dists
python -m build -w -s
dist-check: ## run python dist checker with twine
python -m twine check dist/*
dist: clean dist-build dist-check ## build all dists
publish: dist ## publish python assets
#########
# CLEAN #
#########
.PHONY: deep-clean clean
deep-clean: ## clean everything from the repository
git clean -fdx
clean: ## clean the repository
rm -rf .coverage coverage cover htmlcov logs build dist *.egg-info
############################################################################################
.PHONY: help
# Thanks to Francoise at marmelab.com for this
.DEFAULT_GOAL := help
help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
print-%:
@echo '$*=$($*)'