| # @configure_input@ |
| # |
| # Add directories to @INC, Perl's module search path, to find modules, |
| # in the source and build directories or in installation directories. |
| # |
| # 'use Texinfo::ModulePath' should only occur once per program so that |
| # the initialization is only done once. This makes the way this module |
| # is used very unusual. |
| # |
| # Also used to pass other information from configure to modules. |
| |
| package Texinfo::ModulePath; |
| |
| use strict; |
| |
| use vars qw($VERSION); |
| |
| $VERSION = '7.2.90'; |
| |
| use File::Basename; |
| use File::Spec; |
| |
| # Used as a flag to say whether to look for data files in uninstalled |
| # locations. |
| our $texinfo_uninstalled = undef; |
| |
| # uninstalled locations paths, if $Texinfo::ModulePath::texinfo_uninstalled |
| # Pathname of the tta/ build and source directories. Used to find the locale |
| # data and other files. |
| our $t2a_builddir = ''; |
| our $t2a_srcdir; |
| |
| # installed locations paths, if not $Texinfo::ModulePath::texinfo_uninstalled |
| our $converter_datadir; |
| our $converter_libdir; |
| # C libraries directory |
| our $libraries_dir; |
| |
| # Other information passed to modules from configure |
| our $conversion_from_euc_cn = '@ICONV_CONVERTS_EUC_CN@'; |
| our $default_test_level = '@DEFAULT_TEST_LEVEL@'; |
| |
| # Passed to texi2any.pl, which is not configured, and to t/test_utils.pl. |
| our $enable_xs = '@enable_xs@'; |
| |
| # If $PERL_MODULES_DIR and $CONVERTER_LIBDIR are given, |
| # (likely the installation directories) |
| # use them to add directories |
| # to @INC. |
| # |
| # PERL_MODULES_DIR for Texinfo Perl modules and bundled Perl modules. |
| # CONVERTER_LIBDIR for XS modules and C libraries. |
| # CONVERTER_DATADIR for HTML extensions, javascript |
| # |
| # otherwise use 't2a_srcdir' |
| # and 't2a_builddir' environment variables. |
| sub init { |
| my $perl_modules_dir = shift; |
| $converter_libdir = shift; |
| $converter_datadir = shift; |
| my %named_args = @_; |
| |
| if (!$named_args{'installed'}) { |
| $texinfo_uninstalled = 1; |
| |
| if ($ENV{'t2a_srcdir'}) { |
| $t2a_srcdir = $ENV{'t2a_srcdir'}; |
| } elsif (defined $named_args{'updirs'}) { |
| # the command used is always in the source directory |
| my $argv0 = (-l $0) ? readlink($0) : $0; |
| my ($real_command_name, $command_directory, $command_suffix) |
| = fileparse($argv0, '.pl'); |
| my $updir = File::Spec->updir(); |
| |
| # e.g. tta/t -> tta/t/../.. for 'updirs' = 2. |
| my $count = $named_args{'updirs'}; |
| $t2a_srcdir = $command_directory; |
| while ($count-- > 0) { |
| $t2a_srcdir = join('/', ($t2a_srcdir, $updir)); |
| } |
| } |
| |
| if (defined($t2a_srcdir)) { |
| # For Texinfo::Parser and the rest. |
| unshift @INC, join('/', ($t2a_srcdir, 'perl')); |
| $perl_modules_dir = join('/', ($t2a_srcdir, 'maintain')); |
| } |
| |
| # Find XS modules and C libraries in the build directory |
| if (defined($ENV{'t2a_builddir'})) { |
| $t2a_builddir = $ENV{'t2a_builddir'}; |
| } else { |
| # this is correct for in-source builds only. |
| $t2a_builddir = $t2a_srcdir; |
| } |
| if (defined($t2a_builddir)) { |
| # For XS Modules |
| unshift @INC, join('/', ($t2a_builddir, 'perl', 'XSTexinfo')); |
| # for C libraries |
| $libraries_dir = join('/', ($t2a_builddir, 'C')); |
| } |
| |
| } else { |
| $texinfo_uninstalled = 0; |
| |
| # for the Texinfo modules |
| if (defined($perl_modules_dir)) { |
| unshift @INC, $perl_modules_dir; |
| } |
| # for the XS modules and the C libraries |
| if (defined($converter_libdir)) { |
| # For XS Modules |
| unshift @INC, join('/', ($converter_libdir, 'XS_extension')); |
| # For C libraries |
| $libraries_dir = join('/', ($converter_libdir, 'lib')); |
| } |
| } |
| |
| if (defined($perl_modules_dir)) { |
| # Bundled Perl modules |
| # '@USE_EXTERNAL_LIBINTL @' and similar are substituted |
| if ('@USE_EXTERNAL_LIBINTL@' ne 'yes') { |
| unshift @INC, join('/', ($perl_modules_dir, 'lib', |
| 'libintl-perl', 'lib')); |
| } |
| if ('@USE_EXTERNAL_EASTASIANWIDTH@' ne 'yes') { |
| unshift @INC, join('/', ($perl_modules_dir, 'lib', |
| 'Unicode-EastAsianWidth', 'lib')); |
| } |
| if ('@USE_EXTERNAL_UNIDECODE@' ne 'yes') { |
| unshift @INC, join('/', ($perl_modules_dir, 'lib', |
| 'Text-Unidecode', 'lib')); |
| } |
| } |
| } |
| |
| sub import { |
| my $class = shift; |
| goto &init; |
| } |
| |
| 1; |