Allow users to enable automatic NI bind fallback via command-line (dotnet/coreclr...
authorJonghyun Park <parjong@gmail.com>
Wed, 10 May 2017 15:10:22 +0000 (08:10 -0700)
committerGaurav Khanna <gkhanna@microsoft.com>
Wed, 10 May 2017 15:10:22 +0000 (08:10 -0700)
* 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

Commit migrated from https://github.com/dotnet/coreclr/commit/17468288b4093efc8fea4748ee3c890bf82535bb

src/coreclr/clrdefinitions.cmake
src/coreclr/clrfeatures.cmake
src/coreclr/src/binder/assemblybinder.cpp

index 4dacae9..92b63a3 100644 (file)
@@ -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)
index 9991b60..f047c91 100644 (file)
@@ -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)
index 1015b43..73ea025 100644 (file)
@@ -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 */,