浏览代码

Merge pull request #44433 from akien-mga/scons-fix-platform-opts

SCons: Add only selected platform's opts to env
Rémi Verschelde 4 年之前
父节点
当前提交
ae0399382a
共有 7 个文件被更改,包括 13 次插入29 次删除
  1. 11 13
      SConstruct
  2. 0 3
      platform/iphone/detect.py
  3. 0 3
      platform/linuxbsd/detect.py
  4. 1 3
      platform/osx/detect.py
  5. 0 2
      platform/server/detect.py
  6. 0 2
      platform/uwp/detect.py
  7. 1 3
      platform/windows/detect.py

+ 11 - 13
SConstruct

@@ -17,7 +17,6 @@ import glsl_builders
 # Scan possible build platforms
 
 platform_list = []  # list of platforms
-platform_opts = {}  # options for each platform
 platform_flags = {}  # flags for each platform
 
 active_platforms = []
@@ -44,7 +43,6 @@ for x in sorted(glob.glob("platform/*")):
         x = x.replace("platform/", "")  # rest of world
         x = x.replace("platform\\", "")  # win32
         platform_list += [x]
-        platform_opts[x] = detect.get_opts()
         platform_flags[x] = detect.get_flags()
     sys.path.remove(tmppath)
     sys.modules.pop("detect")
