generated from theriverman/go-cli-project
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
94 lines (78 loc) · 3.76 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# GENERAL
AppName := VolvoOnCall
BINARY_NAME := voc
COPYRIGHT_TEXT := Copyright 2022 - $(shell date '+%Y') github.com/theriverman/VolvoOnCall. All rights reserved. MIT license. For a copy, see <https://opensource.org/licenses/MIT>.
BUILD_TIME := $(shell date '+%c')
# Configure OS-specific binary suffix
ifeq ($(OS),Windows_NT)
BINARY_SUFFIX := .exe
else
BINARY_SUFFIX :=
endif
# Get/Set BUILD_TYPE
ifdef BUILD_TYPE
BUILD_TYPE := $(BUILD_TYPE)
else
# SET YOUR CUSTOM DEFAULT RELEASE TYPE BELOW
BUILD_TYPE := release
endif
# Get/Set LATEST_GIT_TAG
LATEST_GIT_TAG := $(shell git describe --tags --abbrev=0)
ifndef LATEST_GIT_TAG
LATEST_GIT_TAG := no-version
endif
# Get/Set LATEST_GIT_COMMIT
LATEST_GIT_COMMIT := $(shell git log -n 1 --pretty=format:"%H")
ifndef LATEST_GIT_COMMIT
LATEST_GIT_COMMIT := commit-id-could-not-be-retrieved
endif
# TECHNICAL VARS
GO_LD_FLAGS := -ldflags "-X 'main.AppName=$(AppName)' -X 'main.AppBuildDate=$(BUILD_TIME)' -X 'main.AppBuildType=$(BUILD_TYPE)' -X 'main.AppCopyrightText=$(COPYRIGHT_TEXT)' -X 'main.AppSemVersion=$(LATEST_GIT_TAG)' -X 'main.GitCommit=$(LATEST_GIT_COMMIT)'"
export PATH := $(shell go env GOPATH)/bin:$(PATH)
# **MAKE TARGETS**
info:
@echo "Choose from the following targets:"
@echo " * build (defaults to your host/OS settings)"
@echo " * build-darwin"
@echo " * build-linux"
@echo " * build-windows"
@echo " * install"
@echo " -----------------------------------------------"
@echo " * build-all"
@echo " * create-tar"
build:
@echo "Building for host system: $(shell go env GOOS)/$(shell go env GOARCH)"
$(eval BUILD_TYPE := internal/verification)
$(eval GO_LD_FLAGS := -ldflags "-X 'main.AppName=$(AppName)' -X 'main.AppBuildDate=$(BUILD_TIME)' -X 'main.AppBuildType=$(BUILD_TYPE)' -X 'main.AppCopyrightText=$(COPYRIGHT_TEXT)' -X 'main.AppSemVersion=$(LATEST_GIT_TAG)' -X 'main.GitCommit=$(LATEST_GIT_COMMIT)'")
@go build $(GO_LD_FLAGS) -o dist/$(BINARY_NAME)$(BINARY_SUFFIX)
build-darwin:
@GOOS=darwin GOARCH=amd64 go build $(GO_LD_FLAGS) -o dist/$(BINARY_NAME)-darwin-amd64
@GOOS=darwin GOARCH=arm64 go build $(GO_LD_FLAGS) -o dist/$(BINARY_NAME)-darwin-arm64
build-linux:
# @GOOS=linux GOARCH=386 go build $(GO_LD_FLAGS) -o dist/$(BINARY_NAME)-linux-386
@GOOS=linux GOARCH=amd64 go build $(GO_LD_FLAGS) -o dist/$(BINARY_NAME)-linux-amd64
@GOOS=linux GOARCH=arm go build $(GO_LD_FLAGS) -o dist/$(BINARY_NAME)-linux-arm
@GOOS=linux GOARCH=arm64 go build $(GO_LD_FLAGS) -o dist/$(BINARY_NAME)-linux-arm64
build-windows: generate-win-versioninfo
# @GOOS=windows GOARCH=386 go build $(GO_LD_FLAGS) -o dist/$(BINARY_NAME)-windows-386.exe
@GOOS=windows GOARCH=amd64 go build $(GO_LD_FLAGS) -o dist/$(BINARY_NAME)-windows-amd64.exe
build-all: clean build-darwin build-linux build-windows
install:
@echo "Building for host system: $(shell go env GOOS)/$(shell go env GOARCH)"
$(eval BUILD_TYPE := internal/verification)
$(eval GO_LD_FLAGS := -ldflags "-X 'main.AppName=$(AppName)' -X 'main.AppBuildDate=$(BUILD_TIME)' -X 'main.AppBuildType=$(BUILD_TYPE)' -X 'main.AppCopyrightText=$(COPYRIGHT_TEXT)' -X 'main.AppSemVersion=$(LATEST_GIT_TAG)' -X 'main.GitCommit=$(LATEST_GIT_COMMIT)'")
@go install $(GO_LD_FLAGS) -o dist/$(BINARY_NAME)$(BINARY_SUFFIX)
clean:
rm -rf ./dist/*
rm -rf ./resource_*.syso
generate-win-versioninfo:
@go install github.com/josephspurrier/goversioninfo/cmd/goversioninfo@latest
goversioninfo -platform-specific=true -file-version "$(LATEST_GIT_TAG).0" -product-version "$(LATEST_GIT_TAG)" -copyright "$(COPYRIGHT_TEXT)" -private-build "$(LATEST_GIT_TAG)"
create-tar:
@echo "Adding new binaries to a tar.gz archive in ./dist"
@tar -czvf ./$(BINARY_NAME).tar.gz -C ./dist .
@mv ./$(BINARY_NAME).tar.gz ./dist/
# Special Targets
build-c-library-linux-x86-64:
@echo "Building C library for Linux X86_64"
# TO BE ADDED