From 63c13de181f117fcc154ee0b83aaa4dd86984ee8 Mon Sep 17 00:00:00 2001 From: Leonid Nikitin Date: Sat, 14 Jun 2025 19:32:29 +0500 Subject: [PATCH] Add Makefile to automate build process for Linux and Windows --- Makefile | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..fcf22ab --- /dev/null +++ b/Makefile @@ -0,0 +1,88 @@ +VERSION ?= $(shell grep '^ *Version *= *' FyneApp.toml | sed -E "s/.*=[[:space:]]*\"([0-9\.]+)\".*/\1/") + +BUILD_TMP := fyne-cross/tmp + +WINDOWS_AMD64 := gui-for-ffmpeg-$(VERSION)-windows-amd64 +BUILD_TMP_WINDOWS_AMD64 := $(BUILD_TMP)/$(WINDOWS_AMD64) + +LINUX_AMD64 := gui-for-ffmpeg-$(VERSION)-linux-amd64 +BUILD_TMP_LINUX_AMD64 := $(BUILD_TMP)/$(LINUX_AMD64) + +RELEASES := fyne-cross/releases/$(VERSION) + +default: + # Run "make build-for-linux_amd64" + # Run "make build-for-windows_amd64" + # Build for all + # Run "make build" + +build: + make build-for-linux_amd64 + make build-for-windows_amd64 + # $(RELEASES)/$(LINUX_AMD64).tar.gz + # $(RELEASES)/$(LINUX_AMD64).tar.gz.sha256 + # $(RELEASES)/$(WINDOWS_AMD64).zip + # $(RELEASES)/$(WINDOWS_AMD64).zip.sha256 + +build-for-windows_amd64: + fyne-cross windows --icon "assets/icon.png" --app-id "net.kor-elf.projects.gui-for-ffmpeg" --app-version $(VERSION) -name "gui-for-ffmpeg" + + @if [ -d $(BUILD_TMP_WINDOWS_AMD64) ]; then \ + rm -rf $(BUILD_TMP_WINDOWS_AMD64)/*; \ + else \ + mkdir -p $(BUILD_TMP_WINDOWS_AMD64); \ + fi + cp LICENSE $(BUILD_TMP_WINDOWS_AMD64)/LICENSE + cp LICENSE-3RD-PARTY.txt $(BUILD_TMP_WINDOWS_AMD64)/LICENSE-3RD-PARTY.txt + cp fyne-cross/bin/windows-amd64/gui-for-ffmpeg.exe $(BUILD_TMP_WINDOWS_AMD64)/gui-for-ffmpeg.exe + cd $(BUILD_TMP) && 7z a -tzip $(WINDOWS_AMD64).zip $(WINDOWS_AMD64) + + @if [ ! -d $(RELEASES) ]; then \ + mkdir -p $(RELEASES); \ + fi + + @if [ -f $(RELEASES)/$(WINDOWS_AMD64).zip ]; then \ + rm $(RELEASES)/$(WINDOWS_AMD64).zip; \ + fi + + @if [ -f $(RELEASES)/$(WINDOWS_AMD64).zip.sha256 ]; then \ + rm $(RELEASES)/$(WINDOWS_AMD64).zip.sha256; \ + fi + + mv $(BUILD_TMP)/$(WINDOWS_AMD64).zip $(RELEASES)/$(WINDOWS_AMD64).zip + cd $(RELEASES) && sha256sum $(WINDOWS_AMD64).zip > $(WINDOWS_AMD64).zip.sha256 + # $(RELEASES)/$(WINDOWS_AMD64).zip + # $(RELEASES)/$(WINDOWS_AMD64).zip.sha256 + +build-for-linux_amd64: + fyne-cross linux --icon "assets/icon.png" --app-id "net.kor-elf.projects.gui-for-ffmpeg" --app-version $(VERSION) -name "gui-for-ffmpeg" + + @if [ -d $(BUILD_TMP_LINUX_AMD64) ]; then \ + rm -rf $(BUILD_TMP_LINUX_AMD64)/*; \ + else \ + mkdir -p $(BUILD_TMP_LINUX_AMD64); \ + fi + cp -r dist/linux/* $(BUILD_TMP_LINUX_AMD64)/ + cp LICENSE $(BUILD_TMP_LINUX_AMD64)/LICENSE + cp LICENSE-3RD-PARTY.txt $(BUILD_TMP_LINUX_AMD64)/LICENSE-3RD-PARTY.txt + cp fyne-cross/bin/linux-amd64/gui-for-ffmpeg $(BUILD_TMP_LINUX_AMD64)/usr/local/bin/gui-for-ffmpeg + cp assets/icon.png $(BUILD_TMP_LINUX_AMD64)/usr/local/share/pixmaps/gui-for-ffmpeg.png + + cd $(BUILD_TMP) && tar -czvf $(LINUX_AMD64).tar.gz $(LINUX_AMD64) + + @if [ ! -d $(RELEASES) ]; then \ + mkdir -p $(RELEASES); \ + fi + + @if [ -f $(RELEASES)/$(LINUX_AMD64).tar.gz ]; then \ + rm $(RELEASES)/$(LINUX_AMD64).tar.gz; \ + fi + + @if [ -f $(RELEASES)/$(LINUX_AMD64).tar.gz.sha256 ]; then \ + rm $(RELEASES)/$(LINUX_AMD64).tar.gz.sha256; \ + fi + + mv $(BUILD_TMP)/$(LINUX_AMD64).tar.gz $(RELEASES)/$(LINUX_AMD64).tar.gz + cd $(RELEASES) && sha256sum $(LINUX_AMD64).tar.gz > $(LINUX_AMD64).tar.gz.sha256 + # $(RELEASES)/$(LINUX_AMD64).tar.gz + # $(RELEASES)/$(LINUX_AMD64).tar.gz.sha256