get_install_name_flags Function

public function get_install_name_flags(self, target_dir, target_name) result(flags)

Generate install_name flag for a shared library build on macOS

Type Bound

compiler_t

Arguments

Type IntentOptional Attributes Name
class(compiler_t), intent(in) :: self
character(len=*), intent(in) :: target_dir
character(len=*), intent(in) :: target_name

Return Value character(len=:), allocatable


Variables

Type Visibility Attributes Name Initial
character(len=:), public, allocatable :: library_file

Source Code

function get_install_name_flags(self, target_dir, target_name) result(flags)
    class(compiler_t), intent(in) :: self
    character(len=*), intent(in) :: target_dir, target_name
    character(len=:), allocatable :: flags
    character(len=:), allocatable :: library_file

    if (get_os_type() /= OS_MACOS) then
        flags = ""
        return
    end if

    ! Shared library basename (e.g., libfoo.dylib)
    if (str_ends_with(target_name, ".dylib")) then
        library_file = target_name        
    else
        library_file = library_filename(target_name,.true.,.false.,OS_MACOS)
    end if
    
    flags = " -Wl,-install_name,@rpath/" // library_file

end function get_install_name_flags