Alien-Xmake-Project

 view release on metacpan or  search on metacpan

lib/Alien/Xmake/Project.pm  view on Meta::CPAN

    method check_cxxincludes           (@a) { $self->_check( 'check_cxxincludes',           @a ); }
    method check_csnippets             (@a) { $self->_check( 'check_csnippets',             @a ); }
    method check_cxxsnippets           (@a) { $self->_check( 'check_cxxsnippets',           @a ); }
    method check_features              (@a) { $self->_check( 'check_features',              @a ); }
    method check_macros                (@a) { $self->_check( 'check_macros',                @a ); }
    method check_sizeof                (@a) { $self->_check( 'check_sizeof',                @a ); }
    method check_alignof               (@a) { $self->_check( 'check_alignof',               @a ); }
    method check_bigendian             (@a) { $self->_check( 'check_bigendian',             @a ); }
    method check_cflags                (@a) { $self->_check( 'check_cflags',                @a ); }
    method check_cxxflags              (@a) { $self->_check( 'check_cxxflags',              @a ); }
    method configvar_check_links       (@a) { $self->_check( 'configvar_check_links',       @a ); }
    method configvar_check_syslinks    (@a) { $self->_check( 'configvar_check_syslinks',    @a ); }
    method configvar_check_ctypes      (@a) { $self->_check( 'configvar_check_ctypes',      @a ); }
    method configvar_check_cxxtypes    (@a) { $self->_check( 'configvar_check_cxxtypes',    @a ); }
    method configvar_check_cfuncs      (@a) { $self->_check( 'configvar_check_cfuncs',      @a ); }
    method configvar_check_cxxfuncs    (@a) { $self->_check( 'configvar_check_cxxfuncs',    @a ); }
    method configvar_check_cincludes   (@a) { $self->_check( 'configvar_check_cincludes',   @a ); }
    method configvar_check_cxxincludes (@a) { $self->_check( 'configvar_check_cxxincludes', @a ); }
    method configvar_check_csnippets   (@a) { $self->_check( 'configvar_check_csnippets',   @a ); }
    method configvar_check_cxxsnippets (@a) { $self->_check( 'configvar_check_cxxsnippets', @a ); }
    method configvar_check_features    (@a) { $self->_check( 'configvar_check_features',    @a ); }
    method configvar_check_macros      (@a) { $self->_check( 'configvar_check_macros',      @a ); }
    method configvar_check_sizeof      (@a) { $self->_check( 'configvar_check_sizeof',      @a ); }
    method configvar_check_alignof     (@a) { $self->_check( 'configvar_check_alignof',     @a ); }
    method configvar_check_bigendian   (@a) { $self->_check( 'configvar_check_bigendian',   @a ); }
    method configvar_check_cflags      (@a) { $self->_check( 'configvar_check_cflags',      @a ); }
    method configvar_check_cxxflags    (@a) { $self->_check( 'configvar_check_cxxflags',    @a ); }

    # run / prepare hooks (raw Lua)
    method on_load        (@a) { $self->_hook( 'on_load',        @a ); }
    method on_config      (@a) { $self->_hook( 'on_config',      @a ); }
    method on_build       (@a) { $self->_hook( 'on_build',       @a ); }
    method on_build_file  (@a) { $self->_hook( 'on_build_file',  @a ); }
    method before_build   (@a) { $self->_hook( 'before_build',   @a ); }
    method after_build    (@a) { $self->_hook( 'after_build',    @a ); }
    method on_link        (@a) { $self->_hook( 'on_link',        @a ); }
    method before_link    (@a) { $self->_hook( 'before_link',    @a ); }
    method after_link     (@a) { $self->_hook( 'after_link',     @a ); }
    method on_clean       (@a) { $self->_hook( 'on_clean',       @a ); }
    method before_clean   (@a) { $self->_hook( 'before_clean',   @a ); }
    method after_clean    (@a) { $self->_hook( 'after_clean',    @a ); }
    method on_install     (@a) { $self->_hook( 'on_install',     @a ); }
    method before_install (@a) { $self->_hook( 'before_install', @a ); }
    method after_install  (@a) { $self->_hook( 'after_install',  @a ); }
    method on_uninstall(@a)     { $self->_hook( 'on_uninstall',     @a ); }
    method before_uninstall(@a) { $self->_hook( 'before_uninstall', @a ); }
    method after_uninstall      (@a) { $self->_hook( 'after_uninstall',      @a ); }
    method on_run               (@a) { $self->_hook( 'on_run',               @a ); }
    method before_run           (@a) { $self->_hook( 'before_run',           @a ); }
    method after_run            (@a) { $self->_hook( 'after_run',            @a ); }
    method on_prepare           (@a) { $self->_hook( 'on_prepare',           @a ); }
    method on_prepare_file      (@a) { $self->_hook( 'on_prepare_file',      @a ); }
    method on_prepare_files     (@a) { $self->_hook( 'on_prepare_files',     @a ); }
    method before_prepare       (@a) { $self->_hook( 'before_prepare',       @a ); }
    method after_prepare        (@a) { $self->_hook( 'after_prepare',        @a ); }
    method before_prepare_file  (@a) { $self->_hook( 'before_prepare_file',  @a ); }
    method after_prepare_file   (@a) { $self->_hook( 'after_prepare_file',   @a ); }
    method before_prepare_files (@a) { $self->_hook( 'before_prepare_files', @a ); }
    method after_prepare_files  (@a) { $self->_hook( 'after_prepare_files',  @a ); }

    # raw Lua escape hatch
    method lua (@lines) {
        push @$lines, map { ref($_) eq 'ARRAY' ? @$_ : $_ } @lines;
        $self;
    }
};
#
class Alien::Xmake::Project::Namespace v1.0.0 {
    field $_project : param;
    field $_name    : param : reader(name);
    field $_body    : param = [];

