[libcxx-commits] [clang] [compiler-rt] [libcxx] [libunwind] [llvm] [openmp] [cmake] switch to CMake's native `check_{compiler, linker}_flag` (PR #96171)

Ryan Prichard via libcxx-commits libcxx-commits at lists.llvm.org
Fri Jul 19 01:03:13 PDT 2024


rprichard wrote:

Sorry, I didn't notice the ping until just now.

The CMake feature testing seems broken, on Android at least. Here's a representative error from `build/android-ndk-21-def-x86/CMakeFiles/CMakeError.log`:

```
Performing C++ SOURCE FILE Test CXX_SUPPORTS_NOSTDLIBXX_FLAG failed with the following output:
Change Dir: /llvm/build/android-ndk-21-def-x86/CMakeFiles/CMakeTmp

Run Build Command(s):/usr/local/bin/ninja cmTC_80129 && [1/2] Building CXX object CMakeFiles/cmTC_80129.dir/src.cxx.o
[2/2] Linking CXX executable cmTC_80129
FAILED: cmTC_80129 
: && /opt/android/clang/clang-current/bin/clang++ --target=i686-linux-android21 --sysroot=/opt/android/ndk/sysroot --start-no-unused-arguments --unwindlib=none --end-no-unused-arguments  CMakeFiles/cmTC_80129.dir/src.cxx.o -o cmTC_80129   && :
ld.lld: error: unable to find library -lc++
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.


Source file was:
int main() { return 0; }
```

It's trying to see if `-nostdlib++` is supported, but I don't see that flag being passed in the `clang++` command line that CMake uses. In any case, CMake tries  to build a C++ program, which fails because libc++ doesn't exist yet.

It seems that the Android support in the Dockerfile is broken after a refactor last year. I have some changes that get it working again. BuildKite is still successfully running Android tests as of today, so I think it's using an old image.


https://github.com/llvm/llvm-project/pull/96171


More information about the libcxx-commits mailing list