1APP_BIN = mlisting2VERSION = 0.13PREFIX ?= /usr/local4BINDIR ?= $(PREFIX)/bin5AIR_PACKAGE ?= github.com/air-verse/air@v16GOFLAGS := -buildmode=pie -modcacherw -trimpath -buildvcs=false7GO_TAGS := fts589ifeq "$(shell pkg-config sqlite3; echo $$?)" "0"10 GO_TAGS += libsqlite311endif1213space := $(subst ,, )14comma=,15GOFLAGS += -tags=$(subst $(space),$(comma),$(strip $(GO_TAGS)))1617BUILD_LDFLAGS="-X git.lin.moe/go/mlisting/cmd.VERSION=$(VERSION)"18.PHONY: build19build: ## Compile the project20 go build $(GOFLAGS) -ldflags $(BUILD_LDFLAGS) -o $(APP_BIN)2122.PHONY: install23install: build ## Install binary24 install -Dm755 $(APP_BIN) -t $(DESTDIR)$(BINDIR)/2526.PHONY: clean27clean: ## Remove compiled file and test database28 go clean29 rm -f $(APP_BIN) mlisting.db30 rm -rf ./tmp/3132.PHONY: watch33watch: testdata ## Start development environment, watch and reload when code changed34 go run $(AIR_PACKAGE) \35 -build.include_file="config.example.toml" \36 -build.cmd 'make build' \37 -build.args_bin 'serve --config ./config.example.toml' \38 -build.bin "./$(APP_BIN)"3940TEST_DB="/tmp/mlisting_test.db"41TEST_LDFLAGS="-X git.lin.moe/go/mlisting/storage/sqlite.TESTDSN=$(TEST_DB)"42.PHONY: testdata43testdata: ## Initialize data for watch and check targets44 rm -f $(TEST_DB)45 go run $(GOFLAGS) ./tools/gentestdata.go -db $(TEST_DB)4647GOTESTFLAGS := -v48GOTESTFLAGS += -tags=$(subst $(space),$(comma),$(strip $(GO_TAGS)))49.PHONY: check50check: testdata ## Run testsuit51 go test $(GOTESTFLAGS) -ldflags $(TEST_LDFLAGS) ./...5253.PHONY: help54help: ## Print this message55 @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "%-20s %s\n", $$1, $$2}'