WindowsでもOpenJDK 17をコンパイルしたい

はじめに

ついに11に続くLTSである17がGAしましたね。

というわけで、OpenJDKをWindows環境でビルドする方法を確認してみました。

環境

公式のドキュメントを参照する。万葉集にも書かれています。

openjdk.java.net

Visual Studio or Build Tools for Visual Studio

C++コンパイラとかWindows SDKが必要なだけで、Visual Studioが要らなければBuild Toolsだけで大丈夫です。

ワークロードは『C++によるデスクトップ開発』だけ選択しておけば大丈夫っぽいですね。

f:id:jyuch:20210916162227p:plain

Cygwin

Cygwinではビルドに以下が必要になります。

  • autoconf
  • make
  • zip
  • unzip

また、リポジトリからソースコードをクローンするのにgitが必要になるので、併せてインストールしておきます。

JDK 16 or 17

JDKのビルドには、対象のバージョンか一つ下のバージョンのJDKが必要になります。

JDKをビルドするのにJDKが必要なのはなんだかアレですが、まぁしょうがないのでしょう。

コマンドラインオプションで場所を指定できるので、PATHを通したり、JAVA_HOMEを事前に設定しておく必要はありません。

クローン

ここからの操作はCygwinのシェルで実行します。

OpenJDKのソースコードをとってきて、タグをチェックアウトします。

$ git clone https://github.com/openjdk/jdk.git
$ cd jdk
$ git checkout refs/tags/jdk-17+35

ビルド

まずconfigureを実行します。ここでオプションでブートストラップ用のJDKのパスを指定します。

ここでの注意点ですが、C:\path\to\javaのようなスタイルで指定するとうまく動かないそうです。 そのため、/cygdrive/c/path/to/javaのようなスタイルでJDKまでのパスを指定します。

$ bash configure --with-boot-jdk=/cygdrive/c/java/jdk-16.0.2+7

configureが問題なく完了したら、以下のコマンドでビルドします。

$ make all

また、ここではJOBS=並列数で並列度合いを指定できます。 そのほかにも色々オプションがあるっぽいので、詳しくは公式ドキュメントを参照してください。

ビルドが完了すると、build/windows-x86_64-server-release/imagesにいろいろ出来ています。やったね

おわり