[CMake] Different flags for compiling and linking with Fortran

xavier lacoste xl64100 at gmail.com
Thu Jun 15 03:04:10 EDT 2017


Dear cmake users,

For some Fortran compiler we need to remove flags we added to
CMAKE_Fortran_FLAGS_RELEASE to be able to link (options not recognized at
link).

Do you have any idea of how to do so ?

A practical case is the xlf90 -cpp flag.
I have several .f90 files that need preprocessing so I require -cpp
-qsuffix=cpp=f90 at compile time but it is not supported at link time.

If I use :
FFLAGS="-g -cpp -qxlf2003=POLYmorphic -qsuffix=cpp=f90 -qextname
-qdirective='IBM*' -qport=typlssarg"
I get an error when CMake tries to build a fortran file with XLF :
-- Check for working Fortran compiler: /opt/ibm/xlf/15.1.5/bin/xlf90_r
-- Check for working Fortran compiler: /opt/ibm/xlf/15.1.5/bin/xlf90_r  --
broken
CMake Error at /usr/share/cmake/Modules/CMakeTestFortranCompiler.cmake:54
(message):
  The Fortran compiler "/opt/ibm/xlf/15.1.5/bin/xlf90_r" is not able to
  compile a simple test program.

  It fails with the following output:

   Change Dir:
/home/lacoste/sabl/build/ppc64le_LinuxRH7.3_xlfCommunity_spectrummpi10.1.0/CMakeFiles/CMakeTmp



  Run Build Command:/usr/bin/gmake "cmTryCompileExec3078717336/fast"

  gmake[1]: Entering directory

`/home/lacoste/sabl/build/ppc64le_LinuxRH7.3_xlfCommunity_spectrummpi10.1.0/CMakeFiles/CMakeTmp'


  /usr/bin/gmake -f CMakeFiles/cmTryCompileExec3078717336.dir/build.make
  CMakeFiles/cmTryCompileExec3078717336.dir/build

  gmake[2]: Entering directory

`/home/lacoste/sabl/build/ppc64le_LinuxRH7.3_xlfCommunity_spectrummpi10.1.0/CMakeFiles/CMakeTmp'


  /usr/bin/cmake -E cmake_progress_report

/home/lacoste/sabl/build/ppc64le_LinuxRH7.3_xlfCommunity_spectrummpi10.1.0/CMakeFiles/CMakeTmp/CMakeFiles
  1

  Building Fortran object
  CMakeFiles/cmTryCompileExec3078717336.dir/testFortranCompiler.f.o

  /opt/ibm/xlf/15.1.5/bin/xlf90_r -g -cpp -qxlf2003=POLYmorphic
  -qsuffix=cpp=f90 -qextname -qdirective='IBM*' -qport=typlssarg -c

/home/lacoste/sabl/build/ppc64le_LinuxRH7.3_xlfCommunity_spectrummpi10.1.0/CMakeFiles/CMakeTmp/testFortranCompiler.f
  -o CMakeFiles/cmTryCompileExec3078717336.dir/testFortranCompiler.f.o

  ** testfortran === End of Compilation 1 ===

  1501-510 Compilation successful for file testFortranCompiler.f.

  Linking Fortran executable cmTryCompileExec3078717336

  /usr/bin/cmake -E cmake_link_script
  CMakeFiles/cmTryCompileExec3078717336.dir/link.txt --verbose=1

  /opt/ibm/xlf/15.1.5/bin/xlf90_r -g -cpp -qxlf2003=POLYmorphic
  -qsuffix=cpp=f90 -qextname -qdirective='IBM*' -qport=typlssarg
  CMakeFiles/cmTryCompileExec3078717336.dir/testFortranCompiler.f.o -o
  cmTryCompileExec3078717336

  /opt/ibm/xlf/15.1.5/bin/.orig/xlf90_r: 1501-294 (S) No input file
  specified.  Please use -qhelp for more information.

  gmake[2]: *** [cmTryCompileExec3078717336] Error 249

  gmake[2]: Leaving directory

`/home/lacoste/sabl/build/ppc64le_LinuxRH7.3_xlfCommunity_spectrummpi10.1.0/CMakeFiles/CMakeTmp'


  gmake[1]: *** [cmTryCompileExec3078717336/fast] Error 2

  gmake[1]: Leaving directory

`/home/lacoste/sabl/build/ppc64le_LinuxRH7.3_xlfCommunity_spectrummpi10.1.0/CMakeFiles/CMakeTmp'

This is due to the preprocessing flags given at link time.
I could solve it by renaming all my .f90 into .F90 files but, with cray
compiler, I have an other issue that also need to separate link and compile
flags.

Regards,

Xavier LACOSTE
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20170615/045c72ce/attachment.html>


More information about the CMake mailing list