View | Details | Raw Unified | Return to bug 201308 | Differences between
and this patch

Collapse All | Expand All

(-)Makefile (-5 / +48 lines)
Lines 45-51 Link Here
45
BUILD_DEPENDS+=	${UNZIP_CMD}:${PORTSDIR}/archivers/unzip
45
BUILD_DEPENDS+=	${UNZIP_CMD}:${PORTSDIR}/archivers/unzip
46
.endif
46
.endif
47
47
48
ONLY_FOR_ARCHS=	i386 amd64
48
ONLY_FOR_ARCHS=	i386 amd64 armv6
49
WRKSRC=		${WRKDIR}/${PORTNAME}
49
WRKSRC=		${WRKDIR}/${PORTNAME}
50
50
51
DOS2UNIX_FILES= jdk/src/bsd/doc/man/appletviewer.1 \
51
DOS2UNIX_FILES= jdk/src/bsd/doc/man/appletviewer.1 \
Lines 189-195 Link Here
189
.else
189
.else
190
JRE_IMAGEDIR=	${JDK_BUILDDIR}/images/j2re-image
190
JRE_IMAGEDIR=	${JDK_BUILDDIR}/images/j2re-image
191
.endif
191
.endif
192
JDK_OSARCH=	bsd-${ARCH:S/i386/x86/:S/amd64/x86_64/}
192
JDK_OSARCH=	bsd-${ARCH:S/i386/x86/:S/amd64/x86_64/:S/armv6/arm/}
193
INSTALLDIR=	${PREFIX}/${PKGBASE}
193
INSTALLDIR=	${PREFIX}/${PKGBASE}
194
194
195
NO_CCACHE=		yes
195
NO_CCACHE=		yes
Lines 260-265 Link Here
260
260
261
.include <bsd.port.options.mk>
261
.include <bsd.port.options.mk>
262
262
263
.if ${ARCH} == "armv6"
264
CONFIGURE_ARGS+=	--with-jvm-variants=zero
265
266
# we're building a zero build
267
JDK_BUILDDIR=	${WRKSRC}/build/${JDK_OSARCH}-normal-zero-${JDK_BUILD_TYPE}
268
269
# bootstrap-openjdk is based on openjdk7 and can compile openjdk8
270
BOOTSTRAP_JDKS=		${LOCALBASE}/bootstrap-openjdk
271
BOOTSTRAPJDKDIR=	${LOCALBASE}/bootstrap-openjdk
272
273
# libffi is needed for zerobuild
274
BUILD_DEPENDS+= ${BOOTSTRAPJDKDIR}/bin/javac:${PORTSDIR}/java/bootstrap-openjdk
275
LIB_DEPENDS+=	libffi.so:${PORTSDIR}/devel/libffi
276
.endif
277
263
.if ${PORT_OPTIONS:MDEBUG}
278
.if ${PORT_OPTIONS:MDEBUG}
264
JDK_BUILD_TYPE=	slowdebug
279
JDK_BUILD_TYPE=	slowdebug
265
.elif ${PORT_OPTIONS:MDEBUGFAST}
280
.elif ${PORT_OPTIONS:MDEBUGFAST}
Lines 358-363 Link Here
358
.endif
373
.endif
359
	@${CHMOD} 755 ${WRKSRC}/configure
374
	@${CHMOD} 755 ${WRKSRC}/configure
360
375
376
.if ${ARCH} == "armv6"
377
	# From NetBSD http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/lang/openjdk7/hacks.mk
378
	# Workaround incorrect constant folding of subnormals in javac when the FPU
379
	# does not handle subnormal arithmetic, like on ARM in Flush-to-zero mode.
380
	# These workarounds avoid underflow conditions during the bootstrap so the
381
	# JDK can correctly build itself. Compiling or running programs other than
382
	# openjdk itself on such hardware may still cause unexpected behaviour.
383
	#
384
	@${REINPLACE_CMD} -e 's|2.2250738585072014e-308d*|Double.longBitsToDouble(0x10000000000000L)|ig' \
385
		-e 's|0x1.0p-1022d*|Double.longBitsToDouble(0x10000000000000L)|ig' \
386
		-e 's|4.9e-324d*|Double.longBitsToDouble(0x1L)|ig' \
387
		-e 's|0x0.0000000000001p-1022d*|Double.longBitsToDouble(0x1L)|ig' \
388
		${WRKSRC}/jdk/src/share/classes/sun/misc/DoubleConsts.java \
389
		${WRKSRC}/jdk/src/share/classes/java/lang/Double.java
390
	@${REINPLACE_CMD} -e 's|1.17549435e-38f*|Float.intBitsToFloat(0x800000)|ig' \
391
		-e 's|0x1.0p-126f*|Float.intBitsToFloat(0x800000)|ig' \
392
		-e 's|1.4e-45f*|Float.intBitsToFloat(0x1)|ig' \
