[haiku-development] [RFC] Upgrading gcc7 cross-compiler libs

  • From: Fredrik Holmqvist <fredrik.holmqvist@xxxxxxxxx>
  • To: haiku-development <haiku-development@xxxxxxxxxxxxx>
  • Date: Sun, 1 Jul 2018 11:57:45 +0200

Since the update to gcc 7 the flag --use-gcc-graphite has been broken. I've
fixed this locally and believe that the flag no longer serves a purpose as
the extra lib can be built as part of gcc, and graphite is only active with
compile flags.

I've done the following changes in buildtools:

* Upgrade ISL from 0.12.2 (2014-01-12) to 0.19 (2018-03-03)
   See http://isl.gforge.inria.fr/user.html#Changes-since-isl-0.12
   GCC requires ISL 0.15 or later, ISL requires GMP see
https://gcc.gnu.org/install/prerequisites.html for more info.

* Move ISL into gcc-dir for gcc to autodetect and build ISL
   GCC will autobuild ISL and ISL has deps on GMP, MPC and MPFR which are
also built by GCC.

* Remove CLOOG, it is no longer a requirement of GCC and has been replaced
with ISL
   Is it used by anything else as well? Or just for graphite?

* Upgrade GMP from 5.0.5 (2012-05-06) to 6.1.2 (2016-12-16)
   See https://gmplib.org/gmp6.1.html for recent changes. A lot of changes
since 5.0.5 is only
   documented in NEWS inside package. Speedups and better support for ARM
and newer processors is in there.
   Required by GCC and ISL

* Upgrade MPC from 1.0.1 to 1.1.0
   Could not find link to changes, but its NEWS file lists mostly bugfixes.
   Required by GCC

* MPFR from 3.1.2 (2013-03-13) to 4.0.1 (2018-02-07)
   See
https://gforge.inria.fr/scm/viewvc.php/mpfr/tags/4.0.1/NEWS?revision=12202&view=markup#l35
for the list of changes
   Required by GCC

In the Haiku tree we can then remove --use-gcc-graphite flag and it's
special compile commands in build/scripts/build_cross_tools_gcc4
ISL is a small lib and is now built by default by gcc

I've been testing it out for some time and I have not found any issues with
64 bit builds including UEFI bootloader. I got the impression that Haiku
feels snappier. I also tested and enabled additional graphite flags [1] and
built with and that seems to work well as well. I do not propose changing
those in git however.

Comments? Would it be ok to do?

/Fredrik Holmqvist, TQH

1) Compile flags in build/jam/BuildSetup:
+OPTIM ?= -O2 -ftree-loop-linear -floop-strip-mine -floop-block
-fgraphite-identity -floop-nest-optimize -floop-interchange ;

Other related posts: