This is an automated email from the git hooks/post-receive script.

js pushed a commit to annotated tag Marpa-R2-2.085_004
in repository libmarpa-r2-perl.

commit d8a2ac36e60d6b186221433eb9e969ad0b9f7032
Author: Jeffrey Kegler <jk...@cpan.org>
Date:   Fri Apr 25 22:59:38 2014 -0700

    Work on shared library support: t+
---
 cpan/inc/Marpa/R2/Build_Me.pm | 62 ++++++++++++++++++++++++++++++-------------
 cpan/libmarpa/dev/marpa.w     |  2 +-
 cpan/t/00-load.t              |  7 ++---
 3 files changed, 47 insertions(+), 24 deletions(-)

diff --git a/cpan/inc/Marpa/R2/Build_Me.pm b/cpan/inc/Marpa/R2/Build_Me.pm
index 6eb6b87..e4628b1 100644
--- a/cpan/inc/Marpa/R2/Build_Me.pm
+++ b/cpan/inc/Marpa/R2/Build_Me.pm
@@ -277,23 +277,41 @@ sub process_xs {
     File::Path::mkpath( $spec->{archdir}, 0, ( oct 777 ) )
         if not -d $spec->{archdir};
 
-    my $libmarpa_archive;
-    FIND_LIBRARY: {
-        if ($Marpa::R2::USE_PERL_AUTOCONF) {
-            my $libmarpa_libs_dir =
-                File::Spec->catdir( $self->base_dir(), 'libmarpa_build',
-                'blib', 'arch', 'auto', 'libmarpa' );
-            $libmarpa_archive = File::Spec->catfile( $libmarpa_libs_dir,
-                "libmarpa$Config{lib_ext}" );
-            last FIND_LIBRARY;
-        } ## end if ($Marpa::R2::USE_PERL_AUTOCONF)
+    my @extra_linker_flags = ();
+        $DB::single = 1;
+    if ( defined $self->args('libmarpa-shared') ) {
+        $DB::single = 1;
+        die qq{"libmarpa-shared" not supported for Config::AutoConf}
+            if $Marpa::R2::USE_PERL_AUTOCONF;
         my $libmarpa_libs_dir =
             File::Spec->catdir( $self->base_dir(), 'libmarpa_build',
             '.libs' );
-        $libmarpa_archive =
-            File::Spec->catfile( $libmarpa_libs_dir, 'libmarpa.a' );
-    } ## end FIND_LIBRARY:
-    push @{ $self->{properties}->{objects} }, $libmarpa_archive;
+        push @extra_linker_flags, '-L' . $libmarpa_libs_dir;
+        my $version_file_name = File::Spec->catfile( $self->base_dir(), 
'libmarpa_build', 'VERSION' );
+        my $libmarpa_version = $self->file_slurp($version_file_name);
+        chomp $libmarpa_version;
+        my @libmarpa_version = split /[.]/xms, $libmarpa_version;
+        push @extra_linker_flags, sprintf q{-lmarpa-} . ( join q{.}, 
@libmarpa_version );
+    } ## end if ( defined $self->args('libmarpa-shared') )
+    else {
+        my $libmarpa_archive;
+        FIND_LIBRARY: {
+            if ($Marpa::R2::USE_PERL_AUTOCONF) {
+                my $libmarpa_libs_dir =
+                    File::Spec->catdir( $self->base_dir(), 'libmarpa_build',
+                    'blib', 'arch', 'auto', 'libmarpa' );
+                $libmarpa_archive = File::Spec->catfile( $libmarpa_libs_dir,
+                    "libmarpa$Config{lib_ext}" );
+                last FIND_LIBRARY;
+            } ## end if ($Marpa::R2::USE_PERL_AUTOCONF)
+            my $libmarpa_libs_dir =
+                File::Spec->catdir( $self->base_dir(), 'libmarpa_build',
+                '.libs' );
+            $libmarpa_archive =
+                File::Spec->catfile( $libmarpa_libs_dir, 'libmarpa.a' );
+        } ## end FIND_LIBRARY:
+        push @{ $self->{properties}->{objects} }, $libmarpa_archive;
+    } ## end else [ if ( defined $self->args('libmarpa-shared') ) ]
 
     # .xs -> .bs
     $self->add_to_cleanup( $spec->{bs_file} );
@@ -309,13 +327,13 @@ sub process_xs {
     } ## end unless ( $self->up_to_date( $xs_file, $spec->{bs_file} ) )
 
     # .o -> .(a|bundle)
-    return marpa_link_c( $self, $spec );
+    return marpa_link_c( $self, $spec, \@extra_linker_flags );
 } ## end sub process_xs
 
 # The following was initially copied from Module::Build, and has
 # been customized for Marpa.
 sub marpa_link_c {
-    my ( $self, $spec ) = @_;
+    my ( $self, $spec, $extra_linker_flags ) = @_;
     my $p = $self->{properties};                             # For convenience
 
     $self->add_to_cleanup( $spec->{lib_file} );
@@ -328,11 +346,13 @@ sub marpa_link_c {
 
     my $module_name = $spec->{module_name} || $self->module_name;
 
+    my @extra_linker_flags = @{$p->{extra_linker_flags}};
+    push @extra_linker_flags, @{$extra_linker_flags};
     $self->cbuilder->link(
         module_name        => $module_name,
         objects            => [ $spec->{obj_file}, @{$objects} ],
         lib_file           => $spec->{lib_file},
-        extra_linker_flags => $p->{extra_linker_flags}
+        extra_linker_flags => \@extra_linker_flags
     );
 
     return $spec->{lib_file};
@@ -446,7 +466,13 @@ sub do_libmarpa {
     $ENV{CFLAGS} = $original_cflags if defined $original_cflags;
 
     # We need PIC, but do not want the overhead of building the shared library
-    my @configure_command_args = qw(--with-pic --disable-shared);
+    my @configure_command_args = ();
+    if ( defined $self->args('libmarpa-shared') ) {
+        push @configure_command_args, qw(--disable-static);
+    }
+    else {
+        push @configure_command_args, qw(--with-pic --disable-shared);
+    }
 
     my @debug_flags = ();
     if ( defined $self->args('Marpa-debug') ) {
diff --git a/cpan/libmarpa/dev/marpa.w b/cpan/libmarpa/dev/marpa.w
index 3f2f722..da5adde 100644
--- a/cpan/libmarpa/dev/marpa.w
+++ b/cpan/libmarpa/dev/marpa.w
@@ -663,7 +663,7 @@ Marpa_Error_Code marpa_c_error(Marpa_Config* config, const 
char** p_error_string
 const char* _marpa_tag(void)
 {
 #if defined(MARPA_TAG)
-  return MARPA_TAG;
+  return # MARPA_TAG ;
 #elif defined(__GNUC__)
   return __DATE__ " " __TIME__;
 #else
diff --git a/cpan/t/00-load.t b/cpan/t/00-load.t
index 8af102a..e681460 100644
--- a/cpan/t/00-load.t
+++ b/cpan/t/00-load.t
@@ -21,10 +21,8 @@ use English qw( -no_match_vars );
 
 use Test::More tests => 4;
 
-use Marpa::R2;
-
-defined $INC{'Marpa/R2.pm'}
-    or Test::More::BAIL_OUT('Could not load Marpa::R2');
+my $ok = eval { require Marpa::R2; 1; };
+Test::More::BAIL_OUT('Could not load Marpa::R2') if not $ok;
 
 my $marpa_version_ok = defined $Marpa::R2::VERSION;
 my $marpa_version_desc =
@@ -47,7 +45,6 @@ my $libmarpa_version_desc =
 Test::More::ok( $libmarpa_version_ok, $libmarpa_version_desc );
 
 Test::More::diag($marpa_string_version_desc);
-Test::More::diag('Libmarpa: ' . $Marpa::R2::LIBMARPA_FILE);
 Test::More::diag($libmarpa_version_desc);
 Test::More::diag('Libmarpa tag: ' . Marpa::R2::Thin::tag());
 

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-perl/packages/libmarpa-r2-perl.git

_______________________________________________
Pkg-perl-cvs-commits mailing list
Pkg-perl-cvs-commits@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits

Reply via email to