Please review revised patch attached.  Geoff, does this work for you? 
Jerry, okay on Win32?

(All tests passing on Darwin and Linux.)
Index: lib/Parrot/Configure/Step/Methods.pm
===================================================================
--- lib/Parrot/Configure/Step/Methods.pm        (revision 27185)
+++ lib/Parrot/Configure/Step/Methods.pm        (working copy)
@@ -4,6 +4,8 @@
 package Parrot::Configure::Step::Methods;
 use strict;
 use warnings;
+use Carp;
+use Data::Dumper;
 
 =head1 NAME
 
@@ -24,12 +26,10 @@
 Since the methods are not part of the public interface, their names should
 begin with an underscore 'C<_>'.
 
-=head2 Methods
+=head1 METHODS
 
-=over 4
+=head2 C<_recheck_settings()>
 
-=item C<_recheck_settings()>
-
     $self->_recheck_settings($conf, $libs, $ccflags, $linkflags, $verbose);
 
 Currently used in configuration step classes auto::gmp, auto::readline,
@@ -46,7 +46,7 @@
     $self->set_result('no');
 }
 
-=item C<_handle_darwin_for_fink()>
+=head2 C<_handle_darwin_for_fink()>
 
     $self->_handle_darwin_for_fink($conf, $libs, $osname, $file);
 
@@ -83,6 +83,21 @@
     return 1;
 }
 
