[ruby-dev:24258] Re: ripper committed

From: WATANABE Hirofumi <eban@...>
Date: 2004-09-13 06:01:14 UTC
List: ruby-dev #24258
わたなべです。

Minero Aoki <aamine@loveruby.net> writes:


> 以下のプラットフォームで make test, test/ripper/test_*.rb が
> 通ることを確認しました。
> 
>   * i686-linux, gcc2, gmake
>   * sparc-solaris2.9, gcc3, gmake
>   * alphaev6-osf5.1b, ccc, make
>   * alphaev6-osf5.1b, gcc3, gmake
>   * i386-mswin32, vc6, nmake

残念ながらborland makeではだめでした。
今日初めて気づいたんですが、困ったことにborland makeではパイ
プが使えないようです。

D:\pub\ruby\bcc>type m
all:
        @echo foo | hoge

D:\pub\ruby\bcc>make -f m
MAKE Version 5.2  Copyright (c) 1987, 2000 Borland
foo | hoge

というわけで、list-parse-event-ids.rbとgenerate-eventids1.rb
の処理はひとつにまとめるか、>tmpして<tmpするように分ける必要
があるようです。

あとtest/*.*もborland makeは解釈してしまうのでまずいです。
  Error makefile 193:  No match found for wildcard 'test/*.*'
というか、ふつうのmakeは解釈しないから逆にまずいというか、sh
もまずいというか。とりあえず削除してみました。
lex.cも必要ないのとcpとか||はまずいのでこれも削除。

# Entries for ripper developpers (no srcdir/objdir support)
から下は削除しちゃったほうがいいかな。

> とりあえず次のように "./" を付けて回避したのですが、
> 正しい方法だとどうするのがよいでしょうか。
> 
>   ripper.o: ./ripper.c lex.c eventids1.c eventids2.c
>           $(CC) $(CFLAGS) $(CPPFLAGS) -c ./ripper.c

lib/mkmf.rbのほうで対処してみました。

Index: ext/ripper/depend
===================================================================
RCS file: /var/cvs/src/ruby/ext/ripper/depend,v
retrieving revision 1.2
diff -U1 -r1.2 depend
--- ext/ripper/depend	13 Sep 2004 00:30:47 -0000	1.2
+++ ext/ripper/depend	13 Sep 2004 05:59:14 -0000
@@ -1,4 +1,4 @@
 # Do not remove "./"; nmake requires this.
-ripper.o: ./ripper.c lex.c eventids1.c eventids2.c
-	$(CC) $(CFLAGS) $(CPPFLAGS) -c ./ripper.c
+ripper.o: ripper.c lex.c eventids1.c eventids2.c
+	$(CC) $(CFLAGS) $(CPPFLAGS) -c ripper.c
 
@@ -11,6 +11,5 @@
 eventids1.c: $(hdrdir)/parse.y $(srcdir)/tools/list-parse-event-ids.rb $(srcdir)/tools/generate-eventids1.rb
-	$(RUBY) $(srcdir)/tools/list-parse-event-ids.rb $(hdrdir)/parse.y | $(RUBY) $(srcdir)/tools/generate-eventids1.rb > $@
-
-lex.c:
-	cp $(hdrdir)/lex.c . || cp $(srcdir)/lex.c .
+	$(RUBY) $(srcdir)/tools/list-parse-event-ids.rb $(hdrdir)/parse.y > tmp
+	$(RUBY) $(srcdir)/tools/generate-eventids1.rb < tmp > $@
+	$(RM) tmp
 
@@ -27,9 +26,2 @@
 	$(RUBY) tools/list-scan-event-ids.rb -a eventids2.c > $@
-
-test: ripper.so test/*.*
-	$(RUBY) test/check-event-arity.rb $(hdrdir)/parse.y
-	sh test/check-event-coverage.sh
-	$(RUBY) test/check-scanner-event-coverage.rb
-	$(RUBY) test/validate.rb > /dev/null
-	@echo OK
 
Index: lib/mkmf.rb
===================================================================
RCS file: /var/cvs/src/ruby/lib/mkmf.rb,v
retrieving revision 1.195
diff -U1 -r1.195 mkmf.rb
--- lib/mkmf.rb	20 Aug 2004 21:41:31 -0000	1.195
+++ lib/mkmf.rb	13 Sep 2004 05:59:14 -0000
@@ -998,3 +998,3 @@
 	line.gsub!(/\.o\b/, ".#{$OBJEXT}")
-	line.gsub!(/(\s)([^\s\/]+\.[ch])/, '\1{$(srcdir)}\2') if $nmake
+	line.gsub!(/(\s)([^\s\/]+\.[ch])/, '\1{.;$(VPATH::=;)}\2') if $nmake and /^[^\t]/ =~ line
 	line.gsub!(/\$\(hdrdir\)\/config.h/, $config_h) if $config_h

In This Thread