Index: configure.in
===================================================================
RCS file: /cvs/ruby/src/ruby/configure.in,v
retrieving revision 1.270
diff -U2 -p -r1.270 configure.in
--- configure.in	2 Apr 2005 13:30:15 -0000	1.270
+++ configure.in	6 Apr 2005 16:39:48 -0000
@@ -148,4 +148,5 @@ if test x"${build}" != x"${host}"; then
 fi
 AC_PROG_CC
+AC_PROG_CXX
 AC_PROG_GCC_TRADITIONAL
 
@@ -788,4 +789,5 @@ AC_SUBST(STATIC)dnl
 AC_SUBST(CCDLFLAGS)dnl
 AC_SUBST(LDSHARED)dnl
+AC_SUBST(LDSHAREDXX)dnl
 AC_SUBST(DLEXT)dnl
 AC_SUBST(DLEXT2)dnl
@@ -939,4 +941,20 @@ if test "$with_dln_a_out" != yes; then
   fi
 fi
+if test "${LDSHAREDXX}" = ""; then
+    case "${LDSHARED}" in
+	*'$(CC)'*)
+	    LDSHAREDXX=`echo "${LDSHARED}" | sed 's/\$(CC)/$(CXX)/'`
+	    ;;
+	*'${CC}'*)
+	    LDSHAREDXX=`echo "${LDSHARED}" | sed 's/\${CC}/${CXX}/'`
+	    ;;
+	*$CC*)
+	    LDSHAREDXX=`echo "${LDSHARED}" | sed "s|$CC|$CXX|"`
+	    ;;
+	ld" "*)
+	    ;;
+    esac
+fi
+
 AC_SUBST(LINK_SO)
 AC_SUBST(LIBPATHFLAG)
Index: lib/mkmf.rb
===================================================================
RCS file: /cvs/ruby/src/ruby/lib/mkmf.rb,v
retrieving revision 1.214
diff -U2 -p -r1.214 mkmf.rb
--- lib/mkmf.rb	2 Apr 2005 14:39:07 -0000	1.214
+++ lib/mkmf.rb	6 Apr 2005 16:19:16 -0000
@@ -9,8 +9,9 @@ CONFIG = Config::MAKEFILE_CONFIG
 ORIG_LIBPATH = ENV['LIB']
 
-SRC_EXT = %w[c cc m cxx cpp]
+CXX_EXT = %w[cc cxx cpp]
 if /mswin|bccwin|mingw|msdosdjgpp|human|os2/ !~ CONFIG['build_os']
-  SRC_EXT.concat(%w[C])
+  CXX_EXT.concat(%w[C])
 end
+SRC_EXT = %w[c] << CXX_EXT
 $static = $config_h = nil
 
@@ -877,4 +878,5 @@ CXXFLAGS = $(CFLAGS) #{CONFIG['CXXFLAGS'
 DLDFLAGS = #$LDFLAGS #$DLDFLAGS #$ARCH_FLAG
 LDSHARED = #{CONFIG['LDSHARED']}
+LDSHAREDXX = #{config_string('LDSHAREDXX') || '$(LDSHARED)'}
 AR = #{CONFIG['AR']}
 EXEEXT = #{CONFIG['EXEEXT']}
@@ -1059,5 +1061,5 @@ site-install-rb: install-rb
   mfile.print "\n"
 
-  %w[cc cpp cxx C].each do |ext|
+  CXX_EXT.each do |ext|
     COMPILE_RULES.each do |rule|
       mfile.printf(rule, ext, $OBJEXT)
@@ -1076,5 +1078,9 @@ site-install-rb: install-rb
   mfile.print "@-$(RM) $@\n\t"
   mfile.print "@-$(MAKEDIRS) $(@D)\n\t" if $extout
-  mfile.print LINK_SO, "\n\n"
+  link_so = LINK_SO
+  if srcs.any?(&%r"\.(?:#{CXX_EXT.join('|')})\z".method(:===))
+    link_so = link_so.sub(/\bLDSHARED\b/, '\&XX')
+  end
+  mfile.print link_so, "\n\n"
   unless $static.nil?
     mfile.print "$(STATIC_LIB): $(OBJS)\n\t"
