Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build failed on macOS Silicon: ___arm_tpidr2_save symbol not found from libyuv #1526

Open
xiaoyu2006 opened this issue Sep 25, 2024 · 5 comments · May be fixed by #1580
Open

Build failed on macOS Silicon: ___arm_tpidr2_save symbol not found from libyuv #1526

xiaoyu2006 opened this issue Sep 25, 2024 · 5 comments · May be fixed by #1580

Comments

@xiaoyu2006
Copy link

xiaoyu2006 commented Sep 25, 2024

I'm currently on macOS Sequoia 15.0 on Macbook Pro Apple M1 Max, with my toolchain installed via Homebrew and updated to latest version.

$ cmake --preset default -DENABLE_QT=OFF
Preset CMake variables:

  CMAKE_BUILD_TYPE="RelWithDebInfo"
  CMAKE_TOOLCHAIN_FILE="/Users/kerman/Developer/ladybird/Toolchain/Tarballs/vcpkg/scripts/buildsystems/vcpkg.cmake"
  SERENITY_CACHE_DIR="/Users/kerman/Developer/ladybird/Build/caches"
  VCPKG_INSTALL_OPTIONS="--no-print-usage"
  VCPKG_OVERLAY_TRIPLETS="/Users/kerman/Developer/ladybird/Meta/CMake/vcpkg/release-triplets"

Preset environment variables:

  LADYBIRD_SOURCE_DIR="/Users/kerman/Developer/ladybird"
  VCPKG_BINARY_SOURCES="clear;files,/Users/kerman/Developer/ladybird/Toolchain/Build/vcpkg-binary-cache,readwrite"
  VCPKG_ROOT="/Users/kerman/Developer/ladybird/Toolchain/Tarballs/vcpkg"

-- Running vcpkg install
Detecting compiler hash for triplet arm64-osx...
Compiler found: /opt/homebrew/opt/llvm/bin/clang++
All requested packages are currently installed.
Total install time: 250 ns
-- Running vcpkg install - done
-- Found ZLIB: /Users/kerman/Developer/ladybird/Build/ladybird/vcpkg_installed/arm64-osx/lib/libz.a (found version "1.3.1")
-- Found ZLIB: /Users/kerman/Developer/ladybird/Build/ladybird/vcpkg_installed/arm64-osx/lib/libz.a (found suitable version "1.3.1", minimum required is "1")
CMake Warning at Build/ladybird/vcpkg_installed/arm64-osx/share/curl/vcpkg-cmake-wrapper.cmake:49 (message):
  CURL_LIBRARIES list at least one target.  This will not work for use cases
  where targets are not resolved.
Call Stack (most recent call first):
  Toolchain/Tarballs/vcpkg/scripts/buildsystems/vcpkg.cmake:813 (include)
  Ladybird/RequestServer/CMakeLists.txt:23 (find_package)


-- Configuring done (2.9s)
-- Generating done (0.7s)
-- Build files have been written to: /Users/kerman/Developer/ladybird/Build/ladybird
$ CC=$(brew --prefix llvm)/bin/clang CXX=$(brew --prefix llvm)/bin/clang++ ./Meta/ladybird.sh run
~/Developer/ladybird/Toolchain/Tarballs ~/Developer/ladybird/Toolchain
ninja: Entering directory `/Users/kerman/Developer/ladybird/Build/ladybird'
[0/2] Re-checking globbed directories...
[1/2031] Linking CXX shared library lib/liblagom-gfx.0.0.0.dylib
FAILED: lib/liblagom-gfx.0.0.0.dylib
: && /opt/homebrew/opt/llvm/bin/clang++ -O2 -g -DNDEBUG -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.0.sdk -dynamiclib -Wl,-headerpad_max_install_names -fstack-protector-strong -o lib/liblagom-gfx.0.0.0.dylib -install_name @rpath/liblagom-gfx.0.dylib Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/AffineTransform.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/AntiAliasingPainter.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/Bitmap.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/CMYKBitmap.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/Color.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/DeltaE.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/DeprecatedPainter.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/DeprecatedPath.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/EdgeFlagPathRasterizer.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/FontCascadeList.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/Font/Font.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/Font/FontData.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/Font/FontDatabase.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/Font/ScaledFont.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/Font/ScaledFontSkia.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/Font/Typeface.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/Font/TypefaceSkia.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/Font/WOFF/Loader.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/Font/WOFF2/Loader.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/GradientPainting.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ICC/BinaryWriter.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ICC/Enums.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ICC/Profile.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ICC/Tags.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ICC/TagTypes.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ICC/WellKnownProfiles.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ImageFormats/AnimationWriter.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ImageFormats/BMPLoader.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ImageFormats/BMPWriter.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ImageFormats/BooleanDecoder.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ImageFormats/CCITTDecoder.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ImageFormats/GIFLoader.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ImageFormats/GIFWriter.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ImageFormats/ICOLoader.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ImageFormats/ImageDecoder.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ImageFormats/JPEGLoader.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ImageFormats/JPEGXLLoader.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ImageFormats/JPEGWriter.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ImageFormats/PNGLoader.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ImageFormats/PNGWriter.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ImageFormats/TIFFLoader.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ImageFormats/TinyVGLoader.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ImageFormats/WebPLoader.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ImageFormats/WebPSharedLossless.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ImageFormats/WebPWriter.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ImageFormats/WebPWriterLossless.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ImageFormats/AVIFLoader.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ImmutableBitmap.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/MedianCut.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/Palette.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/Path.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/PathSkia.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/Painter.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/PainterSkia.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/Point.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/Rect.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ShareableBitmap.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/Size.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/SystemTheme.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/TextLayout.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/Triangle.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/VectorGraphic.cpp.o Lagom/Userland/Libraries/LibGfx/CMakeFiles/LibGfx.dir/ImageFormats/TIFFTagHandler.cpp.o  -Wl,-rpath,@executable_path/../lib  lib/liblagom-compress.0.0.0.dylib  lib/liblagom-crypto.0.0.0.dylib  lib/liblagom-filesystem.0.0.0.dylib  lib/liblagom-riff.0.0.0.dylib  lib/liblagom-ipc.0.0.0.dylib  vcpkg_installed/arm64-osx/lib/libjpeg.a  vcpkg_installed/arm64-osx/lib/libpng16.a  vcpkg_installed/arm64-osx/lib/libavif.a  vcpkg_installed/arm64-osx/lib/libwebp.a  vcpkg_installed/arm64-osx/lib/libwebpdecoder.a  vcpkg_installed/arm64-osx/lib/libwebpdemux.a  vcpkg_installed/arm64-osx/lib/libwebpmux.a  vcpkg_installed/arm64-osx/lib/libskia.a  vcpkg_installed/arm64-osx/lib/libharfbuzz.a  lib/liblagom-core.0.0.0.dylib  lib/liblagom-url.0.0.0.dylib  lib/liblagom-textcodec.0.0.0.dylib  lib/liblagom-unicode.0.0.0.dylib  lib/liblagom-coreminimal.0.0.0.dylib  lib/liblagom-ak.0.0.0.dylib  -framework CoreFoundation  -framework CoreServices  -framework IOSurface  vcpkg_installed/arm64-osx/lib/libwoff2dec.a  vcpkg_installed/arm64-osx/lib/libwoff2common.a  vcpkg_installed/arm64-osx/lib/libdav1d.a  vcpkg_installed/arm64-osx/lib/libyuv.a  /opt/homebrew/lib/libsharpyuv.dylib  vcpkg_installed/arm64-osx/lib/libwebp.a  vcpkg_installed/arm64-osx/lib/libsharpyuv.a  -framework ApplicationServices  -framework OpenGL  -framework AppKit  -framework Foundation  -framework Metal  vcpkg_installed/arm64-osx/lib/libfontconfig.a  vcpkg_installed/arm64-osx/lib/libexpat.a  vcpkg_installed/arm64-osx/lib/libturbojpeg.a  vcpkg_installed/arm64-osx/lib/libjpeg.a  vcpkg_installed/arm64-osx/lib/libharfbuzz-subset.a  vcpkg_installed/arm64-osx/lib/libharfbuzz.a  -lm  vcpkg_installed/arm64-osx/lib/libfreetype.a  vcpkg_installed/arm64-osx/lib/libwebpdecoder.a  vcpkg_installed/arm64-osx/lib/libwebpdemux.a  vcpkg_installed/arm64-osx/lib/libwebpmux.a  vcpkg_installed/arm64-osx/lib/libwebp.a  vcpkg_installed/arm64-osx/lib/libsharpyuv.a  -ldl  -framework ApplicationServices  vcpkg_installed/arm64-osx/lib/libfreetype.a  vcpkg_installed/arm64-osx/lib/libz.a  vcpkg_installed/arm64-osx/lib/libbz2.a  vcpkg_installed/arm64-osx/lib/libpng16.a  vcpkg_installed/arm64-osx/lib/libz.a  vcpkg_installed/arm64-osx/lib/libjxl.a  vcpkg_installed/arm64-osx/lib/libhwy.a  vcpkg_installed/arm64-osx/lib/libbrotlienc.a  vcpkg_installed/arm64-osx/lib/libbrotlidec.a  vcpkg_installed/arm64-osx/lib/libbrotlicommon.a  vcpkg_installed/arm64-osx/lib/libjxl_cms.a  /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.0.sdk/usr/lib/libm.tbd  /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.0.sdk/usr/lib/libc++.tbd  vcpkg_installed/arm64-osx/lib/liblcms2.a && :
ld: warning: ignoring duplicate libraries: 'vcpkg_installed/arm64-osx/lib/libfreetype.a', 'vcpkg_installed/arm64-osx/lib/libharfbuzz.a', 'vcpkg_installed/arm64-osx/lib/libjpeg.a', 'vcpkg_installed/arm64-osx/lib/libpng16.a', 'vcpkg_installed/arm64-osx/lib/libsharpyuv.a', 'vcpkg_installed/arm64-osx/lib/libwebp.a', 'vcpkg_installed/arm64-osx/lib/libwebpdecoder.a', 'vcpkg_installed/arm64-osx/lib/libwebpdemux.a', 'vcpkg_installed/arm64-osx/lib/libwebpmux.a', 'vcpkg_installed/arm64-osx/lib/libz.a'
Undefined symbols for architecture arm64:
  "___arm_tpidr2_save", referenced from:
      _TransposeWxH_SME in libyuv.a[51](rotate_sme.cc.o)
      _TransposeUVWxH_SME in libyuv.a[51](rotate_sme.cc.o)
ld: symbol(s) not found for architecture arm64
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
[10/2031] Building CXX object Lagom/Userland/Libraries/LibMedia/CMakeFiles/LibMedia.dir/Audio/MP3Loader.cpp.o
ninja: build stopped: subcommand failed.
$ $(brew --prefix llvm)/bin/clang++ --version
Homebrew clang version 19.1.0
Target: arm64-apple-darwin24.0.0
Thread model: posix
InstalledDir: /opt/homebrew/Cellar/llvm/19.1.0/bin
@xiaoyu2006 xiaoyu2006 changed the title Build failed on macOS Silicon Build failed on macOS Silicon: ___arm_tpidr2_save symbol not found from libyuv Sep 25, 2024
@ADKaster
Copy link
Member

This potentially looks like an llvm 19 issue with that particular library. A way to debug would be to go to a new directory and manually vcpkg install libyuv for some application that requires it (potentially needing a shared library triplet?)

That particular symbol, __arm_tpdir2_save sounds like an llvm compiler-rt symbol.

@ADKaster
Copy link
Member

That is to say, we should try to reduce the issue and report it to vcpkg to sort out. Or to homebrew. I suspect some flag wrangling needs to happen when the host (macOS system) libraries don't provide a compiler-rt symbol that clang emits

@BertalanD
Copy link
Member

BertalanD commented Sep 25, 2024

A workaround exists upstream: lemenkov/libyuv@a37e6bc -- Maybe we could override the libyuv port locally to apply the patch?

Not sure if this can be solved from our side: Homebrew LLVM doesn't ship compiler-rt builtins and __arm_tpdir2_save isn't available in the version shipped by Apple. SME isn't even really a thing on Apple Silicon before M4, so we aren't losing any functionality by disabling that macro.

(Is using mismatched versions of Clang and compiler-rt even supported?)

@ADKaster
Copy link
Member

I see! that's good.

In that case, we should submit that patch to vcpkg if it's not already there, and we can add that patch locally until we update vcpkg to a version with the patch added.

@ChaseKnowlden
Copy link
Contributor

I've sent a PR upstream to fix the error.

microsoft/vcpkg#41174

@ChaseKnowlden ChaseKnowlden linked a pull request Sep 30, 2024 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants