|  | @@ -25,105 +25,102 @@ if(NOT CMAKE_Fortran_COMPILER_NAMES)
 | 
	
		
			
				|  |  |    set(CMAKE_Fortran_COMPILER_NAMES f95)
 | 
	
		
			
				|  |  |  endif()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -if(NOT CMAKE_Fortran_COMPILER)
 | 
	
		
			
				|  |  | -  # prefer the environment variable CC
 | 
	
		
			
				|  |  | -  if($ENV{FC} MATCHES ".+")
 | 
	
		
			
				|  |  | -    get_filename_component(CMAKE_Fortran_COMPILER_INIT $ENV{FC} PROGRAM PROGRAM_ARGS CMAKE_Fortran_FLAGS_ENV_INIT)
 | 
	
		
			
				|  |  | -    if(CMAKE_Fortran_FLAGS_ENV_INIT)
 | 
	
		
			
				|  |  | -      set(CMAKE_Fortran_COMPILER_ARG1 "${CMAKE_Fortran_FLAGS_ENV_INIT}" CACHE STRING "First argument to Fortran compiler")
 | 
	
		
			
				|  |  | +if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
 | 
	
		
			
				|  |  | +  set(CMAKE_Fortran_COMPILER_ID_RUN 1)
 | 
	
		
			
				|  |  | +  set(CMAKE_Fortran_PLATFORM_ID "Windows")
 | 
	
		
			
				|  |  | +  set(CMAKE_Fortran_COMPILER_ID "Intel")
 | 
	
		
			
				|  |  | +  set(CMAKE_Fortran_COMPILER "${CMAKE_GENERATOR_FC}")
 | 
	
		
			
				|  |  | +elseif("${CMAKE_GENERATOR}" MATCHES "Xcode")
 | 
	
		
			
				|  |  | +  set(CMAKE_Fortran_COMPILER_XCODE_TYPE sourcecode.fortran.f90)
 | 
	
		
			
				|  |  | +else()
 | 
	
		
			
				|  |  | +  if(NOT CMAKE_Fortran_COMPILER)
 | 
	
		
			
				|  |  | +    # prefer the environment variable CC
 | 
	
		
			
				|  |  | +    if($ENV{FC} MATCHES ".+")
 | 
	
		
			
				|  |  | +      get_filename_component(CMAKE_Fortran_COMPILER_INIT $ENV{FC} PROGRAM PROGRAM_ARGS CMAKE_Fortran_FLAGS_ENV_INIT)
 | 
	
		
			
				|  |  | +      if(CMAKE_Fortran_FLAGS_ENV_INIT)
 | 
	
		
			
				|  |  | +        set(CMAKE_Fortran_COMPILER_ARG1 "${CMAKE_Fortran_FLAGS_ENV_INIT}" CACHE STRING "First argument to Fortran compiler")
 | 
	
		
			
				|  |  | +      endif()
 | 
	
		
			
				|  |  | +      if(EXISTS ${CMAKE_Fortran_COMPILER_INIT})
 | 
	
		
			
				|  |  | +      else()
 | 
	
		
			
				|  |  | +        message(FATAL_ERROR "Could not find compiler set in environment variable FC:\n$ENV{FC}.")
 | 
	
		
			
				|  |  | +      endif()
 | 
	
		
			
				|  |  |      endif()
 | 
	
		
			
				|  |  | -    if(EXISTS ${CMAKE_Fortran_COMPILER_INIT})
 | 
	
		
			
				|  |  | -    else()
 | 
	
		
			
				|  |  | -      message(FATAL_ERROR "Could not find compiler set in environment variable FC:\n$ENV{FC}.")
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # next try prefer the compiler specified by the generator
 | 
	
		
			
				|  |  | +    if(CMAKE_GENERATOR_FC)
 | 
	
		
			
				|  |  | +      if(NOT CMAKE_Fortran_COMPILER_INIT)
 | 
	
		
			
				|  |  | +        set(CMAKE_Fortran_COMPILER_INIT ${CMAKE_GENERATOR_FC})
 | 
	
		
			
				|  |  | +      endif()
 | 
	
		
			
				|  |  |      endif()
 | 
	
		
			
				|  |  | -  endif()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  # next try prefer the compiler specified by the generator
 | 
	
		
			
				|  |  | -  if(CMAKE_GENERATOR_FC)
 | 
	
		
			
				|  |  | +    # finally list compilers to try
 | 
	
		
			
				|  |  |      if(NOT CMAKE_Fortran_COMPILER_INIT)
 | 
	
		
			
				|  |  | -      set(CMAKE_Fortran_COMPILER_INIT ${CMAKE_GENERATOR_FC})
 | 
	
		
			
				|  |  | +      # Known compilers:
 | 
	
		
			
				|  |  | +      #  f77/f90/f95: generic compiler names
 | 
	
		
			
				|  |  | +      #  g77: GNU Fortran 77 compiler
 | 
	
		
			
				|  |  | +      #  gfortran: putative GNU Fortran 95+ compiler (in progress)
 | 
	
		
			
				|  |  | +      #  fort77: native F77 compiler under HP-UX (and some older Crays)
 | 
	
		
			
				|  |  | +      #  frt: Fujitsu F77 compiler
 | 
	
		
			
				|  |  | +      #  pathf90/pathf95/pathf2003: PathScale Fortran compiler
 | 
	
		
			
				|  |  | +      #  pgf77/pgf90/pgf95/pgfortran: Portland Group F77/F90/F95 compilers
 | 
	
		
			
				|  |  | +      #  xlf/xlf90/xlf95: IBM (AIX) F77/F90/F95 compilers
 | 
	
		
			
				|  |  | +      #  lf95: Lahey-Fujitsu F95 compiler
 | 
	
		
			
				|  |  | +      #  fl32: Microsoft Fortran 77 "PowerStation" compiler
 | 
	
		
			
				|  |  | +      #  af77: Apogee F77 compiler for Intergraph hardware running CLIX
 | 
	
		
			
				|  |  | +      #  epcf90: "Edinburgh Portable Compiler" F90
 | 
	
		
			
				|  |  | +      #  fort: Compaq (now HP) Fortran 90/95 compiler for Tru64 and Linux/Alpha
 | 
	
		
			
				|  |  | +      #  ifc: Intel Fortran 95 compiler for Linux/x86
 | 
	
		
			
				|  |  | +      #  efc: Intel Fortran 95 compiler for IA64
 | 
	
		
			
				|  |  | +      #
 | 
	
		
			
				|  |  | +      #  The order is 95 or newer compilers first, then 90,
 | 
	
		
			
				|  |  | +      #  then 77 or older compilers, gnu is always last in the group,
 | 
	
		
			
				|  |  | +      #  so if you paid for a compiler it is picked by default.
 | 
	
		
			
				|  |  | +      set(CMAKE_Fortran_COMPILER_LIST
 | 
	
		
			
				|  |  | +        ifort ifc af95 af90 efc f95 pathf2003 pathf95 pgf95 pgfortran lf95 xlf95
 | 
	
		
			
				|  |  | +        fort gfortran gfortran-4 g95 f90 pathf90 pgf90 xlf90 epcf90 fort77
 | 
	
		
			
				|  |  | +        frt pgf77 xlf fl32 af77 g77 f77
 | 
	
		
			
				|  |  | +        )
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      # Vendor-specific compiler names.
 | 
	
		
			
				|  |  | +      set(_Fortran_COMPILER_NAMES_GNU       gfortran gfortran-4 g95 g77)
 | 
	
		
			
				|  |  | +      set(_Fortran_COMPILER_NAMES_Intel     ifort ifc efc)
 | 
	
		
			
				|  |  | +      set(_Fortran_COMPILER_NAMES_Absoft    af95 af90 af77)
 | 
	
		
			
				|  |  | +      set(_Fortran_COMPILER_NAMES_PGI       pgf95 pgfortran pgf90 pgf77)
 | 
	
		
			
				|  |  | +      set(_Fortran_COMPILER_NAMES_PathScale pathf2003 pathf95 pathf90)
 | 
	
		
			
				|  |  | +      set(_Fortran_COMPILER_NAMES_XL        xlf)
 | 
	
		
			
				|  |  | +      set(_Fortran_COMPILER_NAMES_VisualAge xlf95 xlf90 xlf)
 | 
	
		
			
				|  |  |      endif()
 | 
	
		
			
				|  |  | -  endif()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  # finally list compilers to try
 | 
	
		
			
				|  |  | -  if(NOT CMAKE_Fortran_COMPILER_INIT)
 | 
	
		
			
				|  |  | -    # Known compilers:
 | 
	
		
			
				|  |  | -    #  f77/f90/f95: generic compiler names
 | 
	
		
			
				|  |  | -    #  g77: GNU Fortran 77 compiler
 | 
	
		
			
				|  |  | -    #  gfortran: putative GNU Fortran 95+ compiler (in progress)
 | 
	
		
			
				|  |  | -    #  fort77: native F77 compiler under HP-UX (and some older Crays)
 | 
	
		
			
				|  |  | -    #  frt: Fujitsu F77 compiler
 | 
	
		
			
				|  |  | -    #  pathf90/pathf95/pathf2003: PathScale Fortran compiler
 | 
	
		
			
				|  |  | -    #  pgf77/pgf90/pgf95/pgfortran: Portland Group F77/F90/F95 compilers
 | 
	
		
			
				|  |  | -    #  xlf/xlf90/xlf95: IBM (AIX) F77/F90/F95 compilers
 | 
	
		
			
				|  |  | -    #  lf95: Lahey-Fujitsu F95 compiler
 | 
	
		
			
				|  |  | -    #  fl32: Microsoft Fortran 77 "PowerStation" compiler
 | 
	
		
			
				|  |  | -    #  af77: Apogee F77 compiler for Intergraph hardware running CLIX
 | 
	
		
			
				|  |  | -    #  epcf90: "Edinburgh Portable Compiler" F90
 | 
	
		
			
				|  |  | -    #  fort: Compaq (now HP) Fortran 90/95 compiler for Tru64 and Linux/Alpha
 | 
	
		
			
				|  |  | -    #  ifc: Intel Fortran 95 compiler for Linux/x86
 | 
	
		
			
				|  |  | -    #  efc: Intel Fortran 95 compiler for IA64
 | 
	
		
			
				|  |  | -    #
 | 
	
		
			
				|  |  | -    #  The order is 95 or newer compilers first, then 90,
 | 
	
		
			
				|  |  | -    #  then 77 or older compilers, gnu is always last in the group,
 | 
	
		
			
				|  |  | -    #  so if you paid for a compiler it is picked by default.
 | 
	
		
			
				|  |  | -    set(CMAKE_Fortran_COMPILER_LIST
 | 
	
		
			
				|  |  | -      ifort ifc af95 af90 efc f95 pathf2003 pathf95 pgf95 pgfortran lf95 xlf95
 | 
	
		
			
				|  |  | -      fort gfortran gfortran-4 g95 f90 pathf90 pgf90 xlf90 epcf90 fort77
 | 
	
		
			
				|  |  | -      frt pgf77 xlf fl32 af77 g77 f77
 | 
	
		
			
				|  |  | -      )
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    # Vendor-specific compiler names.
 | 
	
		
			
				|  |  | -    set(_Fortran_COMPILER_NAMES_GNU       gfortran gfortran-4 g95 g77)
 | 
	
		
			
				|  |  | -    set(_Fortran_COMPILER_NAMES_Intel     ifort ifc efc)
 | 
	
		
			
				|  |  | -    set(_Fortran_COMPILER_NAMES_Absoft    af95 af90 af77)
 | 
	
		
			
				|  |  | -    set(_Fortran_COMPILER_NAMES_PGI       pgf95 pgfortran pgf90 pgf77)
 | 
	
		
			
				|  |  | -    set(_Fortran_COMPILER_NAMES_PathScale pathf2003 pathf95 pathf90)
 | 
	
		
			
				|  |  | -    set(_Fortran_COMPILER_NAMES_XL        xlf)
 | 
	
		
			
				|  |  | -    set(_Fortran_COMPILER_NAMES_VisualAge xlf95 xlf90 xlf)
 | 
	
		
			
				|  |  | -  endif()
 | 
	
		
			
				|  |  | +    _cmake_find_compiler(Fortran)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  _cmake_find_compiler(Fortran)
 | 
	
		
			
				|  |  | +  else()
 | 
	
		
			
				|  |  | +     # we only get here if CMAKE_Fortran_COMPILER was specified using -D or a pre-made CMakeCache.txt
 | 
	
		
			
				|  |  | +    # (e.g. via ctest) or set in CMAKE_TOOLCHAIN_FILE
 | 
	
		
			
				|  |  | +    # if CMAKE_Fortran_COMPILER is a list of length 2, use the first item as
 | 
	
		
			
				|  |  | +    # CMAKE_Fortran_COMPILER and the 2nd one as CMAKE_Fortran_COMPILER_ARG1
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -else()
 | 
	
		
			
				|  |  | -   # we only get here if CMAKE_Fortran_COMPILER was specified using -D or a pre-made CMakeCache.txt
 | 
	
		
			
				|  |  | -  # (e.g. via ctest) or set in CMAKE_TOOLCHAIN_FILE
 | 
	
		
			
				|  |  | -  # if CMAKE_Fortran_COMPILER is a list of length 2, use the first item as
 | 
	
		
			
				|  |  | -  # CMAKE_Fortran_COMPILER and the 2nd one as CMAKE_Fortran_COMPILER_ARG1
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  list(LENGTH CMAKE_Fortran_COMPILER _CMAKE_Fortran_COMPILER_LIST_LENGTH)
 | 
	
		
			
				|  |  | -  if("${_CMAKE_Fortran_COMPILER_LIST_LENGTH}" EQUAL 2)
 | 
	
		
			
				|  |  | -    list(GET CMAKE_Fortran_COMPILER 1 CMAKE_Fortran_COMPILER_ARG1)
 | 
	
		
			
				|  |  | -    list(GET CMAKE_Fortran_COMPILER 0 CMAKE_Fortran_COMPILER)
 | 
	
		
			
				|  |  | -  endif()
 | 
	
		
			
				|  |  | +    list(LENGTH CMAKE_Fortran_COMPILER _CMAKE_Fortran_COMPILER_LIST_LENGTH)
 | 
	
		
			
				|  |  | +    if("${_CMAKE_Fortran_COMPILER_LIST_LENGTH}" EQUAL 2)
 | 
	
		
			
				|  |  | +      list(GET CMAKE_Fortran_COMPILER 1 CMAKE_Fortran_COMPILER_ARG1)
 | 
	
		
			
				|  |  | +      list(GET CMAKE_Fortran_COMPILER 0 CMAKE_Fortran_COMPILER)
 | 
	
		
			
				|  |  | +    endif()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  # if a compiler was specified by the user but without path,
 | 
	
		
			
				|  |  | -  # now try to find it with the full path
 | 
	
		
			
				|  |  | -  # if it is found, force it into the cache,
 | 
	
		
			
				|  |  | -  # if not, don't overwrite the setting (which was given by the user) with "NOTFOUND"
 | 
	
		
			
				|  |  | -  # if the C compiler already had a path, reuse it for searching the CXX compiler
 | 
	
		
			
				|  |  | -  get_filename_component(_CMAKE_USER_Fortran_COMPILER_PATH "${CMAKE_Fortran_COMPILER}" PATH)
 | 
	
		
			
				|  |  | -  if(NOT _CMAKE_USER_Fortran_COMPILER_PATH)
 | 
	
		
			
				|  |  | -    find_program(CMAKE_Fortran_COMPILER_WITH_PATH NAMES ${CMAKE_Fortran_COMPILER})
 | 
	
		
			
				|  |  | -    mark_as_advanced(CMAKE_Fortran_COMPILER_WITH_PATH)
 | 
	
		
			
				|  |  | -    if(CMAKE_Fortran_COMPILER_WITH_PATH)
 | 
	
		
			
				|  |  | -      set(CMAKE_Fortran_COMPILER ${CMAKE_Fortran_COMPILER_WITH_PATH}
 | 
	
		
			
				|  |  | -        CACHE STRING "Fortran compiler" FORCE)
 | 
	
		
			
				|  |  | +    # if a compiler was specified by the user but without path,
 | 
	
		
			
				|  |  | +    # now try to find it with the full path
 | 
	
		
			
				|  |  | +    # if it is found, force it into the cache,
 | 
	
		
			
				|  |  | +    # if not, don't overwrite the setting (which was given by the user) with "NOTFOUND"
 | 
	
		
			
				|  |  | +    # if the C compiler already had a path, reuse it for searching the CXX compiler
 | 
	
		
			
				|  |  | +    get_filename_component(_CMAKE_USER_Fortran_COMPILER_PATH "${CMAKE_Fortran_COMPILER}" PATH)
 | 
	
		
			
				|  |  | +    if(NOT _CMAKE_USER_Fortran_COMPILER_PATH)
 | 
	
		
			
				|  |  | +      find_program(CMAKE_Fortran_COMPILER_WITH_PATH NAMES ${CMAKE_Fortran_COMPILER})
 | 
	
		
			
				|  |  | +      mark_as_advanced(CMAKE_Fortran_COMPILER_WITH_PATH)
 | 
	
		
			
				|  |  | +      if(CMAKE_Fortran_COMPILER_WITH_PATH)
 | 
	
		
			
				|  |  | +        set(CMAKE_Fortran_COMPILER ${CMAKE_Fortran_COMPILER_WITH_PATH}
 | 
	
		
			
				|  |  | +          CACHE STRING "Fortran compiler" FORCE)
 | 
	
		
			
				|  |  | +      endif()
 | 
	
		
			
				|  |  |      endif()
 | 
	
		
			
				|  |  |    endif()
 | 
	
		
			
				|  |  | -endif()
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -mark_as_advanced(CMAKE_Fortran_COMPILER)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -# Build a small source file to identify the compiler.
 | 
	
		
			
				|  |  | -if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
 | 
	
		
			
				|  |  | -  set(CMAKE_Fortran_COMPILER_ID_RUN 1)
 | 
	
		
			
				|  |  | -  set(CMAKE_Fortran_PLATFORM_ID "Windows")
 | 
	
		
			
				|  |  | -  set(CMAKE_Fortran_COMPILER_ID "Intel")
 | 
	
		
			
				|  |  | -endif()
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -if(NOT CMAKE_Fortran_COMPILER_ID_RUN)
 | 
	
		
			
				|  |  | -  set(CMAKE_Fortran_COMPILER_ID_RUN 1)
 | 
	
		
			
				|  |  | +  mark_as_advanced(CMAKE_Fortran_COMPILER)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    # Each entry in this list is a set of extra flags to try
 | 
	
		
			
				|  |  |    # adding to the compile line to see if it helps produce
 | 
	
	
		
			
				|  | @@ -135,6 +132,11 @@ if(NOT CMAKE_Fortran_COMPILER_ID_RUN)
 | 
	
		
			
				|  |  |      # Intel on windows does not preprocess by default.
 | 
	
		
			
				|  |  |      "-fpp"
 | 
	
		
			
				|  |  |      )
 | 
	
		
			
				|  |  | +endif()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +# Build a small source file to identify the compiler.
 | 
	
		
			
				|  |  | +if(NOT CMAKE_Fortran_COMPILER_ID_RUN)
 | 
	
		
			
				|  |  | +  set(CMAKE_Fortran_COMPILER_ID_RUN 1)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    # Table of per-vendor compiler id flags with expected output.
 | 
	
		
			
				|  |  |    list(APPEND CMAKE_Fortran_COMPILER_ID_VENDORS Compaq)
 |