Skip to content

Commit 8e717ac

Browse files
author
Emilien Bauer
committed
Add options to use scons caching for faster iteration.
Sort the sets in source generation so they are generated consistently between runs; otherwise caching is useless.
1 parent 204e504 commit 8e717ac

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ src/gen
1212
logs/*
1313
*.log
1414

15+
# The default cache directory
16+
cache/
17+
1518
# Binaries
1619
*.o
1720
*.os

SConstruct

+8-1
Original file line numberDiff line numberDiff line change
@@ -168,12 +168,19 @@ else:
168168
json_api_file = os.path.join(os.getcwd(), env["headers_dir"], "extension_api.json")
169169

170170
bindings = env.GenerateBindings(
171-
env.Dir("."), [json_api_file, os.path.join(env["headers_dir"], "godot", "gdnative_interface.h")]
171+
env.Dir("."),
172+
[json_api_file, os.path.join(env["headers_dir"], "godot", "gdnative_interface.h"), "binding_generator.py"],
172173
)
173174

175+
scons_cache_path = os.environ.get("SCONS_CACHE")
176+
if scons_cache_path is not None:
177+
CacheDir(scons_cache_path)
178+
Decider("MD5")
179+
174180
# Forces bindings regeneration.
175181
if env["generate_bindings"]:
176182
AlwaysBuild(bindings)
183+
NoCache(bindings)
177184

178185
# Includes
179186
env.Append(CPPPATH=[[env.Dir(d) for d in [env["headers_dir"], "include", os.path.join("gen", "include")]]])

binding_generator.py

+10
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,11 @@ def generate_builtin_bindings(api, output_dir, build_config):
204204
if type_name in used_classes:
205205
used_classes.remove(type_name)
206206

207+
used_classes = list(used_classes)
208+
used_classes.sort()
209+
fully_used_classes = list(fully_used_classes)
210+
fully_used_classes.sort()
211+
207212
with header_filename.open("w+") as header_file:
208213
header_file.write(generate_builtin_class_header(builtin_api, size, used_classes, fully_used_classes))
209214

@@ -888,6 +893,11 @@ def generate_engine_classes_bindings(api, output_dir, use_template_get_node):
888893
if type_name in used_classes:
889894
used_classes.remove(type_name)
890895

896+
used_classes = list(used_classes)
897+
used_classes.sort()
898+
fully_used_classes = list(fully_used_classes)
899+
fully_used_classes.sort()
900+
891901
with header_filename.open("w+") as header_file:
892902
header_file.write(
893903
generate_engine_class_header(class_api, used_classes, fully_used_classes, use_template_get_node)

0 commit comments

Comments
 (0)