2024-11-08 13:27:12 +00:00
|
|
|
# Variables
|
|
|
|
VERSION ?= $(shell git describe --tags --always --dirty)
|
|
|
|
BINARY_NAME=noStrudel
|
|
|
|
BUILD_DIR=bin
|
2024-11-08 14:15:46 +00:00
|
|
|
RESOURCES_DIR=resources
|
2024-11-08 13:27:12 +00:00
|
|
|
|
|
|
|
# Build flags
|
|
|
|
LDFLAGS=-ldflags="-X 'main.Version=${VERSION}'"
|
|
|
|
|
2024-11-08 14:15:46 +00:00
|
|
|
# Windows resource file (create this at build time)
|
|
|
|
WINDOWS_SYSO=${BUILD_DIR}/windows_amd64.syso
|
|
|
|
|
2024-11-08 13:27:12 +00:00
|
|
|
# Ensure builds directory exists
|
|
|
|
$(shell mkdir -p ${BUILD_DIR})
|
|
|
|
|
2024-11-08 14:15:46 +00:00
|
|
|
.PHONY: all clean windows linux darwin windows-syso
|
2024-11-08 13:27:12 +00:00
|
|
|
|
|
|
|
all: copy windows linux darwin
|
|
|
|
|
|
|
|
# Build source
|
|
|
|
copy: source
|
|
|
|
cp -r ../dist/* web
|
|
|
|
|
|
|
|
source:
|
|
|
|
cd ../ && \
|
|
|
|
pnpm install && \
|
|
|
|
VITE_COMMIT_HASH=$(shell git rev-parse --short HEAD) \
|
|
|
|
VITE_APP_VERSION=$(shell jq -r .version ../package.json) \
|
|
|
|
pnpm build
|
|
|
|
|
2024-11-08 14:15:46 +00:00
|
|
|
# Generate Windows resource file with icon
|
|
|
|
windows-syso:
|
|
|
|
go install github.com/akavel/rsrc@latest
|
|
|
|
rsrc -ico ${RESOURCES_DIR}/icon.ico -o ${WINDOWS_SYSO}
|
|
|
|
|
2024-11-08 13:27:12 +00:00
|
|
|
# Windows builds
|
2024-11-08 14:15:46 +00:00
|
|
|
windows: windows-syso windows-amd64 windows-arm64
|
2024-11-08 13:27:12 +00:00
|
|
|
|
|
|
|
windows-amd64:
|
|
|
|
GOOS=windows GOARCH=amd64 go build ${LDFLAGS} -o ${BUILD_DIR}/${BINARY_NAME}-windows-amd64.exe
|
|
|
|
|
|
|
|
windows-arm64:
|
|
|
|
GOOS=windows GOARCH=arm64 go build ${LDFLAGS} -o ${BUILD_DIR}/${BINARY_NAME}-windows-arm64.exe
|
|
|
|
|
|
|
|
# Linux builds
|
|
|
|
linux: linux-amd64 linux-arm64
|
|
|
|
|
|
|
|
linux-amd64:
|
|
|
|
GOOS=linux GOARCH=amd64 go build ${LDFLAGS} -o ${BUILD_DIR}/${BINARY_NAME}-linux-amd64
|
|
|
|
|
|
|
|
linux-arm64:
|
|
|
|
GOOS=linux GOARCH=arm64 go build ${LDFLAGS} -o ${BUILD_DIR}/${BINARY_NAME}-linux-arm64
|
|
|
|
|
|
|
|
# macOS builds
|
|
|
|
darwin: darwin-amd64 darwin-arm64
|
|
|
|
|
|
|
|
darwin-amd64:
|
|
|
|
GOOS=darwin GOARCH=amd64 go build ${LDFLAGS} -o ${BUILD_DIR}/${BINARY_NAME}-darwin-amd64
|
2024-11-08 14:15:46 +00:00
|
|
|
# Create macOS app bundle for amd64
|
|
|
|
mkdir -p ${BUILD_DIR}/${BINARY_NAME}-darwin-amd64.app/Contents/MacOS
|
|
|
|
mkdir -p ${BUILD_DIR}/${BINARY_NAME}-darwin-amd64.app/Contents/Resources
|
|
|
|
cp ${BUILD_DIR}/${BINARY_NAME}-darwin-amd64 ${BUILD_DIR}/${BINARY_NAME}-darwin-amd64.app/Contents/MacOS/${BINARY_NAME}
|
|
|
|
cp ${RESOURCES_DIR}/icon.icns ${BUILD_DIR}/${BINARY_NAME}-darwin-amd64.app/Contents/Resources/
|
|
|
|
cp Info.plist ${BUILD_DIR}/${BINARY_NAME}-darwin-amd64.app/Contents/
|
2024-11-08 13:27:12 +00:00
|
|
|
|
|
|
|
darwin-arm64:
|
|
|
|
GOOS=darwin GOARCH=arm64 go build ${LDFLAGS} -o ${BUILD_DIR}/${BINARY_NAME}-darwin-arm64
|
2024-11-08 14:15:46 +00:00
|
|
|
# Create macOS app bundle for arm64
|
|
|
|
mkdir -p ${BUILD_DIR}/${BINARY_NAME}-darwin-arm64.app/Contents/MacOS
|
|
|
|
mkdir -p ${BUILD_DIR}/${BINARY_NAME}-darwin-arm64.app/Contents/Resources
|
|
|
|
cp ${BUILD_DIR}/${BINARY_NAME}-darwin-arm64 ${BUILD_DIR}/${BINARY_NAME}-darwin-arm64.app/Contents/MacOS/${BINARY_NAME}
|
|
|
|
cp ${RESOURCES_DIR}/icon.icns ${BUILD_DIR}/${BINARY_NAME}-darwin-arm64.app/Contents/Resources/
|
|
|
|
cp Info.plist ${BUILD_DIR}/${BINARY_NAME}-darwin-arm64.app/Contents/
|
2024-11-08 13:27:12 +00:00
|
|
|
|
|
|
|
# Clean build directory
|
|
|
|
clean:
|
|
|
|
rm -rf ${BUILD_DIR}/*
|