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

nogajun
nogajun

_ 追記: ビルドが通るようになったので、ここに書いてあることをそのまま試しても大丈夫です。

macOSでLibreOfficeをビルドする方法のメモです。ビルドが通ったので、もう一度、make cleanしてビルドし直したら2回目はビルドが通らないとか謎現象にぶち当たって解決できていないけど解明する気がないので転がしておきます。

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をダウンロードしてインストールします。

パッケージは、アクセスしてデフォルトで選ばれている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のビルドが始まります。 ビルドだけでなくテストも実行する場合は、makemake 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すればソースを更新できます。

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