@@ -26,120 +26,131 @@ 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+ # gersemi: off
47+ set (PYTHON_SCRIPT
5148"from binding_generator import print_file_list"
5249"print_file_list( api_filepath='${API_FILEPATH} ',
5350 output_dir='${OUTPUT_DIR} ',
5451 headers=True,
55- sources=True)" )
56- message ( DEBUG "Python:\n ${PYTHON_SCRIPT} " )
52+ sources=True)"
53+ )
54+ # gersemi: on
55+ message (DEBUG "Python:\n ${PYTHON_SCRIPT} " )
5756
5857 # Strip newlines and whitespace to make it a one-liner.
59- string ( REGEX REPLACE "\n *" " " PYTHON_SCRIPT "${PYTHON_SCRIPT} " )
58+ string (REGEX REPLACE "\n *" " " PYTHON_SCRIPT "${PYTHON_SCRIPT} " )
6059
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
60+ execute_process (
61+ COMMAND "${Python3_EXECUTABLE} " "-c" "${PYTHON_SCRIPT} "
62+ WORKING_DIRECTORY "${godot-cpp_SOURCE_DIR}"
63+ OUTPUT_VARIABLE GENERATED_FILES_LIST
64+ OUTPUT_STRIP_TRAILING_WHITESPACE
6565 )
6666
6767 # Debug output
68- message ( DEBUG "FileList-Begin" )
69- foreach ( PATH ${GENERATED_FILES_LIST} )
70- message ( DEBUG ${PATH} )
68+ message (DEBUG "FileList-Begin" )
69+ foreach (PATH ${GENERATED_FILES_LIST} )
70+ message (DEBUG ${PATH} )
7171 endforeach ()
7272
7373 # 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" )
74+ list (LENGTH GENERATED_FILES_LIST LIST_LENGTH)
75+ if (NOT LIST_LENGTH GREATER 0)
76+ message (FATAL_ERROR "File List Generation Failed" )
7777 endif ()
78- message ( STATUS "There are ${LIST_LENGTH} Files to generate" )
79-
80- set ( ${OUT_VAR_NAME} ${GENERATED_FILES_LIST} PARENT_SCOPE )
81- endfunction ( )
78+ message (STATUS "There are ${LIST_LENGTH} Files to generate" )
8279
80+ set (${OUT_VAR_NAME} ${GENERATED_FILES_LIST} PARENT_SCOPE)
81+ endfunction ()
8382
8483#[[ Generate Bindings
8584
8685Using the generated file list, use the binding_generator.py to generate the
8786godot-cpp bindings. This will run at build time only if there are files
8887missing. ]]
89- function ( binding_generator_generate_bindings API_FILE USE_TEMPLATE_GET_NODE, BITS, PRECISION, OUTPUT_DIR )
88+ function (
89+ binding_generator_generate_bindings
90+ API_FILE
91+ USE_TEMPLATE_GET_NODE,
92+ BITS,
93+ PRECISION,
94+ OUTPUT_DIR
95+ )
9096 # This code snippet will be squashed into a single line
91- set ( PYTHON_SCRIPT
97+ # gersemi: off
98+ set (PYTHON_SCRIPT
9299"from binding_generator import generate_bindings"
93100"generate_bindings(
94101 api_filepath='${API_FILE} ',
95102 use_template_get_node='${USE_TEMPLATE_GET_NODE} ',
96103 bits='${BITS} ',
97104 precision='${PRECISION} ',
98- output_dir='${OUTPUT_DIR} ')" )
105+ output_dir='${OUTPUT_DIR} ')"
106+ )
107+ # gersemi: on
99108
100- message ( DEBUG "Python:\n ${PYTHON_SCRIPT} " )
109+ message (DEBUG "Python:\n ${PYTHON_SCRIPT} " )
101110
102111 # 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"
112+ string (REGEX REPLACE "\n *" " " PYTHON_SCRIPT "${PYTHON_SCRIPT} " )
113+
114+ add_custom_command (
115+ OUTPUT ${GENERATED_FILES_LIST}
116+ COMMAND "${Python3_EXECUTABLE} " "-c" "${PYTHON_SCRIPT} "
117+ VERBATIM
118+ WORKING_DIRECTORY ${godot-cpp_SOURCE_DIR}
119+ MAIN_DEPENDENCY ${GODOT_GDEXTENSION_API_FILE}
120+ DEPENDS ${godot-cpp_SOURCE_DIR}/binding_generator.py
121+ COMMENT "Generating bindings"
112122 )
113- endfunction ( )
123+ endfunction ()
114124
115125#[[ Generate doc_data.cpp
116126The documentation displayed in the Godot editor is compiled into the extension.
117127It takes a list of XML source files, and transforms them into a cpp file that
118128is added to the sources list.]]
119- function ( generate_doc_source OUTPUT_PATH SOURCES )
129+ function (generate_doc_source OUTPUT_PATH SOURCES )
120130 # Transform SOURCES CMake LIST
121131 # quote each path with ''
122132 # 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 )
133+ set (PYTHON_LIST "${SOURCES} " )
134+ list (TRANSFORM PYTHON_LIST REPLACE "(.*\. xml)" "'\\ 1'" )
135+ list (JOIN PYTHON_LIST "," PYTHON_LIST)
126136
127137 get_filename_component (OUTPUT_DIR "${OUTPUT_PATH} " DIRECTORY )
128- file (MAKE_DIRECTORY ${OUTPUT_DIR} )
138+ file (MAKE_DIRECTORY ${OUTPUT_DIR} )
129139
130140 # Python one-liner to run our command
131141 # 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} "
142+ set (PYTHON_SCRIPT
143+ "from doc_source_generator import generate_doc_source"
144+ "generate_doc_source( '${OUTPUT_PATH} ', [${PYTHON_LIST} ] )"
145+ )
146+
147+ add_custom_command (
148+ OUTPUT "${OUTPUT_PATH} "
149+ COMMAND "${Python3_EXECUTABLE} " "-c" "${PYTHON_SCRIPT} "
150+ VERBATIM
151+ WORKING_DIRECTORY "${godot-cpp_SOURCE_DIR}"
152+ DEPENDS "${godot-cpp_SOURCE_DIR}/doc_source_generator.py" "${SOURCES} "
153+ COMMENT "Generating: ${OUTPUT_PATH} "
143154 )
144155endfunction ()
145156
@@ -148,22 +159,22 @@ A simpler interface to add xml files as doc source to a output target.
148159TARGET: The gdexension library target
149160SOURCES: a list of xml files to use for source generation and inclusion.
150161This function also adds a doc_gen target to test source generation.]]
151- function ( target_doc_sources TARGET SOURCES )
162+ function (target_doc_sources TARGET SOURCES )
152163 # set the generated file name
153- set ( DOC_SOURCE_FILE "${CMAKE_CURRENT_BINARY_DIR} /gen/doc_source.cpp" )
164+ set (DOC_SOURCE_FILE "${CMAKE_CURRENT_BINARY_DIR} /gen/doc_source.cpp" )
154165
155166 # Create the file generation target, this won't be triggered unless a target
156167 # that depends on DOC_SOURCE_FILE is built
157168 generate_doc_source( "${DOC_SOURCE_FILE} " ${SOURCES} )
158169
159170 # Add DOC_SOURCE_FILE as a dependency to TARGET
160- target_sources ( ${TARGET} PRIVATE "${DOC_SOURCE_FILE} " )
171+ target_sources (${TARGET} PRIVATE "${DOC_SOURCE_FILE} " )
161172
162173 # Create a dummy target that depends on the source so that users can
163174 # test the file generation task.
164- if ( TARGET doc_gen )
175+ if (TARGET doc_gen)
165176 else ()
166- add_custom_target ( doc_gen )
177+ add_custom_target (doc_gen)
167178 endif ()
168- target_sources ( doc_gen PRIVATE "${DOC_SOURCE_FILE} " )
179+ target_sources (doc_gen PRIVATE "${DOC_SOURCE_FILE} " )
169180endfunction ()
0 commit comments