[#18440] racc segv revisited — "Akinori MUSHA" <knu@...>

 次のバグの件なんですが、現時点では原因究明を含めて未解決という

24 messages 2002/10/02
[#18617] Re: racc segv revisited — "Akinori MUSHA" <knu@...> 2002/11/02

At Wed, 2 Oct 2002 23:19:59 +0900,

[ruby-dev:18542] ruby.m4

From: Kenta MURATA <muraken2@...>
Date: 2002-10-19 18:33:55 UTC
List: ruby-dev #18542
むらけんです.

configure.in で ruby の存在を検証するための m4 マクロ定義を書
きました.使い方は,いたって一般的で

  AM_CHECK_RUBY(1.6.4, [...], [...])

というやつです.これで,ruby が見付からない場合はエラーを吐き
ます.見付かった場合は,次の make 変数を定義します (カッコ内は
変数の中身の元).

  ruby_libdir       (Config::CONFIG['rubylibdir'])

  ruby_archdir      (Config::CONFIG['archdir'])

  ruby_sitelibdir   (Config::CONFIG['sitelibdir'])

  ruby_sitearchdir  (Config::CONFIG['sitearchdir'])

  RUBY_CFLAGS       (Config::CONFIG['CCDLFLAGS'] と
                     Config::CONFIG['CFLAGS'] と
                     "-I$(ruby_archdir)" の結合)

  RUBY_LIBS         (Config::CONFIG['LDFLAGS'] と
                     Config::CONFIG['DLDFLAGS'] の結合)

  RUBY_DLEXT        (Config::CONFIG['DLEXT'])

  RUBY_LDSHARED     (Config::CONFIG['LDSHARED'])

よかったら使ってください.

-- 
1024D/2A3FDBE6 2001-08-26 Kenta MURATA (MURAKEN) <muraken2@nifty.com>
Key fingerprint = 622A 61D3 280F 4991 4833  5724 8E2D C5E1 2A3F DBE6


Attachments (1)

ruby.m4 (2.88 KB, text/plain)
# Configure check for Ruby
# Kenta MURATA <muraken2@nifty.com>

dnl AM_CHECK_RUBY([MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
dnl Test for Ruby, and define RUBY_CFLAGS, RUBY_LIBS, RUBY_LDSHARED, RUBY_DLEXT,
dnl ruby_libdir, ruby_archdir, ruby_sitelibdir and ruby_sitearchdir
dnl
AC_DEFUN(AM_CHECK_RUBY,
[dnl
dnl Get the cflags and libraries from the rbconfig.rb
dnl

  save_CFLAGS=$CFLAGS
  save_LIBS=$LIBS

  AC_PATH_PROG(RUBY, ruby, no)
  if test "$RUBY" = "no"; then
    AC_MSG_ERROR([*** ruby is not found.])
  fi

  minimum_version=ifelse([$1], ,1.4.4, $1)
  AC_MSG_CHECKING([for Ruby - version >= $minimum_version])
  ruby_major_version=`$RUBY -e "print RUBY_VERSION.split('.')[[0]]"`
  ruby_minor_version=`$RUBY -e "print RUBY_VERSION.split('.')[[1]]"`
  ruby_micro_version=`$RUBY -e "print RUBY_VERSION.split('.')[[2]]"`
  if `$RUBY -e "
      major_version = RUBY_VERSION.split('.')[[0]].to_i
      minor_version = RUBY_VERSION.split('.')[[1]].to_i
      micro_version = RUBY_VERSION.split('.')[[2]].to_i
      min_major_version = '$minimum_version'.split('.')[[0]].to_i
      min_minor_version = '$minimum_version'.split('.')[[1]].to_i
      min_micro_version = '$minimum_version'.split('.')[[2]].to_i
      if ((major_version > min_major_version) ||
          ((major_version == min_major_version) &&
           (minor_version > min_minor_version)) ||
          ((major_version == min_major_version) &&
           (minor_version == min_minor_version) &&
           (micro_version > min_micro_version))) then
        exit 1
      end
      exit 0"`; then
    AC_MSG_RESULT([no])
    AC_MSG_ERROR([*** Ruby version is smaller.])
  fi
  AC_MSG_RESULT([yes])

  ruby_libdir=`$RUBY -r rbconfig -e "puts Config::CONFIG[['rubylibdir']]"`
  ruby_archdir=`$RUBY -r rbconfig -e "puts Config::CONFIG[['archdir']]"`
  ruby_sitelibdir=`$RUBY -r rbconfig -e "puts Config::CONFIG[['sitelibdir']]"`
  ruby_sitearchdir=`$RUBY -r rbconfig -e "puts Config::CONFIG[['sitearchdir']]"`

  CFLAGS=`$RUBY -r rbconfig -e "puts Config::CONFIG[['CCDLFLAGS']]"`
  RUBY_CFLAGS="$RUBY_CFLAGS $CFLAGS"
  CFLAGS=`$RUBY -r rbconfig -e "puts Config::CONFIG[['CFLAGS']]"`
  RUBY_CFLAGS="$RUBY_CFLAGS $CFLAGS"
  if test -e "$ruby_archdir/ruby.h"; then
    RUBY_CFLAGS="$RUBY_CFLAGS -I\$(ruby_archdir)";
  else
    AC_MSG_ERROR([*** can't find header files for ruby.])
  fi
  RUBY_LDSHARED=`$RUBY -r rbconfig -e "puts Config::CONFIG[['LDSHARED']]"`
  LIBS=`$RUBY -r rbconfig -e "puts Config::CONFIG[['LDFLAGS']]"`
  RUBY_LIBS="$RUBY_LIBS $LIBS"
  LIBS=`$RUBY -r rbconfig -e "puts Config::CONFIG[['DLDFLAGS']]"`
  RUBY_LIBS="$RUBY_LIBS $LIBS"
  RUBY_DLEXT=`$RUBY -r rbconfig -e "puts Config::CONFIG[['DLEXT']]"`

  CLFAGS=$save_CFLAGS
  LIBS=$save_LIBS

  AC_SUBST(RUBY_CFLAGS)
  AC_SUBST(RUBY_LIBS)
  AC_SUBST(RUBY_DLEXT)
  AC_SUBST(RUBY_LDSHARED)
  AC_SUBST(ruby_libdir)
  AC_SUBST(ruby_archdir)
  AC_SUBST(ruby_sitelibdir)
  AC_SUBST(ruby_sitearchdir)
])

In This Thread

Prev Next