From df2598871e07fe5eda960c5a461b55eced1e1657 Mon Sep 17 00:00:00 2001 From: Sebastian Pop Date: Mon, 20 Aug 2012 19:56:52 +0000 Subject: [PATCH] enable cross compilation with cmake This patch allows us to use cmake to specify a cross compiler: target different than host. In particular, it moves LLVM_DEFAULT_TARGET_TRIPLE and TARGET_TRIPLE variables from cmake/config-ix.cmake to the toplevel CMakeLists.txt to make them available at configure time. Here is the command line that I have used to test my patches to create a Hexagon cross compiler hosted on x86: $ cmake -G Ninja -D LLVM_TARGETS_TO_BUILD:STRING=Hexagon -D TARGET_TRIPLE:STRING=hexagon-unknown-linux-gnu -D LLVM_DEFAULT_TARGET_TRIPLE:STRING=hexagon-unknown-linux-gnu -D LLVM_TARGET_ARCH:STRING=hexagon-unknown-linux-gnu .. $ ninja check git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162219 91177308-0d34-0410-b5e6-96231b3b80d8 --- CMakeLists.txt | 8 ++++++++ cmake/config-ix.cmake | 2 -- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fbf8e2bb90e..df781f52cdd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -249,6 +249,14 @@ option(LLVM_INCLUDE_TESTS "Generate build targets for the LLVM unit tests." ON) # BEFORE this include, otherwise options will not be correctly set on # first cmake run include(config-ix) + +# By default, we target the host, but this can be overridden at CMake +# invocation time. +set(LLVM_DEFAULT_TARGET_TRIPLE "${LLVM_HOST_TRIPLE}" CACHE STRING + "Default target for which LLVM will generate code." ) +set(TARGET_TRIPLE "${LLVM_DEFAULT_TARGET_TRIPLE}" CACHE STRING + "Default target for which LLVM will generate code." ) + include(HandleLLVMOptions) # Verify that we can find a Python interpreter, diff --git a/cmake/config-ix.cmake b/cmake/config-ix.cmake index 1e72258d448..94cc5551c8d 100755 --- a/cmake/config-ix.cmake +++ b/cmake/config-ix.cmake @@ -294,9 +294,7 @@ get_host_triple(LLVM_HOST_TRIPLE) # By default, we target the host, but this can be overridden at CMake # invocation time. -set(LLVM_DEFAULT_TARGET_TRIPLE "${LLVM_HOST_TRIPLE}") set(LLVM_HOSTTRIPLE "${LLVM_HOST_TRIPLE}") -set(TARGET_TRIPLE "${LLVM_DEFAULT_TARGET_TRIPLE}") # Determine the native architecture. string(TOLOWER "${LLVM_TARGET_ARCH}" LLVM_NATIVE_ARCH)