| # This makefile does nothing but delegating the actual building to cmake. |
| PYTHON = python3 |
| |
| all: |
| @mkdir -p build && cd build && cmake .. $(shell $(PYTHON) ./scripts/get_python_cmake_flags.py) && $(MAKE) |
| |
| local: |
| @./scripts/build_local.sh |
| |
| android: |
| @./scripts/build_android.sh |
| |
| ios: |
| @./scripts/build_ios.sh |
| |
| clean: # This will remove ALL build folders. |
| @rm -r build*/ |
| @$(RM) -r $(SHELLCHECK_GHA_GENERATED_FOLDER) |
| |
| linecount: |
| @cloc --read-lang-def=caffe.cloc caffe2 || \ |
| echo "Cloc is not available on the machine. You can install cloc with " && \ |
| echo " sudo apt-get install cloc" |
| |
| SHELLCHECK_GHA_GENERATED_FOLDER=.shellcheck_generated_gha |
| shellcheck-gha: |
| @$(RM) -r $(SHELLCHECK_GHA_GENERATED_FOLDER) |
| tools/extract_scripts.py --out=$(SHELLCHECK_GHA_GENERATED_FOLDER) |
| tools/linter/run_shellcheck.sh $(SHELLCHECK_GHA_GENERATED_FOLDER) |
| |
| generate-gha-workflows: |
| .github/scripts/generate_ci_workflows.py |
| $(MAKE) shellcheck-gha |
| |
| shellcheck: |
| @$(PYTHON) tools/actions_local_runner.py \ |
| --file .github/workflows/lint.yml \ |
| --job 'shellcheck' \ |
| --step "Regenerate workflows" |
| @$(PYTHON) tools/actions_local_runner.py \ |
| --file .github/workflows/lint.yml \ |
| --job 'shellcheck' \ |
| --step "Assert that regenerating the workflows didn't change them" |
| @$(PYTHON) tools/actions_local_runner.py \ |
| --file .github/workflows/lint.yml \ |
| --job 'shellcheck' \ |
| --step 'Extract scripts from GitHub Actions workflows' |
| @$(PYTHON) tools/actions_local_runner.py \ |
| $(CHANGED_ONLY) \ |
| --job 'shellcheck' |
| |
| setup_lint: |
| $(PYTHON) tools/actions_local_runner.py --file .github/workflows/lint.yml \ |
| --job 'flake8-py3' --step 'Install dependencies' --no-quiet |
| $(PYTHON) tools/actions_local_runner.py --file .github/workflows/lint.yml \ |
| --job 'cmakelint' --step 'Install dependencies' --no-quiet |
| $(PYTHON) tools/actions_local_runner.py --file .github/workflows/lint.yml \ |
| --job 'mypy' --step 'Install dependencies' --no-quiet |
| $(PYTHON) tools/actions_local_runner.py --file .github/workflows/lint.yml \ |
| --job 'shellcheck' --step 'Install Jinja2' --no-quiet |
| |
| @if [ "$$(uname)" = "Darwin" ]; then \ |
| if [ -z "$$(which brew)" ]; then \ |
| echo "'brew' is required to install ShellCheck, get it here: https://brew.sh "; \ |
| exit 1; \ |
| fi; \ |
| brew install shellcheck; \ |
| else \ |
| $(PYTHON) tools/actions_local_runner.py --file .github/workflows/lint.yml \ |
| --job 'shellcheck' --step 'Install ShellCheck' --no-quiet; \ |
| fi |
| $(PYTHON) -mpip install jinja2 --user |
| $(PYTHON) -mpip install -r tools/linter/clang_tidy/requirements.txt --user |
| $(PYTHON) -m tools.linter.install.clang_tidy |
| |
| quick_checks: |
| # TODO: This is broken when 'git config submodule.recurse' is 'true' since the |
| # lints will descend into third_party submodules |
| @$(PYTHON) tools/actions_local_runner.py \ |
| --file .github/workflows/lint.yml \ |
| --job 'quick-checks' \ |
| --step 'Ensure no trailing spaces' \ |
| --step 'Ensure no tabs' \ |
| --step 'Ensure no non-breaking spaces' \ |
| --step 'Ensure canonical include' \ |
| --step 'Ensure no versionless Python shebangs' \ |
| --step 'Ensure no unqualified noqa' \ |
| --step 'Ensure GitHub PyPi dependencies are pinned' \ |
| --step 'Ensure no unqualified type ignore' \ |
| --step 'Ensure no direct cub include' \ |
| --step 'Ensure correct trailing newlines' \ |
| --step 'Ensure no raw cuda api calls' |
| |
| flake8: |
| @$(PYTHON) tools/actions_local_runner.py \ |
| $(CHANGED_ONLY) \ |
| --job 'flake8-py3' |
| |
| mypy: |
| @$(PYTHON) tools/actions_local_runner.py \ |
| $(CHANGED_ONLY) \ |
| --job 'mypy' |
| |
| cmakelint: |
| @$(PYTHON) tools/actions_local_runner.py \ |
| --file .github/workflows/lint.yml \ |
| --job 'cmakelint' \ |
| --step 'Run cmakelint' |
| |
| clang-tidy: |
| @$(PYTHON) tools/actions_local_runner.py \ |
| $(CHANGED_ONLY) \ |
| --job 'clang-tidy' |
| |
| toc: |
| @$(PYTHON) tools/actions_local_runner.py \ |
| --file .github/workflows/lint.yml \ |
| --job 'toc' \ |
| --step "Regenerate ToCs and check that they didn't change" |
| |
| lint: flake8 mypy quick_checks cmakelint shellcheck |
| |
| quicklint: CHANGED_ONLY=--changed-only |
| quicklint: mypy flake8 quick_checks cmakelint shellcheck clang-tidy |