Project

General

Profile

Feature #2746

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

Added by mrkn (Kenta Murata) over 10 years ago. Updated about 9 years ago.

Status:
Closed
Priority:
Normal
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

Also available in: Atom PDF