summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonghyun Park <parjong@gmail.com>2017-05-10 08:10:22 -0700
committerGaurav Khanna <gkhanna@microsoft.com>2017-05-10 08:10:22 -0700
commit17468288b4093efc8fea4748ee3c890bf82535bb (patch)
tree659bfd5ab2bdfa26556eed9bf06dcef40e988dd4
parentaa82eb3e057ff6f7853b27749cefd0991625066d (diff)
downloadcoreclr-17468288b4093efc8fea4748ee3c890bf82535bb.tar.gz
coreclr-17468288b4093efc8fea4748ee3c890bf82535bb.tar.bz2
coreclr-17468288b4093efc8fea4748ee3c890bf82535bb.zip
Allow users to enable automatic NI bind fallback via command-line (#11485)
* Add FEATURE_NI_BIND_FALLBACK support * Fix incorrect variable setup * Negate the check condition * Use WIN32 instead of FEATURE_PAL * Check WIN32 first, and FEATURE_NI_BIND_FALLBACK later
-rw-r--r--clrdefinitions.cmake3
-rw-r--r--clrfeatures.cmake8
-rw-r--r--src/binder/assemblybinder.cpp4
3 files changed, 13 insertions, 2 deletions
diff --git a/clrdefinitions.cmake b/clrdefinitions.cmake
index 4dacae9428..92b63a30a5 100644
--- a/clrdefinitions.cmake
+++ b/clrdefinitions.cmake
@@ -144,6 +144,9 @@ if(FEATURE_MERGE_JIT_AND_ENGINE)
add_definitions(-DFEATURE_MERGE_JIT_AND_ENGINE)
endif(FEATURE_MERGE_JIT_AND_ENGINE)
add_definitions(-DFEATURE_MULTICOREJIT)
+if (FEATURE_NI_BIND_FALLBACK)
+ add_definitions(-DFEATURE_NI_BIND_FALLBACK)
+endif(FEATURE_NI_BIND_FALLBACK)
if(CLR_CMAKE_PLATFORM_UNIX)
add_definitions(-DFEATURE_PAL)
add_definitions(-DFEATURE_PAL_SXS)
diff --git a/clrfeatures.cmake b/clrfeatures.cmake
index 9991b60ed7..f047c91f7a 100644
--- a/clrfeatures.cmake
+++ b/clrfeatures.cmake
@@ -25,3 +25,11 @@ endif(NOT DEFINED FEATURE_DBGIPC)
if(NOT DEFINED FEATURE_INTERPRETER)
set(FEATURE_INTERPRETER 0)
endif(NOT DEFINED FEATURE_INTERPRETER)
+
+if(NOT WIN32)
+ if(NOT DEFINED FEATURE_NI_BIND_FALLBACK)
+ if(NOT CLR_CMAKE_TARGET_ARCH_AMD64 AND NOT CLR_CMAKE_TARGET_ARCH_ARM64)
+ set(FEATURE_NI_BIND_FALLBACK 1)
+ endif()
+ endif(NOT DEFINED FEATURE_NI_BIND_FALLBACK)
+endif(NOT WIN32)
diff --git a/src/binder/assemblybinder.cpp b/src/binder/assemblybinder.cpp
index 1015b439a3..73ea025ae8 100644
--- a/src/binder/assemblybinder.cpp
+++ b/src/binder/assemblybinder.cpp
@@ -689,11 +689,11 @@ namespace BINDER_SPACE
sCoreLib = sCoreLibDir;
sCoreLib.Append(CoreLibName_IL_W);
BOOL fExplicitBindToNativeImage = (fBindToNativeImage == true)? TRUE:FALSE;
-#if defined(FEATURE_PAL) && !defined(_TARGET_AMD64_) && !defined(_TARGET_ARM64_)
+#ifdef FEATURE_NI_BIND_FALLBACK
// Some non-Windows platforms do not automatically generate the NI image as CoreLib.dll.
// If those platforms also do not support automatic fallback from NI to IL, bind as IL.
fExplicitBindToNativeImage = FALSE;
-#endif // defined(FEATURE_PAL) && !defined(_TARGET_AMD64_) && !defined(_TARGET_ARM64_)
+#endif // FEATURE_NI_BIND_FALLBACK
IF_FAIL_GO(AssemblyBinder::GetAssembly(sCoreLib,
FALSE /* fInspectionOnly */,
TRUE /* fIsInGAC */,