rustls-ffi 0.15.2

Rustls bindings for non-Rust languages
Documentation
add_custom_target(
    rust-format-fix
    COMMAND sed -i -e 's/ffi_panic_boundary! {/if true {/g' src/*.rs
    COMMAND cargo fmt
    COMMAND sed -i -e 's/if true {/ffi_panic_boundary! {/g' src/*.rs
    WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
)

add_custom_target(
    rust-format-check
    COMMAND sed -i -e 's/ffi_panic_boundary! {/if true {/g' src/*.rs
    COMMAND cargo fmt --check
    COMMAND sed -i -e 's/if true {/ffi_panic_boundary! {/g' src/*.rs
    WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
)

add_custom_target(
    cmake-format-fix
    COMMAND
        gersemi --definitions cmake/custom_function_defs.txt -i CMakeLists.txt
        tests/CMakeLists.txt cmake/*.cmake
    WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
)

add_custom_target(
    cmake-format-check
    COMMAND
        gersemi --definitions cmake/custom_function_defs.txt -c CMakeLists.txt
        tests/CMakeLists.txt cmake/*.cmake
    WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
)

function(add_c_format_targets targets)
    set(all_sources "")
    foreach(target ${targets})
        list(APPEND all_sources $<TARGET_PROPERTY:${target},SOURCES>)
    endforeach()

    # A fix target that formats the source files in-place.
    add_custom_target(
        c-format-fix
        COMMAND clang-format -i ${all_sources}
        COMMAND_EXPAND_LISTS
        WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/tests"
    )

    # A check target that checks if the source files are formatted correctly.
    add_custom_target(
        c-format-check
        COMMAND clang-format --dry-run -Werror -i ${all_sources}
        COMMAND_EXPAND_LISTS
        WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/tests"
    )
endfunction()

# Add c-format-fix and c-format-check targets for the test binary sourcecode.
add_c_format_targets("client;server")

add_custom_target(
    format-fix
    DEPENDS rust-format-fix c-format-fix cmake-format-fix
)

add_custom_target(
    format-check
    DEPENDS rust-format-check c-format-check cmake-format-check
)