Add an option to output a depfile for outside build-systems to learn the source file dependencies of the bindings. This can be used by 3rd party build system integrations to only rerun bindgen when necessary. Testing is done via CMake integration tests, since CMake is a 3rd party buildsystem which supports depfiles.
27 lines
964 B
CMake
27 lines
964 B
CMake
# Common code used across the different tests
|
|
|
|
if(NOT DEFINED CBINDGEN_PATH)
|
|
message(FATAL_ERROR "Path to cbindgen not specified")
|
|
endif()
|
|
|
|
# Promote to cache
|
|
set(CBINDGEN_PATH "${CBINDGEN_PATH}" CACHE INTERNAL "")
|
|
|
|
function(add_cbindgen_command custom_target_name header_destination)
|
|
# Place the depfile always at the same location, so the outer test framework can locate the file easily
|
|
set(depfile_destination "${CMAKE_BINARY_DIR}/depfile.d")
|
|
add_custom_command(
|
|
OUTPUT
|
|
"${header_destination}" "${depfile_destination}"
|
|
COMMAND
|
|
"${CBINDGEN_PATH}"
|
|
--output "${header_destination}"
|
|
--depfile "${depfile_destination}"
|
|
${ARGN}
|
|
DEPFILE "${depfile_destination}"
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
|
COMMENT "Running cbindgen"
|
|
COMMAND_EXPAND_LISTS
|
|
)
|
|
add_custom_target("${custom_target_name}" ALL DEPENDS "${header_destination}")
|
|
endfunction() |