    method render {
        my @out = ( 'namespace("' . $_name . '")' );
        for my $b (@$_body) {
            if ( ref($b) eq 'CODE' ) {
                my $r = $b->($_project);
                push @out, map {"    $_"} ref($r) eq 'ARRAY' ? @$r : ($r);
            }
            else {
                push @out, map {"    $_"} ref($b) eq 'ARRAY' ? @$b : ($b);
            }
        }
        push @out, 'namespace_end()';
        return \@out;
    }
};
#
class Alien::Xmake::Project::Option v1.0.0 {
    field $_name   : param : reader(name);
    field $_body   : param  = [];
    field $_inline : param  = undef;
    field $lines   : reader = [];

    method _line ( $name, @args ) {
        die "option \"$_name\" declared inline (table form) can't be extended with set_* calls\n" if defined $_inline;
        push @$lines, "    " . Alien::Xmake::Project::Util::_stmt( $name, @args );
        $self;
    }

    method _hook ( $name, @args ) {
        die "option \"$_name\" declared inline (table form) can't add hooks\n" if defined $_inline;
        push @$lines, "    $name(" . Alien::Xmake::Project::Util::_lua_script(@args) . ")";
        $self;
    }
    method set_default     (@a) { $self->_line( 'set_default',     @a ); }
    method set_values      (@a) { $self->_line( 'set_values',      @a ); }
    method set_showmenu    (@a) { $self->_line( 'set_showmenu',    @a ); }
    method set_category    (@a) { $self->_line( 'set_category',    @a ); }
    method set_description (@a) { $self->_line( 'set_description', @a ); }
    method add_deps        (@a) { $self->_line( 'add_deps',        @a ); }
    method add_links       (@a) { $self->_line( 'add_links',       @a ); }
    method add_linkdirs    (@a) { $self->_line( 'add_linkdirs',    @a ); }
    method add_rpathdirs   (@a) { $self->_line( 'add_rpathdirs',   @a ); }
    method add_cincludes   (@a) { $self->_line( 'add_cincludes',   @a ); }
    method add_cxxincludes (@a) { $self->_line( 'add_cxxincludes', @a ); }
    method add_ctypes      (@a) { $self->_line( 'add_ctypes',      @a ); }
    method add_cxxtypes    (@a) { $self->_line( 'add_cxxtypes',    @a ); }
    method add_csnippets   (@a) { $self->_line( 'add_csnippets',   @a ); }
    method add_cxxsnippets (@a) { $self->_line( 'add_cxxsnippets', @a ); }
    method add_cfuncs      (@a) { $self->_line( 'add_cfuncs',      @a ); }



( run in 1.499 second using v1.01-cache-2.11-cpan-54e63673c56 )