Name

SPVM::Builder::LibInfo - Library Information for A Linker

Description

The SPVM::Builder::LibInfo class has methods to manipulate library information for a linker.

Usage

my $lib_info = SPVM::Builder::LibInfo->new(%fields);
my $lib_ldflags = $lib_info->create_ldflags;

Fields

config

my $config = $lib_info->config;
$lib_info->config($config);

Gets and sets the config field, an SPVM::Builder::Config object.

name

my $name = $lib_info->name;
$lib_info->name($name);

Gets and sets the name field, a library name.

Examples:

$lib_info->name('z');

$lib_info->name('png');

file

my $file = $lib_info->file;
$lib_info->file($file);

Gets and sets the file field, the absolute path of the library file such as /path/libz.so, /path/libpng.a.

is_static

my $is_static = $lib_info->is_static;
$lib_info->is_static($is_static);

Gets and sets the is_static field. If this field is a true value, this library is linked statically. Otherwise, is linked dynamically.

is_abs

my $is_abs = $lib_info->is_abs;
$lib_info->is_abs($is_abs);

Gets and sets the is_abs field. If this field is a true value, the library is linked by the absolute path "file". Otherwise, is linked by the relative path from library search path.

Class Methods

new

my $lib_info = SPVM::Builder::LibInfo->new(%fields);

Creates a new SPVM::Builder::LibInfo object given fields.

The config field must be defined.

Field Default Values:

  • All Fields

    undef

Exceptions:

The "config" field must be defined.

Instance Methods

create_ldflags

my $lib_ldflags = $lib_info->create_ldflags;

Creates an array reference of the library part of the linker flags given to the linker ld, and returns it.

Return Value Examples:

["-lfoo", "-Wl,-Bstatic -lfoo -Wl,-Bdynamic", "/path/foo.so", "/path/foo.a"]

to_string

my $lib_name = $lib_info->to_string;

Returns "name" field.

Operators

Overloads the following operators.

bool

my $bool = !!$lib_info;

Always true.

stringify

my $lib_name = "$lib_info";

Alias for "to_string" method.

Copyright & License

Copyright (c) 2023 Yuki Kimoto

MIT License