RFR: JDK-8038340: Cleanup and fix sysroot and devkit handling on Linux and Solaris
david.holmes at oracle.com
Wed Mar 26 22:48:36 UTC 2014
On 26/03/2014 9:57 PM, Magnus Ihse Bursie wrote:
> 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.
So what then is a "dev-kit"? A combined sysroot+tool-chain?
> 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