trick/bin/trick-config
2018-05-22 14:53:10 -05:00

77 lines
2.6 KiB
Perl
Executable File

#!/usr/bin/perl
use File::Basename ;
use Cwd 'abs_path';
use Getopt::Long ;
use strict;
# read the trick_ver.txt file and print the trick version
sub print_version() {
my @all_lines ;
my $file_contents ;
my ($current_version) ;
my $trick_ver_txt = "$ENV{TRICK_HOME}/share/trick/trick_ver.txt" ;
open FILE, "$trick_ver_txt" or die "$0: Couldn't find $trick_ver_txt\n" ;
@all_lines = <FILE> ;
close FILE ;
$file_contents = join "" , @all_lines ;
($current_version) = $file_contents =~ /current_version\s*=\s*"([^"]+)"/ ;
print "$current_version\n" ;
}
# print the prefix which is also TRICK_HOME
sub print_prefix() {
print "$ENV{TRICK_HOME}\n" ;
}
# Run a special rule in Makefile.sim that prints the value of the environment variable we request
sub print_makefile_var($) {
open(README, "make -f $ENV{TRICK_HOME}/share/trick/makefiles/Makefile.trickconfig print-@_ | ") or
die "Couldn't fork $!\n" ;
while (<README>) {
/=(.*)/ && print "$1\n" ;
}
close(README) ;
}
sub print_usage() {
print "\
Usage: trick-config <OPTION>
Options:
--version Print Trick version
--prefix Print the installation prefix (TRICK_HOME)
--includedir Directory containing Trick headers (TRICK_INCLUDES)
--libdir Directory containing Trick libraries (TRICK_LIB_DIR)
--cflags C compiler flags set by Trick (TRICK_SYSTEM_CFLAGS)
--cxxflags C++ compiler flags set by Trick (TRICK_SYSTEM_CXXFLAGS)
--ldflags Print Linker flags (TRICK_EXEC_LINK_LIBS)
--libs Libraries needed to link against Trick components (TRICK_LIBS)
" ;
}
sub print_usage_error() {
print_usage() ;
exit 1 ;
}
# Print usage if no arguments given
print_usage_error() if ( scalar @ARGV == 0 ) ;
# Set TRICK_HOME environment variable if it does not exist. TRICK_HOME is parent directory
$ENV{"TRICK_HOME"} = dirname(dirname(abs_path($0))) if (!exists $ENV{"TRICK_HOME"}) ;
# Process arguments
Getopt::Long::Configure ("bundling");
GetOptions ( "version" => sub {print_version();},
"prefix" => sub {print_prefix();},
"includedir" => sub {print_makefile_var("TRICK_INCLUDES");},
"libdir" => sub {print_makefile_var("TRICK_LIB_DIR");},
"cflags" => sub {print_makefile_var("TRICK_SYSTEM_CFLAGS");},
"cxxflags" => sub {print_makefile_var("TRICK_SYSTEM_CXXFLAGS");},
"ldflags" => sub {print_makefile_var("TRICK_EXEC_LINK_LIBS");},
"libs" => sub {print_makefile_var("TRICK_LIBS");},
"help|h" => sub {print_usage()},
) or print_usage_error() ;