From 761621645c8605252eea9d3a0d171edc46a529c5 Mon Sep 17 00:00:00 2001
From: Brad King <brad.king@kitware.com>
Date: Wed, 23 Feb 2011 10:56:32 -0500
Subject: Pass .def files directly to MinGW tools (#9997)

Commit 6a61a8a5 (Honor module .def files with MinGW tools, 2011-02-21)
set CMAKE_LINK_DEF_FILE_FLAG to "-Wl," to enable passing .def files to
the linker on MinGW.  However, older GNU tools in the MSYS shell do not
know how to translate "-Wl,/c/..." to "c:/..." and complain that the
file does not exist.  Instead set the flag to just "" which tells CMake
it can pass the file through the front-end with no special flag.
---
 Modules/Platform/Windows-GNU.cmake | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Modules/Platform/Windows-GNU.cmake b/Modules/Platform/Windows-GNU.cmake
index 8df0bcb..72b5d62 100644
--- a/Modules/Platform/Windows-GNU.cmake
+++ b/Modules/Platform/Windows-GNU.cmake
@@ -43,7 +43,7 @@ endif()
 set(CMAKE_DL_LIBS "")
 set(CMAKE_LIBRARY_PATH_FLAG "-L")
 set(CMAKE_LINK_LIBRARY_FLAG "-l")
-set(CMAKE_LINK_DEF_FILE_FLAG "-Wl,")
+set(CMAKE_LINK_DEF_FILE_FLAG "") # Empty string: passing the file is enough
 set(CMAKE_LINK_LIBRARY_SUFFIX "")
 set(CMAKE_CREATE_WIN32_EXE  "-mwindows")
 
-- 
cgit v0.12


From 6c4b2492728cd3fab60bf11feafe3361f02c08c9 Mon Sep 17 00:00:00 2001
From: Brad King <brad.king@kitware.com>
Date: Wed, 23 Feb 2011 10:34:28 -0500
Subject: Fix Fortran test .def file symbol mangling

Commit 6a61a8a5 (Honor module .def files with MinGW tools, 2011-02-21)
enabled use of .def files with GNU tools on Windows.  Previously the
Fortran tests's world.def file was used only for the Intel Fortran
Compiler on Windows and contained the symbol name mangled for that
compiler.  Instead choose a .def file that names the symbol with proper
mangling for the compiler in use.
---
 Tests/Fortran/CMakeLists.txt | 13 ++++++++++++-
 Tests/Fortran/world.def      |  2 --
 Tests/Fortran/world_gnu.def  |  2 ++
 Tests/Fortran/world_icl.def  |  2 ++
 4 files changed, 16 insertions(+), 3 deletions(-)
 delete mode 100644 Tests/Fortran/world.def
 create mode 100644 Tests/Fortran/world_gnu.def
 create mode 100644 Tests/Fortran/world_icl.def

diff --git a/Tests/Fortran/CMakeLists.txt b/Tests/Fortran/CMakeLists.txt
index 04563ef..c68d543 100644
--- a/Tests/Fortran/CMakeLists.txt
+++ b/Tests/Fortran/CMakeLists.txt
@@ -22,8 +22,19 @@ elseif("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU")
   endif()
 endif()
 
+# Pick a module .def file with the properly mangled symbol name.
+set(world_def "")
+if(WIN32 AND NOT CYGWIN)
+  if("${CMAKE_Fortran_COMPILER_ID}" MATCHES "GNU")
+    set(world_def world_gnu.def)
+  elseif("${CMAKE_Fortran_COMPILER_ID}" MATCHES "Intel" OR
+      "${CMAKE_GENERATOR}" MATCHES "Visual Studio") # Intel plugin
+    set(world_def world_icl.def)
+  endif()
+endif()
+
 add_library(hello STATIC hello.f)
-add_library(world ${_SHARED} world.f world.def)
+add_library(world ${_SHARED} world.f ${world_def})
 add_executable(testf testf.f)
 target_link_libraries(testf hello world)
 
diff --git a/Tests/Fortran/world.def b/Tests/Fortran/world.def
deleted file mode 100644
index ead7710..0000000
--- a/Tests/Fortran/world.def
+++ /dev/null
@@ -1,2 +0,0 @@
-EXPORTS
-        WORLD
diff --git a/Tests/Fortran/world_gnu.def b/Tests/Fortran/world_gnu.def
new file mode 100644
index 0000000..1617798
--- /dev/null
+++ b/Tests/Fortran/world_gnu.def
@@ -0,0 +1,2 @@
+EXPORTS
+        world_
diff --git a/Tests/Fortran/world_icl.def b/Tests/Fortran/world_icl.def
new file mode 100644
index 0000000..ead7710
--- /dev/null
+++ b/Tests/Fortran/world_icl.def
@@ -0,0 +1,2 @@
+EXPORTS
+        WORLD
-- 
cgit v0.12

