On Mon, 16 Sep 2019, Vadim Chugunov via lldb-dev wrote:

Hi,
I'm trying (and failing) to cross-build lldb according to these instructions
<https://lldb.llvm.org/resources/build.html#example-1-cross-compiling-for-linux-arm64-on-ubuntu-host>.


My cmake command line:

cd /workspace/build/lldb && /usr/bin/cmake -DLLVM_VERSION_SUFFIX=-custom
-DLLVM_PARALLEL_LINK_JOBS=1 "-DLLVM_ENABLE_PROJECTS=clang;libcxx;lldb"
"-DLLVM_TARGETS_TO_BUILD=X86;AArch64;ARM" -DLLVM_ENABLE_TERMINFO=FALSE
-DLLVM_ENABLE_LIBXML2=FORCE_ON  -DLLDB_RELOCATABLE_PYTHON=TRUE
-DLLDB_DISABLE_CURSES=TRUE -DLLDB_DISABLE_LIBEDIT=TRUE
-DCMAKE_CXX_FLAGS="-static-libstdc++ -static-libgcc"
-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=aarch64
-DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc
-DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ -DCMAKE_CROSSCOMPILING=TRUE
-DLLVM_TARGET_ARCH=aarch64
-DLLVM_TABLEGEN=/workspace/build/llvm-host/bin/llvm-tblgen
-DCLANG_TABLEGEN=/workspace/build/llvm-host/bin/clang-tblgen
-DPYTHON_EXECUTABLE=/usr/bin/python3 -GNinja /workspace/source/llvm

When I kick off a build, a few files get compiled, but then a nested build
configuration is invoked:

cd /workspace/build/lldb/NATIVE && /usr/bin/cmake -G Ninja
-DCMAKE_MAKE_PROGRAM="/usr/bin/ninja"
-DCMAKE_C_COMPILER=/usr/bin/aarch64-linux-gnu-gcc
-DCMAKE_CXX_COMPILER=/usr/bin/aarch64-linux-gnu-g++ /workspace/source/llvm
-DLLVM_TARGET_IS_CROSSCOMPILE_HOST=TRUE
-DLLVM_TARGETS_TO_BUILD="X86;AArch64;ARM"
-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=""
-DLLVM_DEFAULT_TARGET_TRIPLE="x86_64-unknown-linux-gnu"
-DLLVM_TARGET_ARCH="aarch64" -DLLVM_ENABLE_PROJECTS="clang;libcxx;lldb"
-DLLVM_EXTERNAL_PROJECTS="" -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN="OFF"
-DCMAKE_BUILD_TYPE=Release
-DLLVM_EXTERNAL_CLANG_SOURCE_DIR=/workspace/source/llvm/../clang

... which fails with this error:

CMake Error at
/usr/share/cmake-3.13/Modules/FindPackageHandleStandardArgs.cmake:137
(message):
 Could NOT find LibEdit (missing: libedit_LIBRARIES) (found version ".")
Call Stack (most recent call first):
 /usr/share/cmake-3.13/Modules/FindPackageHandleStandardArgs.cmake:378
(_FPHSA_FAILURE_MESSAGE)
 /workspace/source/lldb/cmake/modules/FindLibEdit.cmake:54
(find_package_handle_standard_args)
 /workspace/source/lldb/cmake/modules/LLDBConfig.cmake:104 (find_package)
 /workspace/source/lldb/CMakeLists.txt:21 (include)

As far as I can tell, this happens because LLDB_DISABLE_LIBEDIT is not
propagated to this nested build...  but maybe I am missing some cmake flag?

You can add -DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DLLDB_DISABLE_LIBEDIT=ON;-DOTHER_FLAGS..." to your outer cmake invocation, to pass extra flags to the nested one.

This does override a few implicitly passed variables to the nested native cmake invocation though: https://github.com/llvm/llvm-project/blob/master/llvm/cmake/modules/CrossCompile.cmake#L14-L21

If you need those passed on, you need to manually specify them in addition to LLDB_DISABLE_LIBEDIT in CROSS_TOOLCHAIN_FLAGS_NATIVE.

// Martin

_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to