diff options
author | Stefano Lattarini <stefano.lattarini@gmail.com> | 2013-02-04 19:34:03 +0100 |
---|---|---|
committer | Stefano Lattarini <stefano.lattarini@gmail.com> | 2013-02-04 19:34:03 +0100 |
commit | 6d9e9dd453944cd86ddc530a131bd338f4734638 (patch) | |
tree | 908d19354d2f67adb7927e08b131f38f7b6f3e08 | |
parent | 0756a43c3a77cff0e86aa8dad7f9f4ebd90b800c (diff) | |
download | automake-6d9e9dd453944cd86ddc530a131bd338f4734638.tar.gz |
refactor: rip module Automake::Language out of automake script
This is just a preparatory patch in view of future changes.
* lib/Automake/Language.pm: New module, ripped out from ...
* automake.in: ... here. Related adjustments.
* Makefile.am (dist_perllib_DATA): List the new module.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
-rw-r--r-- | Makefile.am | 1 | ||||
-rw-r--r-- | automake.in | 94 | ||||
-rw-r--r-- | lib/Automake/Language.pm | 122 |
3 files changed, 128 insertions, 89 deletions
diff --git a/Makefile.am b/Makefile.am index fa3dd3f3d..c245369ba 100644 --- a/Makefile.am +++ b/Makefile.am @@ -188,6 +188,7 @@ dist_perllib_DATA = \ lib/Automake/Getopt.pm \ lib/Automake/Item.pm \ lib/Automake/ItemDef.pm \ + lib/Automake/Language.pm \ lib/Automake/Location.pm \ lib/Automake/Options.pm \ lib/Automake/Rule.pm \ diff --git a/automake.in b/automake.in index d6ed599d9..5b57d3feb 100644 --- a/automake.in +++ b/automake.in @@ -25,7 +25,9 @@ eval 'case $# in 0) exec @PERL@ -S "$0";; *) exec @PERL@ -S "$0" "$@";; esac' # Perl reimplementation by Tom Tromey <tromey@redhat.com>, and # Alexandre Duret-Lutz <adl@gnu.org>. -package Language; +package Automake; + +use strict; BEGIN { @@ -43,93 +45,6 @@ BEGIN $ENV{'SHELL'} = '@SHELL@' if exists $ENV{'DJDIR'}; } -use Class::Struct (); -Class::Struct::struct ( - # Short name of the language (c, f77...). - 'name' => "\$", - # Nice name of the language (C, Fortran 77...). - 'Name' => "\$", - - # List of configure variables which must be defined. - 'config_vars' => '@', - - # 'pure' is '1' or ''. A 'pure' language is one where, if - # all the files in a directory are of that language, then we - # do not require the C compiler or any code to call it. - 'pure' => "\$", - - 'autodep' => "\$", - - # Name of the compiling variable (COMPILE). - 'compiler' => "\$", - # Content of the compiling variable. - 'compile' => "\$", - # Flag to require compilation without linking (-c). - 'compile_flag' => "\$", - 'extensions' => '@', - # A subroutine to compute a list of possible extensions of - # the product given the input extensions. - # (defaults to a subroutine which returns ('.$(OBJEXT)', '.lo')) - 'output_extensions' => "\$", - # A list of flag variables used in 'compile'. - # (defaults to []) - 'flags' => "@", - - # Any tag to pass to libtool while compiling. - 'libtool_tag' => "\$", - - # The file to use when generating rules for this language. - # The default is 'depend2'. - 'rule_file' => "\$", - - # Name of the linking variable (LINK). - 'linker' => "\$", - # Content of the linking variable. - 'link' => "\$", - - # Name of the compiler variable (CC). - 'ccer' => "\$", - - # Name of the linker variable (LD). - 'lder' => "\$", - # Content of the linker variable ($(CC)). - 'ld' => "\$", - - # Flag to specify the output file (-o). - 'output_flag' => "\$", - '_finish' => "\$", - - # This is a subroutine which is called whenever we finally - # determine the context in which a source file will be - # compiled. - '_target_hook' => "\$", - - # If TRUE, nodist_ sources will be compiled using specific rules - # (i.e. not inference rules). The default is FALSE. - 'nodist_specific' => "\$"); - - -sub finish ($) -{ - my ($self) = @_; - if (defined $self->_finish) - { - &{$self->_finish} (@_); - } -} - -sub target_hook ($$$$%) -{ - my ($self) = @_; - if (defined $self->_target_hook) - { - &{$self->_target_hook} (@_); - } -} - -package Automake; - -use strict; use Automake::Config; BEGIN { @@ -156,6 +71,7 @@ use Automake::VarDef; use Automake::Rule; use Automake::RuleDef; use Automake::Wrap 'makefile_wrap'; +use Automake::Language; use File::Basename; use File::Spec; use Carp; @@ -5956,7 +5872,7 @@ sub register_language (%) $option{'nodist_specific'} = 0 unless defined $option{'nodist_specific'}; - my $lang = new Language (%option); + my $lang = new Automake::Language (%option); # Fill indexes. $extension_map{$_} = $lang->name foreach @{$lang->extensions}; diff --git a/lib/Automake/Language.pm b/lib/Automake/Language.pm new file mode 100644 index 000000000..6408e86d0 --- /dev/null +++ b/lib/Automake/Language.pm @@ -0,0 +1,122 @@ +# Copyright (C) 2013 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +package Automake::Language; + +use 5.006; +use strict; + +use Class::Struct (); +Class::Struct::struct ( + # Short name of the language (c, f77...). + 'name' => "\$", + # Nice name of the language (C, Fortran 77...). + 'Name' => "\$", + + # List of configure variables which must be defined. + 'config_vars' => '@', + + # 'pure' is '1' or ''. A 'pure' language is one where, if + # all the files in a directory are of that language, then we + # do not require the C compiler or any code to call it. + 'pure' => "\$", + + 'autodep' => "\$", + + # Name of the compiling variable (COMPILE). + 'compiler' => "\$", + # Content of the compiling variable. + 'compile' => "\$", + # Flag to require compilation without linking (-c). + 'compile_flag' => "\$", + 'extensions' => '@', + # A subroutine to compute a list of possible extensions of + # the product given the input extensions. + # (defaults to a subroutine which returns ('.$(OBJEXT)', '.lo')) + 'output_extensions' => "\$", + # A list of flag variables used in 'compile'. + # (defaults to []) + 'flags' => "@", + + # Any tag to pass to libtool while compiling. + 'libtool_tag' => "\$", + + # The file to use when generating rules for this language. + # The default is 'depend2'. + 'rule_file' => "\$", + + # Name of the linking variable (LINK). + 'linker' => "\$", + # Content of the linking variable. + 'link' => "\$", + + # Name of the compiler variable (CC). + 'ccer' => "\$", + + # Name of the linker variable (LD). + 'lder' => "\$", + # Content of the linker variable ($(CC)). + 'ld' => "\$", + + # Flag to specify the output file (-o). + 'output_flag' => "\$", + '_finish' => "\$", + + # This is a subroutine which is called whenever we finally + # determine the context in which a source file will be + # compiled. + '_target_hook' => "\$", + + # If TRUE, nodist_ sources will be compiled using specific rules + # (i.e. not inference rules). The default is FALSE. + 'nodist_specific' => "\$"); + + +sub finish ($) +{ + my ($self) = @_; + if (defined $self->_finish) + { + &{$self->_finish} (@_); + } +} + +sub target_hook ($$$$%) +{ + my ($self) = @_; + if (defined $self->_target_hook) + { + &{$self->_target_hook} (@_); + } +} + +1; + +### Setup "GNU" style for perl-mode and cperl-mode. +## Local Variables: +## perl-indent-level: 2 +## perl-continued-statement-offset: 2 +## perl-continued-brace-offset: 0 +## perl-brace-offset: 0 +## perl-brace-imaginary-offset: 0 +## perl-label-offset: -2 +## cperl-indent-level: 2 +## cperl-brace-offset: 0 +## cperl-continued-brace-offset: 0 +## cperl-label-offset: -2 +## cperl-extra-newline-before-brace: t +## cperl-merge-trailing-else: nil +## cperl-continued-statement-offset: 2 +## End: |