LCC: for OpenMP, collectly determine implicit link dirs

It is found out for LCC to not specify all library search paths
when called by cmake_parse_implicit_link_info().
Because of that, FindOpenMP module can't find some libraries,
like libpthread. For this, we should analyze -print-search-dirs
output and append library paths to implicit link ones.
This commit is contained in:
makise-homura
2022-06-30 22:48:45 +03:00
parent 7375542615
commit 0eea1e8563
+17
View File
@@ -243,6 +243,23 @@ function(_OPENMP_GET_FLAGS LANG FLAG_MODE OPENMP_FLAG_VAR OPENMP_LIB_NAMES_VAR)
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
"Parsed ${LANG} OpenMP implicit link information from above output:\n${OpenMP_${LANG}_LOG_VAR}\n\n")
# For LCC we should additionally alanyze -print-search-dirs output
# to check for additional implicit_dirs.
# Note: This won't work if CMP0129 policy is set to OLD!
if("${CMAKE_${LANG}_COMPILER_ID}" STREQUAL "LCC")
execute_process(
COMMAND ${CMAKE_${LANG}_COMPILER} -print-search-dirs
OUTPUT_VARIABLE output_lines
COMMAND_ERROR_IS_FATAL ANY
ERROR_QUIET)
if("${output_lines}" MATCHES ".*\nlibraries:[ \t]+(.*:)\n.*")
string(REPLACE ":" ";" implicit_dirs_addon "${CMAKE_MATCH_1}")
list(PREPEND OpenMP_${LANG}_IMPLICIT_LINK_DIRS ${implicit_dirs_addon})
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
" Extended OpenMP library search paths: [${implicit_dirs}]\n")
endif()
endif()
unset(_OPENMP_LIB_NAMES)
foreach(_OPENMP_IMPLICIT_LIB IN LISTS OpenMP_${LANG}_IMPLICIT_LIBRARIES)
get_filename_component(_OPENMP_IMPLICIT_LIB_DIR "${_OPENMP_IMPLICIT_LIB}" DIRECTORY)