mirror of
https://github.com/hermitcore/libhermit.git
synced 2025-03-30 00:00:15 +01:00
38 lines
1.4 KiB
CMake
38 lines
1.4 KiB
CMake
# COPYRIGHT (c) 2016 Obsidian Research Corporation.
|
|
# Licensed under BSD (MIT variant) or GPLv2. See COPYING.
|
|
|
|
# Execute a header fixup based on NOT_NEEDED for HEADER
|
|
|
|
# The buildlib includes alternate header file shims for several scenarios, if
|
|
# the build system detects a feature is present then it should call RDMA_DoFixup
|
|
# with the test as true. If false then the shim header will be installed.
|
|
|
|
# Typically the shim header will replace a missing header with stubs, or it
|
|
# will augment an existing header with include_next.
|
|
function(RDMA_DoFixup not_needed header)
|
|
cmake_parse_arguments(ARGS "NO_SHIM" "" "" ${ARGN})
|
|
string(REPLACE / - header-bl ${header})
|
|
|
|
if (NOT EXISTS "${BUILDLIB}/fixup-include/${header-bl}")
|
|
# NO_SHIM lets cmake succeed if the header exists in the system but no
|
|
# shim is provided, but this will always fail if the shim is needed but
|
|
# does not exist.
|
|
if (NOT ARGS_NO_SHIM OR NOT "${not_needed}")
|
|
message(FATAL_ERROR "Fixup header ${BUILDLIB}/fixup-include/${header-bl} is not present")
|
|
endif()
|
|
endif()
|
|
|
|
set(DEST "${BUILD_INCLUDE}/${header}")
|
|
if (NOT "${not_needed}")
|
|
if(CMAKE_VERSION VERSION_LESS "2.8.12")
|
|
get_filename_component(DIR ${DEST} PATH)
|
|
else()
|
|
get_filename_component(DIR ${DEST} DIRECTORY)
|
|
endif()
|
|
file(MAKE_DIRECTORY "${DIR}")
|
|
|
|
rdma_create_symlink("${BUILDLIB}/fixup-include/${header-bl}" "${DEST}")
|
|
else()
|
|
file(REMOVE ${DEST})
|
|
endif()
|
|
endfunction()
|