Merge topic 'lfortran-link-info' into release-3.31

34067963cc LFortran: Improve detection of implicit link information for lfortran 0.40+

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9939
This commit is contained in:
Brad King
2024-10-25 12:19:47 +00:00
committed by Kitware Robot
7 changed files with 100 additions and 8 deletions

View File

@@ -49,20 +49,21 @@ function(cmake_parse_implicit_link_info2 text log_var obj_regex)
set(multiValueArgs )
cmake_parse_arguments(EXTRA_PARSE "${keywordArgs}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
set(is_lfortran 0)
set(is_lfortran_less_0_40 0)
set(is_msvc 0)
if(EXTRA_PARSE_LANGUAGE)
if("x${CMAKE_${EXTRA_PARSE_LANGUAGE}_COMPILER_ID}" STREQUAL "xMSVC" OR
"x${CMAKE_${EXTRA_PARSE_LANGUAGE}_SIMULATE_ID}" STREQUAL "xMSVC")
set(is_msvc 1)
elseif("x${CMAKE_${EXTRA_PARSE_LANGUAGE}_COMPILER_ID}" STREQUAL "xLFortran")
set(is_lfortran 1)
elseif("x${CMAKE_${EXTRA_PARSE_LANGUAGE}_COMPILER_ID}" STREQUAL "xLFortran"
AND CMAKE_${EXTRA_PARSE_LANGUAGE}_COMPILER_VERSION VERSION_LESS "0.40")
set(is_lfortran_less_0_40 1)
endif()
endif()
# Parse implicit linker arguments.
set(linker "ld[0-9]*(\\.[a-z]+)?")
if(is_lfortran)
# FIXME(lfortran): No way to pass -v to clang/gcc driver.
if(is_lfortran_less_0_40)
# lfortran < 0.40 has no way to pass -v to clang/gcc driver.
string(APPEND linker "|clang|gcc")
endif()
if(is_msvc)
@@ -85,8 +86,8 @@ function(cmake_parse_implicit_link_info2 text log_var obj_regex)
set(linker_exclude_regex "collect2 version |^[A-Za-z0-9_]+=|/ldfe ")
set(linker_tool_regex "^[ \t]*(->|\")?[ \t]*(([^\"]*[/\\])?(${linker}))(\"|,| |$)")
set(linker_tool_exclude_regex "cuda-fake-ld|-fuse-ld=|^ExecuteExternalTool ")
if(is_lfortran)
# FIXME(lfortran): No way to pass -v to clang/gcc driver.
if(is_lfortran_less_0_40)
# lfortran < 0.40 has no way to pass -v to clang/gcc driver.
string(APPEND linker_tool_exclude_regex "|^clang |^gcc ")
endif()
set(linker_tool "NOTFOUND")

View File

@@ -3,7 +3,7 @@ string(APPEND CMAKE_Fortran_FLAGS_MINSIZEREL_INIT " ")
string(APPEND CMAKE_Fortran_FLAGS_RELEASE_INIT " -O3")
string(APPEND CMAKE_Fortran_FLAGS_RELWITHDEBINFO_INIT " -O2 -g")
set(CMAKE_Fortran_MODDIR_FLAG "-J")
set(CMAKE_Fortran_VERBOSE_FLAG "-v")
set(CMAKE_Fortran_VERBOSE_FLAG "-v -Wl,-v")
set(CMAKE_Fortran_FORMAT_FIXED_FLAG "--fixed-form")
set(CMAKE_Fortran_LINKER_WRAPPER_FLAG "-Wl,")
set(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_ON "--cpp")