6891677: java/build integrate zero assembler JDK changes
Build changes for the Zero assembler port Reviewed-by: ohair, tbell
This commit is contained in:
parent
4d263d042f
commit
c83af33205
@ -116,8 +116,16 @@ CFLAGS_REQUIRED_sparcv9 += -m64 -mcpu=v9
|
||||
LDFLAGS_COMMON_sparcv9 += -m64 -mcpu=v9
|
||||
CFLAGS_REQUIRED_sparc += -m32 -mcpu=v9
|
||||
LDFLAGS_COMMON_sparc += -m32 -mcpu=v9
|
||||
CFLAGS_REQUIRED = $(CFLAGS_REQUIRED_$(ARCH))
|
||||
LDFLAGS_COMMON += $(LDFLAGS_COMMON_$(ARCH))
|
||||
ifeq ($(ZERO_BUILD), true)
|
||||
CFLAGS_REQUIRED = $(ZERO_ARCHFLAG)
|
||||
ifeq ($(ZERO_ENDIANNESS), little)
|
||||
CFLAGS_REQUIRED += -D_LITTLE_ENDIAN
|
||||
endif
|
||||
LDFLAGS_COMMON += $(ZERO_ARCHFLAG)
|
||||
else
|
||||
CFLAGS_REQUIRED = $(CFLAGS_REQUIRED_$(ARCH))
|
||||
LDFLAGS_COMMON += $(LDFLAGS_COMMON_$(ARCH))
|
||||
endif
|
||||
|
||||
# If this is a --hash-style=gnu system, use --hash-style=both
|
||||
# The gnu .hash section won't work on some Linux systems like SuSE 10.
|
||||
@ -217,7 +225,7 @@ endif
|
||||
|
||||
EXTRA_LIBS += -lc
|
||||
|
||||
LDFLAGS_DEFS_OPTION = -z defs
|
||||
LDFLAGS_DEFS_OPTION = -Xlinker -z -Xlinker defs
|
||||
LDFLAGS_COMMON += $(LDFLAGS_DEFS_OPTION)
|
||||
|
||||
#
|
||||
|
@ -85,7 +85,7 @@ ifneq (,$(findstring $(PLATFORM), linux solaris)) # UNIX systems
|
||||
endif
|
||||
endif
|
||||
ifeq ($(PLATFORM), linux)
|
||||
LDFLAGS += -z origin
|
||||
LDFLAGS += -Wl,-z -Wl,origin
|
||||
LDFLAGS += -Wl,--allow-shlib-undefined
|
||||
LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/../lib/$(LIBARCH)/jli
|
||||
LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/../jre/lib/$(LIBARCH)/jli
|
||||
@ -279,8 +279,14 @@ $(OBJDIR)/main.$(OBJECT_SUFFIX): $(LAUNCHER_SHARE_SRC)/bin/main.c
|
||||
|
||||
#
|
||||
# How to install jvm.cfg.
|
||||
#
|
||||
$(JVMCFG): $(LAUNCHER_PLATFORM_SRC)/bin/$(ARCH)/jvm.cfg
|
||||
#
|
||||
ifeq ($(ZERO_BUILD), true)
|
||||
JVMCFG_ARCH = zero
|
||||
else
|
||||
JVMCFG_ARCH = $(ARCH)
|
||||
endif
|
||||
|
||||
$(JVMCFG): $(LAUNCHER_PLATFORM_SRC)/bin/$(JVMCFG_ARCH)/jvm.cfg
|
||||
$(install-file)
|
||||
|
||||
#
|
||||
|
@ -109,7 +109,7 @@ else
|
||||
LDFLAGS += -R \$$ORIGIN/jli
|
||||
endif
|
||||
ifeq ($(PLATFORM), linux)
|
||||
LDFLAGS += -z origin
|
||||
LDFLAGS += -Wl,-z -Wl,origin
|
||||
LDFLAGS += -Wl,--allow-shlib-undefined
|
||||
LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/jli
|
||||
endif
|
||||
|
@ -48,11 +48,15 @@ ZIP_SRC = $(SHARE_SRC)/native/java/util/zip/zlib-$(ZLIB_VERSION)
|
||||
LAUNCHER_SHARE_SRC = $(SHARE_SRC)/bin
|
||||
LAUNCHER_PLATFORM_SRC = $(PLATFORM_SRC)/bin
|
||||
|
||||
ifeq ($(ZERO_BUILD), true)
|
||||
ERGO_FAMILY=zero
|
||||
else
|
||||
ifeq ($(ARCH_FAMILY), amd64)
|
||||
ERGO_FAMILY=i586
|
||||
else
|
||||
ERGO_FAMILY=$(ARCH_FAMILY)
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
#
|
||||
|
@ -94,11 +94,13 @@ ifeq ($(INCLUDE_SA), true)
|
||||
endif
|
||||
endif # INCLUDE_SA
|
||||
|
||||
# Hotspot client is only available on 32-bit builds
|
||||
# Hotspot client is only available on 32-bit non-Zero builds
|
||||
ifneq ($(ZERO_BUILD), true)
|
||||
ifeq ($(ARCH_DATA_MODEL), 32)
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVM_NAME) \
|
||||
$(LIB_LOCATION)/$(CLIENT_LOCATION)/Xusage.txt
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(PLATFORM), windows)
|
||||
# Windows vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv Windows
|
||||
@ -171,6 +173,7 @@ ifeq ($(PLATFORM), solaris)
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMDB_NAME)
|
||||
endif
|
||||
|
||||
ifneq ($(ZERO_BUILD), true)
|
||||
ifeq ($(ARCH_DATA_MODEL), 32)
|
||||
|
||||
IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(LIBJSIG_NAME)
|
||||
@ -201,6 +204,8 @@ endif # 32bit solaris
|
||||
|
||||
endif # 32bit
|
||||
|
||||
endif # ZERO_BUILD
|
||||
|
||||
# NOT Windows ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ NOT Windows
|
||||
|
||||
endif # PLATFORM
|
||||
|
@ -55,21 +55,25 @@ ifeq ($(PLATFORM), solaris)
|
||||
|
||||
endif # PLATFORM solaris
|
||||
|
||||
ifeq ($(ARCH), i586)
|
||||
CPPFLAGS += -DX_ARCH=X_I586
|
||||
endif # ARCH i586
|
||||
ifeq ($(ZERO_BUILD), true)
|
||||
CPPFLAGS += -DX_ARCH=X_ZERO
|
||||
else
|
||||
ifeq ($(ARCH), i586)
|
||||
CPPFLAGS += -DX_ARCH=X_I586
|
||||
endif # ARCH i586
|
||||
|
||||
ifeq ($(ARCH), sparc)
|
||||
CPPFLAGS += -DX_ARCH=X_SPARC
|
||||
endif # ARCH sparc
|
||||
ifeq ($(ARCH), sparc)
|
||||
CPPFLAGS += -DX_ARCH=X_SPARC
|
||||
endif # ARCH sparc
|
||||
|
||||
ifeq ($(ARCH), sparcv9)
|
||||
CPPFLAGS += -DX_ARCH=X_SPARCV9
|
||||
endif # ARCH sparcv9
|
||||
ifeq ($(ARCH), sparcv9)
|
||||
CPPFLAGS += -DX_ARCH=X_SPARCV9
|
||||
endif # ARCH sparcv9
|
||||
|
||||
ifeq ($(ARCH), amd64)
|
||||
CPPFLAGS += -DX_ARCH=X_AMD64
|
||||
endif # ARCH amd64
|
||||
ifeq ($(ARCH), amd64)
|
||||
CPPFLAGS += -DX_ARCH=X_AMD64
|
||||
endif # ARCH amd64
|
||||
endif
|
||||
|
||||
|
||||
# files needed for MIDI i/o
|
||||
|
@ -339,3 +339,82 @@ fi
|
||||
PATH="${path4sdk}"
|
||||
export PATH
|
||||
|
||||
# Export variables required for Zero
|
||||
if [ "${ZERO_BUILD}" = true ] ; then
|
||||
# ZERO_LIBARCH is the name of the architecture-specific
|
||||
# subdirectory under $JAVA_HOME/jre/lib
|
||||
arch=$(uname -m)
|
||||
case "${arch}" in
|
||||
x86_64) ZERO_LIBARCH=amd64 ;;
|
||||
i?86) ZERO_LIBARCH=i386 ;;
|
||||
sparc64) ZERO_LIBARCH=sparcv9 ;;
|
||||
arm*) ZERO_LIBARCH=arm ;;
|
||||
*) ZERO_LIBARCH="$(arch)"
|
||||
esac
|
||||
export ZERO_LIBARCH
|
||||
|
||||
# ARCH_DATA_MODEL is the number of bits in a pointer
|
||||
case "${ZERO_LIBARCH}" in
|
||||
i386|ppc|s390|sparc|arm)
|
||||
ARCH_DATA_MODEL=32
|
||||
;;
|
||||
amd64|ppc64|s390x|sparcv9|ia64|alpha)
|
||||
ARCH_DATA_MODEL=64
|
||||
;;
|
||||
*)
|
||||
echo "ERROR: Unable to determine ARCH_DATA_MODEL for ${ZERO_LIBARCH}"
|
||||
exit 1
|
||||
esac
|
||||
export ARCH_DATA_MODEL
|
||||
|
||||
# ZERO_ENDIANNESS is the endianness of the processor
|
||||
case "${ZERO_LIBARCH}" in
|
||||
i386|amd64|ia64)
|
||||
ZERO_ENDIANNESS=little
|
||||
;;
|
||||
ppc*|s390*|sparc*|alpha)
|
||||
ZERO_ENDIANNESS=big
|
||||
;;
|
||||
*)
|
||||
echo "ERROR: Unable to determine ZERO_ENDIANNESS for ${ZERO_LIBARCH}"
|
||||
exit 1
|
||||
esac
|
||||
export ZERO_ENDIANNESS
|
||||
|
||||
# ZERO_ARCHDEF is used to enable architecture-specific code
|
||||
case "${ZERO_LIBARCH}" in
|
||||
i386) ZERO_ARCHDEF=IA32 ;;
|
||||
ppc*) ZERO_ARCHDEF=PPC ;;
|
||||
s390*) ZERO_ARCHDEF=S390 ;;
|
||||
sparc*) ZERO_ARCHDEF=SPARC ;;
|
||||
*) ZERO_ARCHDEF=$(echo "${ZERO_LIBARCH}" | tr a-z A-Z)
|
||||
esac
|
||||
export ZERO_ARCHDEF
|
||||
|
||||
# ZERO_ARCHFLAG tells the compiler which mode to build for
|
||||
case "${ZERO_LIBARCH}" in
|
||||
s390)
|
||||
ZERO_ARCHFLAG="-m31"
|
||||
;;
|
||||
*)
|
||||
ZERO_ARCHFLAG="-m${ARCH_DATA_MODEL}"
|
||||
esac
|
||||
export ZERO_ARCHFLAG
|
||||
|
||||
# LIBFFI_CFLAGS and LIBFFI_LIBS tell the compiler how to compile and
|
||||
# link against libffi
|
||||
pkgconfig=$(which pkg-config 2>/dev/null)
|
||||
if [ -x "${pkgconfig}" ] ; then
|
||||
if [ "${LIBFFI_CFLAGS}" = "" ] ; then
|
||||
LIBFFI_CFLAGS=$("${pkgconfig}" --cflags libffi)
|
||||
fi
|
||||
if [ "${LIBFFI_LIBS}" = "" ] ; then
|
||||
LIBFFI_LIBS=$("${pkgconfig}" --libs libffi)
|
||||
fi
|
||||
fi
|
||||
if [ "${LIBFFI_LIBS}" = "" ] ; then
|
||||
LIBFFI_LIBS="-lffi"
|
||||
fi
|
||||
export LIBFFI_CFLAGS
|
||||
export LIBFFI_LIBS
|
||||
fi
|
||||
|
@ -38,6 +38,7 @@
|
||||
#define X_SPARCV9 3
|
||||
#define X_IA64 4
|
||||
#define X_AMD64 5
|
||||
#define X_ZERO 6
|
||||
|
||||
// **********************************
|
||||
// Make sure you set X_PLATFORM and X_ARCH defines correctly.
|
||||
|
58
jdk/src/solaris/bin/ergo_zero.c
Normal file
58
jdk/src/solaris/bin/ergo_zero.c
Normal file
@ -0,0 +1,58 @@
|
||||
/*
|
||||
* Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Sun designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Sun in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
#include "ergo.h"
|
||||
|
||||
|
||||
/* Methods for solaris-sparc and linux-sparc: these are easy. */
|
||||
|
||||
/* Ask the OS how many processors there are. */
|
||||
static unsigned long
|
||||
physical_processors(void) {
|
||||
const unsigned long sys_processors = sysconf(_SC_NPROCESSORS_CONF);
|
||||
|
||||
JLI_TraceLauncher("sysconf(_SC_NPROCESSORS_CONF): %lu\n", sys_processors);
|
||||
return sys_processors;
|
||||
}
|
||||
|
||||
/* The sparc version of the "server-class" predicate. */
|
||||
jboolean
|
||||
ServerClassMachineImpl(void) {
|
||||
jboolean result = JNI_FALSE;
|
||||
/* How big is a server class machine? */
|
||||
const unsigned long server_processors = 2UL;
|
||||
const uint64_t server_memory = 2UL * GB;
|
||||
const uint64_t actual_memory = physical_memory();
|
||||
|
||||
/* Is this a server class machine? */
|
||||
if (actual_memory >= server_memory) {
|
||||
const unsigned long actual_processors = physical_processors();
|
||||
if (actual_processors >= server_processors) {
|
||||
result = JNI_TRUE;
|
||||
}
|
||||
}
|
||||
JLI_TraceLauncher("unix_" LIBARCHNAME "_ServerClassMachine: %s\n",
|
||||
(result == JNI_TRUE ? "JNI_TRUE" : "JNI_FALSE"));
|
||||
return result;
|
||||
}
|
39
jdk/src/solaris/bin/zero/jvm.cfg
Normal file
39
jdk/src/solaris/bin/zero/jvm.cfg
Normal file
@ -0,0 +1,39 @@
|
||||
# Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Sun designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Sun in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
# CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
# have any questions.
|
||||
#
|
||||
#
|
||||
# List of JVMs that can be used as an option to java, javac, etc.
|
||||
# Order is important -- first in this list is the default JVM.
|
||||
# NOTE that this both this file and its format are UNSUPPORTED and
|
||||
# WILL GO AWAY in a future release.
|
||||
#
|
||||
# You may also select a JVM in an arbitrary location with the
|
||||
# "-XXaltjvm=<jvm_dir>" option, but that too is unsupported
|
||||
# and may not be available in a future release.
|
||||
#
|
||||
-server KNOWN
|
||||
-client IGNORE
|
||||
-hotspot ERROR
|
||||
-classic WARN
|
||||
-native ERROR
|
||||
-green ERROR
|
Loading…
x
Reference in New Issue
Block a user