cbindgen/tests/depfile/cbindgen_test.cmake
Jonathan Schwender 25132a3690 Add --depfile option
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.
2023-05-29 18:56:53 +02:00

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()