@@ -26,120 +26,129 @@ The build_profile.py has a __main__ and is used as a tool
2626Its usage is listed as:
2727 $ python build_profile.py BUILD_PROFILE INPUT_JSON [OUTPUT_JSON]
2828]]
29- function ( build_profile_generate_trimmed_api BUILD_PROFILE INPUT_JSON OUTPUT_JSON )
29+ function (build_profile_generate_trimmed_api BUILD_PROFILE INPUT_JSON OUTPUT_JSON)
3030 execute_process (
31- COMMAND "${Python3_EXECUTABLE} "
32- "${godot-cpp_SOURCE_DIR}/build_profile.py"
33- "${BUILD_PROFILE} "
34- "${INPUT_JSON} "
35- "${OUTPUT_JSON} "
36- WORKING_DIRECTORY ${godot-cpp_SOURCE_DIR}
31+ COMMAND
32+ "${Python3_EXECUTABLE} " "${godot-cpp_SOURCE_DIR}/build_profile.py" "${BUILD_PROFILE} " "${INPUT_JSON} "
33+ "${OUTPUT_JSON} "
34+ WORKING_DIRECTORY ${godot-cpp_SOURCE_DIR}
3735 )
38- endfunction ( )
39-
36+ endfunction ()
4037
4138#[[ Generate File List
4239
4340Use the binding_generator.py Python script to determine the list of files that
4441will be passed to the code generator using extension_api.json.
4542NOTE: This happens for every configure.]]
46- function ( binding_generator_get_file_list OUT_VAR_NAME API_FILEPATH OUTPUT_DIR )
47-
43+ function (binding_generator_get_file_list OUT_VAR_NAME API_FILEPATH OUTPUT_DIR)
4844 # This code snippet will be squashed into a single line
4945 # The two strings make this a list, in CMake lists are semicolon delimited strings.
50- set ( PYTHON_SCRIPT
46+ set (PYTHON_SCRIPT
5147"from binding_generator import print_file_list"
5248"print_file_list( api_filepath='${API_FILEPATH} ',
5349 output_dir='${OUTPUT_DIR} ',
5450 headers=True,
55- sources=True)" )
56- message ( DEBUG "Python:\n ${PYTHON_SCRIPT} " )
51+ sources=True)"
52+ )
53+ # gersemi: on
54+ message (DEBUG "Python:\n ${PYTHON_SCRIPT} " )
5755
5856 # Strip newlines and whitespace to make it a one-liner.
59- string ( REGEX REPLACE "\n *" " " PYTHON_SCRIPT "${PYTHON_SCRIPT} " )
57+ string (REGEX REPLACE "\n *" " " PYTHON_SCRIPT "${PYTHON_SCRIPT} " )
6058
61- execute_process ( COMMAND "${Python3_EXECUTABLE} " "-c" "${PYTHON_SCRIPT} "
62- WORKING_DIRECTORY "${godot-cpp_SOURCE_DIR}"
63- OUTPUT_VARIABLE GENERATED_FILES_LIST
64- OUTPUT_STRIP_TRAILING_WHITESPACE
59+ execute_process (
60+ COMMAND "${Python3_EXECUTABLE} " "-c" "${PYTHON_SCRIPT} "
61+ WORKING_DIRECTORY "${godot-cpp_SOURCE_DIR}"
62+ OUTPUT_VARIABLE GENERATED_FILES_LIST
63+ OUTPUT_STRIP_TRAILING_WHITESPACE
6564 )
6665
6766 # Debug output
68- message ( DEBUG "FileList-Begin" )
69- foreach ( PATH ${GENERATED_FILES_LIST} )
70- message ( DEBUG ${PATH} )
67+ message (DEBUG "FileList-Begin" )
68+ foreach (PATH ${GENERATED_FILES_LIST} )
69+ message (DEBUG ${PATH} )
7170 endforeach ()
7271
7372 # Error out if the file list generator returned no files.
74- list ( LENGTH GENERATED_FILES_LIST LIST_LENGTH )
75- if ( NOT LIST_LENGTH GREATER 0 )
76- message ( FATAL_ERROR "File List Generation Failed" )
73+ list (LENGTH GENERATED_FILES_LIST LIST_LENGTH)
74+ if (NOT LIST_LENGTH GREATER 0)
75+ message (FATAL_ERROR "File List Generation Failed" )
7776 endif ()
78- message ( STATUS "There are ${LIST_LENGTH} Files to generate" )
79-
80- set ( ${OUT_VAR_NAME} ${GENERATED_FILES_LIST} PARENT_SCOPE )
81- endfunction ( )
77+ message (STATUS "There are ${LIST_LENGTH} Files to generate" )
8278
79+ set (${OUT_VAR_NAME} ${GENERATED_FILES_LIST} PARENT_SCOPE)
80+ endfunction ()
8381
8482#[[ Generate Bindings
8583
8684Using the generated file list, use the binding_generator.py to generate the
8785godot-cpp bindings. This will run at build time only if there are files
8886missing. ]]
89- function ( binding_generator_generate_bindings API_FILE USE_TEMPLATE_GET_NODE, BITS, PRECISION, OUTPUT_DIR )
87+ function (
88+ binding_generator_generate_bindings
89+ API_FILE
90+ USE_TEMPLATE_GET_NODE,
91+ BITS,
92+ PRECISION,
93+ OUTPUT_DIR
94+ )
9095 # This code snippet will be squashed into a single line
91- set ( PYTHON_SCRIPT
96+ set (PYTHON_SCRIPT
9297"from binding_generator import generate_bindings"
9398"generate_bindings(
9499 api_filepath='${API_FILE} ',
95100 use_template_get_node='${USE_TEMPLATE_GET_NODE} ',
96101 bits='${BITS} ',
97102 precision='${PRECISION} ',
98- output_dir='${OUTPUT_DIR} ')" )
103+ output_dir='${OUTPUT_DIR} ')"
104+ )
105+ # gersemi: on
99106
100- message ( DEBUG "Python:\n ${PYTHON_SCRIPT} " )
107+ message (DEBUG "Python:\n ${PYTHON_SCRIPT} " )
101108
102109 # Strip newlines and whitespace to make it a one-liner.
103- string ( REGEX REPLACE "\n *" " " PYTHON_SCRIPT "${PYTHON_SCRIPT} " )
104-
105- add_custom_command (OUTPUT ${GENERATED_FILES_LIST}
106- COMMAND "${Python3_EXECUTABLE} " "-c" "${PYTHON_SCRIPT} "
107- VERBATIM
108- WORKING_DIRECTORY ${godot-cpp_SOURCE_DIR}
109- MAIN_DEPENDENCY ${GODOT_GDEXTENSION_API_FILE}
110- DEPENDS ${godot-cpp_SOURCE_DIR}/binding_generator.py
111- COMMENT "Generating bindings"
110+ string (REGEX REPLACE "\n *" " " PYTHON_SCRIPT "${PYTHON_SCRIPT} " )
111+
112+ add_custom_command (
113+ OUTPUT ${GENERATED_FILES_LIST}
114+ COMMAND "${Python3_EXECUTABLE} " "-c" "${PYTHON_SCRIPT} "
115+ VERBATIM
116+ WORKING_DIRECTORY ${godot-cpp_SOURCE_DIR}
117+ MAIN_DEPENDENCY ${GODOT_GDEXTENSION_API_FILE}
118+ DEPENDS ${godot-cpp_SOURCE_DIR}/binding_generator.py
119+ COMMENT "Generating bindings"
112120 )
113- endfunction ( )
121+ endfunction ()
114122
115123#[[ Generate doc_data.cpp
116124The documentation displayed in the Godot editor is compiled into the extension.
117125It takes a list of XML source files, and transforms them into a cpp file that
118126is added to the sources list.]]
119- function ( generate_doc_source OUTPUT_PATH SOURCES )
127+ function (generate_doc_source OUTPUT_PATH SOURCES )
120128 # Transform SOURCES CMake LIST
121129 # quote each path with ''
122130 # join with , to transform into a python list minus the surrounding []
123- set ( PYTHON_LIST "${SOURCES} " )
124- list ( TRANSFORM PYTHON_LIST REPLACE "(.*\. xml)" "'\\ 1'" )
125- list ( JOIN PYTHON_LIST "," PYTHON_LIST )
131+ set (PYTHON_LIST "${SOURCES} " )
132+ list (TRANSFORM PYTHON_LIST REPLACE "(.*\. xml)" "'\\ 1'" )
133+ list (JOIN PYTHON_LIST "," PYTHON_LIST)
126134
127135 get_filename_component (OUTPUT_DIR "${OUTPUT_PATH} " DIRECTORY )
128- file (MAKE_DIRECTORY ${OUTPUT_DIR} )
136+ file (MAKE_DIRECTORY ${OUTPUT_DIR} )
129137
130138 # Python one-liner to run our command
131139 # lists in CMake are just strings delimited by ';', so this works.
132- set ( PYTHON_SCRIPT "from doc_source_generator import generate_doc_source"
133- "generate_doc_source( '${OUTPUT_PATH} ', [${PYTHON_LIST} ] )" )
134-
135- add_custom_command ( OUTPUT "${OUTPUT_PATH} "
136- COMMAND "${Python3_EXECUTABLE} " "-c" "${PYTHON_SCRIPT} "
137- VERBATIM
138- WORKING_DIRECTORY "${godot-cpp_SOURCE_DIR}"
139- DEPENDS
140- "${godot-cpp_SOURCE_DIR}/doc_source_generator.py"
141- "${SOURCES} "
142- COMMENT "Generating: ${OUTPUT_PATH} "
140+ set (PYTHON_SCRIPT
141+ "from doc_source_generator import generate_doc_source"
142+ "generate_doc_source( '${OUTPUT_PATH} ', [${PYTHON_LIST} ] )"
143+ )
144+
145+ add_custom_command (
146+ OUTPUT "${OUTPUT_PATH} "
147+ COMMAND "${Python3_EXECUTABLE} " "-c" "${PYTHON_SCRIPT} "
148+ VERBATIM
149+ WORKING_DIRECTORY "${godot-cpp_SOURCE_DIR}"
150+ DEPENDS "${godot-cpp_SOURCE_DIR}/doc_source_generator.py" "${SOURCES} "
151+ COMMENT "Generating: ${OUTPUT_PATH} "
143152 )
144153endfunction ()
145154
@@ -148,22 +157,22 @@ A simpler interface to add xml files as doc source to a output target.
148157TARGET: The gdexension library target
149158SOURCES: a list of xml files to use for source generation and inclusion.
150159This function also adds a doc_gen target to test source generation.]]
151- function ( target_doc_sources TARGET SOURCES )
160+ function (target_doc_sources TARGET SOURCES )
152161 # set the generated file name
153- set ( DOC_SOURCE_FILE "${CMAKE_CURRENT_BINARY_DIR} /gen/doc_source.cpp" )
162+ set (DOC_SOURCE_FILE "${CMAKE_CURRENT_BINARY_DIR} /gen/doc_source.cpp" )
154163
155164 # Create the file generation target, this won't be triggered unless a target
156165 # that depends on DOC_SOURCE_FILE is built
157166 generate_doc_source( "${DOC_SOURCE_FILE} " ${SOURCES} )
158167
159168 # Add DOC_SOURCE_FILE as a dependency to TARGET
160- target_sources ( ${TARGET} PRIVATE "${DOC_SOURCE_FILE} " )
169+ target_sources (${TARGET} PRIVATE "${DOC_SOURCE_FILE} " )
161170
162171 # Create a dummy target that depends on the source so that users can
163172 # test the file generation task.
164- if ( TARGET doc_gen )
173+ if (TARGET doc_gen)
165174 else ()
166- add_custom_target ( doc_gen )
175+ add_custom_target (doc_gen)
167176 endif ()
168- target_sources ( doc_gen PRIVATE "${DOC_SOURCE_FILE} " )
177+ target_sources (doc_gen PRIVATE "${DOC_SOURCE_FILE} " )
169178endfunction ()
0 commit comments