Skip to content

devel/cmake: CMake 3.22 not able to detect properly compiler on macOS Monterey #103

Description

@bartoszkosiorek

devel/cmake (CMake 3.22.3) is not able to detect the compiler correctly on macOS 12.2.1 Monterey. A simple CMake project:

cmake_minimum_required(VERSION 3.22)
project(example-project)
add_executable(${PROJECT_NAME} main.cpp)

Fails accordingly with:

-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - failed
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc - broken
CMake Error at /usr/local/pkg/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake:69 (message):
  The C compiler

    "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc"

  is not able to compile a simple test program.

  It fails with the following output:

    Change Dir: /Users/vanderhu/playground/testsimple/build/CMakeFiles/CMakeTmp

    Run Build Command(s):/usr/bin/make -f Makefile cmTC_a6dd3/fast && /Applications/Xcode.app/Contents/Developer/usr/bin/make  -f CMakeFiles/cmTC_a6dd3.dir/build.make CMakeFiles/cmTC_a6dd3.dir/build
    Building C object CMakeFiles/cmTC_a6dd3.dir/testCCompiler.c.o
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc    -MD -MT CMakeFiles/cmTC_a6dd3.dir/testCCompiler.c.o -MF CMakeFiles/cmTC_a6dd3.dir/testCCompiler.c.o.d -o CMakeFiles/cmTC_a6dd3.dir/testCCompiler.c.o -c /Users/vanderhu/playground/testsimple/build/CMakeFiles/CMakeTmp/testCCompiler.c
    Linking C executable cmTC_a6dd3
    /usr/local/pkg/bin/cmake -E cmake_link_script CMakeFiles/cmTC_a6dd3.dir/link.txt --verbose=1
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_a6dd3.dir/testCCompiler.c.o -o cmTC_a6dd3
    ld: library not found for -lSystem
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    make[1]: *** [cmTC_a6dd3] Error 1
    make: *** [cmTC_a6dd3/fast] Error 2

After reverting patch from: b04d790
The cmake is working perfectly fine:

% /usr/local/pkg/bin/cmake ..                
zsh: sure you want to delete all 4 files in /Users/NavKit/dev/cmake-3.22/build [yn]? y
Re-run cmake no build system arguments
-- The C compiler identification is AppleClang 13.0.0.13000029
-- The CXX compiler identification is AppleClang 13.0.0.13000029
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/NavKit/dev/cmake-3.22/build

Activity

  1. bartoszkosiorek commented on Mar 16, 2022

    @bartoszkosiorek
    Author

    @jperkin @schmonz Do you think it will be possible to find another solution than b04d790?
    How to reproduce the building issue on arm64 in an x86_64 chroot ?

  2. changed the title [-]cmake/devel: CMake 3.22 not able to detect properly compiler on macOS Monterey[/-] [+]devel/cmake: CMake 3.22 not able to detect properly compiler on macOS Monterey[/+] on Mar 16, 2022
  3. jperkin commented on Mar 16, 2022

    @jperkin
    Collaborator

    Certainly if there's a solution that avoids this that'd be preferable. Hard to see how removing -arch causes ld: library not found for -lSystem though, it should just use the default.

    It's currently impossible to create arm64 chroots at all, so the only way to build arm64 packages is inside an x86_64 chroot.

  4. self-assigned this
    on Mar 16, 2022
  5. bartoszkosiorek commented on Mar 16, 2022

    @bartoszkosiorek
    Author

    The patch is causing the sysroot and syslibroot are not added.
    With -arch patch:

    
    Linking C executable cmTC_32a5e
    /usr/local/pkg/bin/cmake -E cmake_link_script CMakeFiles/cmTC_32a5e.dir/link.txt --verbose=1
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -Wl,-search_paths_first -Wl,-headerpad_max_install_names  -v -Wl,-v CMakeFiles/cmTC_32a5e.dir/CMakeCCompilerABI.c.o -o cmTC_32a5e 
    Apple clang version 13.0.0 (clang-1300.0.29.30)
    Target: x86_64-apple-darwin21.3.0
    Thread model: posix
    InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
     "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -arch x86_64 -platform_version macos 12.0.0 12.0.0 -o cmTC_32a5e -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_32a5e.dir/CMakeCCompilerABI.c.o -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/13.0.0/lib/darwin/libclang_rt.osx.a
    @(#)PROGRAM:ld  PROJECT:ld64-711
    BUILD 21:57:11 Nov 17 2021
    configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em
    Library search paths:
    	/usr/lib
    	/usr/local/lib
    Framework search paths:
    	/Library/Frameworks/
    	/System/Library/Frameworks/
    ld: library not found for -lSystem
    

    Without -arch patch (working with sysroot and syslibroot):

    
    Linking C executable cmTC_39687
    /usr/local/Cellar/cmake/3.22.3/bin/cmake -E cmake_link_script CMakeFiles/cmTC_39687.dir/link.txt --verbose=1
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names  -v -Wl,-v CMakeFiles/cmTC_39687.dir/CMakeCCompilerABI.c.o -o cmTC_39687 
    Apple clang version 13.0.0 (clang-1300.0.29.30)
    Target: x86_64-apple-darwin21.3.0
    Thread model: posix
    InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
     "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -arch x86_64 -platform_version macos 12.0.0 12.1 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk -o cmTC_39687 -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_39687.dir/CMakeCCompilerABI.c.o -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/13.0.0/lib/darwin/libclang_rt.osx.a
    @(#)PROGRAM:ld  PROJECT:ld64-711
    BUILD 21:57:11 Nov 17 2021
    configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em
    Library search paths:
    	/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/usr/lib
    Framework search paths:
    	/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/
    	
    Parsed C implicit include dir info from above output: rv=done
    
  6. jperkin commented on Mar 16, 2022

    @jperkin
    Collaborator

    Yeh I see this now, I'll figure something out.

  7. bartoszkosiorek commented on Mar 16, 2022

    @bartoszkosiorek
    Author

    Is this patch is needed to add macOS M1 (arm based) support:
    https://en.wikipedia.org/wiki/Apple_M1
    ?

    I think such kind of patches should be submitted upstream in cmake:
    https://gitlab.kitware.com/cmake/cmake

    It will allow to gather feedback about implementation and the new features will be available to everyone (not only in pkgsrc).
    Could you please create ticket on CMake project?

  8. jperkin commented on Mar 16, 2022

    @jperkin
    Collaborator

    No, it's a workaround to resolve the problem that you cannot create an arm64 chroot on M1 systems, so you are forced to build inside an x86_64 chroot, and cmake misinterprets that as you wanting to build for x86_64 natively.

    I have a fix that I'm about to commit that should resolve this.

  9. bartoszkosiorek commented on Mar 17, 2022

    @bartoszkosiorek
    Author

    @jperkin Can you also backport this patch to pkgsrc-2021Q4 branch:
    https://github.com/NetBSD/pkgsrc/tree/pkgsrc-2021Q4/devel/cmake

  10. bartoszkosiorek commented on Mar 17, 2022

    @bartoszkosiorek
    Author

    Have you tried to use the CMAKE_APPLE_SILICON_PROCESSOR
    cmake variable, to choose which architecture has to be build: https://cmake.org/cmake/help/latest/variable/CMAKE_APPLE_SILICON_PROCESSOR.html

  11. 186 remaining items

  12. added a commit that references this issue on Jun 24, 2026
  13. added a commit that references this issue on Jul 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions