【2021年版】macOSでLibreOfficeをビルドする

_ 追記: ビルドが通るようになったので、ここに書いてあることをそのまま試しても大丈夫です。
macOSでLibreOfficeをビルドする方法のメモです。ビルドが通ったので、もう一度、make cleanしてビルドし直したら2回目はビルドが通らないとか謎現象にぶち当たって解決できていないけど解明する気がないので転がしておきます。
- Development/BuildingOnMac - The Document Foundation Wiki: https://wiki.documentfoundation.org/Development/BuildingOnMac
- LODE – LibreOffice Development Environment - The Document Foundation Wiki: https://wiki.documentfoundation.org/Development/lode
Xcodeのインストール
XcodeはMac App Storeからインストールします(要Apple ID)。Xcodeをインストールしたら 一度、起動して 利用許諾に同意しておきます。プロジェクトを作る必要はありません。
Command line tools for Xcodeのインストール
下のコマンドでインストールします。
xcode-select --install
「インストールをしますか?」とダイアログが出るのでOKしてインストールします。インストールが終わったら、下のコマンドでパスの確認します。
xcode-select -p
Xcodeのパスになっていなければ、Xcodeになるように -s
オプションで切り替えます。
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
AdoptOpenJDKのインストール
AdoptOpenJDKのサイトから、OpenJDKをダウンロードしてインストールします。
AdoptOpenJDK - Open source, prebuilt OpenJDK binaries: https://adoptopenjdk.net/- Adoptium: https://adoptium.net/
パッケージは、アクセスしてデフォルトで選ばれているOpenJDK 11(LTS)のHotSpotで大丈夫です(執筆時では)。もし、新しいバージョンのLTSがあるなら、それを使っても大丈夫だと思います。パッケージのインストール方法は、ダウンロードしたパッケージをダブルクリックするだけなので問題なくインストールできるはずです。
インストールしたら、 ~/.zshrc
に環境変数JAVA_HOME
を以下のように追記します。
export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
LODEをインストール
LODEは、WindowsとmacOSでLibreOfficeのビルド環境を作ってくれるシェルスクリプトです。詳しくはTDF WikiのLODEの説明を見てください。
最初にLODEをgit clone
します。cloneの場所ですが、LODEの階層が深くなると面倒なのでホームディレクトリ直下にしましょう。面倒でなければ自分の好きなところで構いません。
cd ~/
git clone https://gerrit.libreoffice.org/lode
cloneしたらlodeのディレクトリにあるsetupを実行します。
cd lode
./setup
setupを実行するとLibreOfficeのビルドに必要なものをダウンロードしてコンパイル、インストールするので少しの間、待ってください。 待ってる間に必要な環境変数を設定します。設定は、 ~/.zshrc
にパスとccacheの設定を追記します。
export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home # (上で追加したもの)
export LODE_HOME=$HOME/lode
export PATH="$LODE_HOME/opt/bin:$PATH"
export CCACHE_CPP2=yes
ccacheのキャッシュを32GBに増量しておきます。
ccache --max-size 32G
ccacheの設定は別に間違いではないですが設定ファイルに書いていたほうがいいかも、ということで設定ファイルに設定を書き込みます。
mkdir -p ~/Library/Preferences/ccache/
echo "max_size = 32G" > ~/Library/Preferences/ccache/ccache.conf
LODEのセットアップが終われば、いったんターミナルを終了して起動し直します(source ~/.zshrc
を実行しても構いません)。そして、export
を実行して上で設定したパスが追加されているか確認しておきます。
% export
(以下、環境変数が表示されるので上の設定があるか確認する)
問題がなければインストールした ~/lode
ディレクトリに移動してLibreOfficeのソースコードをcloneします。これも時間がかかるので気長に待ちます。
cd $LODE_HOME
./setup --dev --force
ビルド設定とビルド
セットアップが終われば、lodeディレクトリの中にツールとLibreOfficeのソースコードが揃ったので、LibreOfficeのソースコードの場所に移動します。そして、autogen.input
ファイルを作成してビルドオプションを設定します。
cd dev/code/
vi autogen.input
autogen.input
の設定は、こんな感じです。
--with-distro=LibreOfficeMacOSX
--with-lang=ja en-US
--enable-debug
--enable-sal-log
--disable-odk
--without-help
--without-doxygen
--without-myspell-dicts
--disable-breakpad
--disable-online-update
CC=clang
CXX=clang++
--with-distro
は、オプションをいい感じに設定してくれるので入れておきます。 --with-distro
で設定するOS名はソースコードの中のdistro-configs
ディレクトリの中にあります。
langは、jaのみだけではWarningが出まくって途中でビルドが打ち切られます。なので、en-USも追加します。
CCとCXXは、明示的にclangを指定しておかないとうまく動かないので入れてます。
--enable-sal-log
はhimajinさんに教えてもらったので入れてます。sal-logでログを書き出す設定については、「LibreOfficeでprintfデバッグみたいに変数の値をログに出力する方法」を参照してください。
ビルドの設定ができたので、autogen.sh
を実行してビルドオプションを反映させ、make
を実行すればLibreOfficeのビルドが始まります。 ビルドだけでなくテストも実行する場合は、make
をmake check
に変更してください。
./autogen.sh
make 2>&1 | tee buildlog.$(date "+%Y%m%d%H%M%S")
ビルドが成功すればバイナリの実行ですが、macの場合は以下のコマンドで実行できます。
open instdir/LibreOfficeDev.app
ひととおり終われば
第一関門を突破できたので、あとは~/lode/dev/code
のソースコードをgit pull
すればソースを更新できます。
ビルドは初回だけとても時間がかかりますが、一度ビルドを終わらせていれば更新部分以外はビルドし直さないので初回に比べると時間が短くできるはずです。