mirror of
https://gitlab.kitware.com/cmake/cmake.git
synced 2026-09-25 04:09:36 +03:00
The SOURCES file set type is compatible with the FRAMEWORK target. Add check at generation time. Fixes: #27705
108 lines
3.9 KiB
CMake
108 lines
3.9 KiB
CMake
|
|
include(RunCMake)
|
|
|
|
function(run_and_build test)
|
|
if(RunCMake_GENERATOR_IS_MULTI_CONFIG)
|
|
set(config_options "-DCMAKE_CONFIGURATION_TYPES=Debug")
|
|
else()
|
|
set(config_options -DCMAKE_BUILD_TYPE=Debug)
|
|
endif()
|
|
set(RunCMake_TEST_OPTIONS ${config_options})
|
|
set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/${test}-build")
|
|
run_cmake_with_options(${test})
|
|
set(RunCMake_TEST_NO_CLEAN 1)
|
|
if(ARGN)
|
|
foreach(target IN LISTS ARGN)
|
|
run_cmake_command(${test}-${target} ${CMAKE_COMMAND} --build . --config Debug --target ${target} --verbose)
|
|
endforeach()
|
|
else()
|
|
run_cmake_command(${test}-build ${CMAKE_COMMAND} --build . --config Debug --verbose)
|
|
endif()
|
|
endfunction()
|
|
|
|
function(run_and_check test)
|
|
set(RunCMake_TEST_OUTPUT_MERGE TRUE)
|
|
run_and_build(${test} ${ARGN})
|
|
endfunction()
|
|
|
|
|
|
run_cmake(FileNoExist)
|
|
run_cmake(TargetProperties)
|
|
|
|
run_and_build(FileSetProperties)
|
|
run_and_build(CustomCommandInput)
|
|
run_and_build(IncludeDirectoriesOrder)
|
|
run_and_build(FileSetTransitivity)
|
|
run_and_check(CompileOptionsOrder)
|
|
if(APPLE)
|
|
run_cmake(FileSetFramework1)
|
|
run_and_build(FileSetFramework2)
|
|
endif()
|
|
if (RunCMake_GENERATOR MATCHES "Ninja")
|
|
run_cmake(IndependentFilesWarning)
|
|
if (RunCMake_GENERATOR_IS_MULTI_CONFIG)
|
|
set(IndependentFiles_target "CMakeFiles/lib1.dir/Debug/independent.c${CMAKE_C_OUTPUT_EXTENSION}")
|
|
else ()
|
|
set(IndependentFiles_target "CMakeFiles/lib1.dir/independent.c${CMAKE_C_OUTPUT_EXTENSION}")
|
|
endif ()
|
|
set(RunCMake-check-file IndependentFiles-check.cmake)
|
|
run_and_build(IndependentFiles ${IndependentFiles_target})
|
|
endif()
|
|
|
|
# Some environments are excluded because they are not able to honor verbose mode
|
|
if ((RunCMake_GENERATOR MATCHES "Makefiles|Ninja|Xcode"
|
|
OR (RunCMake_GENERATOR MATCHES "Visual Studio" AND MSVC_VERSION GREATER_EQUAL "1600"))
|
|
AND NOT CMAKE_C_COMPILER_ID STREQUAL "Intel")
|
|
run_and_check(FileSetProperties2 lib1 main)
|
|
endif()
|
|
|
|
function(run_export_import name)
|
|
if(ARGV1)
|
|
set(importname ${ARGV1})
|
|
else()
|
|
set(importname ${name})
|
|
endif()
|
|
|
|
if(RunCMake_GENERATOR_IS_MULTI_CONFIG)
|
|
set(_config_options "-DCMAKE_CONFIGURATION_TYPES=Debug\\\\;Release")
|
|
else()
|
|
set(_config_options -DCMAKE_BUILD_TYPE=Debug)
|
|
endif()
|
|
|
|
set(RunCMake_TEST_NO_CLEAN 1)
|
|
set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/${name}Export-build")
|
|
set(RunCMake_TEST_OPTIONS "--install-prefix=${RunCMake_TEST_BINARY_DIR}/install" ${_config_options})
|
|
file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
|
|
file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
|
|
run_cmake(${name}Export)
|
|
if(RunCMake_GENERATOR_IS_MULTI_CONFIG)
|
|
run_cmake_command(${name}Export-build-Debug ${CMAKE_COMMAND} --build . --config Debug)
|
|
run_cmake_command(${name}Export-install-Debug ${CMAKE_COMMAND} --install . --config Debug)
|
|
run_cmake_command(${name}Export-build-Release ${CMAKE_COMMAND} --build . --config Release)
|
|
run_cmake_command(${name}Export-install-Release ${CMAKE_COMMAND} --install . --config Release)
|
|
else()
|
|
run_cmake_command(${name}Export-build ${CMAKE_COMMAND} --build . --config Debug)
|
|
run_cmake_command(${name}Export-install ${CMAKE_COMMAND} --install . --config Debug)
|
|
endif()
|
|
unset(RunCMake_TEST_OPTIONS)
|
|
|
|
set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/${importname}Import-build")
|
|
unset(RunCMake_TEST_OPTIONS)
|
|
file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
|
|
file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
|
|
run_cmake(${importname}Import)
|
|
if(RunCMake_GENERATOR_IS_MULTI_CONFIG)
|
|
run_cmake_command(${importname}Import-build-Debug ${CMAKE_COMMAND} --build . --config Debug)
|
|
run_cmake_command(${importname}Import-build-Release ${CMAKE_COMMAND} --build . --config Release)
|
|
else()
|
|
run_cmake_command(${importname}Import-build ${CMAKE_COMMAND} --build . --config Debug)
|
|
endif()
|
|
|
|
unset(RunCMake_TEST_BINARY_DIR)
|
|
unset(RunCMake_TEST_NO_CLEAN)
|
|
endfunction()
|
|
|
|
run_cmake(InstallMissingSetsInterface)
|
|
run_cmake(InstallMissingSetsInterfacePostInstall)
|
|
run_export_import(FileSet)
|