diff --git a/Makefile b/Makefile index 601689636..a615ac011 100644 --- a/Makefile +++ b/Makefile @@ -50,12 +50,17 @@ install-bin: install -m 755 lem $(PREFIX)/bin # TODO: on the fly edit lem.desktop depends on $(PREFIX) -install-desktop: +install-desktop: install -m 644 scripts/install/lem.svg /usr/share/icons/hicolor/scalable/apps/ gtk-update-icon-cache /usr/share/icons/hicolor install -m 644 scripts/install/lem-$(VARIANT).desktop /usr/share/applications/lem.desktop +UNAME_S := $(shell uname -s) +ifeq ($(UNAME_S),Darwin) +install: install-bin +else install: install-bin install-desktop +endif @echo "+--------------------------------+" @echo "| Lem installation complete! |" @echo "+--------------------------------+" @@ -144,5 +149,22 @@ lint: .qlot/bin/sblint extensions/yaml-mode/lem-yaml-mode.asd .qlot/bin/sblint extensions/ruby-mode/lem-ruby-mode.asd +resources/lem.icns: resources/lem.png + mkdir -p resources/lem.iconset + sips -z 16 16 $< --out resources/lem.iconset/icon_16x16.png + sips -z 32 32 $< --out resources/lem.iconset/icon_16x16@2x.png + sips -z 32 32 $< --out resources/lem.iconset/icon_32x32.png + sips -z 64 64 $< --out resources/lem.iconset/icon_32x32@2x.png + sips -z 128 128 $< --out resources/lem.iconset/icon_128x128.png + sips -z 256 256 $< --out resources/lem.iconset/icon_128x128@2x.png + sips -z 256 256 $< --out resources/lem.iconset/icon_256x256.png + sips -z 256 256 $< --out resources/lem.iconset/icon_256x256@2x.png + sips -z 256 256 $< --out resources/lem.iconset/icon_512x512.png + sips -z 256 256 $< --out resources/lem.iconset/icon_512x512@2x.png + iconutil -c icns resources/lem.iconset -o $@ + rm -rf resources/lem.iconset + +icns: resources/lem.icns + AppImage: docker buildx build -f docker/Dockerfile-AppImage --progress=plain --target artifact --output type=local,dest=./artifacts . diff --git a/scripts/macos-deploy.bash b/scripts/macos-deploy.bash index 69f881b9a..e09228916 100755 --- a/scripts/macos-deploy.bash +++ b/scripts/macos-deploy.bash @@ -11,7 +11,8 @@ cd "$parent_dir" qlot install qlot exec sbcl --eval '(ql:quickload :lem)' --eval '(asdf:make :lem)' -# アイコン(存在しなくても続行) +# アイコン(.icns for macOS dock/taskbar icon, .png as fallback) +cp resources/lem.icns bin/lem.app/Contents/Resources/ || true cp resources/lem.png bin/lem.app/Contents/Resources/ || true # ===== 2) OpenSSL を同梱し、参照先を @loader_path 化 ===== diff --git a/src/macosx.lisp b/src/macosx.lisp index 951f3e851..76e25e1c0 100644 --- a/src/macosx.lisp +++ b/src/macosx.lisp @@ -10,3 +10,13 @@ (let ((dir (user-homedir-pathname))) (setq *default-pathname-defaults* dir) (uiop:chdir dir))))) + +;; Tell the deploy library not to bundle tree-sitter native libraries. +;; They are optional and loaded at runtime only when available. +(when (find-package :tree-sitter/ffi) + (let ((ts (find-symbol "TREE-SITTER" :tree-sitter/ffi)) + (tw (find-symbol "TS-WRAPPER" :tree-sitter/ffi))) + (when ts + (setf (deploy:library-dont-deploy-p (deploy:ensure-library ts)) T)) + (when tw + (setf (deploy:library-dont-deploy-p (deploy:ensure-library tw)) T))))