check_language(OBJC) wrongly succeeds when targeting Android
Project:
cmake_minimum_required(VERSION 3.15.0)
project(app LANGUAGES CXX)
include(CheckLanguage)
check_language(OBJC)
message(STATUS ">>>>>>>>>>> CMAKE_OBJC_COMPILER ${CMAKE_OBJC_COMPILER}\n\n\n")
if(CMAKE_OBJC_COMPILER)
enable_language(OBJC)
endif()
Configure
cmake .. -DCMAKE_SYSTEM_NAME=Android -DCMAKE_ANDROID_NDK=/home/alex/android/sdk/ndk/20.0.5594570
Output
-- Android: Targeting API '29' with architecture 'arm', ABI 'armeabi-v7a', and processor 'armv7-a'
-- Android: Selected unified Clang toolchain
-- The CXX compiler identification is Clang 8.0.7
-- Check for working CXX compiler: /Volumes/T3/Dev/android/sdk/ndk/20.0.5594570/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++
-- Check for working CXX compiler: /Volumes/T3/Dev/android/sdk/ndk/20.0.5594570/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ - works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for a OBJC compiler
-- Looking for a OBJC compiler - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
-- >>>>>>>>>>> CMAKE_OBJC_COMPILER /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
-- The OBJC compiler identification is AppleClang 11.0.0.11000033
-- Check for working OBJC compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
-- Check for working OBJC compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang - broken
CMake Error at /Users/alex/Dev/cmake/Modules/CMakeTestOBJCCompiler.cmake:57 (message):
The Objective-C compiler
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
is not able to compile a simple test program.
It fails with the following output:
Change Dir: /Volumes/T3/Dev/projects/cmake/android/objc/build/CMakeFiles/CMakeTmp
Run Build Command(s):/usr/local/bin/ninja cmTC_ca71b && [1/2] Building OBJC object CMakeFiles/cmTC_ca71b.dir/testOBJCCompiler.m.o
[2/2] Linking OBJC executable cmTC_ca71b
FAILED: cmTC_ca71b
: && /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -g -Wl,--fix-cortex-a8 -Wl,--gc-sections -Wl,-z,nocopyreloc CMakeFiles/cmTC_ca71b.dir/testOBJCCompiler.m.o -o cmTC_ca71b && :
ld: unknown option: --fix-cortex-a8
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
CMakeLists.txt:11 (enable_language)
-- Configuring incomplete, errors occurred!
See also "/Volumes/T3/Dev/projects/cmake/android/objc/build/CMakeFiles/CMakeOutput.log".
See also "/Volumes/T3/Dev/projects/cmake/android/objc/build/CMakeFiles/CMakeError.log".
check_language(OBJC)
claims that the language works, but subsequent enable_language(OBJC)
call fails. Same happens if I use the Google Android toolchain file.