add makefile

This commit is contained in:
2026-07-29 15:57:02 -05:00
parent cab5a987b0
commit 1d1cee3961
4 changed files with 70 additions and 4 deletions
+66 -2
View File
@@ -1,5 +1,70 @@
GO ?= go
PREFIX ?= /usr/local
DESTDIR ?=
BUILD_DIR ?= build
APP_ID := io.github.dweymouth.supersonic
BINARY_NAME := supersonic-desktop
BINARY := $(BUILD_DIR)/$(BINARY_NAME)
BINDIR = $(DESTDIR)$(PREFIX)/bin
DATADIR = $(DESTDIR)$(PREFIX)/share
APPLICATIONSDIR = $(DATADIR)/applications
ICONDIR = $(DATADIR)/icons/hicolor
METAINFODIR = $(DATADIR)/metainfo
.PHONY: all build clean install install-bin install-desktop install-icons install-metainfo \
user-install uninstall user-uninstall refresh-desktop-cache lint \
package_macos bundledeps_macos_homebrew bundledeps_macos_macports \
bundledeps_macos_highsierra zip_macos package_windows package_linux
all: build
build:
go build -tags migrated_fynedo
mkdir -p "$(BUILD_DIR)"
$(GO) build -tags migrated_fynedo -trimpath -o "$(BINARY)" .
clean:
rm -f "$(BINARY)"
rmdir "$(BUILD_DIR)" 2>/dev/null || true
install: build install-bin install-desktop install-icons install-metainfo refresh-desktop-cache
install-bin:
install -Dm755 "$(BINARY)" "$(BINDIR)/$(BINARY_NAME)"
install-desktop:
desktop-file-validate res/supersonic-desktop.desktop
install -Dm644 res/supersonic-desktop.desktop "$(APPLICATIONSDIR)/$(APP_ID).desktop"
install-icons:
install -Dm644 res/appicon-128.png "$(ICONDIR)/128x128/apps/$(APP_ID).png"
install -Dm644 res/appicon-256.png "$(ICONDIR)/256x256/apps/$(APP_ID).png"
install -Dm644 res/appicon-512.png "$(ICONDIR)/512x512/apps/$(APP_ID).png"
install-metainfo:
install -Dm644 res/io.github.dweymouth.supersonic.appdata.xml "$(METAINFODIR)/$(APP_ID).metainfo.xml"
# Installs into ~/.local, which Wofi and other XDG launchers scan without root.
user-install: PREFIX := $(HOME)/.local
user-install: install
uninstall:
rm -f "$(BINDIR)/$(BINARY_NAME)"
rm -f "$(APPLICATIONSDIR)/$(APP_ID).desktop"
rm -f "$(ICONDIR)/128x128/apps/$(APP_ID).png"
rm -f "$(ICONDIR)/256x256/apps/$(APP_ID).png"
rm -f "$(ICONDIR)/512x512/apps/$(APP_ID).png"
rm -f "$(METAINFODIR)/$(APP_ID).metainfo.xml"
$(MAKE) refresh-desktop-cache PREFIX="$(PREFIX)" DESTDIR="$(DESTDIR)"
user-uninstall: PREFIX := $(HOME)/.local
user-uninstall: uninstall
refresh-desktop-cache:
@if [ -z "$(DESTDIR)" ]; then \
command -v update-desktop-database >/dev/null 2>&1 && update-desktop-database "$(PREFIX)/share/applications" || true; \
command -v gtk-update-icon-cache >/dev/null 2>&1 && gtk-update-icon-cache -q -t -f "$(PREFIX)/share/icons/hicolor" || true; \
fi
# dylibbundler doesn't seem to pick up on the Python framework dependency,
# so the last 3 cmds move it over manually. This is a bit fragile though
@@ -30,6 +95,5 @@ package_windows:
package_linux:
fyne package -os linux -tags migrated_fynedo
.PHONY: lint
lint:
golangci-lint run