diff --git a/doc/building.html b/doc/building.html index 7157848f561..95cda58e828 100644 --- a/doc/building.html +++ b/doc/building.html @@ -586,7 +586,7 @@ to compile successfully without issues.
The minimum accepted version of gcc is 10.0. Older versions will not
be accepted by configure.
The JDK is currently known to compile successfully with gcc version -13.2 or newer.
+14.2 or newer.In general, any version between these two should be usable.
The minimum accepted version of clang is 13. Older versions will not diff --git a/doc/building.md b/doc/building.md index 04db6e94d1c..914473916b4 100644 --- a/doc/building.md +++ b/doc/building.md @@ -392,7 +392,7 @@ issues. | Operating system | Toolchain version | | ------------------ | ------------------------------------------- | -| Linux | gcc 13.2.0 | +| Linux | gcc 14.2.0 | | macOS | Apple Xcode 14.3.1 (using clang 14.0.3) | | Windows | Microsoft Visual Studio 2022 version 17.6.5 | @@ -404,7 +404,7 @@ C, and C++14 for C++. The minimum accepted version of gcc is 10.0. Older versions will not be accepted by `configure`. -The JDK is currently known to compile successfully with gcc version 13.2 or +The JDK is currently known to compile successfully with gcc version 14.2 or newer. In general, any version between these two should be usable. diff --git a/make/conf/jib-profiles.js b/make/conf/jib-profiles.js index 02474f3dccb..aa4d846280e 100644 --- a/make/conf/jib-profiles.js +++ b/make/conf/jib-profiles.js @@ -1088,14 +1088,14 @@ var getJibProfilesProfiles = function (input, common, data) { var getJibProfilesDependencies = function (input, common) { var devkit_platform_revisions = { - linux_x64: "gcc13.2.0-OL6.4+1.0", + linux_x64: "gcc14.2.0-OL6.4+1.0", macosx: "Xcode14.3.1+1.0", windows_x64: "VS2022-17.6.5+1.0", - linux_aarch64: "gcc13.2.0-OL7.6+1.0", + linux_aarch64: "gcc14.2.0-OL7.6+1.0", linux_arm: "gcc8.2.0-Fedora27+1.0", - linux_ppc64le: "gcc13.2.0-Fedora_41+1.0", - linux_s390x: "gcc13.2.0-Fedora_41+1.0", - linux_riscv64: "gcc13.2.0-Fedora_41+1.0" + linux_ppc64le: "gcc14.2.0-Fedora_41+1.0", + linux_s390x: "gcc14.2.0-Fedora_41+1.0", + linux_riscv64: "gcc14.2.0-Fedora_41+1.0" }; var devkit_platform = (input.target_cpu == "x86" diff --git a/make/devkit/Tools.gmk b/make/devkit/Tools.gmk index 249eaa66247..f4323f58638 100644 --- a/make/devkit/Tools.gmk +++ b/make/devkit/Tools.gmk @@ -92,8 +92,18 @@ endif # Define external dependencies # Latest that could be made to work. -GCC_VER := 13.2.0 -ifeq ($(GCC_VER), 13.2.0) +GCC_VER := 14.2.0 +ifeq ($(GCC_VER), 14.2.0) + gcc_ver := gcc-14.2.0 + binutils_ver := binutils-2.43 + ccache_ver := ccache-4.10.2 + CCACHE_CMAKE_BASED := 1 + mpfr_ver := mpfr-4.2.1 + gmp_ver := gmp-6.3.0 + mpc_ver := mpc-1.3.1 + gdb_ver := gdb-15.2 + REQUIRED_MIN_MAKE_MAJOR_VERSION := 4 +else ifeq ($(GCC_VER), 13.2.0) gcc_ver := gcc-13.2.0 binutils_ver := binutils-2.41 ccache_ver := ccache-3.7.12 @@ -262,10 +272,18 @@ define Download # Allow override $(1)_DIRNAME ?= $(basename $(basename $(notdir $($(1))))) $(1)_DIR = $(abspath $(SRCDIR)/$$($(1)_DIRNAME)) - $(1)_CFG = $$($(1)_DIR)/configure + ifeq ($$($(1)_CMAKE_BASED),) + $(1)_CFG = $$($(1)_DIR)/configure + $(1)_SRC_MARKER = $$($(1)_DIR)/configure + $(1)_CONFIG = $(CONFIG) + else + $(1)_CFG = cmake + $(1)_SRC_MARKER = $$($(1)_DIR)/CMakeLists.txt + $(1)_CONFIG = $$(CMAKE_CONFIG) $$($(1)_DIR) + endif $(1)_FILE = $(DOWNLOAD)/$(notdir $($(1))) - $$($(1)_CFG) : $$($(1)_FILE) + $$($(1)_SRC_MARKER) : $$($(1)_FILE) mkdir -p $$(SRCDIR) tar -C $$(SRCDIR) -xf $$< $$(foreach p,$$(abspath $$(wildcard patches/$$(ARCH)-$$(notdir $$($(1)_DIR)).patch)), \ @@ -365,6 +383,8 @@ CONFIG = --target=$(TARGET) \ --host=$(HOST) --build=$(BUILD) \ --prefix=$(PREFIX) +CMAKE_CONFIG = -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$(PREFIX) + PATHEXT = $(PREFIX)/bin: PATHPRE = PATH=$(PATHEXT)$(PATH) @@ -576,6 +596,8 @@ ifeq ($(HOST), $(TARGET)) $(PATHPRE) $(ENVS) CFLAGS="$(CFLAGS)" $(GDB_CFG) \ $(CONFIG) \ --with-sysroot=$(SYSROOT) \ + --with-mpfr=$(PREFIX) \ + --with-gmp=$(PREFIX) \ ) > $(@D)/log.config 2>&1 @echo 'done' @@ -591,13 +613,13 @@ endif ################################################################################ # very straightforward. just build a ccache. it is only for host. $(BUILDDIR)/$(ccache_ver)/Makefile \ - : $(CCACHE_CFG) + : $(CCACHE_SRC_MARKER) $(info Configuring $@. Log in $(@D)/log.config) @mkdir -p $(@D) @( \ cd $(@D) ; \ $(PATHPRE) $(ENVS) $(CCACHE_CFG) \ - $(CONFIG) \ + $(CCACHE_CONFIG) \ ) > $(@D)/log.config 2>&1 @echo 'done' @@ -703,6 +725,14 @@ ifeq ($(TARGET), $(HOST)) ld.gold nm objcopy objdump ranlib readelf size strings strip) endif +# Add link to work around "plugin needed to handle lto object" (JDK-8344272) +$(PREFIX)/lib/bfd-plugins/liblto_plugin.so: $(PREFIX)/libexec/gcc/$(TARGET)/$(GCC_VER)/liblto_plugin.so + @echo 'Creating missing $(@F) soft link' + @mkdir -p $(@D) + ln -s $$(realpath -s --relative-to=$(@D) $<) $@ + +missing-links += $(PREFIX)/lib/bfd-plugins/liblto_plugin.so + ################################################################################ bfdlib : $(bfdlib)