summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt3
-rwxr-xr-xcmake/config-ix.cmake27
-rwxr-xr-xcmake/modules/LLVMConfig.cmake19
3 files changed, 27 insertions, 22 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9474ca819b..471b45eb81 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -81,6 +81,9 @@ set(LLVM_ALL_TARGETS
XCore
)
+# List of targets with JIT support:
+set(LLVM_TARGETS_WITH_JIT X86 PowerPC ARM)
+
if( MSVC )
set(LLVM_TARGETS_TO_BUILD X86
CACHE STRING "Semicolon-separated list of targets to build, or \"all\".")
diff --git a/cmake/config-ix.cmake b/cmake/config-ix.cmake
index e2817f1316..c5ec54eb0c 100755
--- a/cmake/config-ix.cmake
+++ b/cmake/config-ix.cmake
@@ -321,24 +321,19 @@ elseif (LLVM_NATIVE_ARCH MATCHES "xcore")
elseif (LLVM_NATIVE_ARCH MATCHES "msp430")
set(LLVM_NATIVE_ARCH MSP430)
else ()
- message(STATUS
- "Unknown architecture ${LLVM_NATIVE_ARCH}; lli will not JIT code")
- set(LLVM_NATIVE_ARCH)
+ message(FATAL_ERROR "Unknown architecture ${LLVM_NATIVE_ARCH}")
endif ()
-if (LLVM_NATIVE_ARCH)
- list(FIND LLVM_TARGETS_TO_BUILD ${LLVM_NATIVE_ARCH} NATIVE_ARCH_IDX)
- if (NATIVE_ARCH_IDX EQUAL -1)
- message(STATUS
- "Native target ${LLVM_NATIVE_ARCH} is not selected; lli will not JIT code")
- set(LLVM_NATIVE_ARCH)
- else ()
- message(STATUS "Native target architecture is ${LLVM_NATIVE_ARCH}")
- set(LLVM_NATIVE_TARGET LLVMInitialize${LLVM_NATIVE_ARCH}Target)
- set(LLVM_NATIVE_TARGETINFO LLVMInitialize${LLVM_NATIVE_ARCH}TargetInfo)
- set(LLVM_NATIVE_ASMPRINTER LLVMInitialize${LLVM_NATIVE_ARCH}AsmPrinter)
- endif ()
-endif()
+list(FIND LLVM_TARGETS_TO_BUILD ${LLVM_NATIVE_ARCH} NATIVE_ARCH_IDX)
+if (NATIVE_ARCH_IDX EQUAL -1)
+ message(STATUS
+ "Native target ${LLVM_NATIVE_ARCH} is not selected; lli will not JIT code")
+else ()
+ message(STATUS "Native target architecture is ${LLVM_NATIVE_ARCH}")
+ set(LLVM_NATIVE_TARGET LLVMInitialize${LLVM_NATIVE_ARCH}Target)
+ set(LLVM_NATIVE_TARGETINFO LLVMInitialize${LLVM_NATIVE_ARCH}TargetInfo)
+ set(LLVM_NATIVE_ASMPRINTER LLVMInitialize${LLVM_NATIVE_ARCH}AsmPrinter)
+endif ()
if( MINGW )
set(HAVE_LIBIMAGEHLP 1)
diff --git a/cmake/modules/LLVMConfig.cmake b/cmake/modules/LLVMConfig.cmake
index ec7831da3b..fd1cfa8690 100755
--- a/cmake/modules/LLVMConfig.cmake
+++ b/cmake/modules/LLVMConfig.cmake
@@ -64,15 +64,22 @@ function(explicit_map_components_to_libraries out_libs)
string(TOUPPER "${llvm_libs}" capitalized_libs)
# Expand some keywords:
+ list(FIND LLVM_TARGETS_TO_BUILD "${LLVM_NATIVE_ARCH}" have_native_backend)
list(FIND link_components "engine" engine_required)
- if( NOT engine_required STREQUAL "-1" )
- # TODO: as we assume we are on X86, this is `jit'.
- list(APPEND link_components "jit")
- list(APPEND link_components "native")
+ if( NOT engine_required EQUAL -1 )
+ list(FIND LLVM_TARGETS_WITH_JIT "${LLVM_NATIVE_ARCH}" have_jit)
+ if( NOT have_native_backend EQUAL -1 AND NOT have_jit EQUAL -1 )
+ list(APPEND link_components "jit")
+ list(APPEND link_components "native")
+ else()
+ list(APPEND link_components "interpreter")
+ endif()
endif()
list(FIND link_components "native" native_required)
- if( NOT native_required STREQUAL "-1" )
- list(APPEND link_components "X86")
+ if( NOT native_required EQUAL -1 )
+ if( NOT have_native_backend EQUAL -1 )
+ list(APPEND link_components ${LLVM_NATIVE_ARCH})
+ endif()
endif()
# Translate symbolic component names to real libraries: