mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Add function to detect linker version
The linker that is used (ld vs. gold for instance) is often hidden when using the compiler as a front-end (to include the correct runtime libraries). These functions enables us to probe the linker version and reports its finding in the log.
This commit is contained in:
parent
cc0631cd65
commit
b72ebed8c2
@ -45,3 +45,34 @@ function (compiler_info)
|
||||
message (STATUS "GNU C++ compiler version: ${version}")
|
||||
endif (CMAKE_COMPILER_IS_GNUCXX)
|
||||
endfunction (compiler_info)
|
||||
|
||||
function (get_ld_version ver_name)
|
||||
# run linker to get the version number. interestingly, this option works
|
||||
# (for our purposes) on all major platforms (Linux, Mac OS X and Windows);
|
||||
# it returns the program version although it may have ended in error
|
||||
exec_program (${CMAKE_LINKER}
|
||||
ARGS "-v"
|
||||
OUTPUT_VARIABLE _version
|
||||
)
|
||||
|
||||
# keep only first line, even on Mac OS X there is no line end
|
||||
list (GET _version 0 _version)
|
||||
|
||||
# format of the version string is platform-specific
|
||||
if (NOT WIN32)
|
||||
if (APPLE)
|
||||
string (REGEX REPLACE ".*, from Apple (.*\)" "\\1" _version "${_version}")
|
||||
else (APPLE)
|
||||
# assuming some GNU toolchain now
|
||||
string (REGEX REPLACE "GNU ([a-zA-Z0-9_]*) \\(.*\\) (.*)" "\\1 \\2" _version "${_version}")
|
||||
endif (APPLE)
|
||||
endif (NOT WIN32)
|
||||
|
||||
# return the string to the caller
|
||||
set (${ver_name} "${_version}" PARENT_SCOPE)
|
||||
endfunction (get_ld_version ver_name)
|
||||
|
||||
function (linker_info)
|
||||
get_ld_version (version)
|
||||
message (STATUS "Linker: ${version}")
|
||||
endfunction (linker_info)
|
||||
|
Loading…
Reference in New Issue
Block a user