RFR: JDK-8038340: Cleanup and fix sysroot and devkit handling on Linux and Solaris

Magnus Ihse Bursie magnus.ihse.bursie at oracle.com
Thu Mar 27 08:00:19 UTC 2014


Yes, basically. And, optionally, an extra path (for non-toolchain binaries). So setting --with-devkit is, in a way, a convenient way of setting all these three options, in a way that works together and makes sense.

That is, more or less, the same behavior we've had all the time, but it's slightly more formalized now. 

/Magnus

> On 26 mar 2014, at 23:48, David Holmes <david.holmes at oracle.com> wrote:
> 
>> 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?
> 
> Thanks,
> David
> 
>> And that is what is needed to encapsulate the tools needed to compile
>> OpenJDK.
>> 
>> /Magnus
>> 
>>> 
>>> David
>>> 
>>>> On 26/03/2014 8:32 PM, Erik Joelsson wrote:
>>>> Hello,
>>>> 
>>>> (including 2d-dev/awt-dev because I'm changing linker flags on desktop
>>>> libs.)
>>>> 
>>>> 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
>>>> file.
>>>> 
>>>> * A minor fix in compare.sh that was missed in an earlier patch.
>>>> 
>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8038340
>>>> Webrevs:
>>>> http://cr.openjdk.java.net/~erikj/8038340/webrev.root.01/
>>>> http://cr.openjdk.java.net/~erikj/8038340/webrev.jdk.01/
>>>> 
>>>> /Erik
>> 



More information about the build-dev mailing list