From: "knu (Akinori MUSHA)" Date: 2013-02-16T12:35:28+09:00 Subject: [ruby-dev:46991] [ruby-trunk - Bug #7101] 拡張ライブラリの質問 Issue #7101 has been updated by knu (Akinori MUSHA). configure.inのコメントに説明を書いたのですが、config.statusに書き出すCFLAGSの値を "${cflags} ..." のように置換(いわばunexpand)する処理が下の方にあるんですが、こいつはCFLAGSの値が $optflags $debugflags $warnflags という並びになっていることが前提になっています。 修正前のコードでは、CFLAGSとoptflagsそれぞれの末尾に -fno-omit-frame-pointer に追加してしまっていたのでこの置換が機能せず、rubyをコンパイルするとき用のCFLAGSの値、すなわちoptflags/debugflags/warnflagsが展開された状態の値がconfig.statusに書き込まれ、それがrbconfig.rbに反映され、mkmf.rbで生成されるMakefileにもその値が入り、C拡張のビルド時に(warnflagsに入っている) -ansi -std=iso9899:199409 が指定されてしまっていました。 本修正は、CFLAGSの値から先頭の $optflags 部分を除去し、optflagsに -fno-omit-frame-pointer を追加し、改めてCFLAGSの先頭に $optflags を追加するようにすることで、並びを保ち置換を機能させるようにするものです。 ---------------------------------------- Bug #7101: 拡張ライブラリの質問 https://bugs.ruby-lang.org/issues/7101#change-36328 Author: ko1 (Koichi Sasada) Status: Open Priority: Normal Assignee: mame (Yusuke Endoh) Category: build Target version: 2.0.0 ruby -v: trunk  ささだです.  trunk では,拡張ライブラリをビルドするとき,下記のようなオプションがつ きます. gcc -I. (snip) -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -ansi -std=iso9899:199409 (snip)  -ansi -std=iso9899:199409 のあたりで,inline や // でのコメントアウト を利用している拡張ライブラリがビルド出来ない感じです. (inline については,ruby.h を include していれば適切に入れ替えられるん ですが,ruby.h を include していない *.c をビルドする可能性もあり,そこ でこけてる感じです)  これは,仕様でしょうか.ぎゃっという人は多そうなので,拡張ライブラリの CC のオプションは,以前に外した方が良さそうに思いますが. # 目の前でマンガを読んでいる須藤さんから # 何とかしろと言われたのでご相談した次第です. -- // SASADA Koichi at atdot dot net -- http://bugs.ruby-lang.org/