summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2011-12-09 14:37:46 (GMT)
committerBrad King <brad.king@kitware.com>2011-12-09 14:40:14 (GMT)
commit4cb73c43ac13a4b796c61da137a1576c8c6a4d23 (patch)
treed34bd74526b4fadef79194eef91d197af011cb40 /Modules
parente61d2ded80e98c96911eaf9545f720c29de72dc3 (diff)
downloadCMake-4cb73c43ac13a4b796c61da137a1576c8c6a4d23.zip
CMake-4cb73c43ac13a4b796c61da137a1576c8c6a4d23.tar.gz
CMake-4cb73c43ac13a4b796c61da137a1576c8c6a4d23.tar.bz2
FortranCInterface: Work around mingw32-make trouble with parens
The mingw32-make tool does not handle parenthesis in the path to a source file consistently. When CMake is installed in a typical location like "c:\Program Files (x86)\CMake 2.8\" the mingw32-make tool fails on the FortranCInterface detection project sometimes with errors like >mingw32-make -f CMakeFiles\myfort.dir\build.make CMakeFiles/myfort.dir/my_module.f90.obj mingw32-make: *** No rule to make target `x86)/CMake 2.8/share/cmake-2.8/Modules/FortranCInterface/my_module.f90)', needed by `CMakeFiles/myfort.dir/my_module.f90.obj'. Stop. due to parens in the path to the FortranCInterface source directory. However, the behavior varies with the file name of build.make: >copy CMakeFiles\myfort.dir\build.make CMakeFiles\myfort.dir\build2.make >mingw32-make -f CMakeFiles\myfort.dir\build2.make CMakeFiles/myfort.dir/my_module.f90.obj [ 3%] Building Fortran object CMakeFiles/myfort.dir/my_module.f90.obj Tested with >mingw32-make -v GNU Make 3.82 Built for i386-pc-mingw32 Work around the problem by copying the whole FortranCInterface source directory in to the project build tree.
Diffstat (limited to 'Modules')
-rw-r--r--Modules/FortranCInterface.cmake8
1 files changed, 8 insertions, 0 deletions
diff --git a/Modules/FortranCInterface.cmake b/Modules/FortranCInterface.cmake
index 90ef59b..2455c5f 100644
--- a/Modules/FortranCInterface.cmake
+++ b/Modules/FortranCInterface.cmake
@@ -116,6 +116,14 @@ endforeach()
#-----------------------------------------------------------------------------
set(FortranCInterface_SOURCE_DIR ${CMAKE_ROOT}/Modules/FortranCInterface)
+# MinGW's make tool does not always like () in the path
+if("${CMAKE_GENERATOR}" MATCHES "MinGW" AND
+ "${FortranCInterface_SOURCE_DIR}" MATCHES "[()]")
+ file(COPY ${FortranCInterface_SOURCE_DIR}/
+ DESTINATION ${CMAKE_BINARY_DIR}/CMakeFiles/FortranCInterfaceMinGW)
+ set(FortranCInterface_SOURCE_DIR ${CMAKE_BINARY_DIR}/CMakeFiles/FortranCInterfaceMinGW)
+endif()
+
# Create the interface detection project if it does not exist.
if(NOT FortranCInterface_BINARY_DIR)
set(FortranCInterface_BINARY_DIR ${CMAKE_BINARY_DIR}/CMakeFiles/FortranCInterface)