jimeh / build-emacs-for-macos

Somewhat hacky script to automate building of Emac.app on macOS.
484 stars 50 forks source link

libgccjit 11.3 replace .so file to .dylib let `libgccjit_lib_dir` become empty. #71

Closed ccqpein closed 2 years ago

ccqpein commented 2 years ago

I update gcc and libgccjit this morning and the libgccjit.so file in /usr/local/opt/libgccjit/lib/gcc/ changed to libgccjit.0.dylib. And it make libgccjit_lib_dir become empty line 1128

Sounds like they keep this change in future versions disscussion.

Do we have configuration filter or options can make build-emacs-for-macos use libgccjit.dylib instead of .so?

Thank you

Eason0210 commented 2 years ago

I also got this issue after brew upgrade. when build emacs, will got this error:

➜  build-emacs-for-macos git:(master) ./build-emacs-for-macos --native-full-aot
==> INFO: Fetching info for git ref: master
==> INFO: emacs-mirror-emacs-fa52782.tgz already exists locally, attempting to use.
==> INFO: emacs-mirror-emacs-fa52782 source tree exists, attempting to use.
==> CMD: ./autogen.sh
Checking whether you have the necessary tools...
(Read INSTALL.REPO for more details on building Emacs)
Checking for autoconf (need at least version 2.65) ... ok
Your system has the required tools.
Running 'autoreconf -fi -I m4' ...
You can now run './configure'.
==> INFO: Detecting native-comp support: Supported
==> INFO: Compiling from source. This will take a while...
==> INFO: Compiling with native-comp enabled
ERROR: Detected GCC and libgccjit library paths do not belong to the same major
version of GCC. Detected paths:
  - /usr/local/opt/gcc/lib/gcc/11
  -

And emacs-plus have been fix it. https://github.com/d12frosted/homebrew-emacs-plus/issues/455

ccqpein commented 2 years ago

@Eason0210 thanks for your reply. Depends on the discussion in the link, looks like the master version of emacs can accept dylib now.

I change line 1129 to File.join(libgccjit_root_dir, 'lib/gcc/*/libgccjit.0.dylib*') and it works.

But do we need to keep the old .so options there? I dont know ruby, so I left my solution here and wish author or someone else can make a PR for it.

Eason0210 commented 2 years ago

@ccqpein

Depends on the discussion in the link, looks like the master version of emacs can accept dylib now.

Yes, the master branch have been update to accept dylib. see here : https://github.com/emacs-mirror/emacs/commit/faa29fa2c9e9d5a5d7544a1a39b2a89cf57a8439

I change line 1129 to File.join(libgccjit_root_dir, 'lib/gcc/*/libgccjit.0.dylib*') and it works.

Good to know it works for you. I change it to File.join(libgccjit_root_dir, 'lib/gcc/*/libgccjit.dylib*') and it works as well.

jimeh commented 2 years ago

Thanks for this report and information, I'll have a look and push a fix tonight :)