+=head2 C<_handle_darwin_for_macports()>
+
+    $self->_handle_darwin_for_macports($conf, $libs, $osname, $file);
+
+Currently used in configuration step classes auto::gmp, auto::readline and
+auto::opengl.
+
+Modifies settings for C<linkflags>, C<ldflags> and C<ccflags> in the
+Parrot::Configure object's data structure.
+
+Potentially expandable to cover all BSD-ports systems -- but as yet there has
+been no demand.
+
+=cut
+
 sub _handle_darwin_for_macports {
     my ($self, $conf, $osname, $file) = @_;
     if ( $osname =~ /darwin/ ) {
@@ -98,8 +113,105 @@
     return 1;
 }
 
+=head2 C<_add_to_libs()>
+
+    $self->_add_to_libs( {
+        conf            => $conf,
+        osname          => $osname,
+        cc              => $cc,
+        win32_gcc       => '-lalpha32 -lalpha32 -lopenalpha32',
+        win32_nongcc    => 'alpha.lib',
+        darwin          => 'alphadarwin.lib',
+        default         => '-lalpha',
+    } );
+
+B<Purpose>:  In a number of configuration step classes, the class's
+C<runstep()> method adds libraries to the wordspace-delimited string found in
+the Parrot::Configure object's C<libs> attribute.  The libraries to be added
+are either OS-specific or OS/C-compiler-specific.  This method enables the
+developer of a configuration step class to define a default value for such a
+flag -- usually the value that is appropriate to Unix-like systems -- and,
+optionally, to define non-default values for certain OSes or OS/C-compiler
+combinations.  We currently support settings for:
+
+=over 4
+
+=item * MSWin32 with F<gcc> as the C-compiler.
+
+=item * MSWin32 with any C-compiler other than F<gcc>.
+
+=item * Darwin.
+
 =back
 
+B<Arguments>: Reference to a hash.  Four of the hash's key-value pairs are
+required:
+
+=over 4
+
+=item * C<conf>
+
+The Parrot::Configure object.  Supplied within C<runstep()>.
+
+=item * C<osname>
+
+The name of the operating system.  Supplied within C<runstep()>.
+
+=item * C<cc>
+
+The name of the C-compiler.  Supplied within C<runstep()>.
+
+=item * C<default>
+
+Libraries to be added where no OS-specific or OS/C-compiler-specific libraries
+are to be added.  Wordspace-delimited string.
+
+=back
+
+These optional settings are currently supported and, if provided, will
+supersede the value in C<default>.
+
+=over 4
+
+=item * C<win32_gcc>
+
+Libraries to be added where OS is mswin32 and C-compiler is F<gcc>.
+Wordspace-delimited string.
+
+=item * C<win32_nongcc>
+
+Libraries to be added where OS is mswin32 and C-compiler is not F<gcc>.
+Wordspace-delimited string.
+
+=item * C<darwin>
+
+Libraries to be added where OS is Darwin.  Do not supply a value if the value
+you need is the same as C<default>.  Wordspace-delimited string.
+
+=back
+
+B<Return Value>:  Returns true value upon success.
+
+=cut
+
+sub _add_to_libs {
+    my $self = shift;
+    my $args = shift;
+    croak "_add_to_libs() takes hashref: $!" unless ref($args) eq 'HASH';
+    my $platform =
+          ($args->{osname} =~ /mswin32/i &&
+           $args->{cc} =~ /^gcc/i)          ? 'win32_gcc'
+        :  $args->{osname} =~ /mswin32/i    ? 'win32_nongcc'
+        :  $args->{osname} =~ /darwin/i     ? 'darwin'
+        :  'default';
+    my $libs = defined($args->{$platform})
+        ? $args->{$platform}
+        : $args->{default};
+    $args->{conf}->data->add(' ', libs => $libs);
+    return 1;
+}
+
+
 =head1 SEE ALSO
 
 Parrot::Configure::Step.
Index: t/steps/auto_crypto-02.t
===================================================================
--- t/steps/auto_crypto-02.t    (revision 27185)
+++ t/steps/auto_crypto-02.t    (working copy)
@@ -4,7 +4,7 @@
 
 use strict;
 use warnings;
-use Test::More tests => 19;
+use Test::More tests => 25;
 use Carp;
 use Cwd;
 use lib qw( lib t/configure/testlib );
@@ -40,6 +40,57 @@
 isa_ok( $step, $step_name );
 ok( $step->description(), "$step_name has description" );
 
+# Mock different OS/compiler combinations.
+my ($osname, $cc, $initial_libs);
+$initial_libs = $conf->data->get('libs');
+$osname = 'mswin32';
+$cc = 'gcc';
+ok($step->_add_to_libs( {
+    conf            => $conf,
+    osname          => $osname,
+    cc              => $cc,
+    win32_nongcc    => 'libcrypto.lib',
+    default         => '-lcrypto',
+} ),
+   "_add_to_libs() returned true value");
+like($conf->data->get('libs'),
+    qr/-lcrypto/,
+    "'libs' attribute modified as expected");
+# Restore setting for next test
+$conf->data->set( libs => $initial_libs );
+
+$osname = 'mswin32';
+$cc = 'cc';
+ok($step->_add_to_libs( {
+    conf            => $conf,
+    osname          => $osname,
+    cc              => $cc,
+    win32_nongcc    => 'libcrypto.lib',
+    default         => '-lcrypto',
+} ),
+   "_add_to_libs() returned true value");
+like($conf->data->get('libs'),
+    qr/libcrypto.lib/,
+    "'libs' attribute modified as expected");
+# Restore setting for next test
+$conf->data->set( libs => $initial_libs );
+
+$osname = 'foobar';
+$cc = 'cc';
+ok($step->_add_to_libs( {
+    conf            => $conf,
+    osname          => $osname,
+    cc              => $cc,
+    win32_nongcc    => 'libcrypto.lib',
+    default         => '-lcrypto',
+} ),
+   "_add_to_libs() returned true value");
+like($conf->data->get('libs'),
+    qr/-lcrypto/,
+    "'libs' attribute modified as expected");
+# Restore setting for next test
+$conf->data->set( libs => $initial_libs );
+
 my ($libs, $ccflags, $linkflags, $verbose);
 
 $libs = q{-lalpha};
Index: t/steps/auto_readline-01.t
===================================================================
--- t/steps/auto_readline-01.t  (revision 27185)
+++ t/steps/auto_readline-01.t  (working copy)
@@ -5,7 +5,7 @@
 
 use strict;
 use warnings;
-use Test::More tests => 46;
+use Test::More tests => 47;
 use Carp;
 use Cwd;
 use File::Spec;
@@ -16,6 +16,7 @@
 use Parrot::Configure;
 use Parrot::Configure::Options qw( process_options );
 use Parrot::Configure::Test qw( test_step_thru_runstep);
+use IO::CaptureOutput qw | capture |;
 
 my $args = process_options(
     {
@@ -46,25 +47,57 @@
 my ($osname, $cc);
 $osname = 'mswin32';
 $cc = 'gcc';
-ok(auto::readline::_handle_mswin32($conf, $osname, $cc),
-    "_handle_mswin32() returned true value");
+ok($step->_add_to_libs( {
+    conf            => $conf,
+    osname          => $osname,
+    cc              => $cc,
+    win32_nongcc    => 'readline.lib',
+    default         => '-lreadline',
+} ),
+    "_add_to_libs() returned true value");
 like($conf->data->get( 'libs' ), qr/-lreadline/,
     "'libs' modified as expected");
 
 $osname = 'mswin32';
 $cc = 'cc';
-ok(auto::readline::_handle_mswin32($conf, $osname, $cc),
-    "_handle_mswin32() returned true value");
+ok($step->_add_to_libs( {
+    conf            => $conf,
+    osname          => $osname,
+    cc              => $cc,
+    win32_nongcc    => 'readline.lib',
+    default         => '-lreadline',
+} ),
+    "_add_to_libs() returned true value");
 like($conf->data->get( 'libs' ), qr/readline\.lib/,
     "'libs' modified as expected");
 
 $osname = 'foobar';
 $cc = undef;
-ok(auto::readline::_handle_mswin32($conf, $osname, $cc),
-    "_handle_mswin32() returned true value");
+ok($step->_add_to_libs( {
+    conf            => $conf,
+    osname          => $osname,
+    cc              => $cc,
+    win32_nongcc    => 'readline.lib',
+    default         => '-lreadline',
+} ),
+    "_add_to_libs() returned true value");
 like($conf->data->get( 'libs' ), qr/-lreadline/,
     "'libs' modified as expected");
 
+$osname = 'foobar';
+$cc = undef;
+eval {
+    $step->_add_to_libs( [
+        conf            => $conf,
+        osname          => $osname,
+        cc              => $cc,
+        win32_nongcc    => 'readline.lib',
+        default         => '-lreadline',
+    ] );
+};
+like($@, qr/_add_to_libs\(\) takes hashref/,
+    "Bad argument to _add_to_libs correctly detected");
+
 my ($flagsbefore, $flagsafter);
 
 $osname = 'foobar';
Index: t/steps/auto_gmp-02.t
===================================================================
--- t/steps/auto_gmp-02.t       (revision 27185)
+++ t/steps/auto_gmp-02.t       (working copy)
@@ -43,27 +43,52 @@
 ok( $step->description(), "$step_name has description" );
 
 # Mock values for OS and C-compiler
-my ($osname, $cc);
+my ($osname, $cc, $initial_value);
 $osname = 'mswin32';
 $cc = 'gcc';
-ok(auto::gmp::_handle_mswin32($conf, $osname, $cc),
-    "_handle_mswin32() returned true value");
+$initial_value = $conf->data->get( 'libs' );
+ok($step->_add_to_libs( {
+    conf            => $conf,
+    osname          => $osname,
+    cc              => $cc,
+    win32_nongcc    => 'gmp.lib',
+    default         => '-lgmp',
+} ),
+    "_add_to_libs() returned true value");
 like($conf->data->get( 'libs' ), qr/-lgmp/,
     "'libs' modified as expected");
+# Restore value for next test.
+$conf->data->set( 'libs' => $initial_value );
 
 $osname = 'mswin32';
 $cc = 'cc';
-ok(auto::gmp::_handle_mswin32($conf, $osname, $cc),
-    "_handle_mswin32() returned true value");
+ok($step->_add_to_libs( {
+    conf            => $conf,
+    osname          => $osname,
+    cc              => $cc,
+    win32_nongcc    => 'gmp.lib',
+    default         => '-lgmp',
+} ),
+    "_add_to_libs() returned true value");
 like($conf->data->get( 'libs' ), qr/gmp\.lib/,
     "'libs' modified as expected");
+# Restore value for next test.
+$conf->data->set( 'libs' => $initial_value );
 
 $osname = 'foobar';
 $cc = undef;
-ok(auto::gmp::_handle_mswin32($conf, $osname, $cc),
+ok($step->_add_to_libs( {
+    conf            => $conf,
+    osname          => $osname,
+    cc              => $cc,
+    win32_nongcc    => 'gmp.lib',
+    default         => '-lgmp',
+} ),
     "_handle_mswin32() returned true value");
 like($conf->data->get( 'libs' ), qr/-lgmp/,
     "'libs' modified as expected");
+# Restore value for next test.
+$conf->data->set( 'libs' => $initial_value );
 
 my ($flagsbefore, $flagsafter);
 $osname = 'foobar';
Index: t/steps/auto_gettext-02.t
===================================================================
--- t/steps/auto_gettext-02.t   (revision 27185)
+++ t/steps/auto_gettext-02.t   (working copy)
@@ -5,7 +5,7 @@
 
 use strict;
 use warnings;
-use Test::More tests => 18;
+use Test::More tests => 26;
 use Carp;
 use lib qw( lib t/configure/testlib );
 use_ok('config::init::defaults');
@@ -41,6 +41,73 @@
 isa_ok( $step, $step_name );
 ok( $step->description(), "$step_name has description" );
 
+# Mock values for OS and C-compiler
+my ($osname, $cc, $initial_value);
+$osname = 'mswin32';
+$cc = 'gcc';
+$initial_value = $conf->data->get( 'libs' );
+ok($step->_add_to_libs( {
+    conf            => $conf,
+    osname          => $osname,
+    cc              => $cc,
+    win32_gcc       => '-lintl',
+    win32_nongcc    => 'intl.lib',
+    default         => defined $conf->data->get('glibc') ? '' : '-lintl',
+} ),
+    "_add_to_libs() returned true value");
+like($conf->data->get( 'libs' ), qr/-lintl/,
+    "'libs' modified as expected");
+# Restore value for next test.
+$conf->data->set( 'libs' => $initial_value );
+
+$osname = 'mswin32';
+$cc = 'cc';
+ok($step->_add_to_libs( {
+    conf            => $conf,
+    osname          => $osname,
+    cc              => $cc,
+    win32_gcc       => '-lintl',
+    win32_nongcc    => 'intl.lib',
+    default         => defined $conf->data->get('glibc') ? '' : '-lintl',
+} ),
+    "_add_to_libs() returned true value");
+like($conf->data->get( 'libs' ), qr/intl.lib/,
+    "'libs' modified as expected");
+# Restore value for next test.
+$conf->data->set( 'libs' => $initial_value );
+
+$osname = 'foobar';
+$cc = 'cc';
+$conf->data->set( glibc => 1 );
+ok($step->_add_to_libs( {
+    conf            => $conf,
+    osname          => $osname,
+    cc              => $cc,
+    win32_gcc       => '-lintl',
+    win32_nongcc    => 'intl.lib',
+    default         => defined $conf->data->get('glibc') ? '' : '-lintl',
+} ),
+    "_add_to_libs() returned true value");
+unlike($conf->data->get( 'libs' ), qr/-lintl/,
+    "'libs' modified as expected");
+# Restore value for next test.
+$conf->data->set( 'libs' => $initial_value );
+
+$osname = 'foobar';
+$cc = 'cc';
+$conf->data->set( glibc => undef );
+ok($step->_add_to_libs( {
+    conf            => $conf,
+    osname          => $osname,
+    cc              => $cc,
+    win32_gcc       => '-lintl',
+    win32_nongcc    => 'intl.lib',
+    default         => defined $conf->data->get('glibc') ? '' : '-lintl',
+} ),
+    "_add_to_libs() returned true value");
+like($conf->data->get( 'libs' ), qr/-lintl/,
+    "'libs' modified as expected");
+
 my ($test, $verbose);
 my $has_gettext;
 
Index: t/steps/auto_opengl-02.t
===================================================================
--- t/steps/auto_opengl-02.t    (revision 27185)
+++ t/steps/auto_opengl-02.t    (working copy)
@@ -5,7 +5,7 @@
 
 use strict;
 use warnings;
-use Test::More tests => 10;
+use Test::More tests => 18;
 use Carp;
 use lib qw( lib );
 use_ok('config::init::defaults');
@@ -38,6 +38,85 @@
 isa_ok( $step, $step_name );
 ok( $step->description(), "$step_name has description" );
 
+# Mock OS/C-compiler combinations
+my ($osname, $cc, $initial_libs);
+$initial_libs = $conf->data->get('libs');
+$osname = 'mswin32';
+$cc = 'gcc';
+ok($step->_add_to_libs( {
+    conf            => $conf,
+    osname          => $osname,
+    cc              => $cc,
+    win32_gcc       => '-lglut32 -lglu32 -lopengl32',
+    win32_nongcc    => 'glut.lib glu.lib gl.lib',
+    darwin          => '-framework OpenGL -framework GLUT',
+    default         => '-lglut -lGLU -lGL',
+} ),
+   "_add_to_libs() returned true value");
+like($conf->data->get('libs'),
+    qr/-lglut32 -lglu32 -lopengl32/,
+    "'libs' attribute modified as expected");
+# Restore setting for next test
+$conf->data->set( libs => $initial_libs );
+
+$osname = 'mswin32';
+$cc = 'cc';
+$initial_libs = $conf->data->get('libs');
+ok($step->_add_to_libs( {
+    conf            => $conf,
+    osname          => $osname,
+    cc              => $cc,
+    win32_gcc       => '-lglut32 -lglu32 -lopengl32',
+    win32_nongcc    => 'glut.lib glu.lib gl.lib',
+    darwin          => '-framework OpenGL -framework GLUT',
+    default         => '-lglut -lGLU -lGL',
+} ),
+   "_add_to_libs() returned true value");
+like($conf->data->get('libs'),
+    qr/glut.lib glu.lib gl.lib/,
+    "'libs' attribute modified as expected");
+# Restore setting for next test
+$conf->data->set( libs => $initial_libs );
+
+$osname = 'darwin';
+$cc = 'cc';
+$initial_libs = $conf->data->get('libs');
+ok($step->_add_to_libs( {
+    conf            => $conf,
+    osname          => $osname,
+    cc              => $cc,
+    win32_gcc       => '-lglut32 -lglu32 -lopengl32',
+    win32_nongcc    => 'glut.lib glu.lib gl.lib',
+    darwin          => '-framework OpenGL -framework GLUT',
+    default         => '-lglut -lGLU -lGL',
+} ),
+   "_add_to_libs() returned true value");
+like($conf->data->get('libs'),
+    qr/-framework OpenGL -framework GLUT/,
+    "'libs' attribute modified as expected");
+# Restore setting for next test
+$conf->data->set( libs => $initial_libs );
+
+$osname = 'foobar';
+$cc = 'cc';
+$initial_libs = $conf->data->get('libs');
+ok($step->_add_to_libs( {
+    conf            => $conf,
+    osname          => $osname,
+    cc              => $cc,
+    win32_gcc       => '-lglut32 -lglu32 -lopengl32',
+    win32_nongcc    => 'glut.lib glu.lib gl.lib',
+    darwin          => '-framework OpenGL -framework GLUT',
+    default         => '-lglut -lGLU -lGL',
+} ),
+   "_add_to_libs() returned true value");
+like($conf->data->get('libs'),
+    qr/-lglut -lGLU -lGL/,
+    "'libs' attribute modified as expected");
+# Restore setting for next test
+$conf->data->set( libs => $initial_libs );
+
+
 #my $test = qq{4\n};
 #my $has_glut = $step->_evaluate_cc_run($test, undef);
 #is( $has_glut, 4, "Got expected return value for _evaluate_cc_run()." );
Index: config/auto/opengl.pm
===================================================================
--- config/auto/opengl.pm       (revision 27185)
+++ config/auto/opengl.pm       (working copy)
@@ -53,7 +53,15 @@
 
     my $osname = $conf->data->get_p5('OSNAME');
 
-    _handle_mswin32($conf, $osname, $cc);
+    $self->_add_to_libs( {
+        conf            => $conf,
+        osname          => $osname,
+        cc              => $cc,
+        win32_gcc       => '-lglut32 -lglu32 -lopengl32',
+        win32_nongcc    => 'glut.lib glu.lib gl.lib',
+        darwin          => '-framework OpenGL -framework GLUT',
+        default         => '-lglut -lGLU -lGL',
+    } );
 
     # On OS X check the presence of the OpenGL headers in the standard
     # Fink/macports locations.
@@ -76,26 +84,6 @@
     return 1;
 }
 
-sub _handle_mswin32 {
-    my ($conf, $osname, $cc) = @_;
-    # Mindlessly morphed from readline ... may need to be fixed
-    if ( $osname =~ /mswin32/i ) {
-        if ( $cc =~ /^gcc/i ) {
-            $conf->data->add( ' ', libs => '-lglut32 -lglu32 -lopengl32' );
-        }
-        else {
-            $conf->data->add( ' ', libs => 'glut.lib glu.lib gl.lib' );
-        }
-    }
-    elsif ( $osname =~ /darwin/i ) {
-        $conf->data->add( ' ', libs => '-framework OpenGL -framework GLUT' );
-    }
-    else {
-        $conf->data->add( ' ', libs => '-lglut -lGLU -lGL' );
-    }
-    return 1;
-}
-
 sub _evaluate_cc_run {
     my ($self, $test, $verbose) = @_;
     my ($glut_api_version, $glut_brand) = split ' ', $test;
Index: config/auto/gettext.pm
===================================================================
--- config/auto/gettext.pm      (revision 27185)
+++ config/auto/gettext.pm      (working copy)
@@ -57,7 +57,14 @@
 
     my $osname = $conf->data->get_p5('OSNAME');
 
-    _handle_mswin32($conf, $osname, $cc);
+    $self->_add_to_libs( {
+        conf            => $conf,
+        osname          => $osname,
+        cc              => $cc,
+        win32_gcc       => '-lintl',
+        win32_nongcc    => 'intl.lib',
+        default         => defined $conf->data->get('glibc') ? '' : '-lintl',
+    } );
 
     # On OS X check the presence of the gettext header in the standard
     # Fink location.
@@ -82,24 +89,6 @@
     return 1;
 }
 
-sub _handle_mswin32 {
-    my ($conf, $osname, $cc) = @_;
-    if ( $osname =~ /mswin32/i ) {
-        if ( $cc =~ /^gcc/i ) {
-            $conf->data->add( ' ', libs => '-lintl' );
-        }
-        else {
-            $conf->data->add( ' ', libs => 'intl.lib' );
-        }
-    }
-    else {
-        # don't need to link with libintl if we have GNU libc
-        my $linklibs = defined $conf->data->get('glibc') ? '' : '-lintl';
-        $conf->data->add( ' ', libs => $linklibs );
-    }
-    return 1;
-}
-
 sub _evaluate_cc_run {
     my $self = shift;
     my ($test, $verbose) = @_;
Index: config/auto/gmp.pm
===================================================================
--- config/auto/gmp.pm  (revision 27185)
+++ config/auto/gmp.pm  (working copy)
@@ -63,7 +63,13 @@
 
     my $osname    = $conf->data->get_p5('OSNAME');
 
-    _handle_mswin32($conf, $osname, $cc);
+    $self->_add_to_libs( {
+        conf            => $conf,
+        osname          => $osname,
+        cc              => $cc,
+        win32_nongcc    => 'gmp.lib',
+        default         => '-lgmp',
+    } );
 
     # On OS X check the presence of the gmp header in the standard
     # Fink location.
@@ -85,22 +91,6 @@
     return 1;
 }
 
-sub _handle_mswin32 {
-    my ($conf, $osname, $cc) = @_;
-    if ( $osname =~ /mswin32/i ) {
-        if ( $cc =~ /^gcc/i ) {
-            $conf->data->add( ' ', libs => '-lgmp' );
-        }
-        else {
-            $conf->data->add( ' ', libs => 'gmp.lib' );
-        }
-    }
-    else {
-        $conf->data->add( ' ', libs => '-lgmp' );
-    }
-    return 1;
-}
-
 sub _evaluate_cc_run {
     my ($self, $conf, $test, $has_gmp, $verbose) = @_;
     if ( $test eq $self->{cc_run_expected} ) {
Index: config/auto/crypto.pm
===================================================================
--- config/auto/crypto.pm       (revision 27185)
+++ config/auto/crypto.pm       (working copy)
@@ -52,7 +52,13 @@
 
     my $osname = $conf->data->get_p5('OSNAME');
 
-    _handle_mswin32($conf, $osname, $cc);
+    $self->_add_to_libs( {
+        conf            => $conf,
+        osname          => $osname,
+        cc              => $cc,
+        win32_nongcc    => 'libcrypto.lib',
+        default         => '-lcrypto',
+    } );
 
     $conf->cc_gen('config/auto/crypto/crypto.in');
     eval { $conf->cc_build(); };
@@ -70,22 +76,6 @@
     return 1;
 }
 
-sub _handle_mswin32 {
-    my ($conf, $osname, $cc) = @_;
-    if ( $osname =~ /mswin32/i ) {
-        if ( $cc =~ /^gcc/i ) {
-            $conf->data->add( ' ', libs => '-lcrypto' );
-        }
-        else {
-            $conf->data->add( ' ', libs => 'libcrypto.lib' );
-        }
-    }
-    else {
-        $conf->data->add( ' ', libs => '-lcrypto' );
-    }
-    return 1;
-}
-
 sub _evaluate_cc_run {
     my $self = shift;
     my ($conf, $test, $has_crypto, $verbose) = @_;
Index: config/auto/readline.pm
===================================================================
--- config/auto/readline.pm     (revision 27185)
+++ config/auto/readline.pm     (working copy)
@@ -45,7 +45,13 @@
 
     my $osname = $conf->data->get_p5('OSNAME');
 
-    _handle_mswin32($conf, $osname, $cc);
+    $self->_add_to_libs( {
+        conf            => $conf,
+        osname          => $osname,
+        cc              => $cc,
+        win32_nongcc    => 'readline.lib',
+        default         => '-lreadline',
+    } );
 
     # On OS X check the presence of the readline header in the standard
     # Fink/macports locations.
@@ -79,22 +85,6 @@
     return 1;
 }
 
-sub _handle_mswin32 {
-    my ($conf, $osname, $cc) = @_;
-    if ( $osname =~ /mswin32/i ) {
-        if ( $cc =~ /^gcc/i ) {
-            $conf->data->add( ' ', libs => '-lreadline' );
-        }
-        else {
-            $conf->data->add( ' ', libs => 'readline.lib' );
-        }
-    }
-    else {
-        $conf->data->add( ' ', libs => '-lreadline' );
-    }
-    return 1;
-}
-
 sub _handle_ncurses_need {
     my ($conf, $osname, $cc) = @_;
     if ( $osname =~ /mswin32/i ) {

Reply via email to