diff options
author | Keithcat1 <47483928+Keithcat1@users.noreply.github.com> | 2020-04-22 16:56:43 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-22 23:56:43 +0200 |
commit | d27bc03b21ea066134a297e61d0d18c901300ccc (patch) | |
tree | 2e1c265e684a6805f9ccde125a94b6f8686cc609 | |
parent | 6cfe2e0c3dc67504594f55ff19b67b1331f6c22e (diff) | |
download | Nim-d27bc03b21ea066134a297e61d0d18c901300ccc.tar.gz |
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
-rw-r--r-- | compiler/extccomp.nim | 7 | ||||
-rw-r--r-- | config/nim.cfg | 36 |
2 files changed, 37 insertions, 6 deletions
diff --git a/compiler/extccomp.nim b/compiler/extccomp.nim index aad3ddfab..3005d111a 100644 --- a/compiler/extccomp.nim +++ b/compiler/extccomp.nim @@ -157,12 +157,12 @@ compiler vcc: optSize: " /O1 ", compilerExe: "cl", cppCompiler: "cl", - compileTmpl: "/c$vccplatform $options $include /Fo$objfile $file", - buildGui: " /link /SUBSYSTEM:WINDOWS ", + compileTmpl: "/c$vccplatform $options $include /nologo /Fo$objfile $file", + buildGui: " /SUBSYSTEM:WINDOWS user32.lib ", buildDll: " /LD", buildLib: "lib /OUT:$libfile $objfiles", linkerExe: "cl", - linkTmpl: "$builddll$vccplatform /Fe$exefile $objfiles $buildgui $options", + linkTmpl: "$builddll$vccplatform /Fe$exefile $objfiles $buildgui /link /nologo $options", includeCmd: " /I", linkDirCmd: " /LIBPATH:", linkLibCmd: " $1.lib", @@ -180,6 +180,7 @@ compiler clangcl: result.compilerExe = "clang-cl" result.cppCompiler = "clang-cl" result.linkerExe = "clang-cl" + result.linkTmpl = "-fuse-ld=lld " & result.linkTmpl # Intel C/C++ Compiler compiler icl: diff --git a/config/nim.cfg b/config/nim.cfg index eea04ec11..21d976982 100644 --- a/config/nim.cfg +++ b/config/nim.cfg @@ -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 \ No newline at end of file |