diff --git a/Makefile b/Makefile index e5b4386b5dd2..4ba92d004534 100644 --- a/Makefile +++ b/Makefile @@ -1,59 +1,78 @@ # This makefile does nothing but delegating the actual building to cmake. -PYTHON = python3 -PIP = $(PYTHON) -m pip + +SHELL = /bin/bash +.SHELLFLAGS := -eu -o pipefail -c +PYTHON ?= $(shell command -v python3 || command -v python) +PIP = $(PYTHON) -m pip NIGHTLY_TOOL_OPTS := pull +.PHONY: all all: - @mkdir -p build && cd build && cmake .. $(shell $(PYTHON) ./scripts/get_python_cmake_flags.py) && $(MAKE) + @cmake -S . -B build $(shell $(PYTHON) ./scripts/get_python_cmake_flags.py) && \ + cmake --build build --parallel -- +.PHONY: local local: @./scripts/build_local.sh +.PHONY: android android: @./scripts/build_android.sh +.PHONY: ios ios: @./scripts/build_ios.sh -clean: # This will remove ALL build folders. - @rm -r build*/ +.PHONY: triton +triton: + $(PIP) uninstall -y triton + @./scripts/install_triton_wheel.sh +.PHONY: clean +clean: # This will remove ALL build folders. + @rm -r build*/ || true + +.PHONY: linecount 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" +.PHONY: ensure-branch-clean ensure-branch-clean: @if [ -n "$(shell git status --porcelain)" ]; then \ echo "Please commit or stash all changes before running this script"; \ exit 1; \ fi +.PHONY: setup-env setup-env: ensure-branch-clean $(PYTHON) tools/nightly.py $(NIGHTLY_TOOL_OPTS) +.PHONY: setup-env-cuda setup-env-cuda: $(MAKE) setup-env PYTHON="$(PYTHON)" NIGHTLY_TOOL_OPTS="$(NIGHTLY_TOOL_OPTS) --cuda" +.PHONY: setup-env-rocm setup-env-rocm: $(MAKE) setup-env PYTHON="$(PYTHON)" NIGHTLY_TOOL_OPTS="$(NIGHTLY_TOOL_OPTS) --rocm" -setup_env: setup-env -setup_env_cuda: setup-env-cuda -setup_env_rocm: setup-env-rocm - +.PHONY: setup-lint setup-lint: $(PIP) install lintrunner lintrunner init -setup_lint: setup-lint - +.PHONY: lint lint: lintrunner +.PHONY: quicklint quicklint: lintrunner -triton: - $(PIP) uninstall -y triton - @./scripts/install_triton_wheel.sh +# Deprecated target aliases +.PHONY: setup_env setup_env_cuda setup_env_rocm setup_lint +setup_env: setup-env +setup_env_cuda: setup-env-cuda +setup_env_rocm: setup-env-rocm +setup_lint: setup-lint