RFR: JDK-8038340: Cleanup and fix sysroot and devkit handling on Linux and Solaris
Magnus Ihse Bursie
magnus.ihse.bursie at oracle.com
Wed Mar 26 11:57:42 UTC 2014
On 2014-03-26 12:51, David Holmes wrote:
> sysroots and tool-chains and dev-kits! oh my!
> Seriously, what does all this mean for someone who just wants to build
> the OpenJDK? I use dev-kit for cross-compilation builds but I have no
> idea what these different things are supposed to represent.
You can continue to use --with-devkit as you had. That was one of the
design goals for this change.
The theory is something like this:
* A "sysroot" is a stripped-down root directory of the *target*
platform, containing include files and libraries needed to compile and
link for a target (possibly cross-) platform.
* The toolchain path is one or more directories that contains binaries
that will run on the build platform, but generate code for the target
platform. While the separation is somewhat fuzzy, we use the toolchain
path for "toolchain" binaries, basically, those that compile, link or
otherwise interact with the target platform binaries.
* The extra path is one or more directories that contain any kind of
binaries, e.g. a proper version of zip or grep. If you do not deal with
cross-platform devkits, there is no real difference between extra path
and toolchain path.
And that is what is needed to encapsulate the tools needed to compile
> On 26/03/2014 8:32 PM, Erik Joelsson wrote:
>> (including 2d-dev/awt-dev because I'm changing linker flags on desktop
>> In preparation for upgrading compilers and build platforms, we would
>> like to get better separation between the two. At least on Linux and
>> Solaris this is certainly possible. Some work for this was already done
>> in Jdk 8 but it was never taken all the way through into actual usage.
>> In this bug, the configure parameters relating to this will be
>> changed to:
>> --with-sysroot: Sets a sysroot directory that will be propagated to the
>> compiler (gcc --sysroot) if supported and which will be used by
>> configure to look for all dependencies like headers and libraries. (old
>> --with-sys-root will be kept for compatibility as an alias)
>> --with-toolchain-path: Prepends to the path when looking for compilers
>> and other target specific tools. Replaces --with-tools-dir, which will
>> also be kept for compatibility as an alias.
>> --with-extra-path: Prepends to the path when looking for everything.
>> --with-devkit: Points to the root of a devkit. A devkit may have a
>> "devkit.info" in its root detailing values for the above three
>> parameters. If not, the fallback behavior is what it used to do. (set
>> toolchain_path to devkit/bin and some options for subdirs for sysroot)
>> Along with these changes some more was needed and done:
>> * To get it to work properly on Solaris, the OPENWIN variables were
>> removed and replaced with X_LIBS and X_CFLAGS. Several unnecessary
>> runtime paths for awt* libs were removed and some were added where they
>> were actually needed instead. All the libs have been verified to still
>> find their dependencies with ldd.
>> * The devkit generation makefiles for linux (in root/make/devkit) were
>> updated to the proposed compiler versions and adding the devkit.info
>> * A minor fix in compare.sh that was missed in an earlier patch.
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8038340
More information about the build-dev