Statically link mingw/msvc runtime libraries on Windows
Co-authored-by: David Snopek <dsnopek@gmail.com>
(cherry picked from commit a745c2ac47
)
pull/1205/head
parent
6fa6b8b178
commit
4fb9af7fb2
|
@ -60,17 +60,17 @@ def generate(env):
|
||||||
env.Append(CCFLAGS=["/Zi", "/FS"])
|
env.Append(CCFLAGS=["/Zi", "/FS"])
|
||||||
env.Append(LINKFLAGS=["/DEBUG:FULL"])
|
env.Append(LINKFLAGS=["/DEBUG:FULL"])
|
||||||
|
|
||||||
if env["optimize"] == "speed" or env["optimize"] == "speed_trace":
|
if env["optimize"] == "speed":
|
||||||
env.Append(CCFLAGS=["/O2"])
|
env.Append(CCFLAGS=["/O2"])
|
||||||
env.Append(LINKFLAGS=["/OPT:REF"])
|
env.Append(LINKFLAGS=["/OPT:REF"])
|
||||||
|
elif env["optimize"] == "speed_trace":
|
||||||
|
env.Append(CCFLAGS=["/O2"])
|
||||||
|
env.Append(LINKFLAGS=["/OPT:REF", "/OPT:NOICF"])
|
||||||
elif env["optimize"] == "size":
|
elif env["optimize"] == "size":
|
||||||
env.Append(CCFLAGS=["/O1"])
|
env.Append(CCFLAGS=["/O1"])
|
||||||
env.Append(LINKFLAGS=["/OPT:REF"])
|
env.Append(LINKFLAGS=["/OPT:REF"])
|
||||||
|
elif env["optimize"] == "debug" or env["optimize"] == "none":
|
||||||
if env["optimize"] == "debug" or env["optimize"] == "none":
|
env.Append(CCFLAGS=["/Od"])
|
||||||
env.Append(CCFLAGS=["/MDd", "/Od"])
|
|
||||||
else:
|
|
||||||
env.Append(CCFLAGS=["/MD"])
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
if env["debug_symbols"]:
|
if env["debug_symbols"]:
|
||||||
|
|
|
@ -9,6 +9,7 @@ from SCons.Variables import *
|
||||||
def options(opts):
|
def options(opts):
|
||||||
opts.Add(BoolVariable("use_mingw", "Use the MinGW compiler instead of MSVC - only effective on Windows", False))
|
opts.Add(BoolVariable("use_mingw", "Use the MinGW compiler instead of MSVC - only effective on Windows", False))
|
||||||
opts.Add(BoolVariable("use_clang_cl", "Use the clang driver instead of MSVC - only effective on Windows", False))
|
opts.Add(BoolVariable("use_clang_cl", "Use the clang driver instead of MSVC - only effective on Windows", False))
|
||||||
|
opts.Add(BoolVariable("use_static_cpp", "Link MinGW/MSVC C++ runtime libraries statically", True))
|
||||||
|
|
||||||
|
|
||||||
def exists(env):
|
def exists(env):
|
||||||
|
@ -37,6 +38,11 @@ def generate(env):
|
||||||
env["CC"] = "clang-cl"
|
env["CC"] = "clang-cl"
|
||||||
env["CXX"] = "clang-cl"
|
env["CXX"] = "clang-cl"
|
||||||
|
|
||||||
|
if env["use_static_cpp"]:
|
||||||
|
env.Append(CCFLAGS=["/MT"])
|
||||||
|
else:
|
||||||
|
env.Append(CCFLAGS=["/MD"])
|
||||||
|
|
||||||
elif sys.platform == "win32" or sys.platform == "msys":
|
elif sys.platform == "win32" or sys.platform == "msys":
|
||||||
env["use_mingw"] = True
|
env["use_mingw"] = True
|
||||||
mingw.generate(env)
|
mingw.generate(env)
|
||||||
|
@ -45,6 +51,18 @@ def generate(env):
|
||||||
env["SHLIBPREFIX"] = ""
|
env["SHLIBPREFIX"] = ""
|
||||||
# Want dll suffix
|
# Want dll suffix
|
||||||
env["SHLIBSUFFIX"] = ".dll"
|
env["SHLIBSUFFIX"] = ".dll"
|
||||||
|
|
||||||
|
env.Append(CCFLAGS=["-Wwrite-strings"])
|
||||||
|
env.Append(LINKFLAGS=["-Wl,--no-undefined"])
|
||||||
|
if env["use_static_cpp"]:
|
||||||
|
env.Append(
|
||||||
|
LINKFLAGS=[
|
||||||
|
"-static",
|
||||||
|
"-static-libgcc",
|
||||||
|
"-static-libstdc++",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
# Long line hack. Use custom spawn, quick AR append (to avoid files with the same names to override each other).
|
# Long line hack. Use custom spawn, quick AR append (to avoid files with the same names to override each other).
|
||||||
my_spawn.configure(env)
|
my_spawn.configure(env)
|
||||||
|
|
||||||
|
@ -60,15 +78,15 @@ def generate(env):
|
||||||
# Want dll suffix
|
# Want dll suffix
|
||||||
env["SHLIBSUFFIX"] = ".dll"
|
env["SHLIBSUFFIX"] = ".dll"
|
||||||
|
|
||||||
# These options are for a release build even using target=debug
|
env.Append(CCFLAGS=["-Wwrite-strings"])
|
||||||
env.Append(CCFLAGS=["-O3", "-Wwrite-strings"])
|
env.Append(LINKFLAGS=["-Wl,--no-undefined"])
|
||||||
env.Append(
|
if env["use_static_cpp"]:
|
||||||
LINKFLAGS=[
|
env.Append(
|
||||||
"--static",
|
LINKFLAGS=[
|
||||||
"-Wl,--no-undefined",
|
"-static",
|
||||||
"-static-libgcc",
|
"-static-libgcc",
|
||||||
"-static-libstdc++",
|
"-static-libstdc++",
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
env.Append(CPPDEFINES=["WINDOWS_ENABLED"])
|
env.Append(CPPDEFINES=["WINDOWS_ENABLED"])
|
||||||
|
|
Loading…
Reference in New Issue