summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2004-08-06 18:51:41 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2004-08-06 18:51:41 (GMT)
commit9655299f08b5aa04ea63193ebecfa08efae7ca3d (patch)
tree69f0415d9b8414cee074b25d80c4520a6feb6086 /Modules
parent0220a85e3337f87c3b34c2d49d85b6ace127ea50 (diff)
downloadCMake-9655299f08b5aa04ea63193ebecfa08efae7ca3d.zip
CMake-9655299f08b5aa04ea63193ebecfa08efae7ca3d.tar.gz
CMake-9655299f08b5aa04ea63193ebecfa08efae7ca3d.tar.bz2
ENH: initial fortran support
Diffstat (limited to 'Modules')
-rw-r--r--Modules/CMakeDefaultMakeRuleVariables.cmake35
-rw-r--r--Modules/CMakeDetermineFortranCompiler.cmake83
-rw-r--r--Modules/CMakeFortranCompiler.cmake.in16
-rw-r--r--Modules/CMakeSystemSpecificInformation.cmake47
-rw-r--r--Modules/CMakeTestFortranCompiler.cmake31
-rw-r--r--Modules/Platform/CYGWIN-g77.cmake5
-rw-r--r--Modules/Platform/g77.cmake7
7 files changed, 224 insertions, 0 deletions
diff --git a/Modules/CMakeDefaultMakeRuleVariables.cmake b/Modules/CMakeDefaultMakeRuleVariables.cmake
index a1a0aad..73d8ab8 100644
--- a/Modules/CMakeDefaultMakeRuleVariables.cmake
+++ b/Modules/CMakeDefaultMakeRuleVariables.cmake
@@ -7,11 +7,16 @@
# CMAKE_CXX_CREATE_SHARED_MODULE
# CMAKE_C_CREATE_SHARED_LIBRARY
# CMAKE_C_CREATE_SHARED_MODULE
+# CMAKE_FORTRAN_CREATE_SHARED_LIBRARY
+# CMAKE_FORTRAN_CREATE_SHARED_MODULE
# CMAKE_CXX_CREATE_STATIC_LIBRARY
# CMAKE_C_CREATE_STATIC_LIBRARY
+# CMAKE_FORTRAN_CREATE_STATIC_LIBRARY
# CMAKE_CXX_COMPILE_OBJECT
# CMAKE_C_COMPILE_OBJECT
+# CMAKE_FORTRAN_COMPILE_OBJECT
# CMAKE_C_LINK_EXECUTABLE
+# CMAKE_FORTRAN_LINK_EXECUTABLE
# CMAKE_CXX_LINK_EXECUTABLE
# variables supplied by the generator at use time
@@ -55,6 +60,7 @@ IF(NOT CMAKE_CXX_CREATE_SHARED_MODULE)
SET(CMAKE_CXX_CREATE_SHARED_MODULE ${CMAKE_CXX_CREATE_SHARED_LIBRARY})
ENDIF(NOT CMAKE_CXX_CREATE_SHARED_MODULE)
+
# create a C shared library
IF(NOT CMAKE_C_CREATE_SHARED_LIBRARY)
SET(CMAKE_C_CREATE_SHARED_LIBRARY
@@ -66,6 +72,17 @@ IF(NOT CMAKE_C_CREATE_SHARED_MODULE)
SET(CMAKE_C_CREATE_SHARED_MODULE ${CMAKE_C_CREATE_SHARED_LIBRARY})
ENDIF(NOT CMAKE_C_CREATE_SHARED_MODULE)
+# create a FORTRAN shared library
+IF(NOT CMAKE_FORTRAN_CREATE_SHARED_LIBRARY)
+ SET(CMAKE_FORTRAN_CREATE_SHARED_LIBRARY
+ "<CMAKE_FORTRAN_COMPILER> <CMAKE_SHARED_LIBRARY_FORTRAN_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_FORTRAN_FLAGS> <CMAKE_SHARED_LIBRARY_SONAME_FORTRAN_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
+ENDIF(NOT CMAKE_FORTRAN_CREATE_SHARED_LIBRARY)
+
+# create a FORTRAN shared module just copy the shared library rule
+IF(NOT CMAKE_FORTRAN_CREATE_SHARED_MODULE)
+ SET(CMAKE_FORTRAN_CREATE_SHARED_MODULE ${CMAKE_FORTRAN_CREATE_SHARED_LIBRARY})
+ENDIF(NOT CMAKE_FORTRAN_CREATE_SHARED_MODULE)
+
# create a C++ static library
IF(NOT CMAKE_CXX_CREATE_STATIC_LIBRARY)
SET(CMAKE_CXX_CREATE_STATIC_LIBRARY
@@ -80,6 +97,13 @@ IF(NOT CMAKE_C_CREATE_STATIC_LIBRARY)
"<CMAKE_RANLIB> <TARGET> ")
ENDIF(NOT CMAKE_C_CREATE_STATIC_LIBRARY)
+# create a Fortran static library
+IF(NOT CMAKE_FORTRAN_CREATE_STATIC_LIBRARY)
+ SET(CMAKE_FORTRAN_CREATE_STATIC_LIBRARY
+ "<CMAKE_AR> cr <TARGET> <LINK_FLAGS> <OBJECTS> "
+ "<CMAKE_RANLIB> <TARGET> ")
+ENDIF(NOT CMAKE_FORTRAN_CREATE_STATIC_LIBRARY)
+
# compile a C++ file into an object file
IF(NOT CMAKE_CXX_COMPILE_OBJECT)
SET(CMAKE_CXX_COMPILE_OBJECT
@@ -92,12 +116,23 @@ IF(NOT CMAKE_C_COMPILE_OBJECT)
"<CMAKE_C_COMPILER> -o <OBJECT> <FLAGS> -c <SOURCE>")
ENDIF(NOT CMAKE_C_COMPILE_OBJECT)
+# compile a Fortran file into an object file
+IF(NOT CMAKE_FORTRAN_COMPILE_OBJECT)
+ SET(CMAKE_FORTRAN_COMPILE_OBJECT
+ "<CMAKE_FORTRAN_COMPILER> -o <OBJECT> <FLAGS> -c <SOURCE>")
+ENDIF(NOT CMAKE_FORTRAN_COMPILE_OBJECT)
+
IF(NOT CMAKE_C_LINK_EXECUTABLE)
SET(CMAKE_C_LINK_EXECUTABLE
"<CMAKE_C_COMPILER> <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
ENDIF(NOT CMAKE_C_LINK_EXECUTABLE)
+IF(NOT CMAKE_FORTRAN_LINK_EXECUTABLE)
+ SET(CMAKE_FORTRAN_LINK_EXECUTABLE
+ "<CMAKE_FORTRAN_COMPILER> <CMAKE_FORTRAN_LINK_FLAGS> <LINK_FLAGS> <FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
+ENDIF(NOT CMAKE_FORTRAN_LINK_EXECUTABLE)
+
IF(NOT CMAKE_CXX_LINK_EXECUTABLE)
SET(CMAKE_CXX_LINK_EXECUTABLE
diff --git a/Modules/CMakeDetermineFortranCompiler.cmake b/Modules/CMakeDetermineFortranCompiler.cmake
new file mode 100644
index 0000000..52004ee
--- /dev/null
+++ b/Modules/CMakeDetermineFortranCompiler.cmake
@@ -0,0 +1,83 @@
+# determine the compiler to use for C programs
+# NOTE, a generator may set CMAKE_C_COMPILER before
+# loading this file to force a compiler.
+# use environment variable CCC first if defined by user, next use
+# the cmake variable CMAKE_GENERATOR_CC which can be defined by a generator
+# as a default compiler
+
+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(EXISTS ${CMAKE_FORTRAN_COMPILER_INIT})
+ ELSE(EXISTS ${CMAKE_FORTRAN_COMPILER_INIT})
+ MESSAGE(FATAL_ERROR "Could not find compiler set in environment variable FC:\n$ENV{FC}.")
+ ENDIF(EXISTS ${CMAKE_FORTRAN_COMPILER_INIT})
+ ENDIF($ENV{FC} MATCHES ".+")
+
+ # 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(NOT CMAKE_FORTRAN_COMPILER_INIT)
+ ENDIF(CMAKE_GENERATOR_FC)
+
+
+ # if no compiler has been specified yet, then look for one
+ IF(NOT CMAKE_FORTRAN_COMPILER_INIT)
+ # if not in the envionment then search for the compiler in the path
+ SET(CMAKE_FORTRAN_COMPILER_LIST g77 ifort f77 f90 epcf90 efc ecc)
+ FIND_PROGRAM(CMAKE_FORTRAN_COMPILER_FULLPATH NAMES ${CMAKE_FORTRAN_COMPILER_LIST} )
+ GET_FILENAME_COMPONENT(CMAKE_FORTRAN_COMPILER_INIT
+ ${CMAKE_FORTRAN_COMPILER_FULLPATH} NAME)
+ SET(CMAKE_FORTRAN_COMPILER_FULLPATH "${CMAKE_FORTRAN_COMPILER_FULLPATH}" CACHE INTERNAL "full path to the compiler cmake found")
+ ENDIF(NOT CMAKE_FORTRAN_COMPILER_INIT)
+
+ SET(CMAKE_FORTRAN_COMPILER ${CMAKE_FORTRAN_COMPILER_INIT} CACHE STRING "Fortran compiler")
+ENDIF(NOT CMAKE_FORTRAN_COMPILER)
+
+MARK_AS_ADVANCED(CMAKE_FORTRAN_COMPILER)
+
+FIND_PROGRAM(CMAKE_AR NAMES ar )
+
+FIND_PROGRAM(CMAKE_RANLIB NAMES ranlib)
+IF(NOT CMAKE_RANLIB)
+ SET(CMAKE_RANLIB : CACHE INTERNAL "noop for ranlib")
+ENDIF(NOT CMAKE_RANLIB)
+MARK_AS_ADVANCED(CMAKE_RANLIB)
+
+IF(NOT CMAKE_COMPILER_IS_GNUG77_RUN)
+ # test to see if the Fortran compiler is gnu
+
+ IF(CMAKE_FORTRAN_FLAGS)
+ SET(CMAKE_BOOT_FORTRAN_FLAGS ${CMAKE_FORTRAN_FLAGS})
+ ELSE(CMAKE_FORTRAN_FLAGS)
+ SET(CMAKE_BOOT_FORTRAN_FLAGS $ENV{FFLAGS})
+ ENDIF(CMAKE_FORTRAN_FLAGS)
+ EXEC_PROGRAM(${CMAKE_FORTRAN_COMPILER} ARGS ${CMAKE_BOOT_FORTRAN_FLAGS} -E "\"${CMAKE_ROOT}/Modules/CMakeTestGNU.c\"" OUTPUT_VARIABLE CMAKE_COMPILER_OUTPUT RETURN_VALUE CMAKE_COMPILER_RETURN)
+ SET(CMAKE_COMPILER_IS_GNUG77_RUN 1)
+ IF(NOT CMAKE_COMPILER_RETURN)
+ IF("${CMAKE_COMPILER_OUTPUT}" MATCHES ".*THIS_IS_GNU.*" )
+ SET(CMAKE_COMPILER_IS_GNUG77 1)
+ FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeOutput.log
+ "Determining if the Fortran compiler is GNU succeeded with "
+ "the following output:\n${CMAKE_COMPILER_OUTPUT}\n\n")
+ ELSE("${CMAKE_COMPILER_OUTPUT}" MATCHES ".*THIS_IS_GNU.*" )
+ FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeOutput.log
+ "Determining if the Fortran compiler is GNU failed with "
+ "the following output:\n${CMAKE_COMPILER_OUTPUT}\n\n")
+ ENDIF("${CMAKE_COMPILER_OUTPUT}" MATCHES ".*THIS_IS_GNU.*" )
+ IF("${CMAKE_COMPILER_OUTPUT}" MATCHES ".*THIS_IS_MINGW.*" )
+ SET(CMAKE_COMPILER_IS_MINGW 1)
+ ENDIF("${CMAKE_COMPILER_OUTPUT}" MATCHES ".*THIS_IS_MINGW.*" )
+ IF("${CMAKE_COMPILER_OUTPUT}" MATCHES ".*THIS_IS_CYGWIN.*" )
+ SET(CMAKE_COMPILER_IS_CYGWIN 1)
+ ENDIF("${CMAKE_COMPILER_OUTPUT}" MATCHES ".*THIS_IS_CYGWIN.*" )
+ ENDIF(NOT CMAKE_COMPILER_RETURN)
+ENDIF(NOT CMAKE_COMPILER_IS_GNUG77_RUN)
+
+
+# configure variables set in this file for fast reload later on
+CONFIGURE_FILE(${CMAKE_ROOT}/Modules/CMakeFortranCompiler.cmake.in
+ ${CMAKE_BINARY_DIR}/CMakeFortranCompiler.cmake IMMEDIATE)
+MARK_AS_ADVANCED(CMAKE_AR)
diff --git a/Modules/CMakeFortranCompiler.cmake.in b/Modules/CMakeFortranCompiler.cmake.in
new file mode 100644
index 0000000..1bf30a1
--- /dev/null
+++ b/Modules/CMakeFortranCompiler.cmake.in
@@ -0,0 +1,16 @@
+SET(CMAKE_FORTRAN_COMPILER "@CMAKE_FORTRAN_COMPILER@")
+SET(CMAKE_AR "@CMAKE_AR@")
+SET(CMAKE_RANLIB "@CMAKE_RANLIB@")
+SET(CMAKE_COMPILER_IS_GNUCC @CMAKE_COMPILER_IS_GNUCC@)
+SET(CMAKE_FORTRAN_COMPILER_LOADED 1)
+SET(CMAKE_COMPILER_IS_MINGW @CMAKE_COMPILER_IS_MINGW@)
+SET(CMAKE_COMPILER_IS_CYGWIN @CMAKE_COMPILER_IS_CYGWIN@)
+IF(CMAKE_COMPILER_IS_CYGWIN)
+ SET(CYGWIN 1)
+ SET(UNIX 1)
+ENDIF(CMAKE_COMPILER_IS_CYGWIN)
+
+IF(CMAKE_COMPILER_IS_MINGW)
+ SET(MINGW 1)
+ENDIF(CMAKE_COMPILER_IS_MINGW)
+SET(CMAKE_COMPILER_IS_GNUG77_RUN 1)
diff --git a/Modules/CMakeSystemSpecificInformation.cmake b/Modules/CMakeSystemSpecificInformation.cmake
index c9f5c29..0abf65d 100644
--- a/Modules/CMakeSystemSpecificInformation.cmake
+++ b/Modules/CMakeSystemSpecificInformation.cmake
@@ -135,6 +135,50 @@ IF(NOT CMAKE_SHARED_MODULE_RUNTIME_CXX_FLAG_SEP)
SET(CMAKE_SHARED_MODULE_RUNTIME_CXX_FLAG_SEP ${CMAKE_SHARED_MODULE_RUNTIME_FLAG_SEP})
ENDIF(NOT CMAKE_SHARED_MODULE_RUNTIME_CXX_FLAG_SEP)
+# Create a set of shared library variable specific to Fortran
+# For 90% of the systems, these are the same flags as the C versions
+# so if these are not set just copy the flags from the c version
+IF(NOT CMAKE_SHARED_LIBRARY_CREATE_FORTRAN_FLAGS)
+ SET(CMAKE_SHARED_LIBRARY_CREATE_FORTRAN_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS})
+ENDIF(NOT CMAKE_SHARED_LIBRARY_CREATE_FORTRAN_FLAGS)
+
+IF(NOT CMAKE_SHARED_LIBRARY_FORTRAN_FLAGS)
+ SET(CMAKE_SHARED_LIBRARY_FORTRAN_FLAGS ${CMAKE_SHARED_LIBRARY_C_FLAGS})
+ENDIF(NOT CMAKE_SHARED_LIBRARY_FORTRAN_FLAGS)
+
+IF(NOT CMAKE_SHARED_LIBRARY_LINK_FORTRAN_FLAGS)
+ SET(CMAKE_SHARED_LIBRARY_LINK_FORTRAN_FLAGS ${CMAKE_SHARED_LIBRARY_LINK_FLAGS})
+ENDIF(NOT CMAKE_SHARED_LIBRARY_LINK_FORTRAN_FLAGS)
+
+IF(NOT CMAKE_SHARED_LIBRARY_RUNTIME_FORTRAN_FLAG)
+ SET(CMAKE_SHARED_LIBRARY_RUNTIME_FORTRAN_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_FLAG})
+ENDIF(NOT CMAKE_SHARED_LIBRARY_RUNTIME_FORTRAN_FLAG)
+
+IF(NOT CMAKE_SHARED_LIBRARY_RUNTIME_FORTRAN_FLAG_SEP)
+ SET(CMAKE_SHARED_LIBRARY_RUNTIME_FORTRAN_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_FLAG_SEP})
+ENDIF(NOT CMAKE_SHARED_LIBRARY_RUNTIME_FORTRAN_FLAG_SEP)
+
+# repeat for modules
+IF(NOT CMAKE_SHARED_MODULE_CREATE_FORTRAN_FLAGS)
+ SET(CMAKE_SHARED_MODULE_CREATE_FORTRAN_FLAGS ${CMAKE_SHARED_MODULE_CREATE_C_FLAGS})
+ENDIF(NOT CMAKE_SHARED_MODULE_CREATE_FORTRAN_FLAGS)
+
+IF(NOT CMAKE_SHARED_MODULE_FORTRAN_FLAGS)
+ SET(CMAKE_SHARED_MODULE_FORTRAN_FLAGS ${CMAKE_SHARED_MODULE_C_FLAGS})
+ENDIF(NOT CMAKE_SHARED_MODULE_FORTRAN_FLAGS)
+
+IF(NOT CMAKE_SHARED_MODULE_LINK_FORTRAN_FLAGS)
+ SET(CMAKE_SHARED_MODULE_LINK_FORTRAN_FLAGS ${CMAKE_SHARED_MODULE_LINK_FLAGS})
+ENDIF(NOT CMAKE_SHARED_MODULE_LINK_FORTRAN_FLAGS)
+
+IF(NOT CMAKE_SHARED_MODULE_RUNTIME_FORTRAN_FLAG)
+ SET(CMAKE_SHARED_MODULE_RUNTIME_FORTRAN_FLAG ${CMAKE_SHARED_MODULE_RUNTIME_FLAG})
+ENDIF(NOT CMAKE_SHARED_MODULE_RUNTIME_FORTRAN_FLAG)
+
+IF(NOT CMAKE_SHARED_MODULE_RUNTIME_FORTRAN_FLAG_SEP)
+ SET(CMAKE_SHARED_MODULE_RUNTIME_FORTRAN_FLAG_SEP ${CMAKE_SHARED_MODULE_RUNTIME_FLAG_SEP})
+ENDIF(NOT CMAKE_SHARED_MODULE_RUNTIME_FORTRAN_FLAG_SEP)
+
# include default rules that work for most unix like systems and compilers
# this file will not set anything if it is already set
INCLUDE(${CMAKE_ROOT}/Modules/CMakeDefaultMakeRuleVariables.cmake)
@@ -158,6 +202,9 @@ SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_ENV_INIT} $ENV{CXXFLAGS} ${CMAKE_CXX_FLA
SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS_ENV_INIT} $ENV{CFLAGS} ${CMAKE_C_FLAGS_INIT}" CACHE STRING
"Flags for C compiler.")
+SET (CMAKE_FORTRAN_FLAGS "${CMAKE_FORTRAN_FLAGS_ENV_INIT} $ENV{FFLAGS} ${CMAKE_FORTRAN_FLAGS_INIT}" CACHE STRING
+ "Flags for Fortran compiler.")
+
SET (CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS_INIT} $ENV{LDFLAGS}
CACHE STRING "Flags used by the linker.")
diff --git a/Modules/CMakeTestFortranCompiler.cmake b/Modules/CMakeTestFortranCompiler.cmake
new file mode 100644
index 0000000..4937d20
--- /dev/null
+++ b/Modules/CMakeTestFortranCompiler.cmake
@@ -0,0 +1,31 @@
+# This file is used by EnableLanguage in cmGlobalGenerator to
+# determine that that selected C compiler can actually compile
+# and link the most basic of programs. If not, a fatal error
+# is set and cmake stops processing commands and will not generate
+# any makefiles or projects.
+IF(NOT CMAKE_FORTRAN_COMPILER_WORKS)
+ MESSAGE(STATUS "Check for working Fortran compiler: ${CMAKE_FORTRAN_COMPILER}")
+ FILE(WRITE ${CMAKE_BINARY_DIR}/CMakeTmp/testFortranCompiler.f
+ "\tPROGRAM TESTFORTRAN\n"
+ "\tPRINT *, 'Hello'\n"
+ "\tEND\n")
+ TRY_COMPILE(CMAKE_FORTRAN_COMPILER_WORKS ${CMAKE_BINARY_DIR}
+ ${CMAKE_BINARY_DIR}/CMakeTmp/testFortranCompiler.f
+ OUTPUT_VARIABLE OUTPUT)
+ENDIF(NOT CMAKE_FORTRAN_COMPILER_WORKS)
+
+IF(NOT CMAKE_FORTRAN_COMPILER_WORKS)
+ MESSAGE(STATUS "Check for working Fortran compiler: ${CMAKE_FORTRAN_COMPILER} -- broken")
+ FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeError.log
+ "Determining if the Fortran compiler works failed with "
+ "the following output:\n${OUTPUT}\n\n")
+ MESSAGE(FATAL_ERROR "The Fortran compiler \"${CMAKE_FORTRAN_COMPILER}\" "
+ "is not able to compile a simple test program.\nIt fails "
+ "with the following output:\n ${OUTPUT}\n\n"
+ "CMake will not be able to correctly generate this project.")
+ELSE(NOT CMAKE_FORTRAN_COMPILER_WORKS)
+ MESSAGE(STATUS "Check for working Fortran compiler: ${CMAKE_FORTRAN_COMPILER} -- works")
+ FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeOutput.log
+ "Determining if the Fortran compiler works passed with "
+ "the following output:\n${OUTPUT}\n\n")
+ENDIF(NOT CMAKE_FORTRAN_COMPILER_WORKS)
diff --git a/Modules/Platform/CYGWIN-g77.cmake b/Modules/Platform/CYGWIN-g77.cmake
new file mode 100644
index 0000000..fd5329e
--- /dev/null
+++ b/Modules/Platform/CYGWIN-g77.cmake
@@ -0,0 +1,5 @@
+SET(CMAKE_SHARED_LIBRARY_PREFIX "lib")
+SET(CMAKE_SHARED_LIBRARY_SUFFIX ".dll")
+SET(CMAKE_SHARED_LIBRARY_FORTRAN_FLAGS "")
+SET(CMAKE_SHARED_LIBRARY_FORTRAN_FLAGS "")
+INCLUDE(${CMAKE_ROOT}/Modules/Platform/g77.cmake)
diff --git a/Modules/Platform/g77.cmake b/Modules/Platform/g77.cmake
new file mode 100644
index 0000000..a720f4f
--- /dev/null
+++ b/Modules/Platform/g77.cmake
@@ -0,0 +1,7 @@
+IF(CMAKE_COMPILER_IS_GNUG77)
+ SET (CMAKE_FORTRAN_FLAGS_INIT "")
+ SET (CMAKE_FORTRAN_FLAGS_DEBUG_INIT "-g")
+ SET (CMAKE_FORTRAN_FLAGS_MINSIZEREL_INIT "-Os -DNDEBUG")
+ SET (CMAKE_FORTRAN_FLAGS_RELEASE_INIT "-O3 -DNDEBUG")
+ SET (CMAKE_FORTRAN_FLAGS_RELWITHDEBINFO_INIT "-O2 -g")
+ENDIF(CMAKE_COMPILER_IS_GNUG77)