@@ -115,7 +113,6 @@ opts.Add(EnumVariable("optimize", "Optimization type", "speed", ("speed", "size"
 opts.Add(BoolVariable("tools", "Build the tools (a.k.a. the Godot editor)", True))
 opts.Add(BoolVariable("tests", "Build the unit tests", False))
 opts.Add(BoolVariable("use_lto", "Use link-time optimization", False))
-opts.Add(BoolVariable("use_precise_math_checks", "Math checks use very precise epsilon (debug option)", False))
 
 # Components
 opts.Add(BoolVariable("deprecated", "Enable deprecated features", True))
@@ -131,14 +128,13 @@ opts.Add(BoolVariable("werror", "Treat compiler warnings as errors", False))
 opts.Add(BoolVariable("dev", "If yes, alias for verbose=yes warnings=extra werror=yes", False))
 opts.Add("extra_suffix", "Custom extra suffix added to the base filename of all generated binary files", "")
 opts.Add(BoolVariable("vsproj", "Generate a Visual Studio solution", False))
-opts.Add(EnumVariable("macports_clang", "Build using Clang from MacPorts", "no", ("no", "5.0", "devel")))
 opts.Add(BoolVariable("disable_3d", "Disable 3D nodes for a smaller executable", False))
 opts.Add(BoolVariable("disable_advanced_gui", "Disable advanced GUI nodes and behaviors", False))
 opts.Add(BoolVariable("no_editor_splash", "Don't use the custom splash screen for the editor", False))
 opts.Add("system_certs_path", "Use this path as SSL certificates default for editor (for package maintainers)", "")
+opts.Add(BoolVariable("use_precise_math_checks", "Math checks use very precise epsilon (debug option)", False))
 
 # Thirdparty libraries
-# opts.Add(BoolVariable('builtin_assimp', "Use the built-in Assimp library", True))
 opts.Add(BoolVariable("builtin_bullet", "Use the built-in Bullet library", True))
 opts.Add(BoolVariable("builtin_certs", "Use the built-in SSL certificates bundles", True))
 opts.Add(BoolVariable("builtin_enet", "Use the built-in ENet library", True))
@@ -176,13 +172,6 @@ opts.Add("CFLAGS", "Custom flags for the C compiler")
 opts.Add("CXXFLAGS", "Custom flags for the C++ compiler")
 opts.Add("LINKFLAGS", "Custom flags for the linker")
 
-# add platform specific options
-
-for k in platform_opts.keys():
-    opt_list = platform_opts[k]
-    for o in opt_list:
-        opts.Add(o)
-
 # Update the environment now as the "custom_modules" option may be
 # defined in a file rather than specified via the command line.
 opts.Update(env_base)
@@ -225,7 +214,6 @@ methods.write_modules(modules_detected)
 
 # Update the environment again after all the module options are added.
 opts.Update(env_base)
-Help(opts.GenerateHelpText(env_base))
 
 # add default include paths
 
@@ -301,6 +289,12 @@ if selected_platform in platform_list:
     sys.path.insert(0, tmppath)
     import detect
 
+    # Add platform-specific options.
+    for opt in detect.get_opts():
+        opts.Add(opt)
+    opts.Update(env_base)
+    Help(opts.GenerateHelpText(env_base))
+
     if "create" in dir(detect):
         env = detect.create(env_base)
     else:
@@ -670,6 +664,10 @@ elif selected_platform != "":
     else:
         Exit(255)
 
+else:
+    # Update help to include options.
+    Help(opts.GenerateHelpText(env_base))
+
 # The following only makes sense when the 'env' is defined, and assumes it is.
 if "env" in locals():
     methods.show_progress(env)

+ 0 - 3
platform/iphone/detect.py

@@ -12,7 +12,6 @@ def get_name():
 
 
 def can_build():
-
     if sys.platform == "darwin" or ("OSXCROSS_IOS" in os.environ):
         return True
 
@@ -41,14 +40,12 @@ def get_opts():
 
 
 def get_flags():
-
     return [
         ("tools", False),
     ]
 
 
 def configure(env):
-
     ## Build type
 
     if env["target"].startswith("release"):

+ 0 - 3
platform/linuxbsd/detect.py

@@ -12,7 +12,6 @@ def get_name():
 
 
 def can_build():
-
     if os.name != "posix" or sys.platform == "darwin":
         return False
 
@@ -81,12 +80,10 @@ def get_opts():
 
 
 def get_flags():
-
     return []
 
 
 def configure(env):
-
     ## Build type
 
     if env["target"] == "release":

+ 1 - 3
platform/osx/detect.py

@@ -12,7 +12,6 @@ def get_name():
 
 
 def can_build():
-
     if sys.platform == "darwin" or ("OSXCROSS_ROOT" in os.environ):
         return True
 
@@ -31,6 +30,7 @@ def get_opts():
             " validation layers)",
             False,
         ),
+        EnumVariable("macports_clang", "Build using Clang from MacPorts", "no", ("no", "5.0", "devel")),
         EnumVariable("debug_symbols", "Add debugging symbols to release/release_debug builds", "yes", ("yes", "no")),
         BoolVariable("separate_debug_symbols", "Create a separate file containing debugging symbols", False),
         BoolVariable("use_ubsan", "Use LLVM/GCC compiler undefined behavior sanitizer (UBSAN)", False),
@@ -40,12 +40,10 @@ def get_opts():
 
 
 def get_flags():
-
     return []
 
 
 def configure(env):
-
     ## Build type
 
     if env["target"] == "release":

+ 0 - 2
platform/server/detect.py

@@ -21,7 +21,6 @@ def get_program_suffix():
 
 
 def can_build():
-
     if os.name != "posix":
         return False
 
@@ -46,7 +45,6 @@ def get_opts():
 
 
 def get_flags():
-
     return []
 
 

+ 0 - 2
platform/uwp/detect.py

@@ -30,7 +30,6 @@ def get_opts():
 
 
 def get_flags():
-
     return [
         ("tools", False),
         ("xaudio2", True),
@@ -39,7 +38,6 @@ def get_flags():
 
 
 def configure(env):
-
     env.msvc = True
 
     if env["bits"] != "default":

+ 1 - 3
platform/windows/detect.py

@@ -68,7 +68,7 @@ def get_opts():
         EnumVariable("windows_subsystem", "Windows subsystem", "default", ("default", "console", "gui")),
         BoolVariable("separate_debug_symbols", "Create a separate file containing debugging symbols", False),
         ("msvc_version", "MSVC version to use. Ignored if VCINSTALLDIR is set in shell env.", None),
-        BoolVariable("use_mingw", "Use the Mingw compiler, even if MSVC is installed. Only used on Windows.", False),
+        BoolVariable("use_mingw", "Use the Mingw compiler, even if MSVC is installed.", False),
         BoolVariable("use_llvm", "Use the LLVM compiler", False),
         BoolVariable("use_thinlto", "Use ThinLTO", False),
         BoolVariable("use_static_cpp", "Link MinGW/MSVC C++ runtime libraries statically", True),
@@ -76,12 +76,10 @@ def get_opts():
 
 
 def get_flags():
-
     return []
 
 
 def build_res_file(target, source, env):
-
     if env["bits"] == "32":
         cmdbase = env["mingw_prefix_32"]
     else: