cmake_minimum_required(VERSION 3.16) include(RunCMake) # Function to build and install a project. function(run_install_test case) set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${case}-build) set(RunCMake_TEST_NO_CLEAN 1) file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") run_cmake(${case}) run_cmake_command(${case}-build ${CMAKE_COMMAND} --build . --config Debug) # Check "all" components. set(CMAKE_INSTALL_PREFIX ${RunCMake_TEST_BINARY_DIR}/root-all) run_cmake_command(${case}-all ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -DBUILD_TYPE=Debug -P cmake_install.cmake) endfunction() if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") if(NOT CMake_INSTALL_NAME_TOOL_BUG) run_install_test(macos) run_install_test(macos-unresolved) run_install_test(macos-conflict) run_install_test(macos-notfile) endif() run_cmake(project) run_cmake(badargs1) run_cmake(badargs2) elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") run_install_test(windows) run_install_test(windows-unresolved) run_install_test(windows-conflict) run_install_test(windows-notfile) run_cmake(project) run_cmake(badargs1) run_cmake(badargs2) elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") if(DEFINED ENV{LDFLAGS}) # Some setups prebake disable-new-dtags into LDFLAGS string(REPLACE "-Wl,--disable-new-dtags" "" new_ldflags "$ENV{LDFLAGS}") set(ENV{LDFLAGS} "${new_ldflags}") endif() if(NOT CMAKE_C_COMPILER_ID MATCHES "^XL") run_install_test(linux) endif() run_install_test(linux-unresolved) run_install_test(linux-conflict) run_install_test(linux-notfile) run_cmake(project) run_cmake(badargs1) run_cmake(badargs2) else() run_cmake(unsupported) endif() run_install_test(variable-propagation)