diff options
author | Brad King <brad.king@kitware.com> | 2017-05-22 14:37:22 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2017-05-22 14:37:57 (GMT) |
commit | c9d9a3fb39ff36dd2818238916697f685b6ccea7 (patch) | |
tree | 51581b26c4e166192b5491491cbefb035a4f7aa0 /Modules/Platform | |
parent | a152e97e2354a0396ab8f8433d61e8f8da7da7f5 (diff) | |
parent | 4eb15824b3092866f9c30d7af3221487c60fab07 (diff) | |
download | CMake-c9d9a3fb39ff36dd2818238916697f685b6ccea7.zip CMake-c9d9a3fb39ff36dd2818238916697f685b6ccea7.tar.gz CMake-c9d9a3fb39ff36dd2818238916697f685b6ccea7.tar.bz2 |
Merge topic 'pgi-fix-windows'
4eb15824 Windows-PGI: Add platform definitions
a94ae96e Windows-PGI: Adapt default compiler flags
c2c2d366 ImplicitLinkInfo: Add support for PGI on Windows
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !794
Diffstat (limited to 'Modules/Platform')
-rw-r--r-- | Modules/Platform/Windows-PGI-C.cmake | 2 | ||||
-rw-r--r-- | Modules/Platform/Windows-PGI-Fortran.cmake | 2 | ||||
-rw-r--r-- | Modules/Platform/Windows-PGI.cmake | 48 |
3 files changed, 52 insertions, 0 deletions
diff --git a/Modules/Platform/Windows-PGI-C.cmake b/Modules/Platform/Windows-PGI-C.cmake new file mode 100644 index 0000000..0495b93 --- /dev/null +++ b/Modules/Platform/Windows-PGI-C.cmake @@ -0,0 +1,2 @@ +include(Platform/Windows-PGI) +__windows_compiler_pgi(C) diff --git a/Modules/Platform/Windows-PGI-Fortran.cmake b/Modules/Platform/Windows-PGI-Fortran.cmake new file mode 100644 index 0000000..2222e33 --- /dev/null +++ b/Modules/Platform/Windows-PGI-Fortran.cmake @@ -0,0 +1,2 @@ +include(Platform/Windows-PGI) +__windows_compiler_pgi(Fortran) diff --git a/Modules/Platform/Windows-PGI.cmake b/Modules/Platform/Windows-PGI.cmake new file mode 100644 index 0000000..ad77e8a --- /dev/null +++ b/Modules/Platform/Windows-PGI.cmake @@ -0,0 +1,48 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + + +# This module is shared by multiple languages; use include blocker. +if(__WINDOWS_COMPILER_PGI) + return() +endif() +set(__WINDOWS_COMPILER_PGI 1) + +# PGI on Windows doesn't support parallel compile processes +if(NOT DEFINED CMAKE_JOB_POOL_LINK OR NOT DEFINED CMAKE_JOB_POOL_COMPILE) + set(CMAKE_JOB_POOL_LINK PGITaskPool) + set(CMAKE_JOB_POOL_COMPILE PGITaskPool) + get_property(_pgijp GLOBAL PROPERTY JOB_POOLS) + if(NOT _pgijp MATCHES "PGITaskPool=") + set_property(GLOBAL APPEND PROPERTY JOB_POOLS PGITaskPool=1) + endif() + unset(_pgijp) +endif() + +set(CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS 1) +set(CMAKE_LINK_DEF_FILE_FLAG "-def:") +# The link flags for PGI are the raw filename to add a file +# and the UNIX -L syntax to link directories. +set(CMAKE_LINK_LIBRARY_FLAG "") +set(CMAKE_LINK_STARTFILE "pgimain[mx][xpt]+[.]obj") + +# Default to Debug builds, mirroring Windows-MSVC behavior +set(CMAKE_BUILD_TYPE_INIT Debug) + +if(CMAKE_VERBOSE_MAKEFILE) + set(CMAKE_CL_NOLOGO) +else() + set(CMAKE_CL_NOLOGO "/nologo") +endif() + +macro(__windows_compiler_pgi lang) + # Shared library compile and link rules. + set(CMAKE_${lang}_CREATE_STATIC_LIBRARY "lib ${CMAKE_CL_NOLOGO} <LINK_FLAGS> /out:<TARGET> <OBJECTS> ") + set(CMAKE_${lang}_CREATE_SHARED_LIBRARY "<CMAKE_${lang}_COMPILER> ${CMAKE_START_TEMP_FILE} -Mmakedll -implib:<TARGET_IMPLIB> -Xlinker -pdb:<TARGET_PDB> -Xlinker -version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR> <LINK_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES> ${CMAKE_END_TEMP_FILE}") + set(CMAKE_${lang}_CREATE_SHARED_MODULE "${CMAKE_${lang}_CREATE_SHARED_LIBRARY}") + set(CMAKE_${lang}_LINK_EXECUTABLE "<CMAKE_${lang}_COMPILER> ${CMAKE_START_TEMP_FILE} -implib:<TARGET_IMPLIB> -Xlinker -pdb:<TARGET_PDB> -Xlinker -version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR> <FLAGS> <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES> ${CMAKE_END_TEMP_FILE}") + + if("${lang}" MATCHES "C|CXX") + set(CMAKE_${lang}_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib") + endif() +endmacro() |