CMake/Tests/InstallMode/Test.cmake
Felix Lelchuk 58d10cf6f1 Alternative symlink-creating mode for file(INSTALL ...)
An new environment variable 'CMAKE_INSTALL_MODE' is introduced,
which can be used to ask CMake to create symbolic links
instead of copying files during a file(INSTALL ...).

The operation is at the file level only, directory trees are
still created using actual directories, not links.

Signed-off-by: Felix Lelchuk <felix.lelchuk@gmx.de>
2021-08-02 19:42:26 +02:00

39 lines
1.1 KiB
CMake

message("Testing...")
message("FILE_PATH = ${FILE_PATH}")
message("EXPECT_SYMLINK = ${EXPECT_SYMLINK}")
message("EXPECT_ABSOLUTE = ${EXPECT_ABSOLUTE}")
if(NOT DEFINED FILE_PATH)
message(FATAL_ERROR "FILE_PATH variable must be defined")
endif()
if(NOT EXISTS "${FILE_PATH}")
message(FATAL_ERROR "File ${FILE_PATH} does not exist")
endif()
if(NOT DEFINED EXPECT_SYMLINK)
message(FATAL_ERROR "EXPECT_SYMLINK must be defined")
endif()
if(EXPECT_SYMLINK)
if(NOT DEFINED EXPECT_ABSOLUTE)
message(FATAL_ERROR "EXPECT_ABSOLUTE variable must be defined")
endif()
if(NOT IS_SYMLINK "${FILE_PATH}")
message(FATAL_ERROR "${FILE_PATH} must be a symlink")
endif()
file(READ_SYMLINK "${FILE_PATH}" TARGET_PATH)
if(EXPECT_ABSOLUTE AND NOT IS_ABSOLUTE "${TARGET_PATH}")
message(FATAL_ERROR "${FILE_PATH} must be an absolute symlink")
elseif(NOT EXPECT_ABSOLUTE AND IS_ABSOLUTE "${TARGET_PATH}")
message(FATAL_ERROR "${FILE_PATH} must be a relative symlink")
endif()
else()
if(IS_SYMLINK "${FILE_PATH}")
message(FATAL_ERROR "${FILE_PATH} must NOT be a symlink")
endif()
endif()