@@ -26,121 +26,130 @@ 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
51- "from binding_generator import print_file_list"
52- "print_file_list( api_filepath='${API_FILEPATH} ',
46+ set (PYTHON_SCRIPT
47+ "from binding_generator import print_file_list"
48+ "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+ message (DEBUG "Python:\n ${PYTHON_SCRIPT} " )
5754
5855 # Strip newlines and whitespace to make it a one-liner.
59- string ( REGEX REPLACE "\n *" " " PYTHON_SCRIPT "${PYTHON_SCRIPT} " )
56+ string (REGEX REPLACE "\n *" " " PYTHON_SCRIPT "${PYTHON_SCRIPT} " )
6057
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
58+ execute_process (
59+ COMMAND "${Python3_EXECUTABLE} " "-c" "${PYTHON_SCRIPT} "
60+ WORKING_DIRECTORY "${godot-cpp_SOURCE_DIR}"
61+ OUTPUT_VARIABLE GENERATED_FILES_LIST
62+ OUTPUT_STRIP_TRAILING_WHITESPACE
6563 )
6664
6765 # Debug output
68- message ( DEBUG "FileList-Begin" )
69- foreach ( PATH ${GENERATED_FILES_LIST} )
70- message ( DEBUG ${PATH} )
66+ message (DEBUG "FileList-Begin" )
67+ foreach (PATH ${GENERATED_FILES_LIST} )
68+ message (DEBUG ${PATH} )
7169 endforeach ()
7270
7371 # 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" )
72+ list (LENGTH GENERATED_FILES_LIST LIST_LENGTH)
73+ if (NOT LIST_LENGTH GREATER 0)
74+ message (FATAL_ERROR "File List Generation Failed" )
7775 endif ()
78- message ( STATUS "There are ${LIST_LENGTH} Files to generate" )
79-
80- set ( ${OUT_VAR_NAME} ${GENERATED_FILES_LIST} PARENT_SCOPE )
81- endfunction ( )
76+ message (STATUS "There are ${LIST_LENGTH} Files to generate" )
8277
78+ set (${OUT_VAR_NAME} ${GENERATED_FILES_LIST} PARENT_SCOPE)
79+ endfunction ()
8380
8481#[[ Generate Bindings
8582
8683Using the generated file list, use the binding_generator.py to generate the
8784godot-cpp bindings. This will run at build time only if there are files
8885missing. ]]
89- function ( binding_generator_generate_bindings API_FILE USE_TEMPLATE_GET_NODE, BITS, PRECISION, OUTPUT_DIR )
86+ function (
87+ binding_generator_generate_bindings
88+ API_FILE
89+ USE_TEMPLATE_GET_NODE,
90+ BITS,
91+ PRECISION,
92+ OUTPUT_DIR
93+ )
9094 # This code snippet will be squashed into a single line
91- set ( PYTHON_SCRIPT
92- "from binding_generator import generate_bindings"
93- "generate_bindings(
95+ set (PYTHON_SCRIPT
96+ "from binding_generator import generate_bindings"
97+ "generate_bindings(
9498 api_filepath='${API_FILE} ',
9599 use_template_get_node='${USE_TEMPLATE_GET_NODE} ',
96100 bits='${BITS} ',
97101 precision='${PRECISION} ',
98- output_dir='${OUTPUT_DIR} ')" )
102+ output_dir='${OUTPUT_DIR} ')"
103+ )
99104
100- message ( DEBUG "Python:\n ${PYTHON_SCRIPT} " )
105+ message (DEBUG "Python:\n ${PYTHON_SCRIPT} " )
101106
102107 # 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 ${GODOTCPP_GDEXTENSION_API_FILE}
110- DEPENDS ${godot-cpp_SOURCE_DIR}/binding_generator.py
111- COMMENT "Generating bindings"
108+ string (REGEX REPLACE "\n *" " " PYTHON_SCRIPT "${PYTHON_SCRIPT} " )
109+
110+ add_custom_command (
111+ OUTPUT ${GENERATED_FILES_LIST}
112+ COMMAND "${Python3_EXECUTABLE} " "-c" "${PYTHON_SCRIPT} "
113+ VERBATIM
114+ WORKING_DIRECTORY ${godot-cpp_SOURCE_DIR}
115+ MAIN_DEPENDENCY ${GODOTCPP_GDEXTENSION_API_FILE}
116+ DEPENDS ${godot-cpp_SOURCE_DIR}/binding_generator.py
117+ COMMENT "Generating bindings"
112118 )
113- endfunction ( )
119+ endfunction ()
114120
115121#[[ Generate doc_data.cpp
116122The documentation displayed in the Godot editor is compiled into the extension.
117123It takes a list of XML source files, and transforms them into a cpp file that
118124is added to the sources list.]]
119- function ( generate_doc_source OUTPUT_PATH SOURCES )
125+ function (generate_doc_source OUTPUT_PATH SOURCES )
120126 # Transform SOURCES CMake LIST
121127 # quote each path with ''
122128 # 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 )
129+ set (PYTHON_LIST "${SOURCES} " )
130+ list (TRANSFORM PYTHON_LIST REPLACE "(.*\. xml)" "'\\ 1'" )
131+ list (JOIN PYTHON_LIST "," PYTHON_LIST)
126132
127133 get_filename_component (OUTPUT_DIR "${OUTPUT_PATH} " DIRECTORY )
128- file (MAKE_DIRECTORY ${OUTPUT_DIR} )
134+ file (MAKE_DIRECTORY ${OUTPUT_DIR} )
129135
130136 # Python one-liner to run our command
131137 # 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
138+ set (PYTHON_SCRIPT
139+ "from doc_source_generator import generate_doc_source"
140+ "generate_doc_source( '${OUTPUT_PATH} ', [${PYTHON_LIST} ] )"
141+ )
142+
143+ add_custom_command (
144+ OUTPUT "${OUTPUT_PATH} "
145+ COMMAND "${Python3_EXECUTABLE} " "-c" "${PYTHON_SCRIPT} "
146+ VERBATIM
147+ WORKING_DIRECTORY "${godot-cpp_SOURCE_DIR}"
148+ DEPENDS
140149 DEPENDS #
141150 "${godot-cpp_SOURCE_DIR}/doc_source_generator.py"
142151 "${SOURCES} "
143- COMMENT "Generating: ${OUTPUT_PATH} "
152+ COMMENT "Generating: ${OUTPUT_PATH} "
144153 )
145154endfunction ()
146155
@@ -149,22 +158,22 @@ A simpler interface to add xml files as doc source to a output target.
149158TARGET: The gdexension library target
150159SOURCES: a list of xml files to use for source generation and inclusion.
151160This function also adds a doc_gen target to test source generation.]]
152- function ( target_doc_sources TARGET SOURCES )
161+ function (target_doc_sources TARGET SOURCES )
153162 # set the generated file name
154- set ( DOC_SOURCE_FILE "${CMAKE_CURRENT_BINARY_DIR} /gen/doc_source.cpp" )
163+ set (DOC_SOURCE_FILE "${CMAKE_CURRENT_BINARY_DIR} /gen/doc_source.cpp" )
155164
156165 # Create the file generation target, this won't be triggered unless a target
157166 # that depends on DOC_SOURCE_FILE is built
158167 generate_doc_source( "${DOC_SOURCE_FILE} " ${SOURCES} )
159168
160169 # Add DOC_SOURCE_FILE as a dependency to TARGET
161- target_sources ( ${TARGET} PRIVATE "${DOC_SOURCE_FILE} " )
170+ target_sources (${TARGET} PRIVATE "${DOC_SOURCE_FILE} " )
162171
163172 # Create a dummy target that depends on the source so that users can
164173 # test the file generation task.
165- if ( TARGET doc_gen )
174+ if (TARGET doc_gen)
166175 else ()
167- add_custom_target ( doc_gen )
176+ add_custom_target (doc_gen)
168177 endif ()
169- target_sources ( doc_gen PRIVATE "${DOC_SOURCE_FILE} " )
178+ target_sources (doc_gen PRIVATE "${DOC_SOURCE_FILE} " )
170179endfunction ()
0 commit comments