Skip to content

Commit

Permalink
Merge pull request #1203 from dsnopek/1082-update
Browse files Browse the repository at this point in the history
Statically link mingw/msvc runtime libraries on Windows
  • Loading branch information
dsnopek authored Aug 9, 2023
2 parents 5834e16 + a745c2a commit c47bd60
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 16 deletions.
12 changes: 6 additions & 6 deletions tools/targets.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,17 +60,17 @@ def generate(env):
env.Append(CCFLAGS=["/Zi", "/FS"])
env.Append(LINKFLAGS=["/DEBUG:FULL"])

if env["optimize"] == "speed" or env["optimize"] == "speed_trace":
if env["optimize"] == "speed":
env.Append(CCFLAGS=["/O2"])
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":
env.Append(CCFLAGS=["/O1"])
env.Append(LINKFLAGS=["/OPT:REF"])

if env["optimize"] == "debug" or env["optimize"] == "none":
env.Append(CCFLAGS=["/MDd", "/Od"])
else:
env.Append(CCFLAGS=["/MD"])
elif env["optimize"] == "debug" or env["optimize"] == "none":
env.Append(CCFLAGS=["/Od"])

else:
if env["debug_symbols"]:
Expand Down
38 changes: 28 additions & 10 deletions tools/windows.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
def options(opts):
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_static_cpp", "Link MinGW/MSVC C++ runtime libraries statically", True))


def exists(env):
Expand Down Expand Up @@ -37,6 +38,11 @@ def generate(env):
env["CC"] = "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":
env["use_mingw"] = True
mingw.generate(env)
Expand All @@ -45,6 +51,18 @@ def generate(env):
env["SHLIBPREFIX"] = ""
# Want dll suffix
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).
my_spawn.configure(env)

Expand All @@ -60,15 +78,15 @@ def generate(env):
# Want dll suffix
env["SHLIBSUFFIX"] = ".dll"

# These options are for a release build even using target=debug
env.Append(CCFLAGS=["-O3", "-Wwrite-strings"])
env.Append(
LINKFLAGS=[
"--static",
"-Wl,--no-undefined",
"-static-libgcc",
"-static-libstdc++",
]
)
env.Append(CCFLAGS=["-Wwrite-strings"])
env.Append(LINKFLAGS=["-Wl,--no-undefined"])
if env["use_static_cpp"]:
env.Append(
LINKFLAGS=[
"-static",
"-static-libgcc",
"-static-libstdc++",
]
)

env.Append(CPPDEFINES=["WINDOWS_ENABLED"])

0 comments on commit c47bd60

Please sign in to comment.