@@ -107,22 +107,23 @@ function(
107
107
# Strip newlines and whitespace to make it a one-liner.
108
108
string (REGEX REPLACE "\n *" " " PYTHON_SCRIPT "${PYTHON_SCRIPT} " )
109
109
110
- add_custom_command (
111
- OUTPUT ${GENERATED_FILES_LIST}
110
+ add_custom_target (
111
+ godot-cpp.generate_bindings
112
112
COMMAND "${Python3_EXECUTABLE} " "-c" "${PYTHON_SCRIPT} "
113
- VERBATIM
113
+ BYPRODUCTS ${GENERATED_FILES_LIST}
114
114
WORKING_DIRECTORY ${godot-cpp_SOURCE_DIR}
115
- MAIN_DEPENDENCY ${GODOTCPP_GDEXTENSION_API_FILE}
116
- DEPENDS ${godot-cpp_SOURCE_DIR}/binding_generator.py
117
115
COMMENT "Generating bindings"
116
+ VERBATIM
117
+ SOURCES ${godot-cpp_SOURCE_DIR}/binding_generator.py ${GODOTCPP_GDEXTENSION_API_FILE}
118
118
)
119
+ set_target_properties (godot-cpp.generate_bindings PROPERTIES FOLDER "godot-cpp" )
119
120
endfunction ()
120
121
121
122
#[[ Generate doc_data.cpp
122
123
The documentation displayed in the Godot editor is compiled into the extension.
123
124
It takes a list of XML source files, and transforms them into a cpp file that
124
125
is added to the sources list.]]
125
- function (generate_doc_source OUTPUT_PATH SOURCES )
126
+ function (generate_doc_source TARGET OUTPUT_PATH SOURCES )
126
127
# Transform SOURCES CMake LIST
127
128
# quote each path with ''
128
129
# join with , to transform into a python list minus the surrounding []
@@ -140,16 +141,14 @@ function(generate_doc_source OUTPUT_PATH SOURCES)
140
141
"generate_doc_source( '${OUTPUT_PATH} ', [${PYTHON_LIST} ] )"
141
142
)
142
143
143
- add_custom_command (
144
- OUTPUT " ${OUTPUT_PATH} "
144
+ add_custom_target (
145
+ ${TARGET}
145
146
COMMAND "${Python3_EXECUTABLE} " "-c" "${PYTHON_SCRIPT} "
146
- VERBATIM
147
+ BYPRODUCTS " ${OUTPUT_PATH} "
147
148
WORKING_DIRECTORY "${godot-cpp_SOURCE_DIR}"
148
- DEPENDS
149
- DEPENDS #
150
- "${godot-cpp_SOURCE_DIR}/doc_source_generator.py"
151
- "${SOURCES} "
152
149
COMMENT "Generating: ${OUTPUT_PATH} "
150
+ VERBATIM
151
+ SOURCES "${godot-cpp_SOURCE_DIR}/doc_source_generator.py" ${SOURCES}
153
152
)
154
153
endfunction ()
155
154
@@ -164,16 +163,8 @@ function(target_doc_sources TARGET SOURCES)
164
163
165
164
# Create the file generation target, this won't be triggered unless a target
166
165
# 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} )
168
167
169
168
# Add DOC_SOURCE_FILE as a dependency to TARGET
170
169
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} " )
179
170
endfunction ()
0 commit comments