浏览代码

Merge pull request #95921 from akien-mga/scons-validate-opt-in-drivers

SCons: Better validation for platform-specific opt-in drivers
Rémi Verschelde 1 年之前
父节点
当前提交
37ae2a2900
共有 6 个文件被更改,包括 20 次插入8 次删除
  1. 3 3
      SConstruct
  2. 10 0
      drivers/SCsub
  3. 4 2
      modules/mono/config.py
  4. 1 1
      platform/ios/detect.py
  5. 1 1
      platform/macos/detect.py
  6. 1 1
      platform/windows/detect.py

+ 3 - 3
SConstruct

@@ -218,11 +218,11 @@ opts.Add(BoolVariable("deprecated", "Enable compatibility code for deprecated an
 opts.Add(EnumVariable("precision", "Set the floating-point precision level", "single", ("single", "double")))
 opts.Add(EnumVariable("precision", "Set the floating-point precision level", "single", ("single", "double")))
 opts.Add(BoolVariable("minizip", "Enable ZIP archive support using minizip", True))
 opts.Add(BoolVariable("minizip", "Enable ZIP archive support using minizip", True))
 opts.Add(BoolVariable("brotli", "Enable Brotli for decompresson and WOFF2 fonts support", True))
 opts.Add(BoolVariable("brotli", "Enable Brotli for decompresson and WOFF2 fonts support", True))
-opts.Add(BoolVariable("xaudio2", "Enable the XAudio2 audio driver", False))
+opts.Add(BoolVariable("xaudio2", "Enable the XAudio2 audio driver on supported platforms", False))
 opts.Add(BoolVariable("vulkan", "Enable the vulkan rendering driver", True))
 opts.Add(BoolVariable("vulkan", "Enable the vulkan rendering driver", True))
 opts.Add(BoolVariable("opengl3", "Enable the OpenGL/GLES3 rendering driver", True))
 opts.Add(BoolVariable("opengl3", "Enable the OpenGL/GLES3 rendering driver", True))
-opts.Add(BoolVariable("d3d12", "Enable the Direct3D 12 rendering driver", False))
-opts.Add(BoolVariable("metal", "Enable the Metal rendering driver (Apple arm64 only)", False))
+opts.Add(BoolVariable("d3d12", "Enable the Direct3D 12 rendering driver on supported platforms", False))
+opts.Add(BoolVariable("metal", "Enable the Metal rendering driver on supported platforms (Apple arm64 only)", False))
 opts.Add(BoolVariable("openxr", "Enable the OpenXR driver", True))
 opts.Add(BoolVariable("openxr", "Enable the OpenXR driver", True))
 opts.Add(BoolVariable("use_volk", "Use the volk library to load the Vulkan loader dynamically", True))
 opts.Add(BoolVariable("use_volk", "Use the volk library to load the Vulkan loader dynamically", True))
 opts.Add(BoolVariable("disable_exceptions", "Force disabling exception handling code", True))
 opts.Add(BoolVariable("disable_exceptions", "Force disabling exception handling code", True))

+ 10 - 0
drivers/SCsub

@@ -3,6 +3,7 @@
 Import("env")
 Import("env")
 
 
 env.drivers_sources = []
 env.drivers_sources = []
+supported = env.get("supported", [])
 
 
 # OS drivers
 # OS drivers
 SConscript("unix/SCsub")
 SConscript("unix/SCsub")
@@ -17,6 +18,9 @@ if env["platform"] == "windows":
     if not env.msvc:
     if not env.msvc:
         SConscript("backtrace/SCsub")
         SConscript("backtrace/SCsub")
 if env["xaudio2"]:
 if env["xaudio2"]:
+    if "xaudio2" not in supported:
+        print("Target platform '{}' does not support the XAudio2 audio driver. Aborting.".format(env["platform"]))
+        Exit(255)
     SConscript("xaudio2/SCsub")
     SConscript("xaudio2/SCsub")
 
 
 # Midi drivers
 # Midi drivers
@@ -28,12 +32,18 @@ SConscript("winmidi/SCsub")
 if env["vulkan"]:
 if env["vulkan"]:
     SConscript("vulkan/SCsub")
     SConscript("vulkan/SCsub")
 if env["d3d12"]:
 if env["d3d12"]:
+    if "d3d12" not in supported:
+        print("Target platform '{}' does not support the D3D12 rendering driver. Aborting.".format(env["platform"]))
+        Exit(255)
     SConscript("d3d12/SCsub")
     SConscript("d3d12/SCsub")
 if env["opengl3"]:
 if env["opengl3"]:
     SConscript("gl_context/SCsub")
     SConscript("gl_context/SCsub")
     SConscript("gles3/SCsub")
     SConscript("gles3/SCsub")
     SConscript("egl/SCsub")
     SConscript("egl/SCsub")
 if env["metal"]:
 if env["metal"]:
+    if "metal" not in supported:
+        print("Target platform '{}' does not support the Metal rendering driver. Aborting.".format(env["platform"]))
+        Exit(255)
     SConscript("metal/SCsub")
     SConscript("metal/SCsub")
 
 
 # Core dependencies
 # Core dependencies

+ 4 - 2
modules/mono/config.py

@@ -11,9 +11,11 @@ def can_build(env, platform):
 def configure(env):
 def configure(env):
     # Check if the platform has marked mono as supported.
     # Check if the platform has marked mono as supported.
     supported = env.get("supported", [])
     supported = env.get("supported", [])
-
     if "mono" not in supported:
     if "mono" not in supported:
-        raise RuntimeError("This module does not currently support building for this platform")
+        import sys
+
+        print("The 'mono' module does not currently support building for this platform. Aborting.")
+        sys.exit(255)
 
 
     env.add_module_version_string("mono")
     env.add_module_version_string("mono")
 
 

+ 1 - 1
platform/ios/detect.py

@@ -52,7 +52,7 @@ def get_flags():
         "target": "template_debug",
         "target": "template_debug",
         "use_volk": False,
         "use_volk": False,
         "metal": True,
         "metal": True,
-        "supported": ["mono"],
+        "supported": ["metal", "mono"],
         "builtin_pcre2_with_jit": False,
         "builtin_pcre2_with_jit": False,
     }
     }
 
 

+ 1 - 1
platform/macos/detect.py

@@ -57,7 +57,7 @@ def get_flags():
         "arch": detect_arch(),
         "arch": detect_arch(),
         "use_volk": False,
         "use_volk": False,
         "metal": True,
         "metal": True,
-        "supported": ["mono"],
+        "supported": ["metal", "mono"],
     }
     }
 
 
 
 

+ 1 - 1
platform/windows/detect.py

@@ -247,7 +247,7 @@ def get_flags():
 
 
     return {
     return {
         "arch": arch,
         "arch": arch,
-        "supported": ["mono"],
+        "supported": ["d3d12", "mono", "xaudio2"],
     }
     }