小松です。

In the message of [ruby-dev:8766] Re: [win] dir name
    on 1999/12/29 20:01:50 EGUCHI Osamu <eguchi / shizuokanet.ne.jp> wrote:
|えぐち@エスアンドイー です。

|komatsu> しかし、.Cはどうしよう。大文字小文字を区別しないファイルシステム
|komatsu> では.cと区別できないですが、.Cも必要なんですよね。
|komatsu> サポートしないという手もあるか。
|
|既に、make の組み込みの定義をオーバーライドしているので、
|ここでの .c と .C の重複も警告程度で済む、と期待するのは甘すぎ?

大丈夫なようです。警告も.SUFFIXESだけでした。

  C:\lang\ruby\x>nmake -nologo -P > nul
  NMAKE : warning U4005: ルール '.cc.obj' を無視します。(.SUFFIXES に接尾辞が指定されていません。)

  C:\lang\ruby\x>

.Cと.cを両方書いておくと後に書いたほうが勝つので以下でよいみたい。

  .SUFFIXES: .cc .cxx .cpp .C

  .cc.obj:
  	$(CC) $(CXXFLAGS) $(CPPFLAGS) -c $<
  .cxx.obj:
  	$(CC) $(CXXFLAGS) $(CPPFLAGS) -c $<
  .cpp.obj:
  	$(CC) $(CXXFLAGS) $(CPPFLAGS) -c $<
  .C.obj:
  	$(CC) $(CXXFLAGS) $(CPPFLAGS) -c $<
  .c.obj:
  	$(CC) $(CFLAGS) $(CPPFLAGS) -c $<

変更前と変更後のnmake -Pの結果を比較するとこんな感じ。
"コマンド"は実際は半角カナです。

--- rule-old	Fri Dec 31 13:05:26 1999
+++ rule-new	Fri Dec 31 13:05:31 1999
@@ -84,0 +85,3 @@
+.c.obj:
+	コマンド:	$(CC) $(CFLAGS) $(CPPFLAGS) -c $<
+
@@ -88,2 +91,2 @@
-.c.obj:
-	コマンド:	$(CC) $(CFLAGS) /c $<
+.cpp.obj:
+	コマンド:	$(CC) $(CXXFLAGS) $(CPPFLAGS) -c $<
@@ -94,2 +97,2 @@
-.cpp.obj:
-	コマンド:	$(CPP) $(CPPFLAGS) /c $<
+.cxx.obj:
+	コマンド:	$(CC) $(CXXFLAGS) $(CPPFLAGS) -c $<
@@ -100,3 +102,0 @@
-.cxx.obj:
-	コマンド:	$(CXX) $(CXXFLAGS) /c $<
-
@@ -139 +139,4 @@
-.SUFFIXES: .exe .obj .asm .c .cpp .cxx .bas .cbl .f .f90 .for .pas .res .rc 
+.cc.obj:
+	コマンド:	$(CC) $(CXXFLAGS) $(CPPFLAGS) -c $<
+
+.SUFFIXES: .exe .obj .asm .c .cpp .cxx .bas .cbl .f .f90 .for .pas .res .rc .cc .cxx .cpp .C 

|#あと、 OBJEXT を参照しないといけないかも、、

それはもちろん。lib/mkmf.rbで展開するでしょうが、以下でも通ります。

  OBJEXT=obj
  .cpp.$(OBJEXT):
  	$(CC) $(CXXFLAGS) $(CPPFLAGS) -c $<

|komatsu> あと、C++コンパイラは$(CC)かと言われるとちょっと疑問があります。
|komatsu> $(CXX)にしてどこかで設定しておく?
|
|configure で AC_PROG_CXX するのが順当なんでしょうけど、
|ruby 自体は C++ コンパイラを要求しないのに、C++ コンパイラが
|なくて confiure に失敗するのは問題ですね、

それはいやですね。

|で、 $(CXX) や $(CCC) は定義されていなくても、$(CC) は必ず定義されるので、
|$(CC) のままでいいんじゃないか、、と言う判断ではいけないでしょうか?

うーん、悪くはないと思いますが……
大丈夫と断定できるほどの確信はないです。

--
小松克行 / Katsuyuki Komatsu <komatsu / sarion.co.jp>