File:  [cvs.NetBSD.org] / pkgsrc / lang / openjdk7 / Attic / Makefile
Revision 1.141: download - view: text, annotated - select for diffs
Sun Mar 8 16:42:28 2020 UTC (5 years ago) by bsiegert
Branches: MAIN
CVS tags: HEAD
Revbump packages depending on libffi after .so version change.

Requested by Matthias Ferdinand and Oskar on pkgsrc-users.

# $NetBSD: Makefile,v 1.141 2020/03/08 16:42:28 bsiegert Exp $

JDK_MICRO=	141
DISTNAME=	openjdk-1.7.${JDK_MICRO}-20170813
PKGNAME=	openjdk7-1.7.${JDK_MICRO}
PKGREVISION=	13
CATEGORIES=	lang
MASTER_SITES=	${MASTER_SITE_LOCAL:=openjdk7/}
EXTRACT_SUFX=	.tar.xz

MAINTAINER=	pkgsrc-users@NetBSD.org
HOMEPAGE=	https://openjdk.java.net/
COMMENT=	Open-source implementation of the Java Platform, Standard Edition
LICENSE=	gnu-gpl-v2

DISTFILES=	${DEFAULT_DISTFILES}
EXTRACT_ONLY=	${DISTNAME}${EXTRACT_SUFX}

DIST_SUBDIR=	openjdk7

JAVA_NAME=	openjdk7
JAVA_HOME=	${PREFIX}/java/${JAVA_NAME}
JAVA_WRAPPERS=	jar java javac javadoc javah javap jcmd jhat jps jstack \
		keytool orbd policytool rmid rmiregistry servertool tnameserv

NOT_PAX_MPROTECT_SAFE+=	java/${JAVA_NAME}/bin/[a-ik-z]*
NOT_PAX_MPROTECT_SAFE+=	java/${JAVA_NAME}/bin/j[b-z]*
NOT_PAX_MPROTECT_SAFE+=	java/${JAVA_NAME}/bin/jar*
NOT_PAX_MPROTECT_SAFE+=	java/${JAVA_NAME}/bin/java
NOT_PAX_MPROTECT_SAFE+=	java/${JAVA_NAME}/bin/java[a-z]*

.include "../../mk/bsd.prefs.mk"

.if ${OPSYS} == "NetBSD" && defined(TOOLS_PLATFORM.paxctl)
SUBST_CLASSES+=			set-paxctl
SUBST_STAGE.set-paxctl=		pre-build
SUBST_MESSAGE.set-paxctl=	Setting NetBSD paxctl
SUBST_FILES.set-paxctl=		make/Defs-internal.gmk
SUBST_FILES.set-paxctl+=	jdk/make/com/sun/jmx/Makefile
SUBST_SED.set-paxctl+=		-e 's,/usr/sbin/paxmark.sh,${PAXCTL},'
SUBST_SED.set-paxctl+=		-e 's,-vmsp,+m,'
SUBST_SED.set-paxctl+=		-e 's,-vm,+m,'
SUBST_SED.set-paxctl+=		-e 's,\^PaX,.,'
.endif

MAKE_ENV+=		PKGSRC_ZIPEXE=${TOOLS_PATH.zip}
MAKE_ENV+=		PKGSRC_UNZIP=${TOOLS_PATH.unzip}
MAKE_ENV+=		PKGSRC_UNZIPSFX=${TOOLS_PATH.unzip}sfx

BUILD_DEPENDS+=		mozilla-rootcerts>=1.0.20140820nb2:../../security/mozilla-rootcerts

NO_CONFIGURE=		yes
USE_LANGUAGES=		c c++03
USE_TOOLS+=		gmake pax unzip:run zip:run # patch
UNLIMIT_RESOURCES=	datasize stacksize
WRKSRC=			${WRKDIR}/openjdk
PLIST_SRC+=		${PLIST_SRC_DFLT}
CHECK_SHLIBS_SKIP=	java/${JAVA_NAME}/jre/lib/${LIBDIR_ARCH}/libfontmanager.so
CHECK_SHLIBS_SKIP+=	java/${JAVA_NAME}/jre/lib/${LIBDIR_ARCH}/libjawt.so
CHECK_SHLIBS_SKIP+=	java/${JAVA_NAME}/jre/lib/${LIBDIR_ARCH}/libsunec.so

