0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Macでgforthをビルドする

0
Last updated at Posted at 2026-07-05

前提知識: なぜ単純に configure && make できないか

  • git からのビルドは一部自己ホスト方式のため、ビルド中に動く gforth が $PATH 上に必要です(prim.i などの生成に使われる)。tarball 版には生成済みファイルが含まれますが、git 版にはありません。
  • macOS 標準の cc/clangconfigure で明示的に拒否されます。既知のバグにより GCC でのビルドが必須です(Apple の Clang は不可)。
  • MINOS2 (GUI)、PDF/PS マニュアル、各種マルチメディアライブラリ(harfbuzz, opus, webp, SDL2, vulkan など)はすべて任意機能で、無くてもビルド・インストールは失敗しません(欠けている場合は自動的に該当機能だけ無効化されます)。

1. 最小構成でビルドする(GUI・PDFマニュアル等は入れない)

CLI 版の gforth 本体だけが欲しい場合は、以下だけで足ります。

依存関係のインストール

xcode-select --install   # 未インストールなら (git, make などの基本ツール)

# Homebrew が無ければ
which brew || /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

brew install gcc autoconf automake libtool
brew install gforth   # ブートストラップ用(下記参照)

gforth を一旦 Homebrew から入れるのは、git ビルドの自己ホスト要件(前提知識を参照)を満たすためです。ビルド完了後にこの Homebrew 版は brew uninstall gforth で消して構いません(自ビルド版に置き換わります)。

GCC のパスを確認する

Apple Silicon (/opt/homebrew) と Intel (/usr/local) でパスが異なります。以下でインストールされた実行ファイル名を確認してください。

ls /opt/homebrew/bin/gcc-* 2>/dev/null || ls /usr/local/bin/gcc-*

例えば gcc-16 のように、末尾にバージョン番号が付いたものが実体です(単なる gcc は Apple Clang のシンボリックリンクの場合があるため使わないこと)。

configure → make → install

./autogen.sh
./configure --without-minos2 CC=gcc-16   # gcc-16 の部分は上で確認した実際の名前に置き換える
make
sudo make install

--without-minos2 で GUI (MINOS2) 関連の機能をまるごと無効化します。configure 実行時に以下のような警告が出ますが、CLI 本体のビルドには影響しないため無視して構いません。

texi2dvi not found, PDF document won't be built.
TeX not found, PDF document won't be built.
makeinfo not found, INFO and TXT document won't be built.
texi2html not found, HTML document won't be built.
libopcodes missing or not useable, using fallback disassembler
Old foreign interfaces not supported (libffi or ffcall).
swig not found.

make の最後に *** Check successful *** と出ればビルド成功です。

インストール確認

gforth --version
echo ': test 2 3 + . ; test bye' | gforth

2. フル機能でビルドする(GUI・マニュアル込み)

MINOS2 GUI や PDF/HTML マニュアルも含めてフルビルドしたい場合は、リポジトリ同梱の install-deps.shBUILD-FROM-SCRATCH を使います。

source ./install-deps.sh   # Homebrew, gcc, harfbuzz, texinfo, XQuartz, MacTeX などを一括インストール
./BUILD-FROM-SCRATCH
sudo make install

MacTeX (数GB) と XQuartz が入るため、ディスク容量に余裕がある場合のみ推奨します。

トラブルシューティング

configure: error: Clang has a long unfixed bug...

CC= にバージョン付きの実際の gcc 実行ファイル名(gcc-16 など)を指定できていません。which gcc が Apple Clang を指している状態で CC=gcc のように指定すると発生します。上記の「GCC のパスを確認する」を参照してください。

makeYou need to configure with a gforth in $PATH to build this part

ブートストラップ用 gforth が $PATH に無い状態で configure を実行しています。brew install gforth で導入したあと、./configure を実行し直してください(Makefile に「gforth なし」の状態が焼き付いているため、gforth を後から入れても再 configure しないと反映されません)。

zsh で no matches found: /usr/local/bin/gcc-* のようなエラー

Apple Silicon では Homebrew は /opt/homebrew 配下にインストールされ、/usr/local/bin/gcc-* は存在しないため zsh のグロブ展開がエラーになります。Intel/Apple Silicon どちらのパスかを確認してから使ってください。

make doc 内で html/ps/pdf 生成が失敗する

makeinfotexi2dvitex が無い場合に出ますが、Makefile 側でこれらのエラーは無視するようになっており、ビルド全体は失敗しません。make install も PDF マニュアルはデフォルトでインストール対象外です。

3. 配布用 .pkg を作る

make installDESTDIR に対応しているため、実システムを汚さずにステージインストールしてから pkgbuild でパッケージ化できます。

rm -rf /tmp/gforth-pkgroot
make install DESTDIR=/tmp/gforth-pkgroot

pkgbuild --root /tmp/gforth-pkgroot \
  --identifier org.gforth.gforth \
  --version 0.7.9_20260610 \
  --install-location / \
  gforth-0.7.9_20260610.pkg
  • --install-location / としているのは、今回の configure prefix が /usr/local であるためです(DESTDIR 配下のパスがそのままインストール時の絶対パスになります)。
  • 生成した .pkgsudo installer -pkg gforth-0.7.9_20260610.pkg -target / または Finder からダブルクリックでインストールできます。
  • 未署名です。 自分だけで使う分には問題ありませんが、他人に配布して GUI からインストールしてもらう場合は Gatekeeper に弾かれます。配布するなら Apple Developer ID での codesignnotarytool による公証が必要です。
  • ライセンス表示やようこそ画面付きのインストーラーにしたい場合は pkgbuild の代わりに(または併用して)productbuild を使ってください。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?