commit:     970458062aa4c59f525e447cc9f7b6251acdb2d1
Author:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
AuthorDate: Thu Apr  6 00:22:21 2023 +0000
Commit:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
CommitDate: Thu Apr  6 00:27:41 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=97045806

dev-java/openjdk: handle lto

Bug: https://bugs.gentoo.org/833098
Closes: https://bugs.gentoo.org/833097
Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org>

 dev-java/openjdk/metadata.xml               |  1 +
 dev-java/openjdk/openjdk-11.0.18_p10.ebuild | 10 +++++++++-
 dev-java/openjdk/openjdk-17.0.6_p10.ebuild  | 10 +++++++++-
 dev-java/openjdk/openjdk-8.362_p09.ebuild   |  6 ++++++
 4 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/dev-java/openjdk/metadata.xml b/dev-java/openjdk/metadata.xml
index 367d2eb36d3e..201e1fe75f50 100644
--- a/dev-java/openjdk/metadata.xml
+++ b/dev-java/openjdk/metadata.xml
@@ -23,6 +23,7 @@
                <flag name="javafx" restrict="&lt;=dev-java/openjdk-9">Provide 
JavaFX support via <pkg>dev-java/openjfx</pkg></flag>
                <flag name="javafx" restrict="&gt;=dev-java/openjdk-11">Import 
OpenJFX modules at build time, via <pkg>dev-java/openjfx</pkg></flag>
                <flag name="jbootstrap">Build OpenJDK twice, the second time 
using the result of the first</flag>
+               <flag name="lto">Enable Link Time Optimization (LTO)</flag>
                <flag name="source">Install JVM sources</flag>
                <flag name="system-bootstrap">Bootstrap using installed 
openjdk</flag>
                <flag name="systemtap" 
restrict="&gt;=dev-java/openjdk-11">Enable SystemTAP/DTrace tracing</flag>

diff --git a/dev-java/openjdk/openjdk-11.0.18_p10.ebuild 
b/dev-java/openjdk/openjdk-11.0.18_p10.ebuild
index b2eafe9b1e68..8f67061d2ac5 100644
--- a/dev-java/openjdk/openjdk-11.0.18_p10.ebuild
+++ b/dev-java/openjdk/openjdk-11.0.18_p10.ebuild
@@ -51,7 +51,7 @@ SRC_URI="
 LICENSE="GPL-2-with-classpath-exception"
 KEYWORDS="amd64 ~arm arm64 ppc64 ~riscv x86"
 
-IUSE="alsa big-endian cups debug doc examples headless-awt javafx +jbootstrap 
selinux source system-bootstrap systemtap"
+IUSE="alsa big-endian cups debug doc examples headless-awt javafx +jbootstrap 
lto selinux source system-bootstrap systemtap"
 
 REQUIRED_USE="
        javafx? ( alsa !headless-awt )
@@ -173,6 +173,12 @@ src_configure() {
        # Strip some flags users may set, but should not. #818502
        filter-flags -fexceptions
 
+       # Strip lto related flags, we rely on USE=lto and 
--with-jvm-features=link-time-opt
+       # https://bugs.gentoo.org/833097
+       # https://bugs.gentoo.org/833098
+       filter-flags '-flto*'
+       filter-flags -fdevirtualize-at-ltrans
+
        # Enabling full docs appears to break doc building. If not
        # explicitly disabled, the flag will get auto-enabled if pandoc and
        # graphviz are detected. pandoc has loads of dependencies anyway.
@@ -207,6 +213,8 @@ src_configure() {
        )
        ! use riscv && myconf+=( --with-jvm-features=shenandoahgc )
 
+       use lto && myconf+=( --with-jvm-features=link-time-opt )
+
        if use javafx; then
                # this is not useful for users, just for upstream developers
                # build system compares mesa version in md file

diff --git a/dev-java/openjdk/openjdk-17.0.6_p10.ebuild 
b/dev-java/openjdk/openjdk-17.0.6_p10.ebuild
index a4fedb98ad08..328018b6e7c8 100644
--- a/dev-java/openjdk/openjdk-17.0.6_p10.ebuild
+++ b/dev-java/openjdk/openjdk-17.0.6_p10.ebuild
@@ -54,7 +54,7 @@ SRC_URI="
 LICENSE="GPL-2-with-classpath-exception"
 KEYWORDS="amd64 ~arm arm64 ppc64 ~riscv x86"
 
-IUSE="alsa big-endian cups debug doc examples headless-awt javafx +jbootstrap 
selinux source system-bootstrap systemtap"
+IUSE="alsa big-endian cups debug doc examples headless-awt javafx +jbootstrap 
lto selinux source system-bootstrap systemtap"
 
 REQUIRED_USE="
        javafx? ( alsa !headless-awt )
@@ -191,6 +191,12 @@ src_configure() {
        # Strip some flags users may set, but should not. #818502
        filter-flags -fexceptions
 
+       # Strip lto related flags, we rely on USE=lto and 
--with-jvm-features=link-time-opt
+       # https://bugs.gentoo.org/833097
+       # https://bugs.gentoo.org/833098
+       filter-flags '-flto*'
+       filter-flags -fdevirtualize-at-ltrans
+
        # Enabling full docs appears to break doc building. If not
        # explicitly disabled, the flag will get auto-enabled if pandoc and
        # graphviz are detected. pandoc has loads of dependencies anyway.
@@ -227,6 +233,8 @@ src_configure() {
 
        use riscv && myconf+=( 
--with-boot-jdk-jvmargs="-Djdk.lang.Process.launchMechanism=vfork" )
 
+       use lto && myconf+=( --with-jvm-features=link-time-opt )
+
        if use javafx; then
                local 
zip="${EPREFIX}/usr/$(get_libdir)/openjfx-${SLOT}/javafx-exports.zip"
                if [[ -r ${zip} ]]; then

diff --git a/dev-java/openjdk/openjdk-8.362_p09.ebuild 
b/dev-java/openjdk/openjdk-8.362_p09.ebuild
index 36aa8a4c97ae..2da4bca4fce1 100644
--- a/dev-java/openjdk/openjdk-8.362_p09.ebuild
+++ b/dev-java/openjdk/openjdk-8.362_p09.ebuild
@@ -132,6 +132,12 @@ src_configure() {
        # Strip some flags users may set, but should not. #818502
        filter-flags -fexceptions
 
+       # Strip lto related flags, no support in this version.
+       # https://bugs.gentoo.org/833097
+       # https://bugs.gentoo.org/833098
+       filter-flags '-flto*'
+       filter-flags -fdevirtualize-at-ltrans
+
        tc-export_build_env CC CXX PKG_CONFIG STRIP
 
        local myconf=(

Reply via email to