Review request: Zero assembler port
Gary Benson
gbenson at redhat.com
Thu Jul 16 03:29:53 PDT 2009
Hi all,
I had an email this morning from someone whose build was breaking
because of unset environment variables so I wanted to mail a small
clarification.
* To build Zero there are nine environment variables that need
setting before make runs:
CORE_BUILD
ZERO_BUILD
ZERO_LIBARCH
ZERO_ARCHDEF
ZERO_ENDIANNESS
ZERO_BITSPERWORD
ZERO_ARCHFLAG
LIBFFI_CFLAGS
LIBFFI_LIBS
* If you are using jdk/make/jdk_generic_profile.sh then all but
the first two will be set for you. You would build like this:
export CORE_BUILD=true
export ZERO_BUILD=true
. jdk/make/jdk_generic_profile.sh
make
* If you are not using jdk/make/jdk_generic_profile.sh then you
must set all nine yourself.
Cheers,
Gary
Gary Benson wrote:
> Hi all,
>
> Zero is an interpreter-only port of HotSpot that uses no assembler and
> can trivially be built on any Linux system. The following webrev adds
> Zero support to OpenJDK:
>
> http://cr.openjdk.java.net/~gbenson/zero-03/
>
> In order to enable the Zero build, the following environment variables
> must be set:
>
> CORE_BUILD
> Setting CORE_BUILD to "true" will result in an interpreter-only
> HotSpot being built, with neither the client nor the server
> compilers. If CORE_BUILD is unset, or set to any other value
> than "true", then the compiler(s) will be built as normal.
>
> ZERO_BUILD
> Setting ZERO_BUILD to "true" will cause the Zero interpreter to
> be used. If ZERO_BUILD is unset, or set to any other value than
> "true", the standard, platform-specific interpreter will be used.
>
> The reason for having two separate flags is to allow for Zero builds
> with JIT compilers such as Shark (not included in this webrev). To
> build HotSpot with Zero and Shark you would set ZERO_BUILD to "true"
> but leave CORE_BUILD unset.
>
> There are five variables which are required when ZERO_BUILD is set to
> "true". These are set by jdk/make/jdk_generic_profile.sh based on the
> result of uname -m:
>
> ZERO_LIBARCH
> This is the name of the architecture-specific subdirectory under
> $JAVA_HOME/jre/lib. Typically this will be the same as the output
> of uname -m, although there are some exceptions: "amd64" instead
> of "x86_64", for example, and "i386" instead of "i686".
>
> ZERO_ARCHDEF
> The value of ZERO_ARCHDEF will be passed to the C++ compiler using
> -D${ZERO_ARCHDEF} to allow conditionalized platform-specific code.
> This is typically set to ZERO_LIBARCH converted to uppercase but,
> again, there are exceptions. "i386" becomes "IA32", to match what
> HotSpot already does, and on platforms with both 32- and 64-bit
> variants ZERO_ARCHDEF corresponds to the 32-bit version, so both
> ppc and ppc64 have ZERO_ARCHDEF set to "PPC".
>
> ZERO_ENDIANNESS
> This is set to "little" or "big".
>
> ZERO_BITSPERWORD
> This is set to "32" or "64".
>
> ZERO_ARCHFLAG
> This is a flag that will be passed to the C++ compiler and to the
> linker to instruct them to generate code for the particular
> platform. This is required for platforms with both 32- and 64-bit
> variants where the compiler needs to be told which variant to
> build for. ZERO_ARCHFLAG will typically be set to "-m32" or
> "-m64", except on 31-bit zSeries where it will be set to "-m31".
>
> Zero uses one external library, libffi, for JNI method invocation.
> The following two variables are used to tell the compiler and linker
> how to find libffi. These can be set by the user, but if left unset
> then jdk/make/jdk_generic_profile.sh will attempt to set them using
> pkg-config:
>
> LIBFFI_CFLAGS
> Flags to be passed to the C++ compiler to build against libffi.
>
> LIBFFI_LIBS
> Flags to be passed to the linker to link against libffi.
>
> Ok, I think that's it!
>
> Cheers,
> Gary
>
> --
> http://gbenson.net/
More information about the hotspot-dev
mailing list