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

nogajun
nogajun

_ macOSでLibreOfficeをビルドする方法のメモです。ビルドが通ったので、もう一度、make cleanしてビルドし直したら2回目はビルドが通らないとか謎現象にぶち当たって解決できていないけど解明する気がないので転がしておきます。( 追記: ビルドが通るようになったので、ここに書いてあることをそのまま試しても大丈夫です。

Xcodeのインストール

XcodeはMac App Storeからインストールします(要Apple ID)。 インストールしたら一度、起動して 利用許諾に同意しておきます。プロジェクトなどを作る必要はありません。

Command line tools for Xcodeのインストール

下のコマンドでインストールします。

 % xcode-select --install

「インストールをしますか?」とダイアログが出るのでOKしてインストールします。インストールが終わったら、下のコマンドでパスの確認をしておきます。

 % xcode-select -p

Xcodeのパスになっていなければ、 -s オプションでXcodeになるように切り替えておきます。

 % sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

AdoptOpenJDKのインストール

AdoptOpenJDKのサイトから、OpenJDKをダウンロードしてインストールします。

パッケージは、アクセスしてデフォルトで選ばれている、OpenJDK 11(LTS)のHotSpotで大丈夫です。 パッケージのインストール方法は、ダウンロードしたパッケージをダブルクリックするだけなので問題なくインストールできるはずです。

インストールしたら、 ~/.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

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のキャッシュを30GBに増量しておきます。

 % ccache --max-size 30G

LODEのセットアップが終われば、いったんターミナルを終了して起動し直します。そして、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すればソースを更新できます。

ビルドは、上のようにすればビルドできますが、一度ビルドを終わらせていれば更新部分以外はビルドし直さないので、初回に比べると時間がかからずできるはずです。