magic/appimage/7/Makefile

72 lines
2.3 KiB
Makefile

MAGIC_SRC_ROOT = ../..
RESOURCES := $(shell find ../rsc/ -type f)
ARCH := $(shell uname -m)
APPIMAGE = Magic-$(ARCH).AppImage
VERSION_MAGIC := $(shell cat $(MAGIC_SRC_ROOT)/VERSION)
VERSION_TSTAMP := $(shell git show -s "--format=%cs" | tr -d '-')
VERSION_HASH := $(shell git show -s "--format=%h")
VERSION_NUM ?= $(VERSION_MAGIC)~$(VERSION_TSTAMP)~$(VERSION_HASH)
VERSION := $(VERSION_NUM)
# Allow CI to override
APPIMAGETOOL_DOWNLOAD_URL ?= https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage
TCL_SOURCE ?= tarball
TCL_VERSION ?= 8.6.18
TCL_REF ?= core-$(subst .,-,$(TCL_VERSION))
TCL_TARBALL_URL ?= https://codeload.github.com/tcltk/tcl/tar.gz/refs/tags/core-$(subst .,-,$(TCL_VERSION))
TK_TARBALL_URL ?= https://codeload.github.com/tcltk/tk/tar.gz/refs/tags/core-$(subst .,-,$(TCL_VERSION))
TCL_TARBALL_SHA256 ?=
TK_TARBALL_SHA256 ?=
TCL_ABI_VERSION := $(shell echo "$(TCL_VERSION)" | cut -d. -f1-2)
all: $(APPIMAGE)
.PHONY: prefix/bin/magic
prefix/bin/magic: Dockerfile Makefile
@echo "APPIMAGE=$(APPIMAGE)"
@echo "VERSION=$(VERSION)"
@echo "ARCH=$(ARCH)"
@echo "RESOURCES=$(RESOURCES)"
@echo "TCL_SOURCE=$(TCL_SOURCE)"
@echo "TCL_VERSION=$(TCL_VERSION)"
@echo "TCL_REF=$(TCL_REF)"
rm -rf prefix
docker build -t magic_build -f ./Dockerfile \
--build-arg TCL_SOURCE="$(TCL_SOURCE)" \
--build-arg TCL_VERSION="$(TCL_VERSION)" \
--build-arg TCL_REF="$(TCL_REF)" \
--build-arg TCL_TARBALL_URL="$(TCL_TARBALL_URL)" \
--build-arg TK_TARBALL_URL="$(TK_TARBALL_URL)" \
--build-arg TCL_TARBALL_SHA256="$(TCL_TARBALL_SHA256)" \
--build-arg TK_TARBALL_SHA256="$(TK_TARBALL_SHA256)" \
$(MAGIC_SRC_ROOT)
id=$$(docker create magic_build) ; \
docker cp $$id:/prefix ./prefix ; \
docker rm -v $$id
mkdir -p prefix/lib/tcl$(TCL_VERSION)
if [ -d "prefix/lib/tcl$(TCL_ABI_VERSION)" ]; then \
cp -r "prefix/lib/tcl$(TCL_ABI_VERSION)" "prefix/lib/tcl$(TCL_VERSION)/library"; \
else \
echo "Missing expected Tcl ABI directory: prefix/lib/tcl$(TCL_ABI_VERSION)" >&2; \
exit 1; \
fi
appimagetool:
curl -L "$(APPIMAGETOOL_DOWNLOAD_URL)" > ./appimagetool
chmod +x ./appimagetool
$(APPIMAGE): prefix/bin/magic appimagetool $(RESOURCES)
cp $(RESOURCES) ./prefix/
./appimagetool prefix
PREFIX ?= /usr/local
install:
install $(APPIMAGE) $(PREFIX)/bin/magic
.PHONY: clean
clean:
rm -f *.AppImage
rm -f prefix.tar.gz
rm -rf prefix