#!perl use strict; use warnings; use SPVM(); use SPVM::Builder::Exe; use SPVM::Builder::Util; SPVM::Builder::Util::getopt 'h|help' => \my $help, 'v|version' => \my $show_version, 'o|output=s' => \my $output_file, 'B|build-dir=s' => \my $build_dir, 'I|include-dir=s' => \my @include_dirs, 'q|quiet' => \my $quiet, 'f|force' => \my $force, 'c|config=s' => \my $config_file, 'r|required-resources' => \my $print_required_resources, ; if ($help) { print SPVM::Builder::Util::extract_usage; } elsif ($show_version) { my $version_string = "spvmcc v$SPVM::VERSION"; print "$version_string\n"; } else { my $module_name = shift; unless (defined $module_name) { die SPVM::Builder::Util::extract_usage; } my @original_include_dirs = @include_dirs; push @include_dirs, map { "$_/SPVM" } @INC; unshift @INC, map { $_ =~ s/[\\\/]SPVM$//; $_; } @original_include_dirs; my $build_exe = SPVM::Builder::Exe->new( module_name => $module_name, build_dir => $build_dir, include_dirs => \@include_dirs, output_file => $output_file, quiet => $quiet, force => $force, config_file => $config_file, ); if ($print_required_resources) { my $lines = $build_exe->get_required_resource_json_lines; print "$_\n" for @$lines; } else { $build_exe->build_exe_file; } } =encoding utf8 =head1 Name spvmcc - Generating Excutable File =head1 Description The spvmcc command is a SPVM compiler and linker to generate an executable file. =head1 Usage usage: spvmcc [<options>] <module name> spvmcc -I lib/SPVM -o myapp Myapp options: -h, --help Shows this message -v, --version Shows the version -o, --output The output file name -I, --include-dir <directory> Adds a include directory -B, --build-dir <directory> Building diretory -q, --quiet Stops the output of messages -f, --force Forces the compile and link -c, --config The config file -r, --required-resources Prints required resources in JSON lines =head1 Copyright & License Copyright 2023 Yuki Kimoto. All Rights Reserved. MIT License.