見出し画像

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'.'

恐る恐るビルドスクリプトを動かしてみると...

ビルド成功!

おお!無事ビルドできた!!

スッキリ!

この記事が気に入ったらサポートをしてみませんか?