diff options
Diffstat (limited to 'Modules/CMakeTestOBJCXXCompiler.cmake')
-rw-r--r-- | Modules/CMakeTestOBJCXXCompiler.cmake | 75 |
1 files changed, 38 insertions, 37 deletions
diff --git a/Modules/CMakeTestOBJCXXCompiler.cmake b/Modules/CMakeTestOBJCXXCompiler.cmake index 83227d5..dc153a7 100644 --- a/Modules/CMakeTestOBJCXXCompiler.cmake +++ b/Modules/CMakeTestOBJCXXCompiler.cmake @@ -21,6 +21,15 @@ endif() # We now store this in CMakeOBJCXXCompiler.cmake. unset(CMAKE_OBJCXX_COMPILER_WORKS CACHE) +# Try to identify the ABI and configure it into CMakeOBJCXXCompiler.cmake +include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake) +CMAKE_DETERMINE_COMPILER_ABI(OBJCXX ${CMAKE_ROOT}/Modules/CMakeOBJCXXCompilerABI.mm) +if(CMAKE_OBJCXX_ABI_COMPILED) + # The compiler worked so skip dedicated test below. + set(CMAKE_OBJCXX_COMPILER_WORKS TRUE) + message(STATUS "Check for working OBJCXX compiler: ${CMAKE_OBJCXX_COMPILER} - skipped") +endif() + # This file is used by EnableLanguage in cmGlobalGenerator to # determine that the selected Objective-C++ compiler can actually compile # and link the most basic of programs. If not, a fatal error @@ -43,49 +52,41 @@ if(NOT CMAKE_OBJCXX_COMPILER_WORKS) # Move result from cache to normal variable. set(CMAKE_OBJCXX_COMPILER_WORKS ${CMAKE_OBJCXX_COMPILER_WORKS}) unset(CMAKE_OBJCXX_COMPILER_WORKS CACHE) - set(OBJCXX_TEST_WAS_RUN 1) __TestCompiler_restoreTryCompileTargetType() -endif() - -if(NOT CMAKE_OBJCXX_COMPILER_WORKS) - PrintTestCompilerResult(CHECK_FAIL "broken") - file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log - "Determining if the Objective-C++ compiler works failed with " - "the following output:\n${__CMAKE_OBJCXX_COMPILER_OUTPUT}\n\n") - string(REPLACE "\n" "\n " _output "${__CMAKE_OBJCXX_COMPILER_OUTPUT}") - message(FATAL_ERROR "The Objective-C++ compiler\n \"${CMAKE_OBJCXX_COMPILER}\"\n" - "is not able to compile a simple test program.\nIt fails " - "with the following output:\n ${_output}\n\n" - "CMake will not be able to correctly generate this project.") -else() - if(OBJCXX_TEST_WAS_RUN) - PrintTestCompilerResult(CHECK_PASS "works") - file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log - "Determining if the Objective-C++ compiler works passed with " + if(NOT CMAKE_OBJCXX_COMPILER_WORKS) + PrintTestCompilerResult(CHECK_FAIL "broken") + file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log + "Determining if the Objective-C++ compiler works failed with " "the following output:\n${__CMAKE_OBJCXX_COMPILER_OUTPUT}\n\n") + string(REPLACE "\n" "\n " _output "${__CMAKE_OBJCXX_COMPILER_OUTPUT}") + message(FATAL_ERROR "The Objective-C++ compiler\n \"${CMAKE_OBJCXX_COMPILER}\"\n" + "is not able to compile a simple test program.\nIt fails " + "with the following output:\n ${_output}\n\n" + "CMake will not be able to correctly generate this project.") endif() + PrintTestCompilerResult(CHECK_PASS "works") + file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log + "Determining if the Objective-C++ compiler works passed with " + "the following output:\n${__CMAKE_OBJCXX_COMPILER_OUTPUT}\n\n") +endif() - # Try to identify the ABI and configure it into CMakeOBJCXXCompiler.cmake - include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake) - CMAKE_DETERMINE_COMPILER_ABI(OBJCXX ${CMAKE_ROOT}/Modules/CMakeOBJCXXCompilerABI.mm) - # Try to identify the compiler features - include(${CMAKE_ROOT}/Modules/CMakeDetermineCompileFeatures.cmake) - CMAKE_DETERMINE_COMPILE_FEATURES(OBJCXX) +# Try to identify the compiler features +include(${CMAKE_ROOT}/Modules/CMakeDetermineCompileFeatures.cmake) +CMAKE_DETERMINE_COMPILE_FEATURES(OBJCXX) - # Re-configure to save learned information. - configure_file( - ${CMAKE_ROOT}/Modules/CMakeOBJCXXCompiler.cmake.in - ${CMAKE_PLATFORM_INFO_DIR}/CMakeOBJCXXCompiler.cmake - @ONLY - ) - include(${CMAKE_PLATFORM_INFO_DIR}/CMakeOBJCXXCompiler.cmake) +# Re-configure to save learned information. +configure_file( + ${CMAKE_ROOT}/Modules/CMakeOBJCXXCompiler.cmake.in + ${CMAKE_PLATFORM_INFO_DIR}/CMakeOBJCXXCompiler.cmake + @ONLY + ) +include(${CMAKE_PLATFORM_INFO_DIR}/CMakeOBJCXXCompiler.cmake) - if(CMAKE_OBJCXX_SIZEOF_DATA_PTR) - foreach(f ${CMAKE_OBJCXX_ABI_FILES}) - include(${f}) - endforeach() - unset(CMAKE_OBJCXX_ABI_FILES) - endif() +if(CMAKE_OBJCXX_SIZEOF_DATA_PTR) + foreach(f ${CMAKE_OBJCXX_ABI_FILES}) + include(${f}) + endforeach() + unset(CMAKE_OBJCXX_ABI_FILES) endif() set(CMAKE_TRY_COMPILE_TARGET_TYPE ${__CMAKE_SAVED_TRY_COMPILE_TARGET_TYPE}) |