How to get a portable cross_compiler clang X86_64 to Aarch64

Here I want to build such a c/c++ cross-compiler:

  1. From x86-64 linux, cross compiling targets for Aarch64 targets.
  2. All the incude files, libraries, like c/c++ include files, libc, libcxx, libunwind, and the linker lld, included in this compiler and default to use them. When using gcc and gcc-aarch64-linux-gnu to build such a clang, I found that to run the clang, it depends on libstdc++ by using ldd clang; when using clang --print-search-dirs, I found that the corresponding aarch64-unknown-linux-gnu lib dirs were not in. sad.
  3. It’s portable. extract it to anly place, export PATH=path_to_llvm_bin:$PATH, it can runs it own, without any assistance from the gcc-aarch64-linux-gnu

here I have some ideas but maybe not correct:

cmake ../llvm \
-DLLVM_DEFAULT_TARGET_TRIPLE=Aarch64-linux-gnueabihf \
-DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld;clang-tools-extra' \
-DCMAKE_INSTALL_PREFIX=/tmp/llvm-aarch64 \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_RUNTIMES='libcxx;libcxxabi' \
-DLLVM_TARGETS_TO_BUILD='AArch64;X86' \
-DLLVM_HOST_TRIPLE=aarch64-linux-gnueabihf \
-DCMAKE_SYSTEM_NAME=LINUX \
-DCLANG_DEFAULT_CXX_STDLIB=libc++ \
-DCLANG_DEFAULT_RTLIB=compiler-rt \
-DCLANG_DEFAULT_UNWINDLIB=libunwind \
-DCLANG_DEFAULT_LINKER=lld \
-DC_INCLUDE_DIRS=/tmp/cdir \
-DLLVM_INCLUDE_DIRS='llvm/include;/tmp/llvmdir' \
-GNinja