NAME    = openjdk7
VERSION = u351

CATEGORIES = utils

DESCRIPTION = OpenJDK 7 Java Development Kit
define BLURB
OpenJDK 7 is an open-source implementation of the Java Platform,
Standard Edition 7. Used as bootstrap JDK for building OpenJDK 8.
endef

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

LICENSE = LICENSE

CONFIGURE_SCRIPTS =
BUILD_SCRIPTS     =
INSTALL_SCRIPTS   =
TEST_SCRIPTS      =

PACKAGES               = OZSWopenjdk7
SPKG_DESC_OZSWopenjdk7 = OpenJDK 7 Java Development Kit
SPKG_CLASSES           = cswdictconf
RUNTIME_DEP_PKGS_OZSWopenjdk7  = OZSWfreetype OZSWlibX11 OZSWlibXext OZSWlibXi OZSWlibXtst

JDK7_PREFIX   = $(BUILD_PREFIX)/jvm/openjdk7
JDK7_BUILDDIR = $(WORKSRC)/build/solaris-i586

# Use Sun Studio cc/CC from /usr/bin (Sun Studio 12 on OpenSolaris).
JDK7_MAKEARGS  = ALT_BOOTDIR=/usr/jdk/latest
JDK7_MAKEARGS += ALT_COMPILER_PATH=/usr/bin
JDK7_MAKEARGS += ALT_CUPS_HEADERS_PATH=$(BUILD_PREFIX)/include
JDK7_MAKEARGS += ALT_FREETYPE_HEADERS_PATH=$(BUILD_PREFIX)/include/freetype2
JDK7_MAKEARGS += ALT_FREETYPE_LIB_PATH=$(BUILD_PREFIX)/lib
JDK7_MAKEARGS += MILESTONE=fcs
JDK7_MAKEARGS += UPDATE_VERSION=351
JDK7_MAKEARGS += ARCH_DATA_MODEL=32
JDK7_MAKEARGS += SKIP_FASTDEBUG_BUILD=true
JDK7_MAKEARGS += SKIP_DEBUG_BUILD=true
JDK7_MAKEARGS += JOBS=4
JDK7_MAKEARGS += ZIP_DEBUGINFO_FILES=0
JDK7_MAKEARGS += ENABLE_FULL_DEBUG_SYMBOLS=0
JDK7_MAKEARGS += UNZIP=/opt/ozsw/bin/unzip
JDK7_MAKEARGS += ZIPEXE=/opt/ozsw/bin/zip

CORBA_OSC = $(WORKSRC)/corba/src/share/classes/com/sun/corba/se/impl/io/ObjectStreamClass.java
DEFS_SOL  = $(WORKSRC)/jdk/make/common/Defs-solaris.gmk
XAWT_FILES = $(WORKSRC)/jdk/make/sun/xawt/FILES_c_unix.gmk

include gar/category.mk

.DEFAULT_GOAL := all

post-extract:
	# Patch CORBA ObjectStreamClass.java: sun.misc.JavaSecurityAccess absent from JDK 6 rt.jar.
	/usr/bin/gsed -i '/^import sun.misc.JavaSecurityAccess;$$/d' $(CORBA_OSC)
	/usr/bin/gsed -i '/JavaSecurityAccess jsa = SharedSecrets.getJavaSecurityAccess();/d' $(CORBA_OSC)
	/usr/bin/gsed -i 's/return jsa\.doIntersectionPrivilege(pea,/return AccessController.doPrivileged(pea, new AccessControlContext(domains));/' $(CORBA_OSC)
	/usr/bin/gsed -i '/^\s*AccessController\.getContext(),\s*$$/d' $(CORBA_OSC)
	/usr/bin/gsed -i '/^\s*new AccessControlContext(domains));\s*$$/d' $(CORBA_OSC)
	# Fix OPENWIN_HOME: /usr/openwin lacks X11/Xt headers; use $(BUILD_PREFIX) instead.
	# Note: /usr/include/X11 is symlinked to /opt/ozsw/include/X11 at OS level,
	# so Sun Studio finds X11 headers via its default /usr/include search path.
	/usr/bin/gsed -i 's|^OPENWIN_HOME[[:space:]]*=.*|OPENWIN_HOME    = $(BUILD_PREFIX)|' $(DEFS_SOL)
	/usr/bin/gsed -i 's|^OPENWIN_RUNTIME_LIB[[:space:]]*=.*|OPENWIN_RUNTIME_LIB = $(BUILD_PREFIX)/lib$$(ISA_DIR)|' $(DEFS_SOL)
	# xawt: OGLBlitLoops.c references div8table (LOCL in libawt), add AlphaMath.c to xawt.
	/usr/bin/awk -f $(CURDIR)/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 (also copy to WORKDIR for modulated phase)
	cp $(WORKSRC)/LICENSE $(WORKDIR)/LICENSE 2>/dev/null || true
	mkdir -p $(WORKROOTDIR)/build-global/jdk7u-jdk7u351-ga
	cp $(WORKSRC)/LICENSE $(WORKROOTDIR)/build-global/jdk7u-jdk7u351-ga/LICENSE 2>/dev/null || true
	@$(MAKECOOKIE)

pre-build:
	ulimit -n 65536; \
	unset JAVA_HOME; \
	export PATH=/usr/bin:/bin:$(BUILD_PREFIX)/bin:$(BUILD_PREFIX)/ant/bin:/usr/jdk/latest/bin; \
	cd $(WORKSRC) && gmake $(JDK7_MAKEARGS) all
	# CORBA bin.zip is empty (typo in corba/make/Makefile: BIN_ZIP_FILES var).
	# The idl files are in $(BUILD_DIR)/lib; copy them to lib for Release.gmk to find.
	# Skip this step if already copied.
	ls $(JDK7_BUILDDIR)/corba/lib/orb.idl 2>/dev/null && [ ! -f $(JDK7_BUILDDIR)/lib/orb.idl ] && \
	  cp $(JDK7_BUILDDIR)/corba/lib/orb.idl $(JDK7_BUILDDIR)/lib/orb.idl || true
	ls $(JDK7_BUILDDIR)/corba/lib/ir.idl 2>/dev/null && [ ! -f $(JDK7_BUILDDIR)/lib/ir.idl ] && \
	  cp $(JDK7_BUILDDIR)/corba/lib/ir.idl $(JDK7_BUILDDIR)/lib/ir.idl || true
	# Re-run release to copy idl files into j2sdk-image now that they exist.
	cd $(WORKSRC) && gmake $(JDK7_MAKEARGS) all
	@$(MAKECOOKIE)

pre-install:
	mkdir -p $(DESTDIR)$(JDK7_PREFIX)
	cp -r $(JDK7_BUILDDIR)/j2sdk-image/. $(DESTDIR)$(JDK7_PREFIX)/
	find $(DESTDIR)$(JDK7_PREFIX) -name "* *" -type f -exec rm -f {} \; 2>/dev/null || true
	@$(MAKECOOKIE)
