📄 automakeworkspacehelper.pm
字号:
package AutomakeWorkspaceHelper;
# ************************************************************
# Description : An Automake Workspace Helper
# Author : Chad Elliott
# Create Date : 9/01/2004
# ************************************************************
# ************************************************************
# Pragmas
# ************************************************************
use strict;
use FileHandle;
use WorkspaceHelper;
use vars qw(@ISA);
@ISA = qw(WorkspaceHelper);
# ************************************************************
# Data Section
# ************************************************************
my(%vals) = ('ACE_ROOT' => '$(top_srcdir)',
'TAO_ROOT' => '$(top_srcdir)',
'CIAO_ROOT' => '$(top_srcdir)',
'ACE_BUILDDIR' => '$(top_builddir)',
'TAO_BUILDDIR' => '$(top_builddir)',
'CIAO_BUILDDIR' => '$(top_builddir)',
'TAO_IDL' => 'ACE_ROOT=$(ACE_ROOT) TAO_ROOT=$(TAO_ROOT) $(TAO_BUILDDIR)/TAO_IDL/tao_idl' . "\n" .
'TAO_IDL_DEP = $(TAO_BUILDDIR)/TAO_IDL/tao_idl' . "\n" .
'TAO_IDLFLAGS = -Ge 1 -Wb,pre_include=ace/pre.h -Wb,post_include=ace/post.h -I$(TAO_ROOT) -I$(srcdir) -g $(ACE_BUILDDIR)/apps/gperf/src/gperf',
);
my(%addon) = ('ACE_ROOT' => {'CIAO_ROOT' => '/../..',
'TAO_ROOT' => '/..',
'CIAO_BUILDDIR' => '/../..',
'TAO_BUILDDIR' => '/..'},
'ACE_BUILDDIR' => {'CIAO_ROOT' => '/../..',
'TAO_ROOT' => '/..',
'CIAO_BUILDDIR' => '/../..',
'TAO_BUILDDIR' => '/..'},
'TAO_ROOT' => {'CIAO_ROOT' => '/..',
'CIAO_BUILDDIR' => '/..'},
'TAO_BUILDDIR' => {'CIAO_ROOT' => '/..',
'CIAO_BUILDDIR' => '/..'},
);
# ************************************************************
# Subroutine Section
# ************************************************************
sub modify_value {
my($self) = shift;
my($name) = shift;
my($value) = shift;
if ($name eq 'includedir') {
## TAO/orbsvcs and TAO are like separate projects, so first
## remove the TAO/orbsvcs part and if that doesn't work try
## removing the TAO part. The ACE related values don't need
## any modification.
if (!($value =~ s/^\/TAO\/orbsvcs//)) {
$value =~ s/^\/TAO//;
}
}
return $value;
}
sub modify_libpath {
my($self) = shift;
my($str) = shift;
my($reldir) = shift;
my($libname) = shift;
if ($libname =~ /libace/i) {
$str =~ s!$libname!\$(ACE_BUILDDIR)/$reldir/$libname!;
return $str;
}
elsif ($libname =~ /libtao/i) {
$reldir =~ s!TAO/!!;
$str =~ s!$libname!\$(TAO_BUILDDIR)/$reldir/$libname!;
return $str;
}
elsif ($libname =~ /libciao/i) {
$reldir =~ s!TAO/CIAO/!!;
$str =~ s!$libname!\$(CIAO_BUILDDIR)/$reldir/$libname!;
return $str;
}
return undef;
}
sub write_settings {
my($self) = shift;
my($wsc) = shift;
my($fh) = shift;
my(@locals) = @_;
my($status) = 1;
my($error) = undef;
my($crlf) = $wsc->crlf();
my($pfh) = new FileHandle();
my(%seen) = ();
my($outdir) = $wsc->get_outdir();
foreach my $local (reverse @locals) {
if (open($pfh, "$outdir/$local")) {
while(<$pfh>) {
foreach my $key (keys %vals) {
if (/\$\($key\)/) {
$seen{$key} = $vals{$key};
}
}
}
close($pfh);
}
else {
$status = 0;
$error = "Unable to open $local for reading.";
}
}
foreach my $key (sort keys %seen) {
print $fh "$key = $seen{$key}";
if (defined $addon{$key}) {
foreach my $add (
sort { length($addon{$key}->{$b}) <=>
length($addon{$key}->{$a}) } keys %{$addon{$key}}) {
if ($seen{$add}) {
print $fh $addon{$key}->{$add};
last;
}
}
}
print $fh $crlf;
}
print $fh $crlf;
return $status, $error;
}
1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -