# Copyright © 2026 Olaf Kolkman # SPDX-License-Identifier: GPL-3.0-or-later SHELL := /bin/sh SOURCE_LOGO := LinkLog.svg MAGICK ?= magick WEB_LOGO := frontend/static/logo.svg EXTENSION_LOGO := webextension/logo.svg ICON_FILES := webextension/icon-16.png webextension/icon-32.png webextension/icon-48.png webextension/icon-96.png GENERATED_LOGOS := $(WEB_LOGO) $(EXTENSION_LOGO) $(ICON_FILES) EXTENSION_VERSION := $(shell sed -n 's/^[[:space:]]*"version":[[:space:]]*"\([^"]*\)".*/\1/p' webextension/manifest.json | head -n 1) XPI_FILE := LinkLog-$(EXTENSION_VERSION).xpi XPI_UNSIGNED_DIR := XPI/unsigned XPI_SIGNED_DIR := XPI/signed XPI_OUTPUT := $(XPI_UNSIGNED_DIR)/$(XPI_FILE) EXTENSION_FILES := manifest.json logo.svg icon-16.png icon-32.png icon-48.png icon-96.png options.css options.html options.js popup.css popup.html popup.js .PHONY: all logos xpi check-tools clean-generated all: logos logos: check-tools $(GENERATED_LOGOS) xpi: logos @test -n "$(EXTENSION_VERSION)" || { echo "Error: extension version is missing from webextension/manifest.json" >&2; exit 1; } @mkdir -p $(XPI_UNSIGNED_DIR) $(XPI_SIGNED_DIR) @rm -f $(XPI_OUTPUT) @cd webextension && zip -q -9 "../$(XPI_OUTPUT)" $(EXTENSION_FILES) @python3 scripts/release/validate_xpi.py "$(XPI_OUTPUT)" webextension/manifest.json @echo "Created $(XPI_OUTPUT)" check-tools: @command -v $(MAGICK) >/dev/null 2>&1 || { echo "Error: ImageMagick '$(MAGICK)' is required. Install ImageMagick and retry." >&2; exit 1; } $(WEB_LOGO): $(SOURCE_LOGO) @mkdir -p $(@D) @cp $< $@ $(EXTENSION_LOGO): $(SOURCE_LOGO) @mkdir -p $(@D) @cp $< $@ webextension/icon-16.png: $(SOURCE_LOGO) @mkdir -p $(@D) @$(MAGICK) $< -resize 16x16 -gravity center -extent 16x16 $@ webextension/icon-32.png: $(SOURCE_LOGO) @mkdir -p $(@D) @$(MAGICK) $< -resize 32x32 -gravity center -extent 32x32 $@ webextension/icon-48.png: $(SOURCE_LOGO) @mkdir -p $(@D) @$(MAGICK) $< -resize 48x48 -gravity center -extent 48x48 $@ webextension/icon-96.png: $(SOURCE_LOGO) @mkdir -p $(@D) @$(MAGICK) $< -resize 96x96 -gravity center -extent 96x96 $@ clean-generated: @rm -f $(GENERATED_LOGOS)