Bugs item #10140, was opened at 2007-04-16 17:32
You can respond by visiting: 
http://rubyforge.org/tracker/?func=detail&atid=1698&aid=10140&group_id=426

Category: Core
Group: 1.8.6
Status: Open
Resolution: None
Priority: 3
Submitted By: Michal Suchanek (hramrach)
Assigned to: Nobody (None)
Summary: Cannot build with extra library path if previous version already installed

Initial Comment:
I tried building with LDFLAGS=-L/sw/lib which is the standard way to build a package with libraries outside of system library locations.

There is apparently already a libruby_static in there because the build has failed on an undefined symbol which was defined in ./libruby_static.a

I modified the Makefile so that it puts XLDFLAGS before LDFLAGS. That way I get -L. -L/sw/lib and the build works. However, if XLDFLAGS contained some linker options meant to override options in LDFLAGS it would not work this way.

----------------------------------------------------------------------

>Comment By: Michal Suchanek (hramrach)
Date: 2007-04-23 10:39

Message:
Thanks to Nobu Nakada for patches should fix this particular
problem:

Index: configure.in
===================================================================
--- configure.in        (revision 12175)
+++ configure.in        (working copy)
@@ -150,4 +150,9 @@ fi
 AC_PROG_CC
 AC_PROG_GCC_TRADITIONAL
+if test "$GCC" = yes; then
+    linker_flag=-Wl,
+else
+    linker_flag=
+fi

 RUBY_PROG_GNU_LD
@@ -1392,12 +1397,8 @@ if test "$enable_shared" = 'yes'; then
 fi
 if test "$enable_rpath" = yes; then
-    if test "$GCC" = yes; then
-       LIBRUBYARG_SHARED='-Wl,-R -Wl,$(libdir) -L$(libdir)
-L. '"$LIBRUBYARG_SHARED"
-    else
-       LIBRUBYARG_SHARED='-R $(libdir) -L$(libdir) -L.
'"$LIBRUBYARG_SHARED"
-    fi
+    LIBRUBYARG_SHARED="${linker_flag}-R
${linker_flag}\ -L. -L\ $LIBRUBYARG_SHARED"
 fi

-XLDFLAGS="$XLDFLAGS -L."
+LDFLAGS="-L. $LDFLAGS"
 AC_SUBST(ARCHFILE)


Index: lib/mkmf.rb
===================================================================
--- lib/mkmf.rb (revision 12191)
+++ lib/mkmf.rb (working copy)
@@ -292,5 +292,10 @@ end
 def libpathflag(libpath=$DEFLIBPATH|$LIBPATH)
  libpath.map{|x|
-    (x == "$(topdir)" ? LIBPATHFLAG :
LIBPATHFLAG+RPATHFLAG) % x.quote
+    case x
+    when "$(topdir)", /\A\./
+      LIBPATHFLAG
+    else
+      LIBPATHFLAG+RPATHFLAG
+    end % x.quote
  }.join
 end
@@ -1444,4 +1449,5 @@ def init_mkmf(config = CONFIG)
  $LIBRUBYARG_SHARED = config['LIBRUBYARG_SHARED']
  $DEFLIBPATH = $extmk ? ["$(topdir)"] : CROSS_COMPILING ?
[] : ["$(libdir)"]
+  $DEFLIBPATH.unshift(".")
  $LIBPATH = []
  $INSTALLFILES = nil
@@ -1535,6 +1541,6 @@ LINK_SO = config_string('LINK_SO') ||
    "ld $(DLDFLAGS) -r -o $@ $(OBJS)\n"
  else
-    "$(LDSHARED) $(DLDFLAGS) $(LIBPATH) #{OUTFLAG}$@ " \
-    "$(OBJS) $(LOCAL_LIBS) $(LIBS)"
+    "$(LDSHARED) #{OUTFLAG}$@ $(OBJS) " \
+    "$(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)"
  end
 LIBPATHFLAG = config_string('LIBPATHFLAG') || ' -L"%s"'


While testing these I found other problems that are not
related to using -L in LDFLAGS so I will file separate
reports for those.

----------------------------------------------------------------------

You can respond by visiting: 
http://rubyforge.org/tracker/?func=detail&atid=1698&aid=10140&group_id=426