gnucash/common/gnc-test-env.pl

61 lines
2.1 KiB
Perl
Raw Normal View History

#!/usr/bin/perl
# Spit out the environment variable settings needed based on
# arguments listing @gnc_module_dirs, @guile_load_dirs, and
# @library_dirs
use Getopt::Long;
my $define_exports=1;
my @gnc_module_dirs=();
my @guile_load_dirs=();
my @library_dirs=();
GetOptions ("exports!" => \$define_exports, # flag
"gnc-module-dir=s" => \@gnc_module_dirs, # array of strings
"guile-load-dir=s" => \@guile_load_dirs, # array of strings
"library-dir=s" => \@library_dirs, # array of strings
"verbose" => \$verbose) # flag
or die(
"Usage: gnc-test-env.pl [ --exports | --noexports ]\n" .
" [ (--gnc-module-dir dir | --guile-load-dir dir | --library-dir dir) ... ]\n");
if ( $^O =~ /MSWin32/ ) {
$path_separator=";";
} else {
$path_separator=":";
}
sub print_env_var {
($env_name, $dir_suffix, $separator, @dir_list) = @_;
return if not @dir_list;
my @suffixed_dir_list = map {
my $dir = $_ . $dir_suffix;
if ( $^O =~ /MSWin32/ ) {
$dir =~ s!/!\\\\!g; } # Backslashes need to be escaped for the environment
$dir;
} @dir_list;
print $env_name . '="' .
join($separator, @suffixed_dir_list) .
$separator . '${' . $env_name . '}" ';
}
print_env_var "GNC_MODULE_PATH", "/.libs", $path_separator, @gnc_module_dirs;
print_env_var "GUILE_LOAD_PATH", "", $path_separator, @guile_load_dirs;
print_env_var "GUILE_LOAD_COMPILED_PATH", "", $path_separator, @guile_load_dirs;
print_env_var "LD_LIBRARY_PATH", "/.libs", $path_separator, @library_dirs;
print_env_var "DYLD_LIBRARY_PATH", "/.libs", $path_separator, @library_dirs;
if ( $^O =~ /MSWin32/ ) {
print_env_var "PATH", "/.libs", ":", @library_dirs;
}
if ($define_exports) {
print ";\n";
print "export GNC_MODULE_PATH;\n" if @gnc_module_dirs;
print "export GUILE_LOAD_PATH;\n" if @guile_load_dirs;
print "export GUILE_LOAD_COMPILED_PATH;\n" if @guile_load_dirs;
print "export LD_LIBRARY_PATH;\n" if @library_dirs;
print "export DYLD_LIBRARY_PATH;\n" if @library_dirs;
if ( $^O =~ /MSWin32/ ) {
print "export PATH;\n" if @library_dirs;
}
}