393
		-e 's|0x0.000002P-126f*|Float.intBitsToFloat(0x1)|ig' \
394
		${WRKSRC}/jdk/src/share/classes/sun/misc/FloatConsts.java \
395
		${WRKSRC}/jdk/src/share/classes/java/lang/Float.java
396
	@${REINPLACE_CMD} -e 's|n.floatValue() == 0.0f && !isZero(proper)|& \&\& Float.floatToIntBits(n) != 0x1|' \
397
		-e 's|n.doubleValue() == 0.0d && !isZero(proper)|& \&\& Double.doubleToLongBits(n) != 0x1L|' \
398
		${WRKSRC}/langtools/src/share/classes/com/sun/tools/javac/parser/JavacParser.java
399
	@${REINPLACE_CMD} -e 's|x == 0.0f && 1.0f / x > 0.0f|Float.floatToIntBits(x) == 0x0|g' \
400
		-e 's|x == 0.0d && 1.0d / x > 0.0d|Double.doubleToLongBits(x) == 0x0L|g' \
401
		${WRKSRC}/langtools/src/share/classes/com/sun/tools/javac/jvm/Items.java
402
.endif
403
361
run-autotools-autoconf:
404
run-autotools-autoconf:
362
	@cd ${CONFIGURE_WRKSRC} && ${SETENV} ${AUTOTOOLS_ENV} bash autogen.sh
405
	@cd ${CONFIGURE_WRKSRC} && ${SETENV} ${AUTOTOOLS_ENV} bash autogen.sh
363
406
Lines 384-397 Link Here
384
	@cd ${JDK_IMAGEDIR} && ${COPYTREE_SHARE} . ${STAGEDIR}${INSTALLDIR}
427
	@cd ${JDK_IMAGEDIR} && ${COPYTREE_SHARE} . ${STAGEDIR}${INSTALLDIR}
385
	@cd ${STAGEDIR}${INSTALLDIR} && \
428
	@cd ${STAGEDIR}${INSTALLDIR} && \
386
	    ${FIND} bin jre/bin -type f -exec ${CHMOD} ${BINMODE} {} \; && \
429
	    ${FIND} bin jre/bin -type f -exec ${CHMOD} ${BINMODE} {} \; && \
387
	    ${CHMOD} ${BINMODE} jre/lib/${ARCH}/jexec \
430
	    ${CHMOD} ${BINMODE} jre/lib/${ARCH:S/armv6/arm/}/jexec \
388
	    jre/lib/${ARCH}/jspawnhelper lib/${ARCH}/jexec
431
	    jre/lib/${ARCH:S/armv6/arm/}/jspawnhelper lib/${ARCH:S/armv6/arm/}/jexec
389
	@${ECHO} "@dir ${INSTALLDIR}/jre/lib/applet" >> ${TMPPLIST}
432
	@${ECHO} "@dir ${INSTALLDIR}/jre/lib/applet" >> ${TMPPLIST}
390
.else
433
.else
391
	@cd ${JRE_IMAGEDIR} && ${COPYTREE_SHARE} . ${STAGEDIR}${INSTALLDIR}
434
	@cd ${JRE_IMAGEDIR} && ${COPYTREE_SHARE} . ${STAGEDIR}${INSTALLDIR}
392
	@cd ${STAGEDIR}${INSTALLDIR} && \
435
	@cd ${STAGEDIR}${INSTALLDIR} && \
393
	    ${FIND} bin -type f -exec ${CHMOD} ${BINMODE} {} \; && \
436
	    ${FIND} bin -type f -exec ${CHMOD} ${BINMODE} {} \; && \
394
	    ${CHMOD} ${BINMODE} lib/${ARCH}/jexec lib/${ARCH}/jspawnhelper
437
	    ${CHMOD} ${BINMODE} lib/${ARCH:S/armv6/arm/}/jexec lib/${ARCH:S/armv6/arm/}/jspawnhelper
395
	@${ECHO} "@dir ${INSTALLDIR}/lib/applet" >> ${TMPPLIST}
438
	@${ECHO} "@dir ${INSTALLDIR}/lib/applet" >> ${TMPPLIST}
396
.endif
439
.endif
397
	@${ECHO} "@unexec ${LOCALBASE}/bin/unregistervm ${INSTALLDIR}/bin/java" >> ${TMPPLIST}
440
	@${ECHO} "@unexec ${LOCALBASE}/bin/unregistervm ${INSTALLDIR}/bin/java" >> ${TMPPLIST}
(-)files/patch-hotspot_src_os__cpu_bsd__zero_vm_atomic__bsd__zero.inline.hpp (+46 lines)
Line 0 Link Here
1
--- hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp.orig	2015-06-03 16:41:00 UTC
2
+++ hotspot/src/os_cpu/bsd_zero/vm/atomic_bsd_zero.inline.hpp
3
@@ -112,8 +112,16 @@ static inline int m68k_lock_test_and_set
4
  *
5
  */
