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