Просмотр исходного кода

Fix ModuleDefinition test for Intel on Windows

CMake defines MSVC only for a VS compiler, but the Intel compiler adds
the preprocessor definition _MSC_VER.  Instead of relying on separate
tests to decide whether to use example_dll_2, we do one test in CMake
and then add our own preprocessor definition.
Brad King 16 лет назад
Родитель
Сommit
f1b7e620f7

+ 2 - 1
Tests/ModuleDefinition/CMakeLists.txt

@@ -5,10 +5,11 @@ project(ModuleDefinition C)
 add_library(example_dll SHARED example_dll.c example_dll.def)
 
 # Test /DEF:<file> flag recognition for VS.
-if(MSVC)
+if(MSVC OR "${CMAKE_C_COMPILER_ID}" MATCHES "^(Intel)$")
   add_library(example_dll_2 SHARED example_dll_2.c)
   set_property(TARGET example_dll_2 PROPERTY LINK_FLAGS
     /DEF:"${ModuleDefinition_SOURCE_DIR}/example_dll_2.def")
+  set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS EXAMPLE_DLL_2)
   set(example_dll_2 example_dll_2)
 endif()
 

+ 2 - 2
Tests/ModuleDefinition/example_exe.c

@@ -1,5 +1,5 @@
 extern int __declspec(dllimport) example_dll_function(void);
-#ifdef _MSC_VER
+#ifdef EXAMPLE_DLL_2
 extern int __declspec(dllimport) example_dll_2_function(void);
 #endif
 int example_exe_function(void) { return 0; }
@@ -7,7 +7,7 @@ int main(void)
 {
   return
     example_dll_function() +
-#ifdef _MSC_VER
+#ifdef EXAMPLE_DLL_2
     example_dll_2_function() +
 #endif
     example_exe_function();

+ 2 - 2
Tests/ModuleDefinition/example_mod_1.c

@@ -6,7 +6,7 @@
 
 int __declspec(dllimport) example_exe_function(void);
 int __declspec(dllimport) example_dll_function(void);
-#ifdef _MSC_VER
+#ifdef EXAMPLE_DLL_2
 int __declspec(dllimport) example_dll_2_function(void);
 #endif
 
@@ -14,7 +14,7 @@ __declspec(dllexport) int MODULE_CCONV example_mod_1_function(int n)
 {
   return
     example_dll_function() +
-#ifdef _MSC_VER
+#ifdef EXAMPLE_DLL_2
     example_dll_2_function() +
 #endif
     example_exe_function() + n;