Skip to content

Commit

Permalink
Many mickle makes a Makefile ;)
Browse files Browse the repository at this point in the history
  • Loading branch information
vinser committed May 27, 2022
1 parent 179dc8a commit fd8f803
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 7 deletions.
69 changes: 69 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# Many mickle makes a Makefile ;)

# variable definitions

APP := flibgolite

VERSION := $(shell git describe --tags --always --dirty)
GOVERSION := $(shell go env GOVERSION)
BUILDTIME := $(shell date -u +"%Y-%m-%dT%H:%M:%SZ")

HOSTOS := $(shell go env GOHOSTOS)
HOSTARCH := $(shell go env GOHOSTARCH)

CMD_MAIN := $(shell find cmd/$(APP) -name main.go)
OUTPUT := $(patsubst cmd/%/main.go,%,$(CMD_MAIN))

build_cmd = \
GOOS=$(1) \
GOARCH=$(2) \
$(if $(3),GOARM=$(3)) \
go build -ldflags " \
-X 'main.version=$(VERSION)' \
-X 'main.buildTime=$(BUILDTIME)' \
-X 'main.goversion=$(GOVERSION)' \
-X 'main.target=$(1)-$(2)$(if $(3),-$(3))'" \
-o $(OUTPUT)-$(1)-$(2)$(if $(3),-$(3))$(if $(findstring windows,$(1)),.exe) \
$(abspath $(dir $(CMD_MAIN)))

all: build

# Current host build
build:
$(call build_cmd,$(HOSTOS),$(HOSTARCH),)


# Cross builds
xbuild: linux darwin windows

# Linux builds ========================
linux: build_linux_arm build_linux_arm64 build_linux_386 build_linux_amd64

build_linux_386:
$(call build_cmd,linux,386,)

build_linux_amd64:
$(call build_cmd,linux,amd64,)

build_linux_arm:
$(call build_cmd,linux,arm,6)

build_linux_arm64:
$(call build_cmd,linux,arm64,)

# OSX (Darwin) builds =================
darwin: build_darwin_amd64

build_darwin_amd64:
$(call build_cmd,darwin,amd64,)

# Windows builds ======================
windows: build_windows_386 build_windows_amd64

build_windows_386:
$(call build_cmd,windows,386,)

build_windows_amd64:
$(call build_cmd,windows,amd64,)

.PHONY: all check build xbuild linux darwin windows build_linux_arm build_linux_arm64 build_linux_386 build_linux_amd64 build_darwin_amd64 build_windows_386 build_windows_amd64
6 changes: 0 additions & 6 deletions TODO

This file was deleted.

7 changes: 6 additions & 1 deletion cmd/flibgolite/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ import (
"golang.org/x/text/message"
)

var version, buildTime, target, goversion string

func main() {
serviceFlag := flag.String("service", "", `control FLibGoLite system service`)
reindexFlag := flag.Bool("reindex", false, `empty book stock database and then scan book stock directory to add books to database`)
Expand Down Expand Up @@ -78,7 +80,10 @@ Documentation at: <https://github.com/vinser/flibgolite>
}

func displayVersion() {
fmt.Printf("FLibGoLite ver.%s\n", "1.0.0")
fmt.Printf("FLibGoLite\n")
fmt.Printf("Version: %s (%s)\n", version, target)
fmt.Printf("Build time: %s\n", buildTime)
fmt.Printf("Golang version: %s\n", goversion)
os.Exit(0)
}

Expand Down
1 change: 1 addition & 0 deletions cmd/flibgolite/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ func initService() service.Service {
options["SuccessExitStatus"] = "1 2 8 SIGKILL"
serviceCfg.Option = options
case "windows":
case "darwin":
default:
log.Fatalf("FLibGoLite on %s is not available yet\n", runtime.GOOS)
}
Expand Down

0 comments on commit fd8f803

Please sign in to comment.