OpenJDK 9をMac OS X (Yosemite) でビルドする
動作確認した環境は、Mac OS X 10.10.1 (Yosemite)です。
前提事項
JDK9のビルドにはJDK8が必要です(ヨーグルトみたいですね)。これをBootstrupJDKと呼びます。
そのため、JDK9をビルドする環境では、Javaを実行したらJDK8が動くようにしておきます。そうしたくない場合には、ビルド時にオプション「--with-boot-jdk=path/to/JDK8」を渡しても構いません。
ソースコードの取得
java.netのMercurialリポジトリからjdk9をクローンします。その後、サブプロジェクトのソースコードをスクリプトで取得します。
$ mkdir jdk9-20150102 $ cd jdk9-20150102/ $ hg clone http://hg.openjdk.java.net/jdk9/jdk9 jdk9 [...] $ cd jdk9/ $ bash ./get_source.sh [...]
configure
configureを実行します。
$ bash ./configure [...] configure: error: Could not find freetype! configure exiting with result code 1
freetypeがインストールされていない場合、上のようなエラーになります。XQuartzにfreetypeが入っているのでインストールします。2015/1/2時点の最新版は2.7.7です。インストール後、Xを再起動しろといわれるので、OSごと再起動します。
JDKのビルドオプションでfreetypeのディレクトリを明示的に指定して、あらためてconfigureを実行します。
$ bash ./configure --with-freetype-include=/usr/X11/include/freetype2 --with-freetype-lib=/usr/X11/lib [...] configure: Found freetype include files at /usr/X11/include/freetype2 using --with-freetype checking for freetype includes... /usr/X11/include/freetype2 checking for freetype libraries... /usr/X11/lib checking if we can compile and link with freetype... yes checking if we should bundle freetype... yes [...] ==================================================== A new configuration has been successfully created in [...] using configure arguments '--with-freetype-include=/usr/X11/include/freetype2 --with-freetype-lib=/usr/X11/lib'. [...]
configureに成功しました。
なお、XQuartz 2.7.7をインストールしただけではビルドできないのはバグのようです。 上のようにオプションを指定するか、XQuartz 2.7.5を使えばよいとのことです。
make
makeを実行します。
$ make all [...] ----- Build times ------- Start 2015-01-02 02:41:31 End 2015-01-02 02:47:19 00:05:48 TOTAL ------------------------- Finished building OpenJDK for target 'all'
makeに成功しました。生成された実行ファイルを確認します。
$ ls build/macosx-x86_64-normal-server-release/jdk/bin/ appletviewer javap jjs keytool schemagen idlj jcmd jmap native2ascii serialver jar jconsole jps orbd servertool jarsigner jdb jrunscript pack200 tnameserv java jdeps jsadebugd policytool unpack200 javac jhat jstack rmic wsgen javadoc jimage jstat rmid wsimport javah jinfo jstatd rmiregistry xjc $ build/macosx-x86_64-normal-server-release/jdk/bin/java -version openjdk version "1.9.0-internal" OpenJDK Runtime Environment (build 1.9.0-internal-yuki_2015_01_02_02_37-b00) OpenJDK 64-Bit Server VM (build 1.9.0-internal-yuki_2015_01_02_02_37-b00, mixed mode)
以上です。新年はJDK9ライフをお楽しみください。
*1:タイチさんから情報いただきました