Skip to content

Commit

Permalink
Add Fortran compiler specific files
Browse files Browse the repository at this point in the history
  • Loading branch information
byrnHDF committed Oct 18, 2024
1 parent bc8da8a commit e4eeda7
Show file tree
Hide file tree
Showing 6 changed files with 210 additions and 108 deletions.
4 changes: 2 additions & 2 deletions config/cmake/HDFCompilerCXXFlags.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ if (CMAKE_CXX_COMPILER_LOADED)
endif ()

if (CMAKE_CXX_COMPILER_ID MATCHES "Intel")
include (${HDF_RESOURCES_DIR}/HDFGnuCXXFlags.cmake)
include (${HDF_RESOURCES_DIR}/HDFIntelCXXFlags.cmake)
endif ()

if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
Expand All @@ -82,7 +82,7 @@ if (CMAKE_CXX_COMPILER_LOADED)

#because this will match other compilers with clang in the name this should be checked last
if (CMAKE_CXX_COMPILER_ID MATCHES "[Cc]lang")
include (${HDF_RESOURCES_DIR}/HDFGnuCXXFlags.cmake)
include (${HDF_RESOURCES_DIR}/HDFClangCXXFlags.cmake)
endif ()

#-----------------------------------------------------------------------------
Expand Down
4 changes: 2 additions & 2 deletions config/cmake/HDFCompilerFlags.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ if (CMAKE_C_COMPILER_ID MATCHES "GNU")
endif ()

if (CMAKE_C_COMPILER_ID MATCHES "Intel")
include (${HDF_RESOURCES_DIR}/HDFGnuFlags.cmake)
include (${HDF_RESOURCES_DIR}/HDFIntelFlags.cmake)
endif ()

if (CMAKE_C_COMPILER_ID MATCHES "MSVC")
Expand All @@ -74,7 +74,7 @@ endif ()

#because this will match other compilers with clang in the name this should be checked last
if (CMAKE_C_COMPILER_ID MATCHES "[Cc]lang")
include (${HDF_RESOURCES_DIR}/HDFGnuFlags.cmake)
include (${HDF_RESOURCES_DIR}/HDFClangFlags.cmake)
endif ()

#-----------------------------------------------------------------------------
Expand Down
117 changes: 13 additions & 104 deletions config/cmake/HDFCompilerFortranFlags.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,6 @@ if (HDF5_DISABLE_COMPILER_WARNINGS)
# warning level is given, so remove it.
if (MSVC)
set (HDF5_WARNINGS_BLOCKED 1)
if (CMAKE_Fortran_COMPILER_ID STREQUAL "Intel")
set (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} /warn:none")
elseif (CMAKE_Fortran_COMPILER_ID MATCHES "IntelLLVM")
set (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} /warn:none")
endif ()
endif ()
if (WIN32)
add_definitions (-D_CRT_SECURE_NO_WARNINGS)
Expand All @@ -42,117 +37,31 @@ if (HDF5_DISABLE_COMPILER_WARNINGS)
endif ()
endif ()

if (CMAKE_Fortran_COMPILER_ID MATCHES "NVHPC" )
include (${HDF_RESOURCES_DIR}/HDFNvhpcFortranFlags.cmake)
endif ()

if (CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
include (${HDF_RESOURCES_DIR}/HDFGnuFortranFlags.cmake)
endif ()

if (CMAKE_Fortran_COMPILER_ID MATCHES "Intel")
include (${HDF_RESOURCES_DIR}/HDFIntelFortranFlags.cmake)
endif ()

#-----------------------------------------------------------------------------
# HDF5 library compile options - to be made available to all targets
#-----------------------------------------------------------------------------
if (CMAKE_Fortran_COMPILER_ID STREQUAL "GNU" AND NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 10.0)
if (HDF5_ENABLE_BUILD_DIAGS)
message (STATUS "... default color and URL extended diagnostic messages enabled")
else ()
message (STATUS "... disable color and URL extended diagnostic messages")
set (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fdiagnostics-urls=never -fno-diagnostics-color")
endif ()
endif ()

if (CMAKE_Fortran_COMPILER_ID STREQUAL "NAG")
message (STATUS "... Select IEEE floating-point mode full")
list (APPEND HDF5_CMAKE_Fortran_FLAGS "-ieee=full")
endif ()
if (CMAKE_Fortran_COMPILER_ID STREQUAL "NVHPC")
if (NOT ${HDF_CFG_NAME} MATCHES "Debug" AND NOT ${HDF_CFG_NAME} MATCHES "Developer")
set (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Mnoframe")
if (NOT ${HDF_CFG_NAME} MATCHES "RelWithDebInfo")
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -s")
endif ()
else ()
set (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Mbounds -Mchkptr -Mdclchk -g")
endif ()
endif ()

if (NOT MSVC AND NOT MINGW)
# General flags
if (CMAKE_Fortran_COMPILER_ID STREQUAL "Intel")
if (_INTEL_WINDOWS)
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/classic/win-ifort-general")
else ()
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/classic/ifort-general")
endif()
list (APPEND HDF5_CMAKE_Fortran_FLAGS "-free")
elseif (CMAKE_Fortran_COMPILER_ID STREQUAL "GNU")
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-general")
if (HDF5_ENABLE_DEV_WARNINGS)
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-developer-general")
else ()
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-no-developer-general")
endif ()
list (APPEND HDF5_CMAKE_Fortran_FLAGS "-ffree-form" "-fimplicit-none")
if (CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 8.0 AND NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 4.6)
list (APPEND HDF5_CMAKE_Fortran_FLAGS "-std=f2008ts")
else ()
list (APPEND HDF5_CMAKE_Fortran_FLAGS "-std=f2008")
endif ()
elseif (CMAKE_Fortran_COMPILER_ID MATCHES "IntelLLVM")
if (_INTEL_WINDOWS)
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/oneapi/win-ifort-general")
else ()
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/oneapi/ifort-general")
endif()
list (APPEND HDF5_CMAKE_Fortran_FLAGS "-free")
elseif (CMAKE_Fortran_COMPILER_ID STREQUAL "PGI")
if (CMAKE_Fortran_COMPILER_ID STREQUAL "PGI")
list (APPEND HDF5_CMAKE_Fortran_FLAGS "-Mfreeform" "-Mdclchk" "-Mstandard" "-Mallocatable=03")
endif ()
message (VERBOSE "HDF5_CMAKE_Fortran_FLAGS=${HDF5_CMAKE_Fortran_FLAGS}")

if (CMAKE_Fortran_COMPILER_ID STREQUAL "GNU")
# Append more extra warning flags that only gcc 4.8+ knows about
if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 4.8)
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-4.8")
if (HDF5_ENABLE_DEV_WARNINGS)
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-developer-4.8")
else ()
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-no-developer-4.8")
endif ()
endif ()

# Append more extra warning flags that only gcc 4.9+ knows about
#if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 4.9)
# ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-4.9")
#endif ()

# Append more extra warning flags that only gcc 5.x+ knows about
if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 5.0)
if (HDF5_ENABLE_DEV_WARNINGS)
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-developer-5")
endif ()
endif ()

# Append more extra warning flags that only gcc 6.x+ knows about
if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 6.0)
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-6")
endif ()

# Append more extra warning flags that only gcc 7.x+ knows about
#if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 7.0)
# ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-7")
#endif ()

# Append more extra warning flags that only gcc 8.x+ knows about
if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 8.0)
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-8")
endif ()

