浏览代码

Check that precision of `extension_api.json` matches build options

(cherry picked from commit 0a73df5f531ca1b8409d5dd984f7b857b7ae56ac)
David Snopek 5 月之前
父节点
当前提交
2d45d08722
共有 3 个文件被更改,包括 9 次插入2 次删除
  1. 7 2
      binding_generator.py
  2. 1 0
      misc/scripts/check_get_file_list.py
  3. 1 0
      tools/godotcpp.py

+ 7 - 2
binding_generator.py

@@ -290,10 +290,15 @@ def generate_bindings(api_filepath, use_template_get_node, bits="64", precision=
     api = {}
     with open(api_filepath, encoding="utf-8") as api_file:
         api = json.load(api_file)
-    _generate_bindings(api, use_template_get_node, bits, precision, output_dir)
+    _generate_bindings(api, api_filepath, use_template_get_node, bits, precision, output_dir)
 
 
-def _generate_bindings(api, use_template_get_node, bits="64", precision="single", output_dir="."):
+def _generate_bindings(api, api_filepath, use_template_get_node, bits="64", precision="single", output_dir="."):
+    if "precision" in api["header"] and precision != api["header"]["precision"]:
+        raise Exception(
+            f"Cannot do a precision={precision} build using '{api_filepath}' which was generated by Godot built with precision={api['header']['precision']}"
+        )
+
     target_dir = Path(output_dir) / "gen"
 
     shutil.rmtree(target_dir, ignore_errors=True)

+ 1 - 0
misc/scripts/check_get_file_list.py

@@ -19,6 +19,7 @@ def test(profile_filepath=""):
     api = generate_trimmed_api(api_filepath, profile_filepath)
     _generate_bindings(
         api,
+        api_filepath,
         use_template_get_node=False,
         bits=bits,
         precision=precision,

+ 1 - 0
tools/godotcpp.py

@@ -154,6 +154,7 @@ def scons_generate_bindings(target, source, env):
 
     _generate_bindings(
         api,
+        str(source[0]),
         env["generate_template_get_node"],
         "32" if "32" in env["arch"] else "64",
         env["precision"],