diff options
author | Brad King <brad.king@kitware.com> | 2011-12-09 14:37:46 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2011-12-09 14:40:14 (GMT) |
commit | 4cb73c43ac13a4b796c61da137a1576c8c6a4d23 (patch) | |
tree | d34bd74526b4fadef79194eef91d197af011cb40 /Modules | |
parent | e61d2ded80e98c96911eaf9545f720c29de72dc3 (diff) | |
download | CMake-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.cmake | 8 |
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) |