#!perl
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.