Closed bartoszkosiorek closed 2 years ago
@jperkin @schmonz Do you think it will be possible to find another solution than https://github.com/NetBSD/pkgsrc/commit/b04d79075da6b6bd0d19ad9de2b31d11b4db813a?
How to reproduce the building issue on arm64
in an x86_64
chroot ?
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.
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
Yeh I see this now, I'll figure something out.
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?
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.
@jperkin Can you also backport this patch to pkgsrc-2021Q4
branch:
https://github.com/NetBSD/pkgsrc/tree/pkgsrc-2021Q4/devel/cmake
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
devel/cmake
(CMake 3.22.3) is not able to detect the compiler correctly on macOS 12.2.1 Monterey. A simple CMake project:Fails accordingly with:
After reverting patch from: https://github.com/NetBSD/pkgsrc/commit/b04d79075da6b6bd0d19ad9de2b31d11b4db813a The cmake is working perfectly fine: