I'm using the following variables. It seems cmake do use clang but ar/ranlib is not properly set.
//cmake version 3.18.2
SET(CMAKE_AR ${tools}/bin/llvm-ar)
SET(CMAKE_RANLIB ${tools}/bin/llvm-ranlib)
SET(CMAKE_C_COMPILER ${tools}/bin/clang)
SET(CMAKE_CXX_COMPILER ${tools}/bin/clang++)
My attempt at an reprex:
checkout llvm-project 7fa503ef
$ mkdir clang1
# build clang here
$ cd <...>/llvm-project
$ cat ./my-toolchain.cmake
SET(CMAKE_SYSTEM_NAME Linux)
set(tools ./clang1)
SET(CMAKE_AR ${tools}/bin/llvm-ar)
SET(CMAKE_RANLIB ${tools}/bin/llvm-ranlib)
SET(CMAKE_C_COMPILER ${tools}/bin/clang)
SET(CMAKE_CXX_COMPILER ${tools}/bin/clang++)
$ mkdir clang2; cd clang2
$ cmake -DCMAKE_TOOLCHAIN_FILE=../my-toolchain.cmake -DLLVM_TARGETS_TO_BUILD="X86" -DLLVM_ENABLE_PROJECTS=clang -G "Unix Makefiles" ../llvm
$ cat ./lib/Demangle/CMakeFiles/LLVMDemangle.dir/link.txt
Tried this from @Tsyvarev
SET(CMAKE_AR ${tools}/bin/llvm-ar CACHE FILEPATH "ar")
SET(CMAKE_RANLIB ${tools}/bin/llvm-ranlib CACHE FILEPATH "ranlib")
https://cmake.org/cmake/help/v3.18/command/set.html
Still getting -- Wrong!
/usr/bin/ar
/usr/bin/ranlib
I'm sorry. The trick did work!