diff options
Diffstat (limited to 'Modules')
21 files changed, 77 insertions, 178 deletions
diff --git a/Modules/CMakeDetermineCompilerABI.cmake b/Modules/CMakeDetermineCompilerABI.cmake index e55b83f..fd1d5fb 100644 --- a/Modules/CMakeDetermineCompilerABI.cmake +++ b/Modules/CMakeDetermineCompilerABI.cmake @@ -89,16 +89,18 @@ function(CMAKE_DETERMINE_COMPILER_ABI lang src) endif() # Parse implicit include directory for this language, if available. - set (implicit_incdirs "") if(CMAKE_${lang}_VERBOSE_FLAG) + set (implicit_incdirs "") cmake_parse_implicit_include_info("${OUTPUT}" "${lang}" implicit_incdirs log rv) file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log "Parsed ${lang} implicit include dir info from above output: rv=${rv}\n${log}\n\n") - if("${rv}" STREQUAL "done") # update parent if parse completed ok - set(CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES "${implicit_incdirs}" PARENT_SCOPE) + if("${rv}" STREQUAL "done") + # We parsed implicit include directories, so override the default initializer. + set(_CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES_INIT "${implicit_incdirs}") endif() endif() + set(CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES "${_CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES_INIT}" PARENT_SCOPE) # Parse implicit linker information for this language, if available. set(implicit_dirs "") diff --git a/Modules/CMakeParseImplicitIncludeInfo.cmake b/Modules/CMakeParseImplicitIncludeInfo.cmake index 211406d..21e24b7 100644 --- a/Modules/CMakeParseImplicitIncludeInfo.cmake +++ b/Modules/CMakeParseImplicitIncludeInfo.cmake @@ -27,9 +27,52 @@ function(cmake_parse_implicit_include_line line lang id_var log_var state_var) endif() endif() + # PGI compiler + if("${CMAKE_${lang}_COMPILER_ID}" STREQUAL "PGI") + # pgc++ verbose output differs + if(("${lang}" STREQUAL "C" OR "${lang}" STREQUAL "Fortran") AND + "${line}" MATCHES "^/" AND + "${line}" MATCHES "/pgc |/pgf901 |/pgftnc " AND + "${line}" MATCHES " -cmdline ") + # cmdline has unparsed cmdline, remove it + string(REGEX REPLACE "-cmdline .*" "" line "${line}") + if("${line}" MATCHES " -nostdinc ") + set(rv "") # defined, but empty + else() + string(REGEX MATCHALL " -stdinc ([^ ]*)" incs "${line}") + foreach(inc IN LISTS incs) + string(REGEX REPLACE " -stdinc ([^ ]*)" "\\1" idir "${inc}") + string(REPLACE ":" ";" idir "${idir}") + list(APPEND rv ${idir}) + endforeach() + endif() + if(DEFINED rv) + string(APPEND log " got implicit includes via PGI C/F parser!\n") + else() + string(APPEND log " warning: PGI C/F parse failed!\n") + endif() + elseif("${lang}" STREQUAL "CXX" AND "${line}" MATCHES "^/" AND + "${line}" MATCHES "/pggpp1 " AND "${line}" MATCHES " -I") + # oddly, -Mnostdinc does not get rid of system -I's, at least in + # PGI 18.10.1 ... + string(REGEX MATCHALL " (-I ?)([^ ]*)" incs "${line}") + foreach(inc IN LISTS incs) + string(REGEX REPLACE " (-I ?)([^ ]*)" "\\2" idir "${inc}") + if(NOT "${idir}" STREQUAL "-") # filter out "-I-" + list(APPEND rv "${idir}") + endif() + endforeach() + if(DEFINED rv) + string(APPEND log " got implicit includes via PGI CXX parser!\n") + else() + string(APPEND log " warning: PGI CXX parse failed!\n") + endif() + endif() + endif() + # SunPro compiler if("${CMAKE_${lang}_COMPILER_ID}" STREQUAL "SunPro" AND - "${line}" MATCHES "-D__SUNPRO_C") + ("${line}" MATCHES "-D__SUNPRO_C" OR "${line}" MATCHES "-D__SUNPRO_F") ) string(REGEX MATCHALL " (-I ?)([^ ]*)" incs "${line}") foreach(inc IN LISTS incs) string(REGEX REPLACE " (-I ?)([^ ]*)" "\\2" idir "${inc}") @@ -38,8 +81,10 @@ function(cmake_parse_implicit_include_line line lang id_var log_var state_var) endif() endforeach() if(rv) - # /usr/include appears to be hardwired in - list(APPEND rv "/usr/include") + if ("${lang}" STREQUAL "C" OR "${lang}" STREQUAL "CXX") + # /usr/include appears to be hardwired in + list(APPEND rv "/usr/include") + endif() string(APPEND log " got implicit includes via sunpro parser!\n") else() string(APPEND log " warning: sunpro parse failed!\n") diff --git a/Modules/Compiler/Cray-C.cmake b/Modules/Compiler/Cray-C.cmake index d34154c..b3c96ee 100644 --- a/Modules/Compiler/Cray-C.cmake +++ b/Modules/Compiler/Cray-C.cmake @@ -8,13 +8,13 @@ string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -DNDEBUG") string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -DNDEBUG") if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 8.1) - set(CMAKE_C90_STANDARD_COMPILE_OPTION -h noc99,conform) - set(CMAKE_C90_EXTENSION_COMPILE_OPTION -h noc99,gnu) - set(CMAKE_C99_STANDARD_COMPILE_OPTION -h c99,conform) - set(CMAKE_C99_EXTENSION_COMPILE_OPTION -h c99,gnu) + set(CMAKE_C90_STANDARD_COMPILE_OPTION "-h noc99,conform") + set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-h noc99,gnu") + set(CMAKE_C99_STANDARD_COMPILE_OPTION "-h c99,conform") + set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-h c99,gnu") if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 8.5) - set(CMAKE_C11_STANDARD_COMPILE_OPTION -h std=c11,conform) - set(CMAKE_C11_EXTENSION_COMPILE_OPTION -h std=c11,gnu) + set(CMAKE_C11_STANDARD_COMPILE_OPTION "-h std=c11,conform") + set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-h std=c11,gnu") endif () endif () diff --git a/Modules/Compiler/Cray-CXX.cmake b/Modules/Compiler/Cray-CXX.cmake index ff97e92..bbb5718 100644 --- a/Modules/Compiler/Cray-CXX.cmake +++ b/Modules/Compiler/Cray-CXX.cmake @@ -2,21 +2,21 @@ # file Copyright.txt or https://cmake.org/licensing for details. include(Compiler/Cray) -__compiler_cray(C) +__compiler_cray(CXX) string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -DNDEBUG") string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -DNDEBUG") if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8.1) - set(CMAKE_CXX98_STANDARD_COMPILE_OPTION -h conform) - set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION -h gnu) + set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-h conform") + set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-h gnu") if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.4) - set(CMAKE_CXX11_STANDARD_COMPILE_OPTION -h std=c++11) - set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION -h std=c++11,gnu) + set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-h std=c++11") + set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-h std=c++11,gnu") endif() if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.6) - set(CMAKE_CXX14_STANDARD_COMPILE_OPTION -h std=c++14) - set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION -h std=c++14,gnu) + set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-h std=c++14") + set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-h std=c++14,gnu") endif () endif () diff --git a/Modules/Compiler/CrayPrgEnv-C.cmake b/Modules/Compiler/CrayPrgEnv-C.cmake index 6b461ce..76aa93b 100644 --- a/Modules/Compiler/CrayPrgEnv-C.cmake +++ b/Modules/Compiler/CrayPrgEnv-C.cmake @@ -4,8 +4,4 @@ endif() set(__craylinux_crayprgenv_c 1) include(Compiler/CrayPrgEnv) -macro(__CrayPrgEnv_setup_C compiler_cmd link_cmd) - __CrayPrgEnv_setup(C - ${CMAKE_ROOT}/Modules/CMakeCCompilerABI.c - ${compiler_cmd} ${link_cmd}) -endmacro() +__CrayPrgEnv_setup(C) diff --git a/Modules/Compiler/CrayPrgEnv-CXX.cmake b/Modules/Compiler/CrayPrgEnv-CXX.cmake index aad85b6..442370e 100644 --- a/Modules/Compiler/CrayPrgEnv-CXX.cmake +++ b/Modules/Compiler/CrayPrgEnv-CXX.cmake @@ -4,8 +4,4 @@ endif() set(__craylinux_crayprgenv_cxx 1) include(Compiler/CrayPrgEnv) -macro(__CrayPrgEnv_setup_CXX compiler_cmd link_cmd) - __CrayPrgEnv_setup(CXX - ${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp - ${compiler_cmd} ${link_cmd}) -endmacro() +__CrayPrgEnv_setup(CXX) diff --git a/Modules/Compiler/CrayPrgEnv-Cray-C.cmake b/Modules/Compiler/CrayPrgEnv-Cray-C.cmake deleted file mode 100644 index 547a4b4..0000000 --- a/Modules/Compiler/CrayPrgEnv-Cray-C.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(__craylinux_crayprgenv_cray_c) - return() -endif() -set(__craylinux_crayprgenv_cray_c 1) - -include(Compiler/CrayPrgEnv-C) -__CrayPrgEnv_setup_C("/opt/cray/cce/.*/ccfe" "/opt/cray/cce/.*/ld") diff --git a/Modules/Compiler/CrayPrgEnv-Cray-CXX.cmake b/Modules/Compiler/CrayPrgEnv-Cray-CXX.cmake deleted file mode 100644 index df8452c..0000000 --- a/Modules/Compiler/CrayPrgEnv-Cray-CXX.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(__craylinux_crayprgenv_cray_cxx) - return() -endif() -set(__craylinux_crayprgenv_cray_cxx 1) - -include(Compiler/CrayPrgEnv-CXX) -__CrayPrgEnv_setup_CXX("/opt/cray/cce/.*/ccfe" "/opt/cray/cce/.*/ld") diff --git a/Modules/Compiler/CrayPrgEnv-Cray-Fortran.cmake b/Modules/Compiler/CrayPrgEnv-Cray-Fortran.cmake deleted file mode 100644 index 9f46a04..0000000 --- a/Modules/Compiler/CrayPrgEnv-Cray-Fortran.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(__craylinux_crayprgenv_cray_fortran) - return() -endif() -set(__craylinux_crayprgenv_cray_fortran 1) - -include(Compiler/CrayPrgEnv-Fortran) -__CrayPrgEnv_setup_Fortran("/opt/cray/cce/.*/ftnfe" "/opt/cray/cce/.*/ld") diff --git a/Modules/Compiler/CrayPrgEnv-Fortran.cmake b/Modules/Compiler/CrayPrgEnv-Fortran.cmake index 9c4d269..85f82d3 100644 --- a/Modules/Compiler/CrayPrgEnv-Fortran.cmake +++ b/Modules/Compiler/CrayPrgEnv-Fortran.cmake @@ -4,8 +4,4 @@ endif() set(__craylinux_crayprgenv_fortran 1) include(Compiler/CrayPrgEnv) -macro(__CrayPrgEnv_setup_Fortran compiler_cmd link_cmd) - __CrayPrgEnv_setup(Fortran - ${CMAKE_ROOT}/Modules/CMakeFortranCompilerABI.F - ${compiler_cmd} ${link_cmd}) -endmacro() +__CrayPrgEnv_setup(Fortran) diff --git a/Modules/Compiler/CrayPrgEnv-GNU-C.cmake b/Modules/Compiler/CrayPrgEnv-GNU-C.cmake deleted file mode 100644 index 248081b..0000000 --- a/Modules/Compiler/CrayPrgEnv-GNU-C.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(__craylinux_crayprgenv_gnu_c) - return() -endif() -set(__craylinux_crayprgenv_gnu_c 1) - -include(Compiler/CrayPrgEnv-C) -__CrayPrgEnv_setup_C("/opt/gcc/.*/cc1" "/opt/gcc/.*/collect2") diff --git a/Modules/Compiler/CrayPrgEnv-GNU-CXX.cmake b/Modules/Compiler/CrayPrgEnv-GNU-CXX.cmake deleted file mode 100644 index be4eb6d..0000000 --- a/Modules/Compiler/CrayPrgEnv-GNU-CXX.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(__craylinux_crayprgenv_gnu_cxx) - return() -endif() -set(__craylinux_crayprgenv_gnu_cxx 1) - -include(Compiler/CrayPrgEnv-CXX) -__CrayPrgEnv_setup_CXX("/opt/gcc/.*/cc1plus" "/opt/gcc/.*/collect2") diff --git a/Modules/Compiler/CrayPrgEnv-GNU-Fortran.cmake b/Modules/Compiler/CrayPrgEnv-GNU-Fortran.cmake deleted file mode 100644 index 8bd23ff..0000000 --- a/Modules/Compiler/CrayPrgEnv-GNU-Fortran.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(__craylinux_crayprgenv_gnu_fortran) - return() -endif() -set(__craylinux_crayprgenv_gnu_fortran 1) - -include(Compiler/CrayPrgEnv-Fortran) -__CrayPrgEnv_setup_Fortran("/opt/gcc/.*/f951" "/opt/gcc/.*/collect2") diff --git a/Modules/Compiler/CrayPrgEnv-Intel-C.cmake b/Modules/Compiler/CrayPrgEnv-Intel-C.cmake deleted file mode 100644 index 83c4e38..0000000 --- a/Modules/Compiler/CrayPrgEnv-Intel-C.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(__craylinux_crayprgenv_intel_c) - return() -endif() -set(__craylinux_crayprgenv_intel_c 1) - -include(Compiler/CrayPrgEnv-C) -__CrayPrgEnv_setup_C("/opt/intel/.*/mcpcom" "^ld ") diff --git a/Modules/Compiler/CrayPrgEnv-Intel-CXX.cmake b/Modules/Compiler/CrayPrgEnv-Intel-CXX.cmake deleted file mode 100644 index 3c3c3e6..0000000 --- a/Modules/Compiler/CrayPrgEnv-Intel-CXX.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(__craylinux_crayprgenv_intel_cxx) - return() -endif() -set(__craylinux_crayprgenv_intel_cxx 1) - -include(Compiler/CrayPrgEnv-CXX) -__CrayPrgEnv_setup_CXX("/opt/intel/.*/mcpcom" "^ld ") diff --git a/Modules/Compiler/CrayPrgEnv-Intel-Fortran.cmake b/Modules/Compiler/CrayPrgEnv-Intel-Fortran.cmake deleted file mode 100644 index 08a316d..0000000 --- a/Modules/Compiler/CrayPrgEnv-Intel-Fortran.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(__craylinux_crayprgenv_intel_fortran) - return() -endif() -set(__craylinux_crayprgenv_intel_fortran 1) - -include(Compiler/CrayPrgEnv-Fortran) -__CrayPrgEnv_setup_Fortran("/opt/intel/.*/fortcom" "^ld ") diff --git a/Modules/Compiler/CrayPrgEnv-PGI-C.cmake b/Modules/Compiler/CrayPrgEnv-PGI-C.cmake deleted file mode 100644 index f45767c..0000000 --- a/Modules/Compiler/CrayPrgEnv-PGI-C.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(__craylinux_crayprgenv_pgi_c) - return() -endif() -set(__craylinux_crayprgenv_pgi_c 1) - -include(Compiler/CrayPrgEnv-C) -__CrayPrgEnv_setup_C("/opt/pgi/[^ ]*/pgc" "/usr/bin/ld") diff --git a/Modules/Compiler/CrayPrgEnv-PGI-CXX.cmake b/Modules/Compiler/CrayPrgEnv-PGI-CXX.cmake deleted file mode 100644 index a2a286f..0000000 --- a/Modules/Compiler/CrayPrgEnv-PGI-CXX.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(__craylinux_crayprgenv_pgi_cxx) - return() -endif() -set(__craylinux_crayprgenv_pgi_cxx 1) - -include(Compiler/CrayPrgEnv-CXX) -__CrayPrgEnv_setup_CXX("/opt/pgi/[^ ]*/pgcpp" "/usr/bin/ld") diff --git a/Modules/Compiler/CrayPrgEnv-PGI-Fortran.cmake b/Modules/Compiler/CrayPrgEnv-PGI-Fortran.cmake deleted file mode 100644 index f6ba7c0..0000000 --- a/Modules/Compiler/CrayPrgEnv-PGI-Fortran.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if(__craylinux_crayprgenv_pgi_fortran) - return() -endif() -set(__craylinux_crayprgenv_pgi_fortran 1) - -include(Compiler/CrayPrgEnv-Fortran) -__CrayPrgEnv_setup_Fortran("/opt/pgi/[^ ]*/pgf" "/usr/bin/ld") diff --git a/Modules/Compiler/CrayPrgEnv.cmake b/Modules/Compiler/CrayPrgEnv.cmake index 05e3fc7..6c1c770 100644 --- a/Modules/Compiler/CrayPrgEnv.cmake +++ b/Modules/Compiler/CrayPrgEnv.cmake @@ -4,54 +4,7 @@ if(__craylinux_crayprgenv) endif() set(__craylinux_crayprgenv 1) -macro(__cray_extract_args cmd tag_regex out_var make_absolute) - string(REGEX MATCHALL "${tag_regex}" args "${cmd}") - foreach(arg IN LISTS args) - string(REGEX REPLACE "^${tag_regex}$" "\\2" param "${arg}") - if(make_absolute) - get_filename_component(param "${param}" ABSOLUTE) - endif() - list(APPEND ${out_var} ${param}) - endforeach() -endmacro() - -function(__cray_extract_implicit src compiler_cmd link_cmd lang include_dirs_var link_dirs_var link_libs_var) - set(BIN "${CMAKE_PLATFORM_INFO_DIR}/CrayExtractImplicit_${lang}.bin") - execute_process( - COMMAND ${CMAKE_${lang}_COMPILER} ${CMAKE_${lang}_VERBOSE_FLAG} -o ${BIN} - RESULT_VARIABLE result - OUTPUT_VARIABLE output - ERROR_VARIABLE error - ) - if(EXISTS "${BIN}") - file(REMOVE "${BIN}") - endif() - set(include_dirs) - set(link_dirs) - set(link_libs) - string(REGEX REPLACE "\r?\n" ";" output_lines "${output}\n${error}") - foreach(line IN LISTS output_lines) - if("${line}" MATCHES "${compiler_cmd}") - __cray_extract_args("${line}" " -(I ?|isystem )([^ ]*)" include_dirs 1) - set(processed_include 1) - endif() - if("${line}" MATCHES "${link_cmd}") - __cray_extract_args("${line}" " -(L ?)([^ ]*)" link_dirs 1) - __cray_extract_args("${line}" " -(l ?)([^ ]*)" link_libs 0) - set(processed_link 1) - endif() - if(processed_include AND processed_link) - break() - endif() - endforeach() - - set(${include_dirs_var} "${include_dirs}" PARENT_SCOPE) - set(${link_dirs_var} "${link_dirs}" PARENT_SCOPE) - set(${link_libs_var} "${link_libs}" PARENT_SCOPE) - set(CRAY_${lang}_EXTRACTED_IMPLICIT 1 CACHE INTERNAL "" FORCE) -endfunction() - -macro(__CrayPrgEnv_setup lang test_src compiler_cmd link_cmd) +macro(__CrayPrgEnv_setup lang) if(DEFINED ENV{CRAYPE_VERSION}) message(STATUS "Cray Programming Environment $ENV{CRAYPE_VERSION} ${lang}") elseif(DEFINED ENV{ASYNCPE_VERSION}) @@ -81,12 +34,4 @@ macro(__CrayPrgEnv_setup lang test_src compiler_cmd link_cmd) set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") set(CMAKE_LINK_SEARCH_START_STATIC TRUE) endif() - if(NOT CRAY_${lang}_EXTRACTED_IMPLICIT) - __cray_extract_implicit( - ${test_src} ${compiler_cmd} ${link_cmd} ${lang} - CMAKE_${lang}_IMPLICIT_INCLUDE_DIRECTORIES - CMAKE_${lang}_IMPLICIT_LINK_DIRECTORIES - CMAKE_${lang}_IMPLICIT_LINK_LIBRARIES - ) - endif() endmacro() diff --git a/Modules/Platform/UnixPaths.cmake b/Modules/Platform/UnixPaths.cmake index fc22fce..4ae4514 100644 --- a/Modules/Platform/UnixPaths.cmake +++ b/Modules/Platform/UnixPaths.cmake @@ -69,14 +69,17 @@ list(APPEND CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES ) # Default per-language values. These may be later replaced after -# parsing the implicit link directories from compiler output. -list(APPEND CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES +# parsing the implicit directory information from compiler output. +set(_CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES_INIT + ${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES} /usr/include ) -list(APPEND CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES +set(_CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES_INIT + ${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES} /usr/include ) -list(APPEND CMAKE_CUDA_IMPLICIT_INCLUDE_DIRECTORIES +set(_CMAKE_CUDA_IMPLICIT_INCLUDE_DIRECTORIES_INIT + ${CMAKE_CUDA_IMPLICIT_INCLUDE_DIRECTORIES} /usr/include ) |