NAME    = openjdk8
VERSION = u492

CATEGORIES = utils

DESCRIPTION = OpenJDK 8 Java Development Kit
define BLURB
OpenJDK 8 inherits from JDK 7. Built using OZSWopenjdk7 as the boot JDK
with GCC 12.5.0 on 32-bit Solaris.
endef

DYNURLS   = https://github.com/openjdk/jdk8u/archive/refs/tags/jdk8u492-ga.tar.gz
DISTFILES = jdk8u492-ga.tar.gz
WORKSRC   = $(WORKDIR)/jdk8u-jdk8u492-ga

LICENSE = LICENSE

CONFIGURE_SCRIPTS =
BUILD_SCRIPTS     =
INSTALL_SCRIPTS   =
TEST_SCRIPTS      =

PACKAGES               = OZSWopenjdk8
SPKG_DESC_OZSWopenjdk8 = OpenJDK 8 Java Development Kit
SPKG_CLASSES           = cswdictconf
RUNTIME_DEP_PKGS_OZSWopenjdk8  = OZSWopenjdk7 OZSWlibXtst
BUILD_DEP_PKGS_OZSWopenjdk8    = OZSWgcc12

JDK8_PREFIX   = $(BUILD_PREFIX)/jvm/openjdk8
# configure --with-target-bits=32 on Solaris x86 produces solaris-x86-normal-server-release
JDK8_BUILDDIR = $(WORKSRC)/build/solaris-x86-normal-server-release

# JDK 8 uses a configure-based build with GCC 12.5.0.
# Boot JDK: OZSWopenjdk7 (Java 7). 32-bit only.
JDK8_CONFIG_ARGS  = --with-boot-jdk=$(BUILD_PREFIX)/jvm/openjdk7
JDK8_CONFIG_ARGS += --with-toolchain-type=gcc
JDK8_CONFIG_ARGS += --with-cups-include=$(BUILD_PREFIX)/include
JDK8_CONFIG_ARGS += --with-freetype-include=$(BUILD_PREFIX)/include/freetype2
JDK8_CONFIG_ARGS += --with-freetype-lib=$(BUILD_PREFIX)/lib
JDK8_CONFIG_ARGS += --with-jobs=4
JDK8_CONFIG_ARGS += --with-target-bits=32
JDK8_CONFIG_ARGS += --with-jvm-variants=server
JDK8_CONFIG_ARGS += --disable-zip-debug-info
JDK8_CONFIG_ARGS += --disable-debug-symbols
JDK8_CONFIG_ARGS += --disable-precompiled-headers
JDK8_CONFIG_ARGS += --with-milestone=fcs
JDK8_CONFIG_ARGS += --with-extra-cflags="-I$(BUILD_PREFIX)/include"
JDK8_CONFIG_ARGS += --with-extra-ldflags="-L$(BUILD_PREFIX)/lib -R$(BUILD_PREFIX)/lib"

# Use GCC 12.5.0 from /opt/ozsw/bin.
JDK8_ENV  = PATH=/opt/ozsw/bin:/usr/bin:/bin:$(BUILD_PREFIX)/ant/bin:$(BUILD_PREFIX)/jvm/openjdk7/bin
JDK8_ENV += CC=/opt/ozsw/bin/gcc
JDK8_ENV += CXX=/opt/ozsw/bin/g++
JDK8_ENV += LANG=C LC_ALL=C

XAWT_FILES = $(WORKSRC)/jdk/make/sun/xawt/FILES_c_unix.gmk

include gar/category.mk

.DEFAULT_GOAL := all

post-extract:
	# xawt: ensure AlphaMath.c is in compile list so div8table symbol resolves locally.
	/usr/bin/awk -f $(CURDIR)/../openjdk7/xawt-patch.awk $(XAWT_FILES) > $(WORKSRC)/jdk/make/sun/xawt/FILES_c_unix.gmk.new && mv $(WORKSRC)/jdk/make/sun/xawt/FILES_c_unix.gmk.new $(XAWT_FILES)
	# Stage LICENSE for findlicensefile (looks in WORKROOTDIR/build-global/DISTNAME).
	mkdir -p $(WORKROOTDIR)/build-global/jdk8u-jdk8u492-ga
	cp $(WORKSRC)/LICENSE $(WORKROOTDIR)/build-global/jdk8u-jdk8u492-ga/LICENSE 2>/dev/null || true
	# Apply GCC and X11/OPENWIN patches (toolchain, libraries, hotspot, giflib).
	/opt/ozsw/bin/python3 $(CURDIR)/jdk8-patch.py $(WORKSRC)
	@$(MAKECOOKIE)

pre-build:
	ulimit -n 65536; \
	export $(JDK8_ENV); \
	cd $(WORKSRC) && bash configure $(JDK8_CONFIG_ARGS)
	@$(MAKECOOKIE)

build:
	ulimit -n 65536; \
	export $(JDK8_ENV); \
	cd $(WORKSRC) && gmake JOBS=4 all
	@$(MAKECOOKIE)

pre-install:
	mkdir -p $(DESTDIR)$(JDK8_PREFIX)
	if [ -d $(JDK8_BUILDDIR)/images/j2sdk-image ]; then \
	  cp -r $(JDK8_BUILDDIR)/images/j2sdk-image/. $(DESTDIR)$(JDK8_PREFIX)/; \
	elif [ -d $(JDK8_BUILDDIR)/images/jdk ]; then \
	  cp -r $(JDK8_BUILDDIR)/images/jdk/. $(DESTDIR)$(JDK8_PREFIX)/; \
	fi
	find $(DESTDIR)$(JDK8_PREFIX) -name "* *" -type f -exec rm -f {} \; 2>/dev/null || true
	@$(MAKECOOKIE)
