diff --git a/Makefile b/Makefile index 67873d69..fb72f323 100644 --- a/Makefile +++ b/Makefile @@ -3,30 +3,31 @@ VERSION = $(shell go run tools/build-version.go) HASH = $(shell git rev-parse --short HEAD) DATE = $(shell go run tools/build-date.go) +ADDITIONAL_GO_LINKER_FLAGS = $(shell go run tools/info-plist.go "$(VERSION)") GOBIN ?= $(GOPATH)/bin # Builds micro after checking dependencies but without updating the runtime build: deps - go build -ldflags "-s -w -X main.Version=$(VERSION) -X main.CommitHash=$(HASH) -X 'main.CompileDate=$(DATE)'" ./cmd/micro + go build -ldflags "-s -w -X main.Version=$(VERSION) -X main.CommitHash=$(HASH) -X 'main.CompileDate=$(DATE)' $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro # Builds micro after building the runtime and checking dependencies build-all: runtime build # Builds micro without checking for dependencies build-quick: - go build -ldflags "-s -w -X main.Version=$(VERSION) -X main.CommitHash=$(HASH) -X 'main.CompileDate=$(DATE)'" ./cmd/micro + go build -ldflags "-s -w -X main.Version=$(VERSION) -X main.CommitHash=$(HASH) -X 'main.CompileDate=$(DATE)' $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro # Same as 'build' but installs to $GOBIN afterward install: deps - go install -ldflags "-s -w -X main.Version=$(VERSION) -X main.CommitHash=$(HASH) -X 'main.CompileDate=$(DATE)'" ./cmd/micro + go install -ldflags "-s -w -X main.Version=$(VERSION) -X main.CommitHash=$(HASH) -X 'main.CompileDate=$(DATE)' $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro # Same as 'build-all' but installs to $GOBIN afterward install-all: runtime install # Same as 'build-quick' but installs to $GOBIN afterward install-quick: - go install -ldflags "-s -w -X main.Version=$(VERSION) -X main.CommitHash=$(HASH) -X 'main.CompileDate=$(DATE)'" ./cmd/micro + go install -ldflags "-s -w -X main.Version=$(VERSION) -X main.CommitHash=$(HASH) -X 'main.CompileDate=$(DATE)' $(ADDITIONAL_GO_LINKER_FLAGS)" ./cmd/micro # Checks for dependencies deps: diff --git a/tools/cross-compile.sh b/tools/cross-compile.sh index dff1ddff..ad210c4d 100755 --- a/tools/cross-compile.sh +++ b/tools/cross-compile.sh @@ -15,10 +15,11 @@ cp README.md micro-$1 HASH="$(git rev-parse --short HEAD)" VERSION="$(go run tools/build-version.go)" DATE="$(go run tools/build-date.go)" +ADDITIONAL_GO_LINKER_FLAGS="$(go run tools/info-plist.go $VERSION)" # Mac echo "OSX 64" -GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o micro-$1/micro ./cmd/micro +GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w -X main.Version=$1 -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE' $ADDITIONAL_GO_LINKER_FLAGS" -o micro-$1/micro ./cmd/micro tar -czf micro-$1-osx.tar.gz micro-$1 mv micro-$1-osx.tar.gz binaries diff --git a/tools/info-plist.go b/tools/info-plist.go new file mode 100644 index 00000000..b16a8aee --- /dev/null +++ b/tools/info-plist.go @@ -0,0 +1,45 @@ +package main + +import ( + "os" + "fmt" + "runtime" + "io/ioutil" +) + +func check(e error) { + if e != nil { + panic(e) + } +} + +func main() { + if runtime.GOOS == "darwin" { + if len(os.Args) == 2 { + raw_info_plist_string := ` + + + + CFBundleIdentifier + io.github.micro-editor + CFBundleName + micro + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + APPL + CFBundleShortVersionString + ` + os.Args[1] + ` + + +` + info_plist_data := []byte(raw_info_plist_string) + + err := ioutil.WriteFile("/tmp/micro-info.plist", info_plist_data, 0644) + check(err) + fmt.Println("-linkmode external -extldflags -Wl,-sectcreate,__TEXT,__info_plist,/tmp/micro-info.plist") + } else { + panic("missing argument for version number!") + } + } +}