From: Kenta Murata Date: 2010-02-15T13:36:10+09:00 Subject: [ruby-dev:40418] [Feature #2746] ビルドする拡張ライブラリを configure 時に指定するための --with-exts オプション Feature #2746: ビルドする拡張ライブラリを configure 時に指定するための --with-exts オプション http://redmine.ruby-lang.org/issues/show/2746 起票者: Kenta Murata ステータス: Open, 優先度: Normal カテゴリ: build, Target version: 1.9.x 現在 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, ---------------------------------------- http://redmine.ruby-lang.org