| # Managed by makego. DO NOT EDIT. |
| |
| # Must be set |
| $(call _assert_var,MAKEGO) |
| # Must be set |
| $(call _assert_var,MAKEGO_REMOTE) |
| # Must be set |
| $(call _assert_var,PROJECT) |
| # Must be set |
| $(call _assert_var,GO_MODULE) |
| |
| UNAME_OS := $(shell uname -s) |
| UNAME_ARCH := $(shell uname -m) |
| |
| ENV_DIR := .env |
| ENV_SH := $(ENV_DIR)/env.sh |
| ENV_BACKUP_DIR := $(HOME)/.config/$(PROJECT)/env |
| |
| TMP := .tmp |
| |
| EXTRA_MAKEGO_FILES := $(EXTRA_MAKEGO_FILES) scripts/checknodiffgenerated.bash |
| |
| # Settable |
| # These are exact file paths that are added to .gitignore and .dockerignore |
| FILE_IGNORES := $(FILE_IGNORES) $(ENV_DIR)/ $(TMP)/ |
| # Settable |
| # These will be added without any modification to .gitignore |
| GIT_FILE_IGNORES ?= |
| # Settable |
| # These will be added without any modification to .dockerignore |
| DOCKER_FILE_IGNORES ?= |
| # Settable |
| CACHE_BASE ?= $(HOME)/.cache/$(PROJECT) |
| |
| CACHE := $(CACHE_BASE)/$(UNAME_OS)/$(UNAME_ARCH) |
| CACHE_BIN := $(CACHE)/bin |
| CACHE_INCLUDE := $(CACHE)/include |
| CACHE_VERSIONS := $(CACHE)/versions |
| CACHE_ENV := $(CACHE)/env |
| CACHE_GO := $(CACHE)/go |
| |
| # CACHE_GOBIN is the location where binaries are installed for Golang projects |
| # This is as opposed to CACHE_BIN, where dependencies binaries are installed |
| # The separation is needed for i.e. buf, where we need to bootstrap with a |
| # download from releases, but want to have a different namespace for the |
| # version of buf installed from source |
| # CACHE_GOBIN takes precedence over CACHE_BIN in PATH |
| CACHE_GOBIN := $(CACHE)/gobin |
| # CACHE_GOCACHE is where the build cache is stored. |
| CACHE_GOCACHE := $(CACHE)/gocache |
| |
| ifeq ($(UNAME_OS),Darwin) |
| OPEN_CMD := open |
| endif |
| ifeq ($(UNAME_OS),Linux) |
| OPEN_CMD := xdg-open |
| endif |
| |
| # Runtime ALL |
| |
| # All variables exported here must also be added to env.sh |
| # via the direnv target below |
| export GO111MODULE := on |
| ifdef GOPRIVATE |
| export GOPRIVATE := $(GOPRIVATE),$(GO_MODULE) |
| else |
| export GOPRIVATE := $(GO_MODULE) |
| endif |
| export GOPATH := $(abspath $(CACHE_GO)) |
| export GOBIN := $(abspath $(CACHE_GOBIN)) |
| export GOCACHE := $(abspath $(CACHE_GOCACHE)) |
| export GOMODCACHE := $(GOPATH)/pkg/mod |
| |
| ifdef EXTRAPATH |
| EXTRAPATH := $(GOBIN):$(abspath $(CACHE_BIN)):$(EXTRAPATH) |
| else |
| EXTRAPATH := $(GOBIN):$(abspath $(CACHE_BIN)) |
| endif |
| export PATH := $(EXTRAPATH):$(PATH) |
| export DOCKER_BUILDKIT := 1 |
| |
| print-%: |
| @echo $($*) |
| |
| .PHONY: envbackup |
| envbackup: |
| rm -rf "$(ENV_BACKUP_DIR)" |
| mkdir -p "$(dir $(ENV_BACKUP_DIR))" |
| cp -R "$(ENV_DIR)" "$(ENV_BACKUP_DIR)" |
| |
| .PHONY: envrestore |
| envrestore: |
| @ if [ ! -d "$(ENV_BACKUP_DIR)" ]; then echo "no backup stored in $(ENV_BACKUP_DIR)"; exit 1; fi |
| rm -rf "$(ENV_DIR)" |
| cp -R "$(ENV_BACKUP_DIR)" "$(ENV_DIR)" |
| |
| # All variables set in env.sh by this target need to also be exported |
| # above in the Runtime ALL section. |
| .PHONY: direnv |
| direnv: |
| @mkdir -p $(CACHE_ENV) |
| @rm -f $(CACHE_ENV)/env.sh |
| @echo 'export CACHE="$(abspath $(CACHE))"' >> $(CACHE_ENV)/env.sh |
| @echo 'export GO111MODULE="$(GO111MODULE)"' >> $(CACHE_ENV)/env.sh |
| @echo 'export GOPRIVATE="$(GOPRIVATE)"' >> $(CACHE_ENV)/env.sh |
| @echo 'export GOPATH="$(GOPATH)"' >> $(CACHE_ENV)/env.sh |
| @echo 'export GOBIN="$(GOBIN)"' >> $(CACHE_ENV)/env.sh |
| @echo 'export GOCACHE="$(GOCACHE)"' >> $(CACHE_ENV)/env.sh |
| @echo 'export GOMODCACHE="$(GOPATH)/pkg/mod"' >> $(CACHE_ENV)/env.sh |
| @echo 'export PATH="$(EXTRAPATH):$${PATH}"' >> $(CACHE_ENV)/env.sh |
| @echo 'export DOCKER_BUILDKIT=1' >> $(CACHE_ENV)/env.sh |
| @echo '[ -f "$(abspath $(ENV_SH))" ] && . "$(abspath $(ENV_SH))"' >> $(CACHE_ENV)/env.sh |
| @echo $(CACHE_ENV)/env.sh |
| |
| .PHONY: clean |
| clean: |
| git clean -xdf -e /$(ENV_DIR)/ |
| |
| .PHONY: cleancache |
| cleancache: |
| rm -rf $(CACHE_BASE) |
| |
| .PHONY: nuke |
| nuke: clean |
| sudo rm -rf $(CACHE_GO)/pkg/mod |
| rm -rf $(CACHE_BASE) |
| |
| .PHONY: dockerdeps |
| dockerdeps:: |
| |
| .PHONY: deps |
| deps:: dockerdeps |
| |
| .PHONY: preinstallgenerate |
| preinstallgenerate:: |
| |
| .PHONY: pregenerate |
| pregenerate:: |
| |
| .PHONY: prepostgenerate |
| prepostgenerate:: |
| |
| .PHONY: postgenerate |
| postgenerate:: |
| |
| .PHONY: licensegenerate |
| licensegenerate:: |
| |
| .PHONY: generate |
| generate: |
| @$(MAKE) preinstallgenerate |
| @$(MAKE) pregenerate |
| @$(MAKE) prepostgenerate |
| @$(MAKE) postgenerate |
| @$(MAKE) licensegenerate |
| |
| .PHONY: checknodiffgenerated |
| checknodiffgenerated: |
| @ if [ -d .git ]; then \ |
| $(MAKE) __checknodiffgeneratedinternal; \ |
| else \ |
| echo "skipping make checknodiffgenerated due to no .git repository" >&2; \ |
| fi |
| |
| .PHONY: preupgrade |
| preupgrade:: |
| |
| .PHONY: postupgrade |
| postupgrade:: |
| |
| .PHONY: upgrade |
| upgrade: |
| @$(MAKE) preupgrade |
| @$(MAKE) generate |
| @$(MAKE) postupgrade |
| |
| .PHONY: updatemakego |
| updatemakego: |
| ifndef CONFIRM |
| $(error Set CONFIRM=1 to acknowledge this is potentially destructive to your current makego files) |
| else |
| @rm -rf $(TMP)/makego |
| @mkdir -p $(TMP) |
| git clone $(MAKEGO_REMOTE) $(TMP)/makego |
| rm -rf $(MAKEGO) |
| cp -R $(TMP)/makego/make/go $(MAKEGO) |
| ifndef ALL |
| $(MAKE) cleanmakego |
| endif |
| @rm -rf $(TMP)/makego |
| endif |
| |
| .PHONY: cleanmakego |
| cleanmakego: |
| find $(MAKEGO) -type f | \ |
| grep -v $(foreach makego_file,$(filter $(MAKEGO)/%.mk,$(MAKEFILE_LIST)) $(EXTRA_MAKEGO_FILES),-e $(makego_file)) | \ |
| xargs rm || true |
| |
| .PHONY: copytomakego |
| copytomakego: |
| @rm -rf $(TMP)/makego |
| @mkdir -p $(TMP) |
| git clone $(MAKEGO_REMOTE) $(TMP)/makego |
| $(foreach makego_file,$(subst $(MAKEGO)/,,$(shell find $(MAKEGO) -type f)),mkdir -p $(TMP)/makego/make/go/$(dir $(makego_file)); cp $(MAKEGO)/$(makego_file) $(TMP)/makego/make/go/$(makego_file); ) |
| @cd $(TMP)/makego; git status; git diff |
| @echo cd $(TMP)/makego |
| @echo git diff |
| @echo git push origin master |
| @echo cd - |
| |
| .PHONY: initmakego |
| initmakego:: |
| |
| .PHONY: updategitignores |
| updategitignores: |
| @rm -f .gitignore |
| @echo '# Autogenerated by makego. DO NOT EDIT.' > .gitignore |
| @$(foreach file_ignore,$(sort $(FILE_IGNORES)),echo /$(file_ignore) >> .gitignore || exit 1; ) |
| @$(foreach git_file_ignore,$(sort $(GIT_FILE_IGNORES)),echo $(git_file_ignore) >> .gitignore || exit 1; ) |
| |
| pregenerate:: updategitignores |
| |
| .PHONY: __checknodiffgeneratedinternal |
| __checknodiffgeneratedinternal: |
| bash $(MAKEGO)/scripts/checknodiffgenerated.bash $(MAKE) generate |