Make CFC use Charmonizer
Now, the build module hierarchy is:
* Module::Build
* Clownfish::CFC::Perl::Build::Charmonic
* Clownfish::CFC::Build
* Clownfish::CFC::Perl::Build
* Clownfish::Build
* Lucy::Build
Project: http://git-wip-us.apache.org/repos/asf/lucy/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/0ebe2138
Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/0ebe2138
Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/0ebe2138
Branch: refs/heads/master
Commit: 0ebe213888590d2854a8dbc5cd30cfa8be7d376d
Parents: 0e583c5
Author: Nick Wellnhofer <[email protected]>
Authored: Fri Nov 2 21:12:34 2012 +0100
Committer: Nick Wellnhofer <[email protected]>
Committed: Sat Nov 3 21:50:56 2012 +0100
----------------------------------------------------------------------
clownfish/compiler/.gitignore | 6 ------
clownfish/compiler/perl/.gitignore | 10 ++++++++++
clownfish/compiler/perl/Build.PL | 7 +++++--
.../compiler/perl/buildlib/Clownfish/CFC/Build.pm | 13 ++++++++++++-
.../compiler/perl/lib/Clownfish/CFC/Perl/Build.pm | 2 +-
clownfish/compiler/src/CFCVersion.h | 2 +-
6 files changed, 29 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucy/blob/0ebe2138/clownfish/compiler/.gitignore
----------------------------------------------------------------------
diff --git a/clownfish/compiler/.gitignore b/clownfish/compiler/.gitignore
index 545023d..586acd2 100644
--- a/clownfish/compiler/.gitignore
+++ b/clownfish/compiler/.gitignore
@@ -1,10 +1,4 @@
include/ppport.h
-perl/Build
-perl/MYMETA.json
-perl/MYMETA.yml
-perl/_build/
-perl/blib/
-perl/lib/Clownfish/CFC.c
src/CFCParseHeader.c
src/CFCParseHeader.h
src/CFCParseHeader.out
http://git-wip-us.apache.org/repos/asf/lucy/blob/0ebe2138/clownfish/compiler/perl/.gitignore
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/.gitignore
b/clownfish/compiler/perl/.gitignore
new file mode 100644
index 0000000..23e058e
--- /dev/null
+++ b/clownfish/compiler/perl/.gitignore
@@ -0,0 +1,10 @@
+/Build
+/Charmony.pm
+/MYMETA.json
+/MYMETA.yml
+/_build/
+/blib/
+/charmonizer
+/charmonize.c
+/charmony.h
+/lib/Clownfish/CFC.c
http://git-wip-us.apache.org/repos/asf/lucy/blob/0ebe2138/clownfish/compiler/perl/Build.PL
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/Build.PL b/clownfish/compiler/perl/Build.PL
index 671f1bd..842a4e1 100644
--- a/clownfish/compiler/perl/Build.PL
+++ b/clownfish/compiler/perl/Build.PL
@@ -18,7 +18,7 @@ use strict;
use warnings;
use lib 'buildlib';
use Clownfish::CFC::Build;
-use File::Spec::Functions qw( updir catdir );
+use File::Spec::Functions qw( updir catdir curdir );
my $builder = Clownfish::CFC::Build->new(
module_name => 'Clownfish::CFC',
@@ -31,7 +31,10 @@ my $builder = Clownfish::CFC::Build->new(
'ExtUtils::ParseXS' => 2.16,
'Devel::PPPort' => 3.13,
},
- include_dirs => [ catdir( updir(), 'include' ) ],
+ include_dirs => [
+ curdir(), # for charmony.h
+ catdir( updir(), 'include' ),
+ ],
c_source => catdir( updir(), 'src' ),
add_to_cleanup => [
qw(
http://git-wip-us.apache.org/repos/asf/lucy/blob/0ebe2138/clownfish/compiler/perl/buildlib/Clownfish/CFC/Build.pm
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/buildlib/Clownfish/CFC/Build.pm
b/clownfish/compiler/perl/buildlib/Clownfish/CFC/Build.pm
index a293377..1228171 100644
--- a/clownfish/compiler/perl/buildlib/Clownfish/CFC/Build.pm
+++ b/clownfish/compiler/perl/buildlib/Clownfish/CFC/Build.pm
@@ -17,7 +17,12 @@ use strict;
use warnings;
package Clownfish::CFC::Build;
-use base qw( Module::Build );
+
+# In order to find Clownfish::CFC::Perl::Build::Charmonic, look in 'lib'
+# and cleanup @INC afterwards.
+use lib 'lib';
+use base qw( Clownfish::CFC::Perl::Build::Charmonic );
+no lib 'lib';
use File::Spec::Functions qw( catfile updir catdir );
use Config;
@@ -25,6 +30,8 @@ use Cwd qw( getcwd );
use Carp;
my $base_dir = catdir( updir(), updir(), updir() );
+my $COMMON_SOURCE_DIR = catdir( $base_dir, 'common' );
+my $CHARMONIZER_C = catfile( $COMMON_SOURCE_DIR, 'charmonizer.c' );
my $PPPORT_H_PATH = catfile( updir(), qw( include ppport.h ) );
my $LEMON_DIR = catdir( $base_dir, 'lemon' );
my $LEMON_EXE_PATH = catfile( $LEMON_DIR, "lemon$Config{_exe}" );
@@ -84,6 +91,9 @@ sub new {
%args,
recursive_test_files => 1,
extra_compiler_flags => __PACKAGE__->extra_ccflags,
+ charmonizer_params => {
+ charmonizer_c => $CHARMONIZER_C,
+ },
);
}
@@ -171,6 +181,7 @@ sub ACTION_lexers {
sub ACTION_code {
my $self = shift;
+ $self->dispatch('charmony');
$self->dispatch('ppport');
$self->dispatch('parsers');
$self->SUPER::ACTION_code;
http://git-wip-us.apache.org/repos/asf/lucy/blob/0ebe2138/clownfish/compiler/perl/lib/Clownfish/CFC/Perl/Build.pm
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/lib/Clownfish/CFC/Perl/Build.pm
b/clownfish/compiler/perl/lib/Clownfish/CFC/Perl/Build.pm
index 45fb38c..97e85cd 100644
--- a/clownfish/compiler/perl/lib/Clownfish/CFC/Perl/Build.pm
+++ b/clownfish/compiler/perl/lib/Clownfish/CFC/Perl/Build.pm
@@ -79,7 +79,7 @@ sub new {
my $include_dirs = $self->include_dirs;
push( @$include_dirs,
- curdir(), # for ppport.h
+ curdir(), # for ppport.h and charmony.h
catdir( $AUTOGEN_DIR, 'include' ),
);
$self->include_dirs($include_dirs);
http://git-wip-us.apache.org/repos/asf/lucy/blob/0ebe2138/clownfish/compiler/src/CFCVersion.h
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCVersion.h
b/clownfish/compiler/src/CFCVersion.h
index d3ba672..e81a012 100644
--- a/clownfish/compiler/src/CFCVersion.h
+++ b/clownfish/compiler/src/CFCVersion.h
@@ -28,7 +28,7 @@
extern "C" {
#endif
-#include <stdint.h>
+#include "charmony.h"
typedef struct CFCVersion CFCVersion;