diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ca350eb --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/vendor +/lorem +/build diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..3f46b1b --- /dev/null +++ b/Makefile @@ -0,0 +1,104 @@ +CGO_ENABLED = 0 +DIR = ./build + +GO_ARCH_AMD = amd64 +GO_ARCH_ARM = arm64 + +GO_OS_WIN = windows +GO_OS_DARWIN = darwin +GO_OS_LINUX = linux + +EXECUTABLE = lorem + +BIN_WIN_AMD64 = $(DIR)/$(EXECUTABLE)-windows-$(GO_ARCH_AMD).exe +BIN_WIN_ARM64 = $(DIR)/$(EXECUTABLE)-windows-$(GO_ARCH_ARM).exe +BIN_DARWIN_AMD64 = $(DIR)/$(EXECUTABLE)-darwin-$(GO_ARCH_AMD) +BIN_DARWIN_ARM64 = $(DIR)/$(EXECUTABLE)-darwin-$(GO_ARCH_ARM) +BIN_LINUX_AMD64 = $(DIR)/$(EXECUTABLE)-linux-$(GO_ARCH_AMD) +BIN_LINUX_ARM64 = $(DIR)/$(EXECUTABLE)-linux-$(GO_ARCH_ARM) + +CC = go build +CFLAGS = -trimpath +LDFLAGS = all=-w -s +GCFLAGS = all= +ASMFLAGS = all= + +.PHONY: all +all: linux windows darwin + +.PHONY: linux +linux: $(BIN_LINUX_AMD64) $(BIN_LINUX_ARM64) + chmod +x $(BIN_LINUX_ARM64) + chmod +x $(BIN_LINUX_AMD64) + +.PHONY: darwin +darwin: $(BIN_DARWIN_AMD64) $(BIN_DARWIN_ARM64) + chmod +x $(BIN_DARWIN_AMD64) + chmod +x $(BIN_DARWIN_ARM64) + +.PHONY: windows +windows: $(BIN_WIN_AMD64) $(BIN_WIN_ARM64) + +.PHONY: $(BIN_LINUX_AMD64) +$(BIN_LINUX_AMD64): + GO111MODULE=$(GOMOD) \ + GOARCH=$(GO_ARCH_AMD) \ + GOOS=$(GO_OS_LINUX) \ + CGO_ENABLED=$(CGO_ENABLED) \ + $(CC) $(CFLAGS) -ldflags="$(LDFLAGS)" -gcflags="$(GCFLAGS)" -asmflags="$(ASMFLAGS)" \ + -o $(BIN_LINUX_AMD64) . + +.PHONY: $(BIN_LINUX_ARM64) +$(BIN_LINUX_ARM64): + GO111MODULE=$(GOMOD) \ + GOARCH=$(GO_ARCH_ARM) \ + GOOS=$(GO_OS_LINUX) \ + CGO_ENABLED=$(CGO_ENABLED) \ + $(CC) $(CFLAGS) -ldflags="$(LDFLAGS)" -gcflags="$(GCFLAGS)" -asmflags="$(ASMFLAGS)" \ + -o $(BIN_LINUX_ARM64) . + +.PHONY: $(BIN_WIN_AMD64) +$(BIN_WIN_AMD64): + GO111MODULE=$(GOMOD) \ + GOARCH=$(GO_ARCH_AMD) \ + GOOS=$(GO_OS_WIN) \ + CGO_ENABLED=$(CGO_ENABLED) \ + $(CC) $(CFLAGS) -ldflags="$(LDFLAGS)" -gcflags="$(GCFLAGS)" -asmflags="$(ASMFLAGS)" \ + -o $(BIN_WIN_AMD64) . + +.PHONY: $(BIN_WIN_ARM64) +$(BIN_WIN_ARM64): + GO111MODULE=$(GOMOD) \ + GOARCH=$(GO_ARCH_ARM) \ + GOOS=$(GO_OS_WIN) \ + CGO_ENABLED=$(CGO_ENABLED) \ + $(CC) $(CFLAGS) -ldflags="$(LDFLAGS)" -gcflags="$(GCFLAGS)" -asmflags="$(ASMFLAGS)" \ + -o $(BIN_WIN_ARM64) . + +.PHONY: $(BIN_DARWIN_AMD64) +$(BIN_DARWIN_AMD64): + GO111MODULE=$(GOMOD) \ + GOARCH=$(GO_ARCH_AMD) \ + GOOS=$(GO_OS_DARWIN) \ + CGO_ENABLED=$(CGO_ENABLED) \ + $(CC) $(CFLAGS) -ldflags="$(LDFLAGS)" -gcflags="$(GCFLAGS)" -asmflags="$(ASMFLAGS)" \ + -o $(BIN_DARWIN_AMD64) . + +.PHONY: $(BIN_DARWIN_ARM64) +$(BIN_DARWIN_ARM64): + GO111MODULE=$(GOMOD) \ + GOARCH=$(GO_ARCH_ARM) \ + GOOS=$(GO_OS_DARWIN) \ + CGO_ENABLED=$(CGO_ENABLED) \ + $(CC) $(CFLAGS) -ldflags="$(LDFLAGS)" -gcflags="$(GCFLAGS)" -asmflags="$(ASMFLAGS)" \ + -o $(BIN_DARWIN_ARM64) . + +.PHONY: clean +clean: + rm -rf $(DIR)/* + +tool-gofumpt: + which golangci-lint > /dev/null 2>&1 || go install mvdan.cc/gofumpt@latest + +fmt: tool-gofumpt + gofumpt -w --extra .