BUILDLINK_PASSTHRU_DIRS+=	${ALT_BOOTDIR}
PREPEND_PATH+=			${ALT_BOOTDIR}/bin

MAKE_ENV+=	ALT_BOOTDIR=${ALT_BOOTDIR}
MAKE_ENV+=	ALT_DROPS_DIR=${DISTDIR}/${DIST_SUBDIR}
MAKE_ENV+=	ALT_FREETYPE_LIB_PATH=${BUILDLINK_PREFIX.freetype2}/lib
MAKE_ENV+=	ALT_FREETYPE_HEADERS_PATH=${BUILDLINK_PREFIX.freetype2}/include
MAKE_ENV+=	ALT_CUPS_HEADERS_PATH=${BUILDLINK_PREFIX.cups-base}/include
MAKE_ENV+=	ALT_COMPILER_PATH=${WRAPPER_DIR}/bin
MAKE_ENV+=	ALT_PACKAGE_PATH=${PREFIX}
MAKE_ENV+=	RHINO_JAR=${WRKDIR}/${RHINO}/js.jar

MAKE_ENV+=	BUILDLINK_PREFIX.iconv=${BUILDLINK_PREFIX.iconv:Q}
MAKE_ENV+=	ZLIB_LIBS="-L${BUILDLINK_PREFIX.zlib}/lib ${COMPILER_RPATH_FLAG}${BUILDLINK_PREFIX.zlib}/lib -lz"

MAKE_ENV+=	ALT_PARALLEL_COMPILE_JOBS=${MAKE_JOBS:U1}
MAKE_ENV+=	HOTSPOT_BUILD_JOBS=${MAKE_JOBS}
MAKE_ENV+=	USE_PRECOMPILED_HEADER=0

MAKE_ENV+=	HOTSPOT_BUILD_USER=pkgsrc
MAKE_ENV+=	JDK_MICRO_VERSION="0_${JDK_MICRO}"
MAKE_ENV+=	NO_DOCS=true
MAKE_ENV+=	SKIP_COMPARE_IMAGES=true

# Avoid build errors when JAVA_HOME and CLASSPATH are defined by user.
MAKE_ENV+=	JAVA_HOME=
MAKE_ENV+=	CLASSPATH=

BUILD_OPSYS=			${OPSYS:C/.*BSD/bsd/:S/DragonFly/bsd/:S/SunOS/solaris/}
BUILD_ARCH=			${MACHINE_ARCH:S/i386/i586/:S/x86_64/amd64/:S/sparc64/sparcv9/:C/^e?arm.*$/arm/}
LIBDIR_ARCH=			${MACHINE_ARCH:S/x86_64/amd64/:S/sparc64/sparcv9/:C/^e?arm.*$/arm/}
BUILDDIR=			${WRKSRC}/build/${BUILD_OPSYS}-${BUILD_ARCH}
LD_LIBRARY_PATH=		${WRKDIR}/bootstrap/jre/lib/${LIBDIR_ARCH}:${WRKDIR}/bootstrap/jre/lib/${LIBDIR_ARCH}/jli:${WRKDIR}/bootstrap/jre/lib/${LIBDIR_ARCH}/server
MAKE_ENV+=			LD_LIBRARY_PATH=${LD_LIBRARY_PATH}
BUILDLINK_PASSTHRU_RPATHDIRS+=	${PREFIX}/java/${JAVA_NAME}/jre/lib/${LIBDIR_ARCH}

PLIST_SUBST+=	ARCH=${LIBDIR_ARCH}
PLIST_SUBST+=	LOWER_OPSYS=${LOWER_OPSYS}

.include "../../mk/compiler.mk"

.if ${OPSYS} == "SunOS" && !empty(PKGSRC_COMPILER:Mgcc)
MAKE_ENV+=	USE_GCC=1
MAKE_ENV+=	ARCH_DATA_MODEL=${ABI:Q}
.endif

SUBST_CLASSES+=		libpath
SUBST_STAGE.libpath=	pre-build
SUBST_FILES.libpath+=	hotspot/src/os/bsd/vm/os_bsd.cpp
SUBST_VARS.libpath=	PREFIX

# SmartOS has ccs tools in /usr/bin
.if ${OS_VARIANT} == "SmartOS"
SUBST_CLASSES+=		ccspath
SUBST_STAGE.ccspath=	pre-build
SUBST_FILES.ccspath=	jdk/make/common/shared/Defs-utils.gmk
SUBST_FILES.ccspath+=	hotspot/make/solaris/makefiles/build_vm_def.sh
SUBST_SED.ccspath=	-e 's/UNIXCCS_PATH/UNIXCOMMAND_PATH/g'
SUBST_SED.ccspath+=	-e 's,/usr/ccs/bin,/usr/bin,g'
.endif

SUBST_CLASSES.SunOS+=	mapfix
SUBST_STAGE.mapfix=	pre-build
SUBST_FILES.mapfix=	jdk/make/com/sun/java/pack/mapfile-vers
SUBST_FILES.mapfix+=	jdk/make/java/main/java/mapfile-amd64
SUBST_FILES.mapfix+=	jdk/make/java/main/java/mapfile-i586
SUBST_SED.mapfix=	-e '/__fsr_init_value/d'
SUBST_SED.mapfix+=	-e '/__progname/d'

# environ should only be removed from this file (added by patches)
SUBST_CLASSES.SunOS+=	mapfix2
SUBST_STAGE.mapfix2=	pre-build
SUBST_FILES.mapfix2=	jdk/make/com/sun/java/pack/mapfile-vers
SUBST_SED.mapfix2=	-e '/environ/d'

CFLAGS+=	-D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
CXXFLAGS+=	-D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS

.if !empty(PKGSRC_COMPILER:Mgcc) && empty(CC_VERSION:Mgcc-[2345].*)
CFLAGS+=	-fno-lifetime-dse
CFLAGS+=	-fno-delete-null-pointer-checks
.endif

# no multilib support on aarch64 yet
.if !empty(MACHINE_PLATFORM:MNetBSD-*-aarch64)
BUILDLINK_TRANSFORM+=	rm:-m64
.endif

.if !empty(PKGSRC_COMPILER:Mclang)
_WRAP_EXTRA_ARGS.CXX+=	-Wno-parentheses -Wno-sign-conversion \
			-Wno-shorten-64-to-32 -Wno-conversion \
			-Wno-unused-value -Wno-switch-enum -Wno-switch \
			-Wno-tautological-compare \
			-Wno-delete-non-virtual-dtor \
			-Wno-return-type -Wno-unused-parameter \
			-Wno-parentheses-equality -Wno-empty-body
CWRAPPERS_APPEND.cxx+=	-Wno-parentheses -Wno-sign-conversion \
			-Wno-shorten-64-to-32 -Wno-conversion \
			-Wno-unused-value -Wno-switch-enum -Wno-switch \
			-Wno-tautological-compare \
			-Wno-delete-non-virtual-dtor \
			-Wno-return-type -Wno-unused-parameter \
			-Wno-parentheses-equality -Wno-empty-body
.  if ${OPSYS} != "FreeBSD"
_WRAP_EXTRA_ARGS.CXX+=	-Wno-new-returns-null
CWRAPPERS_APPEND.cxx+=	-Wno-new-returns-null
.  endif
BUILDLINK_TRANSFORM+=	rm:-fcheck-new
BUILDLINK_TRANSFORM+=	rm:-fpch-deps
.  if ${MACHINE_ARCH} == "x86_64"
_WRAP_EXTRA_ARGS.CXX+=	-mstackrealign
CWRAPPERS_APPEND.cxx+=	-mstackrealign
.  endif
.endif
.include "bootstrap.mk"
.include "icedtea-extras.mk"

