You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by ma...@apache.org on 2012/06/12 01:49:48 UTC

[lucy-commits] svn commit: r1349073 - /lucy/trunk/perl/buildlib/Lucy/Build.pm

Author: marvin
Date: Mon Jun 11 23:49:48 2012
New Revision: 1349073

URL: http://svn.apache.org/viewvc?rev=1349073&view=rev
Log:
Use Charmonizer "meld" file in Perl build.

Modified:
    lucy/trunk/perl/buildlib/Lucy/Build.pm

Modified: lucy/trunk/perl/buildlib/Lucy/Build.pm
URL: http://svn.apache.org/viewvc/lucy/trunk/perl/buildlib/Lucy/Build.pm?rev=1349073&r1=1349072&r2=1349073&view=diff
==============================================================================
--- lucy/trunk/perl/buildlib/Lucy/Build.pm (original)
+++ lucy/trunk/perl/buildlib/Lucy/Build.pm Mon Jun 11 23:49:48 2012
@@ -48,8 +48,7 @@ BEGIN { unshift @PATH, rel2abs( getcwd()
 my @BASE_PATH = __PACKAGE__->cf_base_path;
 
 my $CHARMONIZER_ORIG_DIR = catdir( @BASE_PATH, 'charmonizer' );
-my $CHARMONIZE_EXE_PATH
-    = catfile( $CHARMONIZER_ORIG_DIR, "charmonize$Config{_exe}" );
+my $CHARMONIZE_EXE_PATH  = "charmonize$Config{_exe}";
 my $CHARMONY_PATH  = 'charmony.h';
 my $LEMON_DIR      = catdir( @BASE_PATH, 'lemon' );
 my $LEMON_EXE_PATH = catfile( $LEMON_DIR, "lemon$Config{_exe}" );
@@ -110,10 +109,18 @@ sub _run_make {
 sub ACTION_charmonize {
     my $self = shift;
     print "Building $CHARMONIZE_EXE_PATH...\n\n";
+    my $meld_c = rel2abs("charmonize.c");
+    my $charmonize_main = catfile( $CHARMONIZER_ORIG_DIR, 'charmonize.c' );
     $self->_run_make(
         dir  => $CHARMONIZER_ORIG_DIR,
-        args => [],
+        args => [ "meld", "PERL=$^X", "FILES=$charmonize_main", "OUT=$meld_c" ],
     );
+    if ( !$self->up_to_date( $CHARMONIZE_EXE_PATH, $meld_c ) ) {
+        my $cc = $Config{cc};
+        my $outflag = $cc =~ /cl\b/ ? "/Fe" : "-o ";
+        system("$cc $meld_c $outflag$CHARMONIZE_EXE_PATH")
+            and die "Failed to compile $CHARMONIZE_EXE_PATH";
+    }
 }
 
 # Run the charmonize executable, creating the charmony.h file.