# Append more extra warning flags that only gcc 9.x+ knows about
#if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 9.0)
# ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-9")
#endif ()
endif ()
else ()
if (CMAKE_Fortran_COMPILER_ID STREQUAL "Intel")
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/classic/win-ifort-general")
list (APPEND HDF5_CMAKE_Fortran_FLAGS "/stand:f03" "/free")
elseif (CMAKE_Fortran_COMPILER_ID MATCHES "IntelLLVM")
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/oneapi/win-ifort-general")
list (APPEND HDF5_CMAKE_Fortran_FLAGS "/stand:f03" "/free")
endif ()
endif ()

90 changes: 90 additions & 0 deletions config/cmake/HDFGnuFortranFlags.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
#
# Copyright by The HDF Group.
# All rights reserved.
#
# This file is part of HDF5. The full HDF5 copyright notice, including
# terms governing use, modification, and redistribution, is contained in
# the COPYING file, which can be found at the root of the source code
# distribution tree, or in https://www.hdfgroup.org/licenses.
# If you do not have access to either file, you may request a copy from
# [email protected].
#

###############################################################################
# This file included from HDFCompilerFortranFlags.cmake with
# if (CMAKE_Fortran_COMPILER_ID MATCHES "GNU" )
###############################################################################

message (VERBOSE "Warnings Configuration: default Fortran: ${CMAKE_Fortran_FLAGS}")

#-----------------------------------------------------------------------------
# HDF5 library compile options - to be made available to all targets
#-----------------------------------------------------------------------------
if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 10.0)
if (HDF5_ENABLE_BUILD_DIAGS)
message (STATUS "... default color and URL extended diagnostic messages enabled")
else ()
message (STATUS "... disable color and URL extended diagnostic messages")
set (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fdiagnostics-urls=never -fno-diagnostics-color")
endif ()
endif ()

if (NOT MSVC AND NOT MINGW)
# General flags
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-general")
if (HDF5_ENABLE_DEV_WARNINGS)
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-developer-general")
else ()
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-no-developer-general")
endif ()
list (APPEND HDF5_CMAKE_Fortran_FLAGS "-ffree-form" "-fimplicit-none")
if (CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 8.0 AND NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 4.6)
list (APPEND HDF5_CMAKE_Fortran_FLAGS "-std=f2008ts")
else ()
list (APPEND HDF5_CMAKE_Fortran_FLAGS "-std=f2008")
endif ()
message (VERBOSE "HDF5_CMAKE_Fortran_FLAGS=${HDF5_CMAKE_Fortran_FLAGS}")

# Append more extra warning flags that only gcc 4.8+ knows about
if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 4.8)
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-4.8")
if (HDF5_ENABLE_DEV_WARNINGS)
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-developer-4.8")
else ()
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-no-developer-4.8")
endif ()
endif ()

# Append more extra warning flags that only gcc 4.9+ knows about
#if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 4.9)
# ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-4.9")
#endif ()

# Append more extra warning flags that only gcc 5.x+ knows about
if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 5.0)
if (HDF5_ENABLE_DEV_WARNINGS)
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-developer-5")
endif ()
endif ()

# Append more extra warning flags that only gcc 6.x+ knows about
if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 6.0)
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-6")
endif ()

# Append more extra warning flags that only gcc 7.x+ knows about
#if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 7.0)
# ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-7")
#endif ()

# Append more extra warning flags that only gcc 8.x+ knows about
if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 8.0)
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-8")
endif ()

# Append more extra warning flags that only gcc 9.x+ knows about
#if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 9.0)
# ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-9")
#endif ()
endif ()

65 changes: 65 additions & 0 deletions config/cmake/HDFIntelFortranFlags.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
#
# Copyright by The HDF Group.
# All rights reserved.
#
# This file is part of HDF5. The full HDF5 copyright notice, including
# terms governing use, modification, and redistribution, is contained in
# the COPYING file, which can be found at the root of the source code
# distribution tree, or in https://www.hdfgroup.org/licenses.
# If you do not have access to either file, you may request a copy from
# [email protected].
#

###############################################################################
# This file included from HDFCompilerFortranFlags.cmake with
# if (CMAKE_Fortran_COMPILER_ID MATCHES "Intel" )
###############################################################################

message (VERBOSE "Warnings Configuration: default Fortran: ${CMAKE_Fortran_FLAGS}")

#-----------------------------------------------------------------------------
# Option to allow the user to disable compiler warnings
#-----------------------------------------------------------------------------
if (HDF5_DISABLE_COMPILER_WARNINGS)
# MSVC uses /w to suppress warnings. It also complains if another
# warning level is given, so remove it.
if (MSVC)
if (CMAKE_Fortran_COMPILER_ID STREQUAL "Intel")
set (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} /warn:none")
elseif (CMAKE_Fortran_COMPILER_ID MATCHES "IntelLLVM")
set (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} /warn:none")
endif ()
endif ()
endif ()

#-----------------------------------------------------------------------------
# HDF5 library compile options - to be made available to all targets
#-----------------------------------------------------------------------------
if (NOT MSVC AND NOT MINGW)
# General flags
if (CMAKE_Fortran_COMPILER_ID STREQUAL "Intel")
if (_INTEL_WINDOWS)
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/classic/win-ifort-general")
else ()
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/classic/ifort-general")
endif()
list (APPEND HDF5_CMAKE_Fortran_FLAGS "-free")
elseif (CMAKE_Fortran_COMPILER_ID MATCHES "IntelLLVM")
if (_INTEL_WINDOWS)
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/oneapi/win-ifort-general")
else ()
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/oneapi/ifort-general")
endif()
list (APPEND HDF5_CMAKE_Fortran_FLAGS "-free")
endif ()
message (VERBOSE "HDF5_CMAKE_Fortran_FLAGS=${HDF5_CMAKE_Fortran_FLAGS}")
else ()
if (CMAKE_Fortran_COMPILER_ID STREQUAL "Intel")
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/classic/win-ifort-general")
list (APPEND HDF5_CMAKE_Fortran_FLAGS "/stand:f03" "/free")
elseif (CMAKE_Fortran_COMPILER_ID MATCHES "IntelLLVM")
ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/oneapi/win-ifort-general")
list (APPEND HDF5_CMAKE_Fortran_FLAGS "/stand:f03" "/free")
endif ()
endif ()

38 changes: 38 additions & 0 deletions config/cmake/HDFNvhpcFortranFlags.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#
# Copyright by The HDF Group.
# All rights reserved.
#
# This file is part of HDF5. The full HDF5 copyright notice, including
# terms governing use, modification, and redistribution, is contained in
# the COPYING file, which can be found at the root of the source code
# distribution tree, or in https://www.hdfgroup.org/licenses.
# If you do not have access to either file, you may request a copy from
# [email protected].
#

###############################################################################
# This file included from HDFCompilerFortranFlags.cmake with
# if (CMAKE_Fortran_COMPILER_ID MATCHES "NVHPC" )
###############################################################################

message (VERBOSE "Warnings Configuration: default Fortran: ${CMAKE_Fortran_FLAGS}")

#-----------------------------------------------------------------------------
# HDF5 library compile options - to be made available to all targets
#-----------------------------------------------------------------------------
if (CMAKE_Fortran_COMPILER_ID STREQUAL "NVHPC")
if (NOT ${HDF_CFG_NAME} MATCHES "Debug" AND NOT ${HDF_CFG_NAME} MATCHES "Developer")
set (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Mnoframe")
if (NOT ${HDF_CFG_NAME} MATCHES "RelWithDebInfo")
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -s")
endif ()
else ()
set (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Mbounds -Mchkptr -Mdclchk -g")
endif ()
endif ()

if (NOT MSVC AND NOT MINGW)
# General flags
message (VERBOSE "HDF5_CMAKE_Fortran_FLAGS=${HDF5_CMAKE_Fortran_FLAGS}")
endif ()

0 comments on commit e4eeda7

Please sign in to comment.