public function enumerate_libraries(self, prefix, libs) result(r)
Enumerate libraries, based on compiler and platform
Type Bound
compiler_t
Arguments
Type |
Intent | Optional | Attributes |
|
Name |
|
class(compiler_t),
|
intent(in) |
|
|
:: |
self |
|
character(len=*),
|
intent(in) |
|
|
:: |
prefix |
|
type(string_t),
|
intent(in) |
|
|
:: |
libs(:) |
|
Return Value
character(len=:), allocatable
Variables
Type |
Visibility | Attributes |
|
Name |
| Initial | |
character(len=:),
|
public, |
allocatable
|
:: |
joined |
|
|
|
Source Code
function enumerate_libraries(self, prefix, libs) result(r)
class(compiler_t), intent(in) :: self
character(len=*), intent(in) :: prefix
type(string_t), intent(in) :: libs(:)
character(len=:), allocatable :: r
character(len=:), allocatable :: joined
if (size(libs) == 0) then
r = prefix
return
end if
select case (self%id)
case (id_intel_classic_windows, id_intel_llvm_windows)
! Windows Intel uses `.lib` files directly
joined = string_cat(libs, ".lib ") // ".lib"
r = trim(prefix) // " " // trim(joined)
case (id_nag, id_ibmxl)
! NAG and IBMXL need -Wl, wrapper around linker flags
joined = string_cat(libs, " -Wl,")
r = trim(prefix) // " -Wl," // trim(joined)
case default
! Generic Unix-style linker flags: use `-lfoo`
joined = string_cat(libs, " -l")
r = trim(prefix) // " -l" // trim(joined)
end select
end function enumerate_libraries