mirror of
https://github.com/nkanaev/yarr.git
synced 2025-05-24 00:33:14 +00:00
update makefile: windows
This commit is contained in:
parent
a0d86e884a
commit
15db17d834
4
.github/workflows/build.yml
vendored
4
.github/workflows/build.yml
vendored
@ -5,10 +5,6 @@ on:
|
|||||||
tags:
|
tags:
|
||||||
- v*
|
- v*
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
workflow_run:
|
|
||||||
workflows: [Test]
|
|
||||||
types:
|
|
||||||
- completed
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build_macos:
|
build_macos:
|
||||||
|
@ -1,48 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"flag"
|
|
||||||
"io/ioutil"
|
|
||||||
"strings"
|
|
||||||
)
|
|
||||||
|
|
||||||
var rsrc = `1 VERSIONINFO
|
|
||||||
FILEVERSION {VERSION_COMMA},0,0
|
|
||||||
PRODUCTVERSION {VERSION_COMMA},0,0
|
|
||||||
BEGIN
|
|
||||||
BLOCK "StringFileInfo"
|
|
||||||
BEGIN
|
|
||||||
BLOCK "080904E4"
|
|
||||||
BEGIN
|
|
||||||
VALUE "CompanyName", "Old MacDonald's Farm"
|
|
||||||
VALUE "FileDescription", "Yet another RSS reader"
|
|
||||||
VALUE "FileVersion", "{VERSION}"
|
|
||||||
VALUE "InternalName", "yarr"
|
|
||||||
VALUE "LegalCopyright", "nkanaev"
|
|
||||||
VALUE "OriginalFilename", "yarr.exe"
|
|
||||||
VALUE "ProductName", "yarr"
|
|
||||||
VALUE "ProductVersion", "{VERSION}"
|
|
||||||
END
|
|
||||||
END
|
|
||||||
BLOCK "VarFileInfo"
|
|
||||||
BEGIN
|
|
||||||
VALUE "Translation", 0x809, 1252
|
|
||||||
END
|
|
||||||
END
|
|
||||||
|
|
||||||
1 ICON "icon.ico"
|
|
||||||
`
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
var version, outfile string
|
|
||||||
flag.StringVar(&version, "version", "0.0", "")
|
|
||||||
flag.StringVar(&outfile, "outfile", "versioninfo.rc", "")
|
|
||||||
flag.Parse()
|
|
||||||
|
|
||||||
version_comma := strings.ReplaceAll(version, ".", ",")
|
|
||||||
|
|
||||||
out := strings.ReplaceAll(rsrc, "{VERSION}", version)
|
|
||||||
out = strings.ReplaceAll(out, "{VERSION_COMMA}", version_comma)
|
|
||||||
|
|
||||||
ioutil.WriteFile(outfile, []byte(out), 0644)
|
|
||||||
}
|
|
89
etc/windows_versioninfo.sh
Executable file
89
etc/windows_versioninfo.sh
Executable file
@ -0,0 +1,89 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Function to display usage information
|
||||||
|
usage() {
|
||||||
|
echo "Usage: $0 [-version VERSION] [-outfile FILENAME]"
|
||||||
|
echo " -version VERSION Set the version number (default: 0.0)"
|
||||||
|
echo " -outfile FILENAME Set the output file name (default: versioninfo.rc)"
|
||||||
|
echo ""
|
||||||
|
echo "This script generates a Windows resource file with version information."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Default values
|
||||||
|
version="0.0"
|
||||||
|
outfile="versioninfo.rc"
|
||||||
|
|
||||||
|
# Check if help is requested
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Parse command-line options
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case $1 in
|
||||||
|
-version)
|
||||||
|
if [[ -z "$2" || "$2" == -* ]]; then
|
||||||
|
echo "Error: Missing value for -version parameter"
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
version="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-outfile)
|
||||||
|
if [[ -z "$2" || "$2" == -* ]]; then
|
||||||
|
echo "Error: Missing value for -outfile parameter"
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
outfile="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Error: Unknown parameter: $1"
|
||||||
|
usage
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Replace dots with commas for version_comma
|
||||||
|
version_comma="${version//./,}"
|
||||||
|
|
||||||
|
# Use a here document for the template with ENDFILE delimiter
|
||||||
|
cat <<ENDFILE > "$outfile"
|
||||||
|
1 VERSIONINFO
|
||||||
|
FILEVERSION $version_comma,0,0
|
||||||
|
PRODUCTVERSION $version_comma,0,0
|
||||||
|
BEGIN
|
||||||
|
BLOCK "StringFileInfo"
|
||||||
|
BEGIN
|
||||||
|
BLOCK "080904E4"
|
||||||
|
BEGIN
|
||||||
|
VALUE "CompanyName", "Old MacDonald's Farm"
|
||||||
|
VALUE "FileDescription", "Yet another RSS reader"
|
||||||
|
VALUE "FileVersion", "$version"
|
||||||
|
VALUE "InternalName", "yarr"
|
||||||
|
VALUE "LegalCopyright", "nkanaev"
|
||||||
|
VALUE "OriginalFilename", "yarr.exe"
|
||||||
|
VALUE "ProductName", "yarr"
|
||||||
|
VALUE "ProductVersion", "$version"
|
||||||
|
END
|
||||||
|
END
|
||||||
|
BLOCK "VarFileInfo"
|
||||||
|
BEGIN
|
||||||
|
VALUE "Translation", 0x809, 1252
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
1 ICON "icon.ico"
|
||||||
|
ENDFILE
|
||||||
|
|
||||||
|
# Set the correct permissions
|
||||||
|
chmod 644 "$outfile"
|
||||||
|
|
||||||
|
echo "Generated $outfile with version $version"
|
50
makefile
50
makefile
@ -4,30 +4,15 @@ GITHASH=$(shell git rev-parse --short=8 HEAD)
|
|||||||
GO_TAGS = sqlite_foreign_keys sqlite_json
|
GO_TAGS = sqlite_foreign_keys sqlite_json
|
||||||
GO_LDFLAGS = -s -w -X 'main.Version=$(VERSION)' -X 'main.GitHash=$(GITHASH)'
|
GO_LDFLAGS = -s -w -X 'main.Version=$(VERSION)' -X 'main.GitHash=$(GITHASH)'
|
||||||
|
|
||||||
GO_FLAGS = -tags "$(GO_TAGS)" -ldflags="$(GO_LDFLAGS)"
|
GO_FLAGS = -tags "$(GO_TAGS)" -ldflags="$(GO_LDFLAGS)"
|
||||||
GO_FLAGS_GUI = -tags "$(GO_TAGS) gui" -ldflags="$(GO_LDFLAGS)"
|
GO_FLAGS_GUI = -tags "$(GO_TAGS) gui" -ldflags="$(GO_LDFLAGS)"
|
||||||
|
GO_FLAGS_GUI_WIN = -tags "$(GO_TAGS) gui" -ldflags="$(GO_LDFLAGS) -H windowsgui"
|
||||||
|
|
||||||
export CGO_ENABLED=1
|
export CGO_ENABLED=1
|
||||||
|
|
||||||
build_default:
|
default: test host
|
||||||
mkdir -p _output
|
|
||||||
go build -tags "$(GO_TAGS)" -ldflags="$(GO_LDFLAGS)" -o _output/yarr ./cmd/yarr
|
|
||||||
|
|
||||||
build_macos:
|
# platform-specific files
|
||||||
mkdir -p _output/macos
|
|
||||||
GOOS=darwin go build -tags "$(GO_TAGS) macos" -ldflags="$(GO_LDFLAGS)" -o _output/macos/yarr ./cmd/yarr
|
|
||||||
cp src/platform/icon.png _output/macos/icon.png
|
|
||||||
go run ./cmd/package_macos -outdir _output/macos -version "$(VERSION)"
|
|
||||||
|
|
||||||
build_linux:
|
|
||||||
mkdir -p _output/linux
|
|
||||||
GOOS=linux go build -tags "$(GO_TAGS) linux" -ldflags="$(GO_LDFLAGS)" -o _output/linux/yarr ./cmd/yarr
|
|
||||||
|
|
||||||
build_windows:
|
|
||||||
mkdir -p _output/windows
|
|
||||||
go run ./cmd/generate_versioninfo -version "$(VERSION)" -outfile src/platform/versioninfo.rc
|
|
||||||
windres -i src/platform/versioninfo.rc -O coff -o src/platform/versioninfo.syso
|
|
||||||
GOOS=windows go build -tags "$(GO_TAGS) windows" -ldflags="$(GO_LDFLAGS) -H windowsgui" -o _output/windows/yarr.exe ./cmd/yarr
|
|
||||||
|
|
||||||
etc/icon.icns: etc/icon_macos.png
|
etc/icon.icns: etc/icon_macos.png
|
||||||
mkdir -p etc/icon.iconset
|
mkdir -p etc/icon.iconset
|
||||||
@ -40,6 +25,15 @@ etc/icon.icns: etc/icon_macos.png
|
|||||||
sips -s format png --resampleWidth 16 etc/icon_macos.png --out etc/icon.iconset/icon_16x16.png
|
sips -s format png --resampleWidth 16 etc/icon_macos.png --out etc/icon.iconset/icon_16x16.png
|
||||||
iconutil -c icns etc/icon.iconset -o etc/icon.icns
|
iconutil -c icns etc/icon.iconset -o etc/icon.icns
|
||||||
|
|
||||||
|
src/platform/versioninfo.rc:
|
||||||
|
./etc/windows_versioninfo.sh -version "$(VERSION)" -outfile src/platform/versioninfo.rc
|
||||||
|
windres -i src/platform/versioninfo.rc -O coff -o src/platform/versioninfo.syso
|
||||||
|
|
||||||
|
# build targets
|
||||||
|
|
||||||
|
host:
|
||||||
|
go build $(GO_FLAGS) -o out/yarr ./cmd/yarr
|
||||||
|
|
||||||
darwin_amd64:
|
darwin_amd64:
|
||||||
# not supported yet
|
# not supported yet
|
||||||
# CC="zig cc -target x86_64-macos-none" GOOS=darwin GOARCH=arm64 go build $(subst -s ,,$(GO_FLAGS)) -o out/$@/yarr ./cmd/yarr
|
# CC="zig cc -target x86_64-macos-none" GOOS=darwin GOARCH=arm64 go build $(subst -s ,,$(GO_FLAGS)) -o out/$@/yarr ./cmd/yarr
|
||||||
@ -63,21 +57,29 @@ windows_arm64:
|
|||||||
CC="zig cc -target aarch64-windows-gnu" GOOS=windows GOARCH=arm64 go build $(GO_FLAGS) -o out/$@/yarr ./cmd/yarr
|
CC="zig cc -target aarch64-windows-gnu" GOOS=windows GOARCH=arm64 go build $(GO_FLAGS) -o out/$@/yarr ./cmd/yarr
|
||||||
|
|
||||||
darwin_arm64_gui: etc/icon.icns
|
darwin_arm64_gui: etc/icon.icns
|
||||||
mkdir -p out/$@
|
|
||||||
GOOS=darwin GOARCH=arm64 go build $(GO_FLAGS_GUI) -o out/$@/yarr ./cmd/yarr
|
GOOS=darwin GOARCH=arm64 go build $(GO_FLAGS_GUI) -o out/$@/yarr ./cmd/yarr
|
||||||
./etc/macos_package.sh $(VERSION) etc/icon.icns out/$@/yarr out/$@
|
./etc/macos_package.sh $(VERSION) etc/icon.icns out/$@/yarr out/$@
|
||||||
|
|
||||||
darwin_amd64_gui: etc/icon.icns
|
darwin_amd64_gui: etc/icon.icns
|
||||||
mkdir -p out/$@
|
|
||||||
GOOS=darwin GOARCH=amd64 go build $(GO_FLAGS_GUI) -o out/$@/yarr ./cmd/yarr
|
GOOS=darwin GOARCH=amd64 go build $(GO_FLAGS_GUI) -o out/$@/yarr ./cmd/yarr
|
||||||
./etc/macos_package.sh $(VERSION) etc/icon.icns out/$@/yarr out/$@
|
./etc/macos_package.sh $(VERSION) etc/icon.icns out/$@/yarr out/$@
|
||||||
|
|
||||||
|
windows_amd64_gui: windows_versioninfo
|
||||||
|
GOOS=windows GOARCH=amd64 go build $(GO_FLAGS_GUI_WIN) -o out/$@/yarr ./cmd/yarr
|
||||||
|
|
||||||
|
windows_arm64_gui: src/platform/versioninfo.rc
|
||||||
|
GOOS=windows GOARCH=arm64 go build $(GO_FLAGS_GUI_WIN) -o out/$@/yarr ./cmd/yarr
|
||||||
|
|
||||||
serve:
|
serve:
|
||||||
go run $(GO_FLAGS) ./cmd/yarr -db local.db
|
go run $(GO_FLAGS) ./cmd/yarr -db local.db
|
||||||
|
|
||||||
test:
|
test:
|
||||||
go test $(GO_FLAGS) ./...
|
go test $(GO_FLAGS) ./...
|
||||||
|
|
||||||
.PHONY: serve test \
|
.PHONY: \
|
||||||
|
host \
|
||||||
darwin_amd64 darwin_amd64_gui \
|
darwin_amd64 darwin_amd64_gui \
|
||||||
darwin_arm64 darwin_arm64_gui
|
darwin_arm64 darwin_arm64_gui \
|
||||||
|
windows_amd64 windows_amd64_gui \
|
||||||
|
windows_arm64 windows_arm64_gui \
|
||||||
|
serve test
|
||||||
|
Loading…
x
Reference in New Issue
Block a user