aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile49
1 files changed, 46 insertions, 3 deletions
diff --git a/Makefile b/Makefile
index aac7b92..4b56b7e 100644
--- a/Makefile
+++ b/Makefile
@@ -12,6 +12,10 @@ deploy_host := deploy@build.r.bdr.sh
deploy_path := /srv/http/build.r.bdr.sh/$(app_name)-linux
prefix := /usr/local
flatpak_cargo_generator := $(HOME)/projects/vendor/flatpak-builder-tools/cargo
+linuxdeploy_url := https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-$(shell uname -m).AppImage
+linuxdeploy := .cache/linuxdeploy.AppImage
+pkgver := $(shell grep '^pkgver=' build-aux/PKGBUILD | cut -d= -f2)
+pkgrel := $(shell grep '^pkgrel=' build-aux/PKGBUILD | cut -d= -f2)
define sign_and_deploy
@./scripts/sign.sh "$(1)" "$(channel)" "$(architecture)"
@@ -104,7 +108,38 @@ package-flatpak: update_flatpak_dependencies
flatpak-builder --force-clean --user --install-deps-from=flathub --repo=repo --install builddir ./build-aux/systems.tranquil.Map.yml
flatpak build-bundle repo $(filename).flatpak systems.tranquil.Map
-package: package-rpm package-deb package-tar package-flatpak
+package-pacman:
+ @$(eval staging := $(shell mktemp -d))
+ rsync -a --filter=':- .gitignore' --exclude='.git' . $(staging)/src
+ cp build-aux/PKGBUILD $(staging)/
+ cd $(staging) && PKGEXT='.pkg.tar.gz' makepkg -fd
+ mv $(staging)/$(app_name)-$(pkgver)-$(pkgrel)-$(firstword $(subst -, ,$(target))).pkg.tar.gz $(filename).pkg.tar.gz
+ @rm -rf $(staging)
+
+$(linuxdeploy):
+ @mkdir -p .cache
+ curl -L -o $(linuxdeploy) $(linuxdeploy_url)
+ chmod +x $(linuxdeploy)
+
+package-appimage: build $(linuxdeploy)
+ifeq ($(findstring linux,$(target)),linux)
+ @$(eval appdir := $(shell mktemp -d))
+ @install -Dm0755 target/$(target)/$(output_dir)/$(app_name) $(appdir)/usr/bin/$(app_name)
+ @install -Dm0644 resources/logo.svg $(appdir)/usr/share/icons/hicolor/scalable/apps/systems.tranquil.Map.svg
+ @install -Dm0644 resources/systems.tranquil.Map.desktop $(appdir)/usr/share/applications/systems.tranquil.Map.desktop
+ @install -Dm0644 resources/systems.tranquil.Map.metainfo.xml $(appdir)/usr/share/metainfo/systems.tranquil.Map.metainfo.xml
+ @install -Dm0644 resources/systems.tranquil.Map.service $(appdir)/usr/share/dbus-1/services/systems.tranquil.Map.service
+ @install -Dm0644 resources/wmap.lang $(appdir)/usr/share/gtksourceview-5/language-specs/wmap.lang
+ @for po_file in po/*.po; do \
+ locale=$$(basename "$$po_file" .po); \
+ install -Dm0644 po/$$locale/LC_MESSAGES/systems.tranquil.Map.mo $(appdir)/usr/share/locale/$$locale/LC_MESSAGES/systems.tranquil.Map.mo; \
+ done
+ APPIMAGE_EXTRACT_AND_RUN=1 NO_STRIP=true $(linuxdeploy) --appdir=$(appdir) --output=appimage --desktop-file=resources/systems.tranquil.Map.desktop --icon-file=resources/logo.svg
+ mv *.AppImage $(filename).AppImage
+ @rm -rf $(appdir)
+endif
+
+package: package-rpm package-deb package-tar package-flatpak package-appimage
# Distribution #################################################################
@@ -120,10 +155,18 @@ distribute-tar:
distribute-flatpak:
@$(call sign_and_deploy,$(filename).flatpak)
-distribute: distribute-rpm distribute-deb distribute-tar distribute-flatpak
+distribute-pacman:
+ @$(call sign_and_deploy,$(filename).pkg.tar.gz)
+
+distribute-appimage:
+ @$(call sign_and_deploy,$(filename).AppImage)
+
+distribute: distribute-rpm distribute-deb distribute-tar distribute-flatpak distribute-appimage
release: package distribute
+arch: package-pacman distribute-pacman
+
# We can't do cross compile, so for now let's just make it easy to release
# on arm here
arm:
@@ -183,4 +226,4 @@ endif
$(MAKE) -e profile=release $(architectures)
-.PHONY: default build $(architectures) package package-rpm package-deb package-tar package-flatpak distribute distribute-rpm distribute-deb distribute-tar distribute-flatpak prepare set_rust ci release release_all test coverage format update_flatpak_dependencies extract_strings find_translatable_files compile_translations install uninstall
+.PHONY: default build $(architectures) package package-rpm package-deb package-tar package-flatpak package-pacman package-appimage distribute distribute-rpm distribute-deb distribute-tar distribute-flatpak distribute-pacman distribute-appimage arch prepare set_rust ci release release_all test coverage format update_flatpak_dependencies extract_strings find_translatable_files compile_translations install uninstall