@@ -107,22 +107,23 @@ function(
107107 # Strip newlines and whitespace to make it a one-liner.
108108 string (REGEX REPLACE "\n *" " " PYTHON_SCRIPT "${PYTHON_SCRIPT} " )
109109
110- add_custom_command (
111- OUTPUT ${GENERATED_FILES_LIST}
110+ add_custom_target (
111+ godot-cpp.generate_bindings
112112 COMMAND "${Python3_EXECUTABLE} " "-c" "${PYTHON_SCRIPT} "
113- VERBATIM
113+ BYPRODUCTS ${GENERATED_FILES_LIST}
114114 WORKING_DIRECTORY ${godot-cpp_SOURCE_DIR}
115- MAIN_DEPENDENCY ${GODOTCPP_GDEXTENSION_API_FILE}
116- DEPENDS ${godot-cpp_SOURCE_DIR}/binding_generator.py
117115 COMMENT "Generating bindings"
116+ VERBATIM
117+ SOURCES ${godot-cpp_SOURCE_DIR}/binding_generator.py ${GODOTCPP_GDEXTENSION_API_FILE}
118118 )
119+ set_target_properties (godot-cpp.generate_bindings PROPERTIES FOLDER "godot-cpp" )
119120endfunction ()
120121
121122#[[ Generate doc_data.cpp
122123The documentation displayed in the Godot editor is compiled into the extension.
123124It takes a list of XML source files, and transforms them into a cpp file that
124125is added to the sources list.]]
125- function (generate_doc_source OUTPUT_PATH SOURCES )
126+ function (generate_doc_source TARGET OUTPUT_PATH SOURCES )
126127 # Transform SOURCES CMake LIST
127128 # quote each path with ''
128129 # join with , to transform into a python list minus the surrounding []
@@ -140,16 +141,14 @@ function(generate_doc_source OUTPUT_PATH SOURCES)
140141 "generate_doc_source( '${OUTPUT_PATH} ', [${PYTHON_LIST} ] )"
141142 )
142143
143- add_custom_command (
144- OUTPUT " ${OUTPUT_PATH} "
144+ add_custom_target (
145+ ${TARGET}
145146 COMMAND "${Python3_EXECUTABLE} " "-c" "${PYTHON_SCRIPT} "
146- VERBATIM
147+ BYPRODUCTS " ${OUTPUT_PATH} "
147148 WORKING_DIRECTORY "${godot-cpp_SOURCE_DIR}"
148- DEPENDS
149- DEPENDS #
150- "${godot-cpp_SOURCE_DIR}/doc_source_generator.py"
151- "${SOURCES} "
152149 COMMENT "Generating: ${OUTPUT_PATH} "
150+ VERBATIM
151+ SOURCES "${godot-cpp_SOURCE_DIR}/doc_source_generator.py" ${SOURCES}
153152 )
154153endfunction ()
155154
@@ -164,16 +163,8 @@ function(target_doc_sources TARGET SOURCES)
164163
165164 # Create the file generation target, this won't be triggered unless a target
166165 # that depends on DOC_SOURCE_FILE is built
167- generate_doc_source( "${DOC_SOURCE_FILE} " ${SOURCES} )
166+ generate_doc_source( ${TARGET} _doc_gen "${DOC_SOURCE_FILE} " ${SOURCES} )
168167
169168 # Add DOC_SOURCE_FILE as a dependency to TARGET
170169 target_sources (${TARGET} PRIVATE "${DOC_SOURCE_FILE} " )
171-
172- # Create a dummy target that depends on the source so that users can
173- # test the file generation task.
174- if (TARGET doc_gen)
175- else ()
176- add_custom_target (doc_gen)
177- endif ()
178- target_sources (doc_gen PRIVATE "${DOC_SOURCE_FILE} " )
179170endfunction ()
0 commit comments