# ==================================================================================== # Setup Project PROJECT_NAME := function-sdk-go PROJECT_REPO := github.com/crossplane/$(PROJECT_NAME) PLATFORMS ?= linux_amd64 linux_arm64 # -include will silently skip missing files, which allows us # to load those files with a target in the Makefile. If only # "include" was used, the make command would fail and refuse # to run a target until the include commands succeeded. -include build/makelib/common.mk # ==================================================================================== # Setup Go # Set a sane default so that the nprocs calculation below is less noisy on the initial # loading of this file NPROCS ?= 1 # each of our test suites starts a kube-apiserver and running many test suites in # parallel can lead to high CPU utilization. by default we reduce the parallelism # to half the number of CPU cores. GO_TEST_PARALLEL := $(shell echo $$(( $(NPROCS) / 2 ))) GO_LDFLAGS += -X $(GO_PROJECT)/pkg/version.Version=$(VERSION) GO_SUBDIRS += errors proto resource response request GO111MODULE = on GOLANGCILINT_VERSION = 1.61.0 GO_LINT_ARGS ?= "--fix" -include build/makelib/golang.mk # ==================================================================================== # Targets # run `make help` to see the targets and options # We want submodules to be set up the first time `make` is run. # We manage the build/ folder and its Makefiles as a submodule. # The first time `make` is run, the includes of build/*.mk files will # all fail, and this target will be run. The next time, the default as defined # by the includes will be run instead. fallthrough: submodules @echo Initial setup complete. Running make again . . . @make # NOTE(hasheddan): the build submodule currently overrides XDG_CACHE_HOME in # order to force the Helm 3 to use the .work/helm directory. This causes Go on # Linux machines to use that directory as the build cache as well. We should # adjust this behavior in the build submodule because it is also causing Linux # users to duplicate their build cache, but for now we just make it easier to # identify its location in CI so that we cache between builds. go.cachedir: @go env GOCACHE # Update the submodules, such as the common build scripts. submodules: @git submodule sync @git submodule update --init --recursive .PHONY: reviewable submodules fallthrough # ==================================================================================== # Special Targets define SDK_HELP Targets: reviewable Ensure a PR is ready for review. submodules Update the submodules, such as the common build scripts. endef export SDK_HELP function-sdk-go.help: @echo "$$SDK_HELP" help-special: function-sdk-go.help .PHONY: function-sdk-go.help help-special