Feature #2746
closedビルドする拡張ライブラリを configure 時に指定するための --with-exts オプション
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