diff options
Diffstat (limited to 'methods.py')
-rw-r--r-- | methods.py | 54 |
1 files changed, 26 insertions, 28 deletions
diff --git a/methods.py b/methods.py index 78ec9b8674..dadac37cb5 100644 --- a/methods.py +++ b/methods.py @@ -1,6 +1,5 @@ import os import re -import sys import glob import subprocess from collections import OrderedDict @@ -49,28 +48,28 @@ def disable_warnings(self): if self.msvc: # We have to remove existing warning level defines before appending /w, # otherwise we get: "warning D9025 : overriding '/W3' with '/w'" - warn_flags = ["/Wall", "/W4", "/W3", "/W2", "/W1", "/WX"] - self.Append(CCFLAGS=["/w"]) - self.Append(CFLAGS=["/w"]) - self.Append(CXXFLAGS=["/w"]) - self["CCFLAGS"] = [x for x in self["CCFLAGS"] if not x in warn_flags] - self["CFLAGS"] = [x for x in self["CFLAGS"] if not x in warn_flags] - self["CXXFLAGS"] = [x for x in self["CXXFLAGS"] if not x in warn_flags] + self["CCFLAGS"] = [x for x in self["CCFLAGS"] if not (x.startswith("/W") or x.startswith("/w"))] + self["CFLAGS"] = [x for x in self["CFLAGS"] if not (x.startswith("/W") or x.startswith("/w"))] + self["CXXFLAGS"] = [x for x in self["CXXFLAGS"] if not (x.startswith("/W") or x.startswith("/w"))] + self.AppendUnique(CCFLAGS=["/w"]) else: - self.Append(CCFLAGS=["-w"]) - self.Append(CFLAGS=["-w"]) - self.Append(CXXFLAGS=["-w"]) + self.AppendUnique(CCFLAGS=["-w"]) def force_optimization_on_debug(self): # 'self' is the environment - if self["target"] != "debug": + if self["target"] != "template-release": return if self.msvc: - self.Append(CCFLAGS=["/O2"]) + # We have to remove existing optimization level defines before appending /O2, + # otherwise we get: "warning D9025 : overriding '/0d' with '/02'" + self["CCFLAGS"] = [x for x in self["CCFLAGS"] if not x.startswith("/O")] + self["CFLAGS"] = [x for x in self["CFLAGS"] if not x.startswith("/O")] + self["CXXFLAGS"] = [x for x in self["CXXFLAGS"] if not x.startswith("/O")] + self.AppendUnique(CCFLAGS=["/O2"]) else: - self.Append(CCFLAGS=["-O3"]) + self.AppendUnique(CCFLAGS=["-O3"]) def add_module_version_string(self, s): @@ -105,7 +104,7 @@ def get_version_info(module_version_string="", silent=False): if os.getenv("GODOT_VERSION_STATUS") != None: version_info["status"] = str(os.getenv("GODOT_VERSION_STATUS")) if not silent: - print(f"Using version status '{version_info.status}', overriding the original '{version.status}'.") + print(f"Using version status '{version_info['status']}', overriding the original '{version.status}'.") # Parse Git hash if we're in a Git repo. githash = "" @@ -663,7 +662,6 @@ def detect_visual_c_compiler_version(tools_env): if vc_x86_amd64_compiler_detection_index > -1 and ( vc_chosen_compiler_index == -1 or vc_chosen_compiler_index > vc_x86_amd64_compiler_detection_index ): - vc_chosen_compiler_index = vc_x86_amd64_compiler_detection_index vc_chosen_compiler_str = "x86_amd64" return vc_chosen_compiler_str @@ -737,20 +735,19 @@ def generate_vs_project(env, num_jobs): if batch_file: class ModuleConfigs(Mapping): - # This version information (Win32, x64, Debug, Release, Release_Debug seems to be + # This version information (Win32, x64, Debug, Release) seems to be # required for Visual Studio to understand that it needs to generate an NMAKE # project. Do not modify without knowing what you are doing. PLATFORMS = ["Win32", "x64"] PLATFORM_IDS = ["x86_32", "x86_64"] - CONFIGURATIONS = ["debug", "release", "release_debug"] - CONFIGURATION_IDS = ["tools", "opt", "opt.tools"] + CONFIGURATIONS = ["editor", "template_release", "template_debug"] + DEV_SUFFIX = ["", ".dev"] @staticmethod def for_every_variant(value): return [value for _ in range(len(ModuleConfigs.CONFIGURATIONS) * len(ModuleConfigs.PLATFORMS))] def __init__(self): - shared_targets_array = [] self.names = [] self.arg_dict = { @@ -779,16 +776,16 @@ def generate_vs_project(env, num_jobs): for platform in ModuleConfigs.PLATFORMS ] self.arg_dict["runfile"] += [ - f'bin\\godot.windows.{config_id}.{plat_id}{f".{name}" if name else ""}.exe' - for config_id in ModuleConfigs.CONFIGURATION_IDS + f'bin\\godot.windows.{config}{dev}.{plat_id}{f".{name}" if name else ""}.exe' + for config in ModuleConfigs.CONFIGURATIONS for plat_id in ModuleConfigs.PLATFORM_IDS + for dev in ModuleConfigs.DEV_SUFFIX ] self.arg_dict["cpppaths"] += ModuleConfigs.for_every_variant(env["CPPPATH"] + [includes]) self.arg_dict["cppdefines"] += ModuleConfigs.for_every_variant(env["CPPDEFINES"] + defines) self.arg_dict["cmdargs"] += ModuleConfigs.for_every_variant(cli_args) def build_commandline(self, commands): - configuration_getter = ( "$(Configuration" + "".join([f'.Replace("{name}", "")' for name in self.names[1:]]) @@ -799,8 +796,6 @@ def generate_vs_project(env, num_jobs): common_build_prefix = [ 'cmd /V /C set "plat=$(PlatformTarget)"', '(if "$(PlatformTarget)"=="x64" (set "plat=x86_amd64"))', - 'set "tools=%s"' % env["tools"], - f'(if "{configuration_getter}"=="release" (set "tools=no"))', 'call "' + batch_file + '" !plat!', ] @@ -813,10 +808,12 @@ def generate_vs_project(env, num_jobs): "platform=windows", f"target={configuration_getter}", "progress=no", - "tools=!tools!", "-j%s" % num_jobs, ] + if env["dev_build"]: + common_build_postfix.append("dev_build=yes") + if env["tests"]: common_build_postfix.append("tests=yes") @@ -846,7 +843,8 @@ def generate_vs_project(env, num_jobs): add_to_vs_project(env, env.servers_sources) if env["tests"]: add_to_vs_project(env, env.tests_sources) - add_to_vs_project(env, env.editor_sources) + if env.editor_build: + add_to_vs_project(env, env.editor_sources) for header in glob_recursive("**/*.h"): env.vs_incs.append(str(header)) @@ -854,7 +852,7 @@ def generate_vs_project(env, num_jobs): module_configs = ModuleConfigs() if env.get("module_mono_enabled"): - mono_defines = [("GD_MONO_HOT_RELOAD",)] if env["tools"] else [] + mono_defines = [("GD_MONO_HOT_RELOAD",)] if env.editor_build else [] module_configs.add_mode( "mono", cli_args="module_mono_enabled=yes", |