From 69c955a67e1daa4e7d4ab47d562f07da15f0cd3d Mon Sep 17 00:00:00 2001 From: Oscar Fuentes Date: Wed, 23 Mar 2011 17:42:13 +0000 Subject: [PATCH] Supports building with a list of targets that does not contain X86. Fixes PR9533. llvm-svn: 128154 --- CMakeLists.txt | 3 +++ cmake/config-ix.cmake | 27 +++++++++++---------------- cmake/modules/LLVMConfig.cmake | 19 +++++++++++++------ 3 files changed, 27 insertions(+), 22 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9474ca819bd..471b45eb813 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 e2817f1316b..c5ec54eb0c6 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 ec7831da3bb..fd1cfa8690e 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: