aarch64-macos-gnu
andrewrk opened this issue · 7 comments
The first problem is a codesigning issue which I worked around by running codesign -s -
but then I hit a second error:
-- Check for working CXX compiler: /Users/andy/dev/zig-bootstrap/out/host/bin/zig
-- Check for working CXX compiler: /Users/andy/dev/zig-bootstrap/out/host/bin/zig - broken
CMake Error at /Users/andy/local/share/cmake-3.19/Modules/CMakeTestCXXCompiler.cmake:59 (message):
The C++ compiler
"/Users/andy/dev/zig-bootstrap/out/host/bin/zig"
is not able to compile a simple test program.
It fails with the following output:
Change Dir: /Users/andy/dev/zig-bootstrap/out/build-llvm-aarch64-macos-gnu-native/CMakeFiles/CMakeTmp
Run Build Command(s):/usr/bin/make cmTC_9f6ec/fast && /Library/Developer/CommandLineTools/usr/bin/make -f CMakeFiles/cmTC_9f6ec.dir/build.make CMakeFiles/cmTC_9f6ec.dir/build
Building CXX object CMakeFiles/cmTC_9f6ec.dir/testCXXCompiler.cxx.o
/Users/andy/dev/zig-bootstrap/out/host/bin/zig c++ -fno-sanitize=all -target aarch64-macos-gnu -mcpu=native -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk -o CMakeFiles/cmTC_9f6ec.dir/testCXXCompiler.cxx.o -c /Users/andy/dev/zig-bootstrap/out/build-llvm-aarch64-macos-gnu-native/CMakeFiles/CMakeTmp/testCXXCompiler.cxx
Linking CXX executable cmTC_9f6ec
/Users/andy/local/bin/cmake -E cmake_link_script CMakeFiles/cmTC_9f6ec.dir/link.txt --verbose=1
/Users/andy/dev/zig-bootstrap/out/host/bin/zig c++ -fno-sanitize=all -target aarch64-macos-gnu -mcpu=native -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk -Wl,-headerpad_max_install_names CMakeFiles/cmTC_9f6ec.dir/testCXXCompiler.cxx.o -o cmTC_9f6ec
warning: unsupported linker arg: -headerpad_max_install_names
In file included from /Users/andy/dev/zig-bootstrap/out/host/lib/zig/libcxx/src/algorithm.cpp:9:
In file included from /Users/andy/dev/zig-bootstrap/out/host/lib/zig/libcxx/include/algorithm:641:
In file included from /Users/andy/dev/zig-bootstrap/out/host/lib/zig/libcxx/include/cstring:60:
/Users/andy/dev/zig-bootstrap/out/host/lib/zig/libcxx/include/string.h:60:15: fatal error: 'string.h' file not found
#include_next <string.h>
^~~~~~~~~~
1 error generated.
make[1]: *** [cmTC_9f6ec] Error 1
make: *** [cmTC_9f6ec/fast] Error 2
CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
CMakeLists.txt:57 (project)
-- Configuring incomplete, errors occurred!
See also "/Users/andy/dev/zig-bootstrap/out/build-llvm-aarch64-macos-gnu-native/CMakeFiles/CMakeOutput.log".
See also "/Users/andy/dev/zig-bootstrap/out/build-llvm-aarch64-macos-gnu-native/CMakeFiles/CMakeError.log".
andy@Andrews-Air zig-bootstrap %
Not sure why cmake isn't respecting the cc
arg like normal here.
Great news, this actually builds fine for me all the way to generating the final bootstrapped artefacts. However, the final zig
binary still won't run since the output of LLD when cross-compiling C++ to macOS is malformed as was discussed in ziglang/zig#7318.
This is the output of dyld
when running the generated zig
binary:
dyld: lazy symbol binding failed: Symbol not found: _zig_stage1_os_init
Referenced from: /Users/kubkon/dev/zig-bootstrap/out/zig-aarch64-macos-gnu-native/bin/./zig
Expected in: /usr/lib/libSystem.B.dylib
dyld: Symbol not found: _zig_stage1_os_init
Referenced from: /Users/kubkon/dev/zig-bootstrap/out/zig-aarch64-macos-gnu-native/bin/./zig
Expected in: /usr/lib/libSystem.B.dylib
[1] 87741 abort ./zig
The reason dyld
is trying to find the symbol in libSystem
is due to us patching up the LLD output post-mortem. Everything would be find if not for the fact that the missing symbol should have been statically linked.
2303ab8 gets up to here:
[ 98%] Linking CXX static library ../../../lib/liblldELF.a
[ 98%] Built target lldELF
Scanning dependencies of target MachOOptionsTableGen
[ 98%] Building Options.inc...
[ 98%] Built target MachOOptionsTableGen
Scanning dependencies of target lldMachO2
[ 98%] Building CXX object tools/lld/MachO/CMakeFiles/lldMachO2.dir/Arch/X86_64.cpp.o
[ 98%] Building CXX object tools/lld/MachO/CMakeFiles/lldMachO2.dir/UnwindInfoSection.cpp.o
[100%] Building CXX object tools/lld/MachO/CMakeFiles/lldMachO2.dir/Driver.cpp.o
[100%] Building CXX object tools/lld/MachO/CMakeFiles/lldMachO2.dir/DriverUtils.cpp.o
[100%] Building CXX object tools/lld/MachO/CMakeFiles/lldMachO2.dir/Dwarf.cpp.o
[100%] Building CXX object tools/lld/MachO/CMakeFiles/lldMachO2.dir/ExportTrie.cpp.o
[100%] Building CXX object tools/lld/MachO/CMakeFiles/lldMachO2.dir/InputFiles.cpp.o
[100%] Building CXX object tools/lld/MachO/CMakeFiles/lldMachO2.dir/InputSection.cpp.o
[100%] Building CXX object tools/lld/MachO/CMakeFiles/lldMachO2.dir/LTO.cpp.o
[100%] Building CXX object tools/lld/MachO/CMakeFiles/lldMachO2.dir/MergedOutputSection.cpp.o
[100%] Building CXX object tools/lld/MachO/CMakeFiles/lldMachO2.dir/ObjC.cpp.o
[100%] Building CXX object tools/lld/MachO/CMakeFiles/lldMachO2.dir/OutputSection.cpp.o
[100%] Building CXX object tools/lld/MachO/CMakeFiles/lldMachO2.dir/OutputSegment.cpp.o
[100%] Building CXX object tools/lld/MachO/CMakeFiles/lldMachO2.dir/SymbolTable.cpp.o
[100%] Building CXX object tools/lld/MachO/CMakeFiles/lldMachO2.dir/Symbols.cpp.o
[100%] Building CXX object tools/lld/MachO/CMakeFiles/lldMachO2.dir/SyntheticSections.cpp.o
[100%] Building CXX object tools/lld/MachO/CMakeFiles/lldMachO2.dir/Target.cpp.o
[100%] Building CXX object tools/lld/MachO/CMakeFiles/lldMachO2.dir/Writer.cpp.o
[100%] Linking CXX static library ../../../lib/liblldMachO2.a
[100%] Built target lldMachO2
Scanning dependencies of target MinGWOptionsTableGen
[100%] Building Options.inc...
[100%] Built target MinGWOptionsTableGen
Scanning dependencies of target lldMinGW
[100%] Building CXX object tools/lld/MinGW/CMakeFiles/lldMinGW.dir/Driver.cpp.o
[100%] Linking CXX static library ../../../lib/liblldMinGW.a
[100%] Built target lldMinGW
Scanning dependencies of target lld
[100%] Building CXX object tools/lld/tools/lld/CMakeFiles/lld.dir/lld.cpp.o
[100%] Linking CXX executable ../../../../bin/lld
warning: unsupported linker arg: -headerpad_max_install_names
error(zld): symbol '__ZN3lld12ErrorHandler5resetEv' defined multiple times
error: MultipleSymbolDefinitions
make[2]: *** [bin/lld] Error 1
make[1]: *** [tools/lld/tools/lld/CMakeFiles/lld.dir/all] Error 2
make: *** [all] Error 2
This is while building using out/host/bin/zig
as CC/CXX. My build invocation was:
./build -j1 aarch64-macos-gnu native
@kivikakk Actually, if you use my branch https://github.com/ziglang/zig/tree/zld-cpp-take2 it successfully cross-links both lld and zig, however, there are still a few segfaults I need work out before we can say that zld is capable of properly linking Clang's C++ output. Getting there though!
Just a heads up for anyone tracking this issue, with #55 we can now successfully bootstrap aarch64-macos-gnu
from anywhere!
$ ./build -j10 aarch64-macos-gnu cyclone
...
[100%] Linking CXX executable ../../../../bin/lld
warning: unsupported linker arg: -headerpad_max_install_names
error(zld): symbol '__ZN3lld12ErrorHandler5resetEv' defined multiple times
error: MultipleSymbolDefinitions
oops, forgot to pull...?? sorry!
oops, forgot to pull...?? sorry!
Jeez man, you’re gonna give me a heart attack! 😆