185a186,188
> AddLocalOption('--force-lto', dest='force_lto', action='store_true',
> help='Use Link-Time Optimization instead of partial linking' +
> ' when the compiler doesn\'t support using them together.')
200a204,207
> if GetOption('no_lto') and GetOption('force_lto'):
> print '--no-lto and --force-lto are mutually exclusive'
> Exit(1)
>
721a729,750
> if compareVersions(gcc_version, '4.9') >= 0:
> # Incremental linking with LTO is currently broken in gcc versions
> # 4.9 and above. A version where everything works completely hasn't
> # yet been identified.
> #
> # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67548
> main['BROKEN_INCREMENTAL_LTO'] = True
> if compareVersions(gcc_version, '6.0') >= 0:
> # gcc versions 6.0 and greater accept an -flinker-output flag which
> # selects what type of output the linker should generate. This is
> # necessary for incremental lto to work, but is also broken in
> # current versions of gcc. It may not be necessary in future
> # versions. We add it here since it might be, and as a reminder that
> # it exists. It's excluded if lto is being forced.
> #
> # https://gcc.gnu.org/gcc-6/changes.html
> # https://gcc.gnu.org/ml/gcc-patches/2015-11/msg03161.html
> # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69866
> if not GetOption('force_lto'):
> main.Append(PSHLINKFLAGS='-flinker-output=rel')
> main.Append(PLINKFLAGS='-flinker-output=rel')
>
751a781,791
> disable_lto = GetOption('no_lto')
> if not disable_lto and main.get('BROKEN_INCREMENTAL_LTO', False) and \
> not GetOption('force_lto'):
> print termcap.Yellow + termcap.Bold + \
> 'Warning: Your compiler doesn\'t support incremental linking' + \
> ' and lto at the same time, so lto is being disabled. To force' + \
> ' lto on anyway, use the --force-lto option. That will disable' + \
> ' partial linking.' + \
> termcap.Normal
> disable_lto = True
>
755c795
< if not GetOption('no_lto'):
---
> if not disable_lto: