package SPVM::Builder::Runtime;
use strict;
use warnings;
sub load_dynamic_libs {
my ($self) = @_;
my $class_names = $self->get_class_names;
# Set addresses of native methods
for my $class_name (@$class_names) {
my $category = 'native';
my $method_names = $self->get_method_names($class_name, $category);
if (@$method_names) {
# Build classs - Compile C source codes and link them to SPVM precompile method
# Shared library which is already installed in distribution directory
my $module_file = $self->get_module_file($class_name);
my $dynamic_lib_file = SPVM::Builder::Util::get_dynamic_lib_file_dist($module_file, $category);
if (-f $dynamic_lib_file) {
my $method_addresses = SPVM::Builder::Util::get_method_addresses($dynamic_lib_file, $class_name, $method_names, [], $category);
for my $method_name (sort keys %$method_addresses) {
my $cfunc_address = $method_addresses->{$method_name};
$self->set_native_method_address($class_name, $method_name, $cfunc_address);
}
}
}
}
}
1;
=head1 Name
SPVM::Builder::Runtime - SPVM Builder Runtime
=head1 Copyright & License
Copyright (c) 2023 Yuki Kimoto
MIT License