diff --git a/llvm/cmake/modules/CrossCompile.cmake b/llvm/cmake/modules/CrossCompile.cmake --- a/llvm/cmake/modules/CrossCompile.cmake +++ b/llvm/cmake/modules/CrossCompile.cmake @@ -12,10 +12,16 @@ message(STATUS "Setting native build dir to " ${${project_name}_${target_name}_BUILD}) endif(NOT DEFINED ${project_name}_${target_name}_BUILD) - if (EXISTS ${LLVM_MAIN_SRC_DIR}/cmake/platforms/${toolchain}.cmake) + if (DEFINED CMAKE_TOOLCHAIN_FILE) + # A toolchain file has already been defined, so use it. + # Useful for projects consuming LLVM that define a toolchain. + set(CROSS_TOOLCHAIN_FLAGS_INIT "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}") + elseif (EXISTS ${LLVM_MAIN_SRC_DIR}/cmake/platforms/${toolchain}.cmake) + # User wants a specific toolchain file. set(CROSS_TOOLCHAIN_FLAGS_INIT -DCMAKE_TOOLCHAIN_FILE=\"${LLVM_MAIN_SRC_DIR}/cmake/platforms/${toolchain}.cmake\") else() + # Else make a best guess. This should work fine for most cases. set(CROSS_TOOLCHAIN_FLAGS_INIT -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}