@@ -15,9 +15,9 @@ def correct_method_name(method_list):
1515classes = []
1616
1717
18- def print_file_list (api_filepath , output_dir , headers = False , sources = False ):
18+ def get_file_list (api_filepath , output_dir , headers = False , sources = False ):
1919 global classes
20- end = ";"
20+ files = []
2121 with open (api_filepath ) as api_file :
2222 classes = json .load (api_file )
2323 include_gen_folder = Path (output_dir ) / "include" / "gen"
@@ -26,17 +26,35 @@ def print_file_list(api_filepath, output_dir, headers=False, sources=False):
2626 header_filename = include_gen_folder / (strip_name (_class ["name" ]) + ".hpp" )
2727 source_filename = source_gen_folder / (strip_name (_class ["name" ]) + ".cpp" )
2828 if headers :
29- print (str (header_filename .as_posix ()), end = end )
29+ files . append (str (header_filename .as_posix ()))
3030 if sources :
31- print (str (source_filename .as_posix ()), end = end )
31+ files . append (str (source_filename .as_posix ()))
3232 icall_header_filename = include_gen_folder / "__icalls.hpp"
3333 register_types_filename = source_gen_folder / "__register_types.cpp"
3434 init_method_bindings_filename = source_gen_folder / "__init_method_bindings.cpp"
3535 if headers :
36- print (str (icall_header_filename .as_posix ()), end = end )
36+ files . append (str (icall_header_filename .as_posix ()))
3737 if sources :
38- print (str (register_types_filename .as_posix ()), end = end )
39- print (str (init_method_bindings_filename .as_posix ()), end = end )
38+ files .append (str (register_types_filename .as_posix ()))
39+ files .append (str (init_method_bindings_filename .as_posix ()))
40+ return files
41+
42+
43+ def print_file_list (api_filepath , output_dir , headers = False , sources = False ):
44+ for f in get_file_list (api_filepath , output_dir , headers , sources ):
45+ print (f , end = ";" )
46+
47+
48+ def scons_emit_files (target , source , env ):
49+ files = [env .File (f ) for f in get_file_list (str (source [0 ]), target [0 ].abspath , True , True )]
50+ env .Clean (target , files )
51+ env ["godot_cpp_gen_dir" ] = target [0 ].abspath
52+ return files , source
53+
54+
55+ def scons_generate_bindings (target , source , env ):
56+ generate_bindings (str (source [0 ]), env ["generate_template_get_node" ], env ["godot_cpp_gen_dir" ])
57+ return None
4058
4159
4260def generate_bindings (api_filepath , use_template_get_node , output_dir = "." ):
@@ -48,25 +66,12 @@ def generate_bindings(api_filepath, use_template_get_node, output_dir="."):
4866 include_gen_folder = Path (output_dir ) / "include" / "gen"
4967 source_gen_folder = Path (output_dir ) / "src" / "gen"
5068
51- try :
52- include_gen_folder .mkdir (parents = True )
53- except os .error as e :
54- if e .errno == errno .EEXIST :
55- print (str (source_gen_folder ) + ": " + os .strerror (e .errno ))
56- else :
57- exit (1 )
58-
59- try :
60- source_gen_folder .mkdir (parents = True )
61- except os .error as e :
62- if e .errno == errno .EEXIST :
63- print (str (source_gen_folder ) + ": " + os .strerror (e .errno ))
64- else :
65- exit (1 )
69+ include_gen_folder .mkdir (parents = True , exist_ok = True )
70+ source_gen_folder .mkdir (parents = True , exist_ok = True )
6671
6772 for c in classes :
6873 # print(c['name'])
69- used_classes = get_used_classes (c )
74+ used_classes = sorted ( get_used_classes (c ) )
7075 if use_template_get_node and c ["name" ] == "Node" :
7176 correct_method_name (c ["methods" ])
7277
0 commit comments