⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 automakeworkspacehelper.pm

📁 ace开发环境 用来开发网络程序 其运用了设计模式、多平台、C++等多种知识
💻 PM
字号:
package AutomakeWorkspaceHelper;# ************************************************************# Description   : An Automake Workspace Helper# Author        : Chad Elliott# Create Date   : 9/01/2004# ************************************************************# ************************************************************# Pragmas# ************************************************************use strict;use FileHandle;use File::Basename;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 = -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' => '/..'},             );## These are required when processing the TAO workspacemy(%libdirs) = ('libACE_SSL.la'       => 'ace/SSL',                'libACEXML.la'        => 'ACEXML/common',                'libACEXML_Parser.la' => 'ACEXML/parser/parser',                'libACE_TMCast.la'    => 'protocols/ace/TMCast',                'libACE_RMCast.la'    => 'protocols/ace/RMCast',                'libACE_HTBP.la'      => 'protocols/ace/HTBP',                'libKokyu.la'         => 'Kokyu',               );# ************************************************************# 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/^\/orbsvcs\/orbsvcs$/\/orbsvcs/)) {      if (!($value =~ s/^\/TAO\/orbsvcs//)) {        if (!($value =~ s/^\/TAO//)) {          ## These ACE related libraries need fixing too.          $value =~ s/^\/protocols(\/ace)/$1/;        }      }    }  }  elsif ($name eq 'amflags') {    if (basename(Cwd::getcwd()) eq 'TAO') {      $value .= ' -I ../m4';    }  }  elsif ($name eq 'extra') {    if (basename(Cwd::getcwd()) eq 'TAO') {      $value .= "EXTRA_DIST =  \\\n" .                "  PROBLEM-REPORT-FORM \\\n" .                "  VERSION \\\n" .                "  COPYING.sun \\\n" .                "  LICENSE.sun \\\n" .                "  README.sun\n\n" .                "release:\n" .                "\t\$(MAKE) dist\n\n".                "TAO_EXTRA_DIST = docs\n\n" .                "dist-hook:\n" .                "\t(cd \$(top_srcdir); tar cf - \$(TAO_EXTRA_DIST)) | (cd \$(distdir); \\\n" .                "\t  tar xfBp -)\n" .                "\tlist=`find \$(distdir) -type d -name .svn -print`; for p in \$\$list; do \\\n" .                "\t  rm -rf \$\$p; done\n";    }  }  return $value;}sub modify_libpath {  my($self)    = shift;  my($str)     = shift;  my($reldir)  = shift;  my($libname) = shift;  if ($libname =~ /^lib(ace)/i) {    if (!defined $reldir || $reldir eq '') {      if (defined $libdirs{$libname}) {        $reldir = $libdirs{$libname};      }      else {        $reldir = 'ace';      }    }    $str =~ s!$libname!\$(ACE_BUILDDIR)/$reldir/$libname!;    return $str;  }  elsif ($libname =~ /^lib(kokyu\.)/i) {    if (!defined $reldir || $reldir eq '') {      if (defined $libdirs{$libname}) {        $reldir = $libdirs{$libname};      }      else {        $reldir = 'Kokyu';      }    }    $str =~ s!$libname!\$(top_builddir)/$reldir/$libname!;    return $str;  }  elsif ($libname =~ /^lib(tao|kokyu)/i) {    if (defined $reldir) {      $reldir =~ s!TAO/!!;      $str =~ s!$libname!\$(TAO_BUILDDIR)/$reldir/$libname!;      return $str;    }  }  elsif ($libname =~ /^libciao/i) {    if (defined $reldir) {      $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 + -