--- Makefile.PL.orig	2012-09-26 16:40:42.922821617 +0200
+++ Makefile.PL	2012-10-02 02:51:26.400659861 +0200
@@ -22,7 +22,22 @@
 use Config;
 use Getopt::Long;
 use 5.007; use 5.7.0;		# use version 1.09 for older Perl
-my ($defs, $libs, $lddflags, $RLLIB, $RLINC);
+my ($defs, $lddflags, %config);
+
+{
+    $config{LIBS} = '';
+    $config{INC}  = '';
+
+    my $i = 0;
+    while ($i <= $#ARGV) {
+        my ($key, $val) = split(/=/, $ARGV[$i], 2);
+        $config{$key} = $val;       
+        if ($key eq 'LIBS' || $key eq 'INC') {
+            delete $ARGV[$i];
+        }
+        $i++;
+    }
+}
 
 # exit 0 before creating the Makefile to be CPAN Testers friendly
 # see http://wiki.cpantester.org/wiki/CPANAuthorNotes
@@ -36,20 +51,23 @@
 $defs = ($Config{strings} =~ m|/string.h$|) ? '-DHAVE_STRING_H' : '';
 
 # Parse command line to specify paths for the GNU Readline Library
+# (if they have not already been included within LIBS or INC)
 {
     my ($prefix, $libdir, $incdir);
     GetOptions("prefix=s" => \$prefix,
 	       "libdir=s" => \$libdir,
 	       "includedir=s" => \$incdir);
-    $RLLIB = defined $libdir
+    my $RLLIB = defined $libdir
 	? "-L$libdir" : (defined $prefix ? "-L$prefix/lib" : '');
-    $RLINC = defined $incdir
+    my $RLINC = defined $incdir
 	? "-I$incdir" : (defined $prefix ? "-I$prefix/include" : '');
+    $config{LIBS} .= " $RLLIB";
+    $config{INC}  .= " $RLINC";
 }
 
 if ($Config{osname} eq 'os2') {
     # Check ftp://ftp.math.ohio-state.edu/pub/users/ilya/os2/
-    $libs = '-lreadline_import';
+    $config{LIBS} .= ' -lreadline_import';
     $defs .= ' -DOS2_USEDLL';
     $lddflags = '';
 } else {
@@ -60,18 +78,27 @@
     # Old Cygwin may require setting false (0).
     my $PREFER_CURSES = $Config{osname} eq 'aix' || $Config{osname} eq 'hpux'
 			|| $Config{osname} eq 'cygwin';
-    my $TERMCAP_LIB = (! $PREFER_CURSES && &search_lib('-ltermcap'))
-	|| &search_lib('-lncurses')
-	    || &search_lib('-lcurses');
+    my @lib_dirs = ();
+    # Turn -L<path> parameters into a list of <path>s
+    {
+        foreach my $libopt (split(' ',$config{LIBS})) {
+            if ($libopt =~ m#^-L(.*)$#) {
+                push @lib_dirs, $1;
+            }
+        }
+    }
+    my $TERMCAP_LIB = (! $PREFER_CURSES && &search_lib('-ltermcap', \@lib_dirs))
+	|| &search_lib('-lncurses', \@lib_dirs)
+	    || &search_lib('-lcurses', \@lib_dirs);
 
     unless ($TERMCAP_LIB) {
 	warn "Could not find neither libtermcap.a, libncurses.a, or libcurses.\n";
 	exit $err;
     } 
  
-    $libs = "-lreadline $TERMCAP_LIB";
+    $config{LIBS} .= " -lreadline $TERMCAP_LIB";
     # Latest Perl in FreeBSD does not need this hack. (Dec.2002)
-    $libs .= ' -lcrypt' if ($Config{osname} =~ /freebsd/i);
+    $config{LIBS} .= ' -lcrypt' if ($Config{osname} =~ /freebsd/i);
     $lddflags = '';
     # If you are using old Cygwin, enable the following line.
     #$lddflags = ($Config{osname} =~ /cygwin/i) ? '-static' : '';
@@ -80,7 +107,7 @@
 # Check version of  GNU Readline Library (for version 4.2 and before)
 {
     my ($rlmajorver, $rlminorver) =
-	check_readline_version($RLINC, $RLLIB, $defs, $lddflags, $libs);
+	check_readline_version($defs, $lddflags, \%config);
 
     if ($rlmajorver < 4 || $rlmajorver == 4 && $rlminorver <= 2) {
 	$defs .= " -DRL_READLINE_VERSION=" .
@@ -95,15 +122,15 @@
     (
      NAME	  => 'Term::ReadLine::Gnu',
      VERSION_FROM => 'Gnu.pm',
-     LIBS	  => [ "$RLLIB $libs" ],
-     LDDLFLAGS	  => "$RLLIB $Config{lddlflags}",
+     LIBS	  => $config{LIBS},
+     LDDLFLAGS	  => $Config{lddlflags},
      dynamic_lib  => { OTHERLDFLAGS => $lddflags },
      DEFINE	  => $defs,
      ($Config{osname} eq 'os2' ?
       (
        IMPORTS	  => { xfree => 'emxlibcm.401' }, # Yuck!
       ) : () ),
-     INC	  => $RLINC,
+     INC	  => $config{INC},
      dist	  => { COMPRESS => 'gzip -9f', SUFFIX => 'gz' },
      clean	  => { FILES => "rlver.c rlver$Config{_exe}" },
 );
@@ -122,20 +149,20 @@
 exit(0);
 
 ########################################################################
-# Search a library '$lib' in $Config{libpth} directories, and return
+# Search a library '$lib' in the given directories (listref), and return
 # $lib if exist or undef unless exist.
 
 # ExtUtils::Liblist::ext() do similar job as this subroutine, but it
 # warns unnecessary messages.
 sub search_lib {
-    my ($lib) = @_;
+    my ($lib, $lib_dirs) = @_;
     unless ($lib =~ /^-l/) {
 	warn "search_lib: illegal arguments, \`$lib\'.\n";
 	return undef;
     }
     my $libbase = 'lib' . substr($lib, 2) . $Config{lib_ext};
     my $libbase_so = 'lib' . substr($lib, 2) . "." . $Config{so};
-    foreach (split(' ', $Config{libpth})) {
+    foreach (split(' ', $Config{libpth}), @$lib_dirs) {
 	if (-f $_ . '/' . $libbase) {
 #	    print "$_/$libbase\n";
 	    print "Found \`$_/$libbase\'.\n";
@@ -158,7 +185,7 @@
 #	RL_VERSION_MINOR
 # Someday we don't need this subroutine..
 sub check_readline_version {
-    my ($RLINC, $RLLIB, $defs, $lddflags, $libs) = @_;
+    my ($defs, $lddflags, $config) = @_;
     my $frlver = 'rlver.c';
 
     # make temp file
@@ -172,7 +199,7 @@
     close(F);
 
     # compile it
-    my $comp_cmd = "$Config{cc} $RLINC $Config{ccflags} $defs $frlver -o rlver $RLLIB $lddflags $Config{ldflags} $libs";
+    my $comp_cmd = "$Config{cc} $config->{INC} $Config{ccflags} $defs $frlver -o rlver $lddflags $Config{ldflags} $config->{LIBS}";
     print $comp_cmd, "\n";
     system($comp_cmd);
     if ($?) {
