summaryrefslogtreecommitdiffstats
path: root/tests/depfile/cbindgen_test.cmake
blob: 752c3c3b6f35ef0a1c7c04c0987603b4daac7a94 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 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()