|
@@ -49,14 +49,22 @@ function(cmake_parse_implicit_link_info2 text log_var obj_regex)
|
|
set(multiValueArgs )
|
|
set(multiValueArgs )
|
|
cmake_parse_arguments(EXTRA_PARSE "${keywordArgs}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
cmake_parse_arguments(EXTRA_PARSE "${keywordArgs}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
|
|
|
|
|
|
+ set(is_lfortran 0)
|
|
set(is_msvc 0)
|
|
set(is_msvc 0)
|
|
- if(EXTRA_PARSE_LANGUAGE AND
|
|
|
|
- ("x${CMAKE_${EXTRA_PARSE_LANGUAGE}_COMPILER_ID}" STREQUAL "xMSVC" OR
|
|
|
|
- "x${CMAKE_${EXTRA_PARSE_LANGUAGE}_SIMULATE_ID}" STREQUAL "xMSVC"))
|
|
|
|
- set(is_msvc 1)
|
|
|
|
|
|
+ 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)
|
|
|
|
+ endif()
|
|
endif()
|
|
endif()
|
|
# Parse implicit linker arguments.
|
|
# Parse implicit linker arguments.
|
|
set(linker "ld[0-9]*(\\.[a-z]+)?")
|
|
set(linker "ld[0-9]*(\\.[a-z]+)?")
|
|
|
|
+ if(is_lfortran)
|
|
|
|
+ # FIXME(lfortran): No way to pass -v to clang/gcc driver.
|
|
|
|
+ string(APPEND linker "|clang|gcc")
|
|
|
|
+ endif()
|
|
if(is_msvc)
|
|
if(is_msvc)
|
|
string(APPEND linker "|link\\.exe|lld-link(\\.exe)?")
|
|
string(APPEND linker "|link\\.exe|lld-link(\\.exe)?")
|
|
endif()
|
|
endif()
|
|
@@ -77,6 +85,10 @@ function(cmake_parse_implicit_link_info2 text log_var obj_regex)
|
|
set(linker_exclude_regex "collect2 version |^[A-Za-z0-9_]+=|/ldfe ")
|
|
set(linker_exclude_regex "collect2 version |^[A-Za-z0-9_]+=|/ldfe ")
|
|
set(linker_tool_regex "^[ \t]*(->|\")?[ \t]*(([^\"]*[/\\])?(${linker}))(\"|,| |$)")
|
|
set(linker_tool_regex "^[ \t]*(->|\")?[ \t]*(([^\"]*[/\\])?(${linker}))(\"|,| |$)")
|
|
set(linker_tool_exclude_regex "cuda-fake-ld|-fuse-ld=|^ExecuteExternalTool ")
|
|
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.
|
|
|
|
+ string(APPEND linker_tool_exclude_regex "|^clang |^gcc ")
|
|
|
|
+ endif()
|
|
set(linker_tool "NOTFOUND")
|
|
set(linker_tool "NOTFOUND")
|
|
set(linker_tool_fallback "")
|
|
set(linker_tool_fallback "")
|
|
set(link_line_parsed 0)
|
|
set(link_line_parsed 0)
|