From c106cb2e2fcae39c29405c288c1858959504516d Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 4 Dec 2009 10:21:57 -0500 Subject: Generalize support for Portland Group Compiler We factor flags from Platform/Linux-PGI-Fortran.cmake into language independent helper modules Compiler/PGI.cmake Platform/Linux-PGI.cmake and invoke the macros from Compiler/PGI-.cmake Platform/Linux-PGI-.cmake This enables general support for the PGI compilers. --- Modules/Compiler/PGI-C.cmake | 5 ++++- Modules/Compiler/PGI-CXX.cmake | 5 ++++- Modules/Compiler/PGI-Fortran.cmake | 13 +++++++++++- Modules/Compiler/PGI.cmake | 35 ++++++++++++++++++++++++++++++++ Modules/Platform/Linux-PGI-C.cmake | 5 ++--- Modules/Platform/Linux-PGI-CXX.cmake | 4 ++-- Modules/Platform/Linux-PGI-Fortran.cmake | 9 ++------ Modules/Platform/Linux-PGI.cmake | 25 +++++++++++++++++++++++ 8 files changed, 86 insertions(+), 15 deletions(-) create mode 100644 Modules/Compiler/PGI.cmake create mode 100644 Modules/Platform/Linux-PGI.cmake diff --git a/Modules/Compiler/PGI-C.cmake b/Modules/Compiler/PGI-C.cmake index abf384a..da88c01 100644 --- a/Modules/Compiler/PGI-C.cmake +++ b/Modules/Compiler/PGI-C.cmake @@ -1 +1,4 @@ -SET(CMAKE_C_VERBOSE_FLAG "-v") +include(Compiler/PGI) +__compiler_pgi(C) +set(CMAKE_C_FLAGS_MINSIZEREL_INIT "${CMAKE_C_FLAGS_MINSIZEREL_INIT} -DNDEBUG") +set(CMAKE_C_FLAGS_RELEASE_INIT "${CMAKE_C_FLAGS_RELEASE_INIT} -DNDEBUG") diff --git a/Modules/Compiler/PGI-CXX.cmake b/Modules/Compiler/PGI-CXX.cmake index f3c6b5f..97c9555 100644 --- a/Modules/Compiler/PGI-CXX.cmake +++ b/Modules/Compiler/PGI-CXX.cmake @@ -1 +1,4 @@ -SET(CMAKE_CXX_VERBOSE_FLAG "-v") +include(Compiler/PGI) +__compiler_pgi(CXX) +set(CMAKE_CXX_FLAGS_MINSIZEREL_INIT "${CMAKE_CXX_FLAGS_MINSIZEREL_INIT} -DNDEBUG") +set(CMAKE_CXX_FLAGS_RELEASE_INIT "${CMAKE_CXX_FLAGS_RELEASE_INIT} -DNDEBUG") diff --git a/Modules/Compiler/PGI-Fortran.cmake b/Modules/Compiler/PGI-Fortran.cmake index 7f7c128..1d26315 100644 --- a/Modules/Compiler/PGI-Fortran.cmake +++ b/Modules/Compiler/PGI-Fortran.cmake @@ -1 +1,12 @@ -SET(CMAKE_Fortran_VERBOSE_FLAG "-v") +include(Compiler/PGI) +__compiler_pgi(Fortran) + +SET(CMAKE_Fortran_FLAGS_INIT "${CMAKE_Fortran_FLAGS_INIT} -Mpreprocess -Kieee") +SET(CMAKE_Fortran_FLAGS_DEBUG_INIT "${CMAKE_Fortran_FLAGS_DEBUG_INIT} -Mbounds") + +# We require updates to CMake C++ code to support preprocessing rules +# for Fortran. +SET(CMAKE_Fortran_CREATE_PREPROCESSED_SOURCE) +SET(CMAKE_Fortran_CREATE_ASSEMBLY_SOURCE) + +SET(CMAKE_Fortran_MODDIR_FLAG "-module ") diff --git a/Modules/Compiler/PGI.cmake b/Modules/Compiler/PGI.cmake new file mode 100644 index 0000000..c6960fc --- /dev/null +++ b/Modules/Compiler/PGI.cmake @@ -0,0 +1,35 @@ + +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# This module is shared by multiple languages; use include blocker. +if(__COMPILER_PGI) + return() +endif() +set(__COMPILER_PGI 1) + +macro(__compiler_pgi lang) + # Feature flags. + set(CMAKE_${lang}_VERBOSE_FLAG "-v") + + # Initial configuration flags. + set(CMAKE_${lang}_FLAGS_INIT "") + set(CMAKE_${lang}_FLAGS_DEBUG_INIT "-g -O0") + set(CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "-O2 -s") + set(CMAKE_${lang}_FLAGS_RELEASE_INIT "-fast -O3 -Mipa=fast") + set(CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "-O2 -gopt") + + # Preprocessing and assembly rules. + set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE " -E > ") + set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE " -S -o ") +endmacro() diff --git a/Modules/Platform/Linux-PGI-C.cmake b/Modules/Platform/Linux-PGI-C.cmake index 46aae3a..edf4f3f 100644 --- a/Modules/Platform/Linux-PGI-C.cmake +++ b/Modules/Platform/Linux-PGI-C.cmake @@ -1,3 +1,2 @@ -SET (CMAKE_C_CREATE_PREPROCESSED_SOURCE " -E > ") -SET (CMAKE_C_CREATE_ASSEMBLY_SOURCE " -S -o ") - +include(Platform/Linux-PGI) +__linux_compiler_pgi(C) diff --git a/Modules/Platform/Linux-PGI-CXX.cmake b/Modules/Platform/Linux-PGI-CXX.cmake index 194c8fb..d425f88 100644 --- a/Modules/Platform/Linux-PGI-CXX.cmake +++ b/Modules/Platform/Linux-PGI-CXX.cmake @@ -1,2 +1,2 @@ -SET (CMAKE_CXX_CREATE_PREPROCESSED_SOURCE " -E > ") -SET (CMAKE_CXX_CREATE_ASSEMBLY_SOURCE " -S -o ") +include(Platform/Linux-PGI) +__linux_compiler_pgi(CXX) diff --git a/Modules/Platform/Linux-PGI-Fortran.cmake b/Modules/Platform/Linux-PGI-Fortran.cmake index 7a2e006..e8731a3 100644 --- a/Modules/Platform/Linux-PGI-Fortran.cmake +++ b/Modules/Platform/Linux-PGI-Fortran.cmake @@ -1,7 +1,2 @@ -SET(CMAKE_Fortran_MODDIR_FLAG "-module ") -SET(CMAKE_Fortran_FLAGS_INIT "-Mpreprocess -Kieee -fpic") -SET(CMAKE_Fortran_FLAGS_DEBUG_INIT "-g -O0 -Mbounds") -SET(CMAKE_Fortran_FLAGS_MINSIZEREL_INIT "-O2 -s") -SET(CMAKE_Fortran_FLAGS_RELEASE_INIT "-fast -O3 -Mipa=fast") -SET(CMAKE_Fortran_FLAGS_RELWITHDEBINFO_INIT "-O2 -gopt") - +include(Platform/Linux-PGI) +__linux_compiler_pgi(Fortran) diff --git a/Modules/Platform/Linux-PGI.cmake b/Modules/Platform/Linux-PGI.cmake new file mode 100644 index 0000000..868ee33 --- /dev/null +++ b/Modules/Platform/Linux-PGI.cmake @@ -0,0 +1,25 @@ + +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# This module is shared by multiple languages; use include blocker. +if(__LINUX_COMPILER_PGI) + return() +endif() +set(__LINUX_COMPILER_PGI 1) + +macro(__linux_compiler_pgi lang) + # Shared library compile and link flags. + set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "-fPIC") + set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-shared") +endmacro() -- cgit v0.12