mirror of
https://github.com/jimeh/build-emacs-for-macos.git
synced 2026-02-19 10:46:39 +00:00
The Frameworks folder is the recommended location to store shared libraries within macOS application bundles. Previously we stored them in Contents/MacOS/lib. Latest nightly builds already store all *.eln files under the Frameworks folder, so it seemed like a good time to make the change with the library bundler/embedder too.
58 lines
2.4 KiB
Plaintext
58 lines
2.4 KiB
Plaintext
diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el
|
|
index 638d4b274c..2599211936 100644
|
|
--- a/lisp/emacs-lisp/comp.el
|
|
+++ b/lisp/emacs-lisp/comp.el
|
|
@@ -4224,6 +4224,52 @@ native-compile-async
|
|
(let ((load (not (not load))))
|
|
(native--compile-async files recursively load selector)))
|
|
|
|
+;;;###autoload
|
|
+(defun native-compile-setup-environment-variables (&rest _args)
|
|
+ "Ensure LIBRARY_PATH is set correctly when libgccjit is bundled."
|
|
+ (when (and (eq system-type 'darwin)
|
|
+ (string-match-p "\.app\/Contents\/MacOS\/?$"
|
|
+ invocation-directory))
|
|
+ (let* ((library-path-env (getenv "LIBRARY_PATH"))
|
|
+ (devtools-dir
|
|
+ "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib")
|
|
+ (gcc-dir (expand-file-name
|
|
+ "<%= app_bundle_relative_lib_dir %>"
|
|
+ invocation-directory))
|
|
+ (darwin-dir (expand-file-name
|
|
+ "<%= app_bundle_relative_darwin_lib_dir %>"
|
|
+ invocation-directory))
|
|
+ (lib-paths (list)))
|
|
+
|
|
+ (if library-path-env
|
|
+ (push library-path-env lib-paths))
|
|
+ (if (file-directory-p devtools-dir)
|
|
+ (push devtools-dir lib-paths))
|
|
+ (push darwin-dir lib-paths)
|
|
+ (push gcc-dir lib-paths)
|
|
+
|
|
+ (setenv "LIBRARY_PATH" (mapconcat 'identity lib-paths ":"))))
|
|
+
|
|
+ ;; Remove advice, as it only needs to run once.
|
|
+ (advice-remove 'native-compile
|
|
+ 'native-compile-setup-environment-variables)
|
|
+ (advice-remove 'comp--native-compile
|
|
+ 'native-compile-setup-environment-variables)
|
|
+ (advice-remove 'native-compile-async
|
|
+ 'native-compile-setup-environment-variables)
|
|
+ (advice-remove 'native--compile-async
|
|
+ 'native-compile-setup-environment-variables))
|
|
+
|
|
+;; Ensure environment setup runs before any native compilation.
|
|
+(advice-add 'native-compile :before
|
|
+ 'native-compile-setup-environment-variables)
|
|
+(advice-add 'comp--native-compile :before
|
|
+ 'native-compile-setup-environment-variables)
|
|
+(advice-add 'native-compile-async :before
|
|
+ 'native-compile-setup-environment-variables)
|
|
+(advice-add 'native--compile-async :before
|
|
+ 'native-compile-setup-environment-variables)
|
|
+
|
|
(provide 'comp)
|
|
|
|
;; LocalWords: limplified limplified limplification limplify Limple LIMPLE libgccjit elc eln
|