6
 
7
+#if defined(__FreeBSD__)
8
+#include <machine/atomic.h>
9
+#define __kernel_cmpxchg(oldval, newval, ptr) (!atomic_cmpset_rel_32((volatile u_int32_t *)(ptr), (u_int32_t)(oldval), (u_int32_t)(newval)))
10
+#elif defined(__NetBSD__)
11
+#include <sys/atomic.h>
12
+#define __kernel_cmpxchg(oldval, newval, ptr) ((unsigned int)(oldval) != atomic_cas_uint((volatile unsigned int*)(ptr), (unsigned int)(oldval), (unsigned int)(newval)))
13
+#else
14
 typedef int (__kernel_cmpxchg_t)(int oldval, int newval, volatile int *ptr);
15
 #define __kernel_cmpxchg (*(__kernel_cmpxchg_t *) 0xffff0fc0)
16
+#endif
17
 
18
 
19
 
20
@@ -177,7 +185,7 @@ inline void Atomic::store_ptr(intptr_t s
21
 
22
 inline jint Atomic::add(jint add_value, volatile jint* dest) {
23
 #ifdef ARM
24
-  return arm_add_and_fetch(dest, add_value);
25
+  return arm_add_and_fetch((volatile int*)dest, add_value);
26
 #else
27
 #ifdef M68K
28
   return m68k_add_and_fetch(dest, add_value);
29
@@ -189,7 +197,7 @@ inline jint Atomic::add(jint add_value, 
30
 
31
 inline intptr_t Atomic::add_ptr(intptr_t add_value, volatile intptr_t* dest) {
32
 #ifdef ARM
33
-  return arm_add_and_fetch(dest, add_value);
34
+  return arm_add_and_fetch((volatile int*)dest, add_value);
35
 #else
36
 #ifdef M68K
37
   return m68k_add_and_fetch(dest, add_value);
38
@@ -286,7 +294,7 @@ inline intptr_t Atomic::cmpxchg_ptr(intp
39
                                     volatile intptr_t* dest,
40
                                     intptr_t compare_value) {
41
 #ifdef ARM
42
-  return arm_compare_and_swap(dest, compare_value, exchange_value);
43
+  return arm_compare_and_swap((volatile int*)dest, compare_value, exchange_value);
44
 #else
45
 #ifdef M68K
46
   return m68k_compare_and_swap(dest, compare_value, exchange_value);
(-)files/patch-hotspot_src_os__cpu_bsd__zero_vm_orderAccess__bsd__zero.inline.hpp (+21 lines)
Line 0 Link Here
1
ARM: Substitute Linux atomic ops with NetBSD atomic ops
2
3
--- hotspot/src/os_cpu/bsd_zero/vm/orderAccess_bsd_zero.inline.hpp.orig	2015-06-03 15:49:41 UTC
4
+++ hotspot/src/os_cpu/bsd_zero/vm/orderAccess_bsd_zero.inline.hpp
5
@@ -37,8 +37,16 @@
6
  * and gcc __sync_synchronize(); implementation does not use the kernel
7
  * helper for all gcc versions so it is unreliable to use as well.
8
  */
9
+#if defined(__FreeBSD__)
10
+#include <machine/atomic.h>
11
+#define __kernel_dmb dmb
12
+#elif defined(__NetBSD__)
13
+#include <sys/atomic.h>
14
+#define __kernel_dmb membar_sync
15
+#else
16
 typedef void (__kernel_dmb_t) (void);
17
 #define __kernel_dmb (*(__kernel_dmb_t *) 0xffff0fa0)
18
+#endif
19
 
20
 #define FULL_MEM_BARRIER __kernel_dmb()
21
 #define READ_MEM_BARRIER __kernel_dmb()
(-)files/patch-hotspot_src_os__cpu_bsd__zero_vm_os__bsd__zero.cpp (+26 lines)
Line 0 Link Here
1
clang objects to redefining builtins.
2
3
--- hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp.orig	2015-06-03 15:48:43 UTC
4
+++ hotspot/src/os_cpu/bsd_zero/vm/os_bsd_zero.cpp
5
@@ -446,21 +446,6 @@ extern "C" {
6
   }
7
 };
8
 
9
-/////////////////////////////////////////////////////////////////////////////
10
-// Implementations of atomic operations not supported by processors.
11
-//  -- http://gcc.gnu.org/onlinedocs/gcc-4.2.1/gcc/Atomic-Builtins.html
12
-
13
-#ifndef _LP64
14
-extern "C" {
15
-  long long unsigned int __sync_val_compare_and_swap_8(
16
-    volatile void *ptr,
17
-    long long unsigned int oldval,
18
-    long long unsigned int newval) {
19
-    ShouldNotCallThis();
20
-  }
21
-};
22
-#endif // !_LP64
23
-
24
 #ifndef PRODUCT
25
 void os::verify_stack_alignment() {
26
 }

Return to bug 201308