Project

General

Profile

Actions

Feature #2746

closed

ビルドする拡張ライブラリを configure 時に指定するための --with-exts オプション

Added by mrkn (Kenta Murata) almost 15 years ago. Updated over 13 years ago.

Status:
Closed
Assignee:
-
Target version:
[ruby-dev:40418]

Description

=begin
現在 make に対して EXTS 変数を指定することでビルドする拡張ライブラリを限定できます。
この方法では make の度に拡張ライブラリのリストを指定しなければならず、
例えば dbm, gdbm, sdbm, tk 以外をビルドしたい場合は
除外するライブラリ以外を列挙する必要があり不便です。

この状況を改善するために、configure.in に --with-exts オプションを追加する以下のパッチを提案します。
--with-exts オプションは以下のように使用します。

(1) すべての拡張ライブラリをビルドする事を明示する場合は、
何も指定しないか --with-exts を値なしで指定する。

(2) ビルドする拡張ライブラリのリストを = の後に指定する。
例: bigdecimal, fiber, openssl, socket, zlib のみをビルドする場合は
--with-exts=bigdecimal,fiber,openssl,socket,zlib

(3) ビルドしない拡張ライブラリのリストを =- の後に指定する。
例: dbm, gdbm, sdbm, tk,win32ole 以外をビルドする場合は
--with-exts=-dbm,gdbm,sdbm,tk,win32ole

(4) すべての拡張ライブラリをビルドしない場合は
--without-exts を指定する。

従来のように make に対して EXTS 変数を指定する方法は
上記 (1-3) の場合において有効になります。

diff --git a/Makefile.in b/Makefile.in
index a4848d8..b5afa68 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -96,6 +96,8 @@ THREAD_MODEL = @THREAD_MODEL@
PREP = @PREP@
ARCHFILE = @ARCHFILE@
SETUP =
+EXTS = @EXTS@
+EXTMK_EXTENSION = @EXTMK_EXTENSION@
EXTSTATIC = @EXTSTATIC@
SET_LC_MESSAGES = env LC_MESSAGES=C

diff --git a/common.mk b/common.mk
index 74f9ff7..b74eb65 100644
--- a/common.mk
+++ b/common.mk
@@ -103,7 +103,7 @@ SCRIPT_ARGS = --dest-dir="$(DESTDIR)"
--extout="$(EXTOUT)"
--mflags="$(MFLAGS)"
--make-flags="$(MAKEFLAGS)"
-EXTMK_ARGS = $(SCRIPT_ARGS) --extension $(EXTS) --extstatic $(EXTSTATIC)
+EXTMK_ARGS = $(SCRIPT_ARGS) $(EXTMK_EXTENSION) --extstatic $(EXTSTATIC)
--make-flags="MINIRUBY='$(MINIRUBY)'" --
INSTRUBY = $(MINIRUBY) $(srcdir)/tool/rbinstall.rb
INSTRUBY_ARGS = $(SCRIPT_ARGS)
diff --git a/configure.in b/configure.in
index d65f481..e3c7f23 100644
--- a/configure.in
+++ b/configure.in
@@ -1918,6 +1918,40 @@ AS_CASE(["$target_os"],
[nextstep* | openstep* | rhapsody* | darwin*], [
STRIP='strip -A -n'])

+EXTS=
+AC_SUBST(EXTS)dnl
+EXTMK_EXTENSION="--extension $(EXTS)"
+AC_SUBST(EXTMK_EXTENSION)
+AC_ARG_WITH(exts,

  •        AS_HELP_STRING([--with-exts=EXTS],
    
  •                       [build with external modules;
    
  •                        if you specify the name list leading minus sign,
    
  •                        the modules is not builded]),
    
  •        [exts="$withval"], [unset exts])
    

+AC_MSG_CHECKING([builded extensions])
+if test x"$exts" = x -o x"$exts" = xno; then

  • EXTMK_EXTENSION=--no-extension
  • AC_MSG_RESULT([no])
    +elif test x"$exts" = xyes; then
  • AC_MSG_RESULT([all])
    +else
  • if echo "$exts" | grep -q ^- 2>/dev/null; then
  • for name in ls -1 ${srcdir}/ext; do
  •  if test -f ${srcdir}/ext/${name}/extconf.rb; then
    
  •    echo $exts | grep -q $name 2>/dev/null || \
    
  •      EXTS=${EXTS},${name}
    
  •  fi
    
  • done
  • else
  • exts=echo $exts | tr , ' '
  • for name in $exts; do
  •  test -f ${srcdir}/ext/${name}/extconf.rb && EXTS=${EXTS},${name}
    
  • done
  • fi
  • EXTS=echo $EXTS | sed -e 's/^,//'
  • AC_MSG_RESULT([$EXTS])
    +fi

EXTSTATIC=
AC_SUBST(EXTSTATIC)dnl
AC_ARG_WITH(static-linked-ext,
=end

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0