RFR: JDK-8034788 Rewrite toolchain.m4 to support multiple toolchains per platform
Erik Joelsson
erik.joelsson at oracle.com
Thu Feb 13 12:20:48 UTC 2014
I like these improvements but I can certainly see the need for more.
Some minor things:
flags.m4:
95: needs -> need
152: No need to "assume"
toolchain.m4
171: detext
~230-300: Many rather long lines, consider breaking them up?
605: is -> are
~650: Why define MACOSX_VERSION_MIN in toolchain.m4 when it's used in
flags.m4?
/Erik
On 2014-02-12 15:58, Magnus Ihse Bursie wrote:
> We need to be able to handle different toolchains on the same
> platform, e.g. both gcc and clang on macosx. We have felt the need for
> this for quite some time, but it has become pressing due to the clang
> on macosx issue. (We are on a path to replace gcc with clang as
> official build platform on macosx, but we need to handle both
> toolchains during a transition period.
>
> To do this properly requires a complete reorganisation and cleanup of
> toolchain.m4.
>
> This is, as you can see, quite a large change in the configure system.
> Unfortunately, due to the bad state of the code in toolchain.m4, it
> was hard to do it in smaller steps. I have still tried to keep the
> changes small. For instance:
> * Full clang functionality was not a goal for this patch.
> * Fixing all issues in toolchain.m4 was not a goal for this patch.
> (Although I've sprinkled the code with FIXME that I intend to address
> as soon as possible.)
>
> Both of these will be addressed in follow-up patches.
>
> In this step, the priority has been to:
> 1) introduce the toolchain type concept,
> 2) cleanup toolchain.m4 to be able support this, and
> 3) move flag handling out of toolchain.m4
>
> This is a (somewhat cleaned up) log from the commits to my internal
> working repo, it gives a hint on what kind of changes/refactorisations
> that were performed:
> * Separate flag handling from toolchain.m4 into new file flags.m4.
> * Remove all non-flags handling from flags code (this has aldready
> been handled elsewhere).
> * Clean up flags.m4 heavily. Rename functions FLAGS_*. Group setting
> of flags by flag type. Simplify logic if possible. Adapt to new
> toolchain type.
> * Adapt configure.ac to how stuff have moved and splitted.
> * Remove old COMPILER_TYPE and COMPILER_NAME, fully replace with
> TOOLCHAIN_TYPE.
> * Print toolchain and improved compiler version info in
> HELP_PRINT_SUMMARY_AND_WARNINGS.
> * Move AC_SUBST to where variables were set up.
> * Move TOOLCHAIN_SETUP_MSVCR_DLL etc into new function
> LIB_SETUP_ON_WINDOWS in libraries.m4.
> * Fix compiler version output for microsoft compiler.
> * Fix version parsing for solstudio.
> * Reorder and rename functions in toolchain.m4.
> * Move strip and mcs flags setup to flags.m4.
> * Break out Windows compiler platform check from
> TOOLCHAIN_CHECK_COMPILER_VERSION.
> * Make sure --with-tools-dir override everything, even on windows.
> * Add/update documentation for all functions in toolchain.m4
> * Add/improve implementation comments.
> * Add lots of FIXME:s for stuff needing fixes (but not this time around).
> * Remove AS_IF
> * Fix broken indentation.
> * Fix bug in printing in BASIC_FIXUP_EXECUTABLE.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8034788
> WebRev:
> http://cr.openjdk.java.net/~ihse/JDK-8034788-rewrite-toolchain-m4/webrev.01
>
> /Magnus
More information about the build-dev
mailing list