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