Add LTO support for most compilers and do some VCC fixes (#14013)

* Added LTO in nim.cfg, added /link in extccomp.nim and other fixes

* Fix line endings

* Fix line endings, for real this time. Almost certainly. Like, 95% certain.

* Removed /MD from extccom.nim VCC comiler
This commit is contained in:
Keithcat1 2020-04-22 16:56:43 -05:00 • committed by GitHub
commit d27bc03b21
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 37 additions and 6 deletions

View file

@ -271,9 +271,7 @@ vcc.linkerexe = "vccexe.exe"
vcc.cpp.linkerexe = "vccexe.exe"
vcc.options.always = "/nologo"
vcc.cpp.options.always = "/EHsc"
vcc.options.linker = "/nologo /F33554432" # set the stack size to 32 MiB
vcc.cpp.options.linker = "/nologo /F33554432"
vcc.cpp.options.always = "/nologo /EHsc"
vcc.options.debug = "/Zi /FS /Od"
vcc.cpp.options.debug = "/Zi /FS /Od"
vcc.options.speed = "/O2"
@ -317,3 +315,35 @@ tcc.options.always = "-w"
--define:nimOldCaseObjects
--define:nimOldShiftRight
@end
@if lto or lto_incremental:
@if lto_incremental:
vcc.options.always%= "${vcc.options.always} /GL /Gw /Gy"
vcc.cpp.options.always%= "${vcc.cpp.options.always} /GL /Gw /Gy"
vcc.options.linker %= "${vcc.options.linker} /LTCG:incremental"
vcc.cpp.options.linker %= "${vcc.cpp.options.linker} /LTCG:incremental"
@else:
vcc.options.always%= "${vcc.options.always} /GL"
vcc.cpp.options.always%= "${vcc.cpp.options.always} /GL"
vcc.options.linker %= "${vcc.options.linker} /LTCG"
vcc.cpp.options.linker %= "${vcc.cpp.options.linker} /LTCG"
@end
clang_cl.options.always%= "${clang_cl.options.always} -flto"
clang_cl.cpp.options.always%= "${clang.cpp.options.always} -flto"
clang.options.always%= "${clang.options.always} -flto"
clang.cpp.options.always%= "${clang.cpp.options.always} -flto"
icl.options.always %= "${icl.options.always} /Qipo"
icl.cpp.options.always %= "${icl.cpp.options.always} /Qipo"
gcc.options.always %= "${gcc.options.always} -flto"
gcc.cpp.options.always %= "${gcc.cpp.options.always} -flto"
clang.options.linker %= "${clang.options.linker} -fuse-ld=lld -flto"
clang.cpp.options.linker %= "${clang.cpp.options.linker} -fuse-ld=lld -flto"
gcc.options.linker %= "${gcc.options.linker} -flto"
gcc.cpp.options.linker %= "${gcc.cpp.options.linker} -flto"
@end
@if strip:
gcc.options.linker %= "${gcc.options.linker} -s"
gcc.cpp.options.linker %= "${gcc.cpp.options.linker} -s"
clang.options.linker %= "${clang.options.linker} -s"
clang.cpp.options.linker %= "${clang.cpp.options.linker} -s"
@end