From: Akinori MUSHA Date: 2010-02-16T15:48:37+09:00 Subject: [ruby-dev:40434] Re: [Feature #2746] ビルドする拡張ライブラリを configure 時に指定するための --with-exts オプション --pgp-sign-Multipart_Tue_Feb_16_15:40:04_2010-1 Content-Type: text/plain; charset=ISO-2022-JP At Tue, 16 Feb 2010 12:05:49 +0900, Kenta Murata wrote: > > こんにちは、なかむら(う)です。 > > > > In message "[ruby-dev:40418] [Feature #2746] ビルドする拡張ライブラリを configure 時に指定するための --with-exts オプション" > > on Feb.15,2010 13:36:10, wrote: > >> 現在 make に対して EXTS 変数を指定することでビルドする拡張ライブラリを限定できます。 > >> この方法では make の度に拡張ライブラリのリストを指定しなければならず、 > >> 例えば dbm, gdbm, sdbm, tk 以外をビルドしたい場合は > >> 除外するライブラリ以外を列挙する必要があり不便です。 > >> > >> この状況を改善するために、configure.in に --with-exts オプションを追加する以下のパッチを提案します。 > > > > 既に--with-ext(または--with-extensions)というものがあるのです > > が。 > > ext/extmk.rbあたりを参照してください。 > > extmk.rb に対して --with-ext または --without-ext を EXTS 変数経由で渡せるなら > configure.in で AC_SUBST(EXTS) するだけで良く、--with-exts を導入するまでもないですね。 > しかも extmk.rb の機能を直接使えば拡張ライブラリ名にワイルドカードが使えるんですね。 > > 以下のパッチで configure EXTS=--without-ext=*dbm,tk,win32api ができるようになります。 > これで問題ないようでしたら、アカウント登録され次第マージしてコミットします。  --with-ext=... は今もそのまま configure の引数に書けば渡るはず。 問題は --without-ext=... が configure の文法上エラーになってしまう ので渡せないことでしょうか。  よって、たとえば --with-out-ext に改名すれば解決しそうです。 Index: extmk.rb =================================================================== --- extmk.rb (revision 26649) +++ extmk.rb (working copy) @@ -396,7 +396,7 @@ end unless $extstatic ext_prefix = "#{$top_srcdir}/ext" exts = $static_ext.sort_by {|t, i| i}.collect {|t, i| t} -withes, withouts = %w[--with --without].collect {|w| +withes, withouts = %w[--with --with-out].collect {|w| if not (w = %w[-extensions -ext].collect {|o|arg_config(w+o)}).any? nil elsif (w = w.grep(String)).empty? あるいは、互換性が重要ならこうするか。 Index: extmk.rb =================================================================== --- extmk.rb (revision 26649) +++ extmk.rb (working copy) @@ -396,7 +396,7 @@ end unless $extstatic ext_prefix = "#{$top_srcdir}/ext" exts = $static_ext.sort_by {|t, i| i}.collect {|t, i| t} -withes, withouts = %w[--with --without].collect {|w| +withes, *withouts = %w[--with --without --with-out].collect {|w| if not (w = %w[-extensions -ext].collect {|o|arg_config(w+o)}).any? nil elsif (w = w.grep(String)).empty? @@ -405,6 +405,7 @@ withes, withouts = %w[--with --without]. proc {|c1| w.collect {|o| o.split(/,/)}.flatten.any?(&c1)} end } +withouts = withouts.compact.first if withes withouts ||= proc {true} else  そして、 README{,.ja} に configure オプションについての説明を 追加したいですね。(INSTALL という名前で独立させた方がいいかも) -- Akinori MUSHA / http://akinori.org/ --pgp-sign-Multipart_Tue_Feb_16_15:40:04_2010-1 Content-Type: application/pgp-signature Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (FreeBSD) iEYEABECAAYFAkt6PcQACgkQkgvvx5/Z4e6xLQCggzDkP+D8jrJS6BIJm8QlKEC2 Wd4AnjtsiEDtdSWZXMgMNM8PKx8Mp81D =eRMX -----END PGP SIGNATURE----- --pgp-sign-Multipart_Tue_Feb_16_15:40:04_2010-1--