On 4/19/07, Nobuyoshi Nakada <nobu / ruby-lang.org> wrote:> Hi,>> At Wed, 18 Apr 2007 20:21:44 +0900,> Michal Suchanek wrote in [ruby-core:10960]:> > Yes. And this should also apply to extensions. The mkmf tests are now> > fine but the extension is linked with -L/sw/lib before -L../..>> Indeed.>>> Index: configure.in> ===================================================================> --- configure.in        (revision 12191)> +++ configure.in        (working copy)> @@ -1385,5 +1385,4 @@ if test "$enable_rpath" = yes; then>  fi>> -LDFLAGS="-L. $LDFLAGS">  AC_SUBST(ARCHFILE)>This would break the previous fix so I did not even try to apply this ^
> 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"'> 
This part looks good and it allows building ruby as long as the binaryextension dir is different. However, after changing config.guess toreport the same platform as the previous build I can no longer buildruby. Apparently the dl extension uses the etc extension in some way,I tried to rename ect to 0etc so that it is built first, and add-I$(extout) to the miniruby command line but it still does not work: compiling dlGenerating callback.func../../miniruby -I'../..' -I'../.././lib' -I../../.ext../.././ext/dl/mkcallback.rb > callback.func/sw/lib/ruby/1.8/i686-darwin/etc.bundle: [BUG] Bus Errorruby 1.8.6 (2007-03-13) [i686-darwin] Thanks Michal