convert skcms to c++

The main thing we do here is add a 'c' to the skcms source path.

The rest is build system updates and little language tweaks.

I have had to explicitly set -ffp-contract=off in GCC.  Switching
from C11 to C++11 changed the default -ffp-contract from "off" to
"fast", which generates FMAs in places we don't want them.  This
behavior is rooted in this lovely piece of code:

  /* ISO C restricts floating-point expression contraction to within
     source-language expressions (-ffp-contract=on, currently an alias
     for -ffp-contract=off).  */
  if (flag_iso
      && !c_dialect_cxx ()
      && (global_options_set.x_flag_fp_contract_mode
          == (enum fp_contract_mode) 0)
      && flag_unsafe_math_optimizations == 0)
    flag_fp_contract_mode = FP_CONTRACT_OFF;

Change-Id: Ica2d83b8dadce72fffe298b517bd34cdc609f49e
Commit-Queue: Brian Osman <>
Auto-Submit: Mike Klein <>
Reviewed-by: Brian Osman <>
10 files changed