mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 12:41:49 +01:00
[CMake] Introduce LLVM_TARGET_TRIPLE_ENV as an option to override LLVM_DEFAULT_TARGET_TRIPLE at runtime.
No behavior is changed if LLVM_TARGET_TRIPLE_ENV is blank or undefined. If LLVM_TARGET_TRIPLE_ENV is "TEST_TARGET_TRIPLE" and $TEST_TARGET_TRIPLE is not blank, llvm::sys::getDefaultTargetTriple() returns $TEST_TARGET_TRIPLE. Lit resets config.target_triple and config.environment[LLVM_TARGET_TRIPLE_ENV] to change the default target. Without changing LLVM_DEFAULT_TARGET_TRIPLE nor rebuilding, lit can be run; TEST_TARGET_TRIPLE=i686-pc-win32 bin/llvm-lit -sv path/to/test/ TEST_TARGET_TRIPLE=i686-pc-win32 ninja check-clang-tools Differential Revision: https://reviews.llvm.org/D33662 llvm-svn: 305632
This commit is contained in:
parent
7db18ea118
commit
e6ce8bcee4
@ -570,6 +570,10 @@ if (LLVM_BUILD_STATIC)
|
|||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static")
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Override the default target with an environment variable named by LLVM_TARGET_TRIPLE_ENV.
|
||||||
|
set(LLVM_TARGET_TRIPLE_ENV CACHE STRING "The name of environment variable to override default target. Disabled by blank.")
|
||||||
|
mark_as_advanced(LLVM_TARGET_TRIPLE_ENV)
|
||||||
|
|
||||||
# All options referred to from HandleLLVMOptions have to be specified
|
# All options referred to from HandleLLVMOptions have to be specified
|
||||||
# BEFORE this include, otherwise options will not be correctly set on
|
# BEFORE this include, otherwise options will not be correctly set on
|
||||||
# first cmake run
|
# first cmake run
|
||||||
|
@ -1133,6 +1133,19 @@ function(configure_lit_site_cfg input output)
|
|||||||
|
|
||||||
set(LIT_SITE_CFG_IN_HEADER "## Autogenerated from ${input}\n## Do not edit!")
|
set(LIT_SITE_CFG_IN_HEADER "## Autogenerated from ${input}\n## Do not edit!")
|
||||||
|
|
||||||
|
# Override config_target_triple (and the env)
|
||||||
|
if(LLVM_TARGET_TRIPLE_ENV)
|
||||||
|
# This is expanded into the heading.
|
||||||
|
string(CONCAT LIT_SITE_CFG_IN_HEADER "${LIT_SITE_CFG_IN_HEADER}\n\n"
|
||||||
|
"import os\n"
|
||||||
|
"target_env = \"${LLVM_TARGET_TRIPLE_ENV}\"\n"
|
||||||
|
"config.target_triple = config.environment[target_env] = os.environ.get(target_env, \"${TARGET_TRIPLE}\")\n"
|
||||||
|
)
|
||||||
|
|
||||||
|
# This is expanded to; config.target_triple = ""+config.target_triple+""
|
||||||
|
set(TARGET_TRIPLE "\"+config.target_triple+\"")
|
||||||
|
endif()
|
||||||
|
|
||||||
configure_file(${input} ${output} @ONLY)
|
configure_file(${input} ${output} @ONLY)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
@ -356,6 +356,9 @@
|
|||||||
/* Define if this is Win32ish platform */
|
/* Define if this is Win32ish platform */
|
||||||
#cmakedefine LLVM_ON_WIN32 ${LLVM_ON_WIN32}
|
#cmakedefine LLVM_ON_WIN32 ${LLVM_ON_WIN32}
|
||||||
|
|
||||||
|
/* Define if overriding target triple is enabled */
|
||||||
|
#cmakedefine LLVM_TARGET_TRIPLE_ENV "${LLVM_TARGET_TRIPLE_ENV}"
|
||||||
|
|
||||||
/* Define if we have the Intel JIT API runtime support library */
|
/* Define if we have the Intel JIT API runtime support library */
|
||||||
#cmakedefine01 LLVM_USE_INTEL_JITEVENTS
|
#cmakedefine01 LLVM_USE_INTEL_JITEVENTS
|
||||||
|
|
||||||
|
@ -45,5 +45,11 @@ std::string sys::getDefaultTargetTriple() {
|
|||||||
TargetTripleString += getOSVersion();
|
TargetTripleString += getOSVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Override the default target with an environment variable named by LLVM_TARGET_TRIPLE_ENV.
|
||||||
|
#if defined(LLVM_TARGET_TRIPLE_ENV)
|
||||||
|
if (const char *EnvTriple = std::getenv(LLVM_TARGET_TRIPLE_ENV))
|
||||||
|
TargetTripleString = EnvTriple;
|
||||||
|
#endif
|
||||||
|
|
||||||
return Triple::normalize(TargetTripleString);
|
return Triple::normalize(TargetTripleString);
|
||||||
}
|
}
|
||||||
|
@ -18,5 +18,13 @@
|
|||||||
using namespace llvm;
|
using namespace llvm;
|
||||||
|
|
||||||
std::string sys::getDefaultTargetTriple() {
|
std::string sys::getDefaultTargetTriple() {
|
||||||
return Triple::normalize(LLVM_DEFAULT_TARGET_TRIPLE);
|
const char *Triple = LLVM_DEFAULT_TARGET_TRIPLE;
|
||||||
|
|
||||||
|
// Override the default target with an environment variable named by LLVM_TARGET_TRIPLE_ENV.
|
||||||
|
#if defined(LLVM_TARGET_TRIPLE_ENV)
|
||||||
|
if (const char *EnvTriple = std::getenv(LLVM_TARGET_TRIPLE_ENV))
|
||||||
|
Triple = EnvTriple;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return Triple::normalize(Triple);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user