OpenJDK İnşa(Building) Part5
Bu makalede OpenJDK inşa(build) serisinin 5.bölümü işlenecektir.
Aşağıdaki linklerden serinin diğer yazılarına ulaşabilirsiniz.
OpenJDK serisinin 1.bölümü için Link.
OpenJDK serisinin 2.bölümü için Link.
OpenJDK serisinin 3.bölümü için Link.
OpenJDK serisinin 4.bölümü için Link.
Önceki bölümlerde projenin kaynak kodunu edinme ve inşa süreciyle ilgili kısımları işlemiştik.Bu kısımlarda,inşa için gerekli ortam ve kütüphanelerin kurulumuna değinmiştik.Dolayısıyla inşa için gerekli ortamın seçilmesi ve sahip olduğumuz çalışma ortamının verimli ve doğru hale getirilmesini sağlamıştık. Bu bölümle birlikte projenin kaynak kodlarının derlenmesi ve diğer süreçlere değinilecektir.
Araç(Tools) Gereksinimleri
Projenin derleme sürecine geçerken,bu iş için çeşitli araç gereksinimlerine ihtiyaç vardır.Dolayısıyla derleme komutları ve bu komutları destekleyen araçları işlemeye geçebiliriz.
Autoconf:
JDK projesi tüm platformlarda “Autoconf”’u gerektirir.
Autoconf için gerekli olan sürüm en az 2.69 olmalıdır.
Autoconf’un kurulumu aşağıdaki şekilde yapılabilir.
Apt tabanlı linux dağıtımlarına kurmak için:
sudo apt-get install autoconf
Rpm(Fedora,RedHat) tabanlı linux dağıtımlarına kurmak için:
sudo yum install autoconf
Apline linux için:
sudo apk add autoconf
MacOS sistem üzerine kurulumu için:
brew install autoconf
Windows ortamı kurulumu için:
<path to Cygwin setup>/setup-x86_64 -q -P autoconf
Eğer “configure” komutu ile autoconf dosyaların otomatik olarak bulunmazsa,AUTOCONF ile ortamı belirtmeniz gerekecektir. Aşağıda verilen komut bu iş için uygundur.
AUTOCONF=<path to autoconf> configure ...
GNU Make:
JDK için GNU Make aracı gereklidir. Ancak diğer Make marka/çeşitlerini desteklemez. Make,GNU olmalıdır.
GNU Make için en az 3.18 sürümü kullanılmalıdır. Ancak çalışma ortamınız GNU Make 4.0 veya üstünü destekliyorsa,kesinlikle bu sürümler tavsiye ediliyor. Ayrıca GNU Make 4.0 “ — with-output-sync” komutu ile paralel inşa’yı destekler. Böylelikle hız ve kararlılık iyileştirmeleri için faydalı işlevler içerir.
Fakat “configure” komutunun düzgün çalışan bir make sürümünü bulup doğruladığını ve bu make’nin binary yolunu kendi yapılandırma içinde sakladığını unutmayın.Eğer komut satırında make komutunu kullanarak bir derleme süreci başlatırsanız,ilk olarak PATH’inizde bulunan make sürümünü kullanırsınız. Bu PATH’in konfigürasyonda kayıtlı olması gerekmez.
Bu ilk make “bootstrap make” olarak kullanılacak,ve ikinci aşamada,”configure” tarafından bulunan make çağrılacaktır. Normalde bu süreç sorunsuz işleyecektir. Ancak yukarıda belirttiğmiz ideal sürümden daha eski GNU-Make sürümüne sahipseniz veya GNU olmayan bir Make kullanıyorsanız,büyük ihtimalle çeşitli sorunlar yaşayacaksınız.
Eğer “configure” ile bulunan varsayılan make’i geçersiz kılmak ve farklı bir make atamak istiyorsanız aşağıdaki komutu kullanabilirsiniz.
configure MAKE=/opt/gnu/make
GNU Bash:
JDK shell olarak GNU Bash'i gerekli kılar. Bu araç kullanımı için en düşük versiyon 3.2 olmalıdır. Ayrıca JDK projesi için sadece GNU Bash desteklenir. Diğer shell’ler desteklenmez.
Konfigurasyon(configure) Çalıştırılıyor:
JDK’yı inşa edebilmemiz yani derlemeye hazır hale getirebilmemiz için,derleme çıktısının saklanacağı bir dizin-klasör,platform hakkında bilgiler ve JDK’nın nasıl oluşturulacağına dair bazı konfigürasyonlara ihtiyacımız vardır.
Sözünü ettiğimiz konfigürasyon,”configure” betiği tarafından oluşturulur. Bu betiği çağırmanın komutu temel olarak aşağıdaki gibidir:
bash configure [options]
Bu komut,konfigürasyonu içeren bir çıktı dizini oluşturacak ve derleme sonucu için bir alan kuracaktır. Bu dizinin genel olarak görünümü “build/linux-x64-server-release” şeklindedir.
Ancak gerçek adı sizin özel konfigurasyonunuzla alakalıdır. Bu dizine bu dökümantasyonda “$BUILD” adı verilmektedir.
configure betiğini hangi sistemi çalıştırdığınızı,yani çalışma ortamınızı ve bununla ilgili gerekli tüm yapı bileşenlerinin nerede olduğunu anlamaya çalışır.Eğer derleme süreci için tüm ön koşullara sahipseniz,bu komutla hepsi bulunacaktır. Ancak derleme için herhangi bir bileşen otomatik olarak algılanamaz ise,configure süreci sonlanacak ve sebep olan problem hakkında bilgi verilecektir.
Aşağıda bazı komut satırı örneklerine yer verilmiştir.
FreeType2 ile windows 32 bit için configure komutu:
C:\freetype-i586:bash configure --with-freetype=/cygdrive/c/freetype-i586 --with-target-bits=32
JVM ve DTrace sunucusu etkinken bir hata ayıklama derlemesi oluşturmak için:
bash configure --enable-debug --with-jvm-variants=server --enable-dtrace
Common(ortak) Configure Argümanları:
Bu bölümde en yaygın ve en önemli configure argümanlarına yer verilmiştir.
Mevcut tüm yapılandırma argümanları hakkında güncel bilgi almak için aşağıdaki komutu çalıştırın:
bash configure --help
NOT:Bu yardım metninin,JDK ile ilgili olmayan “ — dvidir” gibi autoconf seçeneklerini de içerdiğini unutmayın. Sadece JDK’ya özgü özellikleri listelemek için yukarıdaki komut yerine “bash configure — help=short” komutunu kullanın.
Build’ı Özelleştirmek için Konfigurasyon Argumanları:
Hata ayıklama(debug) düzeyini hızlı hata ayıklama olarak ayarlayın:
--enable-debug
Hızlı hata ayıklama(fastdebug),yavaş hata ayıklama(slowdebug) veya optimize(optimize) edilebilen hata ayıklama düzeyini ayarlayın:
--with-debug-level=<level>
Yerel hata ayıklama sembollerinin oluşturulup oluşturulmayacağını ve nasıl oluşturulacağını belirtin:
--with-native-debug-symbols=<method>
Mevcut yöntemler “none,internal,external,zipped”.
Varsayılan durumu platforma bağlıdır.Daha fazla ayrıntı için “Native Hata Ayıklama Sembolleri”(ileriki yazı bölümlerinde işlenecek) bölümüne bakınız.
Yapının tanımlanacağı sürüm dizesini belirtin:
--with-version-string=<string>
<part>’ın “pre,opt,build,major,minor,security” veya “patch”’den herhangi biri olabileceği bir seçenek belirtin:
--with-version-<part>=<value>
Hotspot’un belirtilen varyantını veya varyantlarını oluşturun:
--with-jvm-variants=<variant>[,<variant>...]
Geçerli varyantlar: server, client, minimal, core, zero, custom.
Tüm varyantların tek bir yapıda birleştirilmesinin mümkün olmadığını unutmayın.
Hotspot’a JVM özelliği olarak <feature> ekleyin:
--enable-jvm-feature-<feature> or --disable-jvm-feature-<feature>
Veya:
--disable-jvm-feature-<feature>
Ayrıca,boşluk veya virgülle ayrılmış olarak etkinleştirilecek özelliklerin bir listesini de belirtebilirsiniz.
Örnek:
--with-jvm-features=<feature>[,<feature>...]
Eğer <feature> önüne bir “-” eklerseniz,ilgili özellik devre dışı bırakılır.
Bu seçenekler,oluşturduğunuz JVM varyantları için varsayılan(default) özellik listesini değiştirir.Özel JVM varyantları için varsayılan(default) liste boştur. Geçerli JVM özelliklerinin tam listesini elde etmek için aşağıdaki komutu kullanabilirsiniz.
bash configure --help
<bits> ile berlitilen hedef platform için bir binary oluşturmak için:
--with-target-bits=<bits>
Ayrıca cross-compile(çapraz derleme) yapmak yerine,64 bitlik bir platform üzerinden 32 bitlik bir çıktı oluşturmak için kullanabilirsiniz. Bu yöntem derleme süresi üzerinde etkili olacaktır.
Linux,BSD ve AIX’de,javanın varsayılan(default) olarak runtime/JNI kütüphanelerini arandıkları yolda geçersiz kılmak ve yeni yol belirtmek mümkündür. Bu durum,sistem JNI kütüphaneleri için özel olarak paylaşılan bir dizinin olduğu durumlarda faydalı olabilir.
Aşağıdaki komutu bu iş için kullanabilirsiniz:
--with-jni-libpath=<path>
-end of