	* configure.in (RUBY_TRY_CFLAGS): check whether given flags
	  are valid for CC.

	* configure.in (aix): add -brtl to DLDFLAGS and LDFLAGS only
	  if it is supported.

	* configure.in (bsdi): use LIBPATHFLAG.

Index: configure.in
===================================================================
RCS file: /cvs/ruby/src/ruby/configure.in,v
retrieving revision 1.179
diff -u -2 -p -r1.179 configure.in
--- configure.in	11 Jul 2003 13:37:22 -0000	1.179
+++ configure.in	17 Jul 2003 14:36:33 -0000
@@ -197,4 +198,22 @@ AC_CHECK_SIZEOF(float, 4)
 AC_CHECK_SIZEOF(double, 8)
 
+AC_DEFUN(RUBY_TRY_CFLAGS,
+[{
+cflags_ok=
+if test "${CFLAGS+set}"; then
+  save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS [$1]"
+else
+  unset save_CFLAGS; CFLAGS="[$1]"
+fi
+AC_TRY_COMPILE([], [], [cflags_ok=yes], [cflags_ok=no])
+if test "${save_CFLAGS+set}"; then
+  CFLAGS="$save_CFLAGS"
+  unset save_CFLAGS
+else
+  unset CFLAGS
+fi
+test $cflags_ok = yes
+}])
+
 AC_CACHE_CHECK(for prototypes, rb_cv_have_prototypes,
   [AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],
@@ -807,5 +852,6 @@ if test "$with_dln_a_out" != yes; then
 			esac ;;
 	bsdi*)		LDSHARED="ld -shared"
-			LDFLAGS='-rdynamic -Wl,-rpath,$(libdir)/ruby/$(MAJOR).$(MINOR)/i386-bsdi4.0'
+			LDFLAGS='-rdynamic'
+			LIBPATHFLAG=' -L%1$-s -rpath %1$-s'
 			rb_cv_dlopen=yes ;;
 	nextstep*)	LDSHARED='cc -r -nostdlib'
@@ -827,6 +873,9 @@ if test "$with_dln_a_out" != yes; then
 	aix*)		LDSHARED='/usr/ccs/bin/ld'
 			XLDFLAGS='-Wl,-bE:ruby.imp'
-			DLDFLAGS='-brtl -eInit_$(TARGET) -bI:$(topdir)/ruby.imp -bM:SRE -T512 -H512 -lc'
-			LDFLAGS="-brtl"
+			if RUBY_TRY_CFLAGS(-brtl); then
+			    DLDFLAGS='-brtl'
+			    LDFLAGS="$DLDFLAGS"
+			fi
+			DLDFLAGS="$DLDFLAGS"' -eInit_$(TARGET) -bI:$(topdir)/ruby.imp -bM:SRE -T512 -H512 -lc'
 			ARCHFILE="ruby.imp"
 			rb_cv_dlopen=yes ;;