.include "options.mk"

SUBST_CLASSES+=			add-rpaths
SUBST_STAGE.add-rpaths=		pre-build
SUBST_MESSAGE.add-rpaths=	adding X11 run path flags to Makefiles
SUBST_FILES.add-rpaths=		jdk/make/sun/awt/Makefile		\
				jdk/make/sun/awt/mawt.gmk		\
				jdk/make/sun/jawt/Makefile		\
				jdk/make/sun/jdga/Makefile		\
				jdk/make/sun/splashscreen/Makefile	\
				jdk/make/sun/xawt/Makefile
SUBST_SED.add-rpaths=		-e 's|-L$$(OPENWIN_LIB)|-L$$(OPENWIN_LIB) -Wl,-R$$(OPENWIN_LIB)|g'

SUBST_CLASSES+=			fontpaths
SUBST_STAGE.fontpaths=		pre-build
SUBST_MESSAGE.fontpaths=	fixing font paths
SUBST_FILES.fontpaths=		jdk/src/solaris/classes/sun/awt/fontconfigs/bsd.fontconfig.properties
SUBST_FILES.fontpaths+=		jdk/src/solaris/native/sun/awt/fontpath.c
SUBST_VARS.fontpaths=		PREFIX
SUBST_VARS.fontpaths+=		BUILDLINK_PREFIX.fontconfig

PLIST_VARS+=	i386
.if ${MACHINE_ARCH} == "i386"
PLIST.i386=	yes
.endif

PLIST_VARS+=	sctp alsa
.if ${OPSYS} == "FreeBSD"
PLIST.sctp=	yes
PLIST.alsa=	yes
.include "../../audio/alsa-lib/buildlink3.mk"
.endif

post-extract:
	chmod +x ${ANT_BIN}/ant
	${LN} -s mapfile-i586 ${WRKSRC}/jdk/make/java/main/java/mapfile-arm
	${LN} -s mapfile-amd64 ${WRKSRC}/jdk/make/java/main/java/mapfile-aarch64
# These libs are bundled w/ the netbsd-7 bootstrap to facilitate building with
# MKLLVM=yes / MKGCC=no. Nuke them from bootstrap if they are present in base.
.if exists(/lib/libgcc_s.so.1)
	${RM} -f ${ALT_BOOTDIR}/jre/lib/${LIBDIR_ARCH}/libgcc_s.so*
.endif
.if exists(/usr/lib/libstdc++.so.7)
	${RM} -f ${ALT_BOOTDIR}/jre/lib/${LIBDIR_ARCH}/libstdc++.so*
.endif
.if defined(TOOLS_PLATFORM.paxctl)
	${PAXCTL} +m ${WRKDIR}/bootstrap/bin/[a-ik-z]*
	${PAXCTL} +m ${WRKDIR}/bootstrap/bin/j[b-z]*
	${PAXCTL} +m ${WRKDIR}/bootstrap/bin/jar*
	${PAXCTL} +m ${WRKDIR}/bootstrap/bin/java
	${PAXCTL} +m ${WRKDIR}/bootstrap/bin/java[a-z]*
	${PAXCTL} +m ${WRKDIR}/bootstrap/jre/bin/*
.endif

do-build: ${WRKDIR}/stage3-done

# stage 1 builds a native JDK using the bootstrap binaries
${WRKDIR}/stage1-done:
	${_ULIMIT_CMD} cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE_PROGRAM} ${JDK_MAKE_TARGET}
	rm -rf ${ALT_BOOTDIR}
	cd ${BUILDDIR} && mv j2sdk-image ${ALT_BOOTDIR}
	mv ${BUILDDIR} ${BUILDDIR}-stage1
	touch ${.TARGET}

# stage 1.5 reconfigures, since the bootstrap JDK major version might have changed now
${WRKDIR}/stage1_5-done: ${WRKDIR}/stage1-done
.if defined(TOOLS_PLATFORM.paxctl)
	${PAXCTL} +m ${WRKDIR}/bootstrap/bin/[a-ik-z]*
	${PAXCTL} +m ${WRKDIR}/bootstrap/bin/j[b-z]*
	${PAXCTL} +m ${WRKDIR}/bootstrap/bin/jar*
	${PAXCTL} +m ${WRKDIR}/bootstrap/bin/java
	${PAXCTL} +m ${WRKDIR}/bootstrap/bin/java[a-z]*
	${PAXCTL} +m ${WRKDIR}/bootstrap/jre/bin/*
.endif
	touch ${.TARGET}

# stage 2 rebuilds the JDK using native tools
${WRKDIR}/stage2-done: ${WRKDIR}/stage1_5-done
	${_ULIMIT_CMD} cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE_PROGRAM} ${JDK_MAKE_TARGET}
	touch ${BUILDDIR}/j2sdk-image/jre/lib/applet/.keep
	touch ${.TARGET}

# stage 3 builds third party add-ons
${WRKDIR}/stage3-done: ${WRKDIR}/stage2-done ${WRKDIR}/cacerts.out
	touch ${.TARGET}

${WRKDIR}/cacerts.out:
.if defined(TOOLS_PLATFORM.paxctl)
	${PAXCTL} +m ${WRKSRC}/build/*/bin/keytool
.endif
	mkdir ${WRKDIR}/cacerts && cd ${WRKDIR}/cacerts && 		\
		${PREFIX}/sbin/mozilla-rootcerts extract
	for cert in ${WRKDIR}/cacerts/*.pem; do				\
		${INFO_MSG} "Importing $$cert" &&			\
		 ${SETENV} LD_LIBRARY_PATH=${LD_LIBRARY_PATH} LC_ALL=C	\
		  ${BUILDDIR}/bin/keytool				\
		  -noprompt						\
		  -importcert						\
		  -keystore ${.TARGET}					\
		  -alias `${ECHO} $$cert | sed 's,.*/\\([^/]*\\)\\.pem,\\1,'` \
		  -file $$cert						\
		  -storepass changeit;					\
	done

do-install:
	${INSTALL_DATA_DIR} ${DESTDIR}${JAVA_HOME}
	cd ${BUILDDIR}/j2sdk-image && pax -rwpp .			\
	  ${DESTDIR}${JAVA_HOME}/.
	${INSTALL_DATA} ${WRKDIR}/cacerts.out				\
	  ${DESTDIR}${JAVA_HOME}/jre/lib/security/cacerts
	rm -f ${DESTDIR}${JAVA_HOME}/include/jni_md.h
	ln -s ${LOWER_OPSYS}/jni_md.h					\
	  ${DESTDIR}${JAVA_HOME}/include/jni_md.h

.if ${OPSYS} == "NetBSD" || ${OPSYS} == "FreeBSD"
TOOLS_PLATFORM.unzip=
.endif

# Include binutils for objcopy and GNU strip on SmartOS
.if ${OS_VARIANT} == "SmartOS"
.include "../../devel/binutils/buildlink3.mk"
BUILDLINK_DEPMETHOD.binutils?=	build
MAKE_ENV+=	ALT_OBJCOPY=${PREFIX}/bin/gobjcopy
MAKE_ENV+=	STRIP=${PREFIX}/bin/gstrip
.endif

.include "../../converters/libiconv/buildlink3.mk"
.include "../../devel/zlib/buildlink3.mk"
.include "../../fonts/fontconfig/buildlink3.mk"
.include "../../graphics/freetype2/buildlink3.mk"
# Headers from CUPS are required to build the native implementation of
# sun.print.* which is used by java.awt.print.
BUILDLINK_DEPMETHOD.cups-base?=	build
.include "../../print/cups-base/buildlink3.mk"
.include "../../mk/java-env.mk"
.include "../../mk/bsd.pkg.mk"

CVSweb <webmaster@jp.NetBSD.org>