![見出し画像](https://assets.st-note.com/production/uploads/images/78161014/rectangle_large_type_2_5f92d79269592dcc141af5f74af229d1.jpeg?width=1200)
macOSでemas28.1がビルドできなくて困った話
コード書いとる?
GW明けにちょいとemacsでもビルドするかー!でどハマりしました。
その解決策のメモ書き。ここはnote
ことの発端
拙者の環境macOS12.3.1 + Xcode13.3.1でemacsをビルドするとconfigureの途中でコケる...
checking for gcc_jit_context_acquire in -lgccjit... no
configure: error: ELisp native compiler was requested, but libgccjit was not found.
Please try installing libgccjit or a similar package.
If you are sure you want Emacs be compiled without ELisp native compiler,
pass the --without-native-compilation option to configure.
あれ?これ以前解決したハズなのに...
なんとなくbrewからインストールしているgccやlibgccjitのバージョンが上がってパス構成が変わったからなのかな?と推察。
ネット検索してみたら同じ状況で困ってるのを発見!この一連の投稿から解決策を模索しました。
解決方法
先のスレッドの最後の方に「最近追加された変更で解決できるんじゃね?」という書き込みを見つける。なるほど28.1リリース後にconfigure.acにこの件での修正が入っている。なるほど!
早速パッチを作って試してみる(ライブラリをgrepで探すのはなかなかにハードな解決策だ…w)
diff --git a/configure.ac b/configure.ac
index efb0bee..97edf57 100644
--- a/configure.ac.org
+++ b/configure.ac
@@ -3926,7 +3926,7 @@ if test "${with_native_compilation}" != "no"; then
MAC_CFLAGS="-I$(dirname $($BREW ls -v libgccjit | \
grep libgccjit.h))"
MAC_LIBS="-L$(dirname $($BREW ls -v libgccjit| \
- grep libgccjit.so\$))"
+ grep -E 'libgccjit\.(so|dylib)$'))"
fi
fi
拙作ビルドスクリプトに追加(for libgccjitってコメントがある場所)
#!/bin/bash
EMACS_VER=28.1
MACPORT_VER=9.0
tar xvfz emacs-${EMACS_VER}.tar.gz
# tar xvfz emacs-${EMACS_VER}.tar
tar xvfz emacs-${EMACS_VER}-mac-${MACPORT_VER}.tar.gz
cd emacs-${EMACS_VER}
patch -p 1 < ../emacs-${EMACS_VER}-mac-${MACPORT_VER}/patch-mac
cp -r ../emacs-${EMACS_VER}-mac-${MACPORT_VER}/mac mac
cp ../emacs-${EMACS_VER}-mac-${MACPORT_VER}/src/* src
cp ../emacs-${EMACS_VER}-mac-${MACPORT_VER}/lisp/term/mac-win.el lisp/term
cp nextstep/Cocoa/Emacs.base/Contents/Resources/Emacs.icns mac/Emacs.app/Contents/Resources/Emacs.icns
# for libgccjit
patch -p 1 < ../configure.patch
installprefix=`pwd`/build
app_dir=$installprefix/Emacs.app/Contents/Resources
compver=x86_64-apple-darwin`uname -r`
# LIBXML2 for Catalina
MACSDK=`xcrun --show-sdk-path`
export LIBXML2_CFLAGS="-I${MACSDK}/usr/include/libxml2"
export LIBXML2_LIBS="-lxml2"
set -e
./autogen.sh
./configure --without-x --without-dbus --without-xpm CC=clang CFLAGS='-Os' --enable-mac-app=$installprefix --prefix=$installprefix --enable-mac-self-contained --with-native-compilation
make
make install
set +e
# mv $installprefix/share/emacs/$EMACS_VER/* $app_dir
# mv $installprefix/share/info $app_dir
# mv $installprefix/share/man $app_dir
# rm -rf $installprefix/share
# mv $installprefix/var $app_dir
# mv $installprefix/bin $app_dir/../MacOS/bin
# mkdir $app_dir/../MacOS/libexec
# mv $installprefix/libexec/emacs/$EMACS_VER/$compver $app_dir/../MacOS/libexec
# rm -rf $installprefix/libexec
# Make the application binary a hard link
# no longer necessary issue#17
# rm $app_dir/../MacOS/Emacs
# ln $app_dir/../MacOS/bin/emacs $app_dir/../MacOS/Emacs
codesign --force --deep --sign "myApp" $installprefix/Emacs.app
echo 'Done! Find your Emacs.app at '$installprefix'.'
恐る恐るビルドスクリプトを動かしてみると...
![](https://assets.st-note.com/img/1652056229788-hOSO1gv4FK.png?width=1200)
おお!無事ビルドできた!!
スッキリ!
この記事が気に入ったらサポートをしてみませんか?