[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freewnn:00599] Re: cpp for pubdicplus (Re: cvs server for freewnn.org)



大阪教育大の青野です。こんにちは。
#thread的には矢吹さんへのリプライにしてますが、一応その後の
#議論も読んでるつもりです。

すでにa017-p2(?)で暫定対処ができてるようなのでタイミングを
逸した感じですが、叩き台的にパッチ作りました。

<200105181452.XAA29514@sranhm.sra.co.jp>の記事において
yabuki@sranhm.sra.co.jpさんは書きました。

>> またGCC の歴史の話になってしまいますが,古い Changelog を
>> 見てみると,-x オプションは,gcc-1.39 ぐらいの頃(多分,g++ の
>> 登場に対応して),Richard Stallman 氏によって追加された,
>> 由緒正しい(?)ものです.:-)
(中略)

>> まぁ,gcc -x c -E と gcc -print-prog-name=cpp のどちらが良いかと
>> 言われたら,私としてはどちらでも良いです.

確かにgcc-1.xでコンパイルできるか分かりませんが、ここでは
「-x c」を使うことにしました。

>> Xsi/PubdicPlus/PUBDICPLUS-README.jp には,
>> 「この辞書は何をしてもかまいません」とあるので,良いのでは
>> ないでしょうか? 問題の fzk.* ファイルは GPL になってますし.

私も元のファイルとMakefileでの生成ルールを残しておけば問題
はなさそうな気がします。(自信はないですが…。)

#以下のパッチには日本語のコメントを入れているので、EUC-JP 
#に変換してからパッチを当てて下さい。
-----
より多くのプラットフォームで、cppをdicのプリプロセッサで使えるようにす
るパッチ(のプロトタイプ)
2001.5.30 by 青野智樹

概要
・FreeWnn-1.1.1-a017に対するパッチ。
・dic用pre-processorということでDIC_PPという名称に変更。も
し将来cppからm4など他の言語に変更されても対応が容易である
(かも)。
・原作(a017)と異なり、configure時に環境変数DIC_PP/CPPで指定した値を
(先の優先順位で)DIC_PPにすることが可能。gccがない and 場合分けに
対応していないシステムでも何とか動かせる(かも)。
・パッチ適用後、autoconf(2.13で確認)でconfigureスクリプトを生成すること。
・Solaris-2.4で当該部分のみ動作することは確認した。

気になる点
・DIC_PPという名前でよかったかどうか。
・まだ古いCPP選択部分がコメントとして残しているので、マージする場合は
削除する必要がある。
・CPP(_NONC)に関するcase文とCCOPTIONS / CDEBUGFLAGSの設定case文は分け
た方がよいかもしれない。
・config.cacheに蓄えるべきか判断できない。
・a017-p1ではconfig.guessが組み込まれたので、システムでの場合分けで
$host (ex. sparc-sun-solaris2.8)を使った方がよくないか。

diff -ur ../orig/Wnn/pubdicplus/Makefile.in ./Wnn/pubdicplus/Makefile.in
--- ../orig/Wnn/pubdicplus/Makefile.in	Sun Jan 30 12:49:35 2000
+++ ./Wnn/pubdicplus/Makefile.in	Mon May 21 15:41:14 2001
@@ -410,7 +410,7 @@
 	@echo "skipping make in my dir"
 
 std.fzk: $(FZK_SRC)
-	$(CPP) $(FZK_FLAG) fzk.master | egrep -v '^(# |#line |$$)' | $(ATOF) -h $(HINSI) $@
+	$(DIC_PP) $(FZK_FLAG) fzk.master | egrep -v '^(# |#line |$$)' | $(ATOF) -h $(HINSI) $@
 
 full.fzk: $(FZK_SRC)
 	$(MAKE) FZK_FLAG=-DKANSAI std.fzk
diff -ur ../orig/cWnn/cdic/Makefile.in ./cWnn/cdic/Makefile.in
--- ../orig/cWnn/cdic/Makefile.in	Sun Sep 12 23:01:35 1999
+++ ./cWnn/cdic/Makefile.in	Mon May 21 15:41:28 2001
@@ -59,10 +59,10 @@
 $(DICS): $(HINSI)
 
 $(FULL):: $(FZK_SRCS)
-	$(CPP) $(FZK_FLAG) con.master | egrep -v '^(# |#line |$$)' | $(ATOF) -h $(HINSI) $@
+	$(DIC_PP) $(FZK_FLAG) con.master | egrep -v '^(# |#line |$$)' | $(ATOF) -h $(HINSI) $@
 
 $(FULLR):: $(FZK_SRCS)
-	$(CPP) $(FZK_FLAG) con.masterR | egrep -v '^(# |#line |$$)' | $(ATOF) -h $(HINSI) $@
+	$(DIC_PP) $(FZK_FLAG) con.masterR | egrep -v '^(# |#line |$$)' | $(ATOF) -h $(HINSI) $@
 
 instserver:: install
 
diff -ur ../orig/cWnn/tdic/Makefile.in ./cWnn/tdic/Makefile.in
--- ../orig/cWnn/tdic/Makefile.in	Sun Sep 12 23:01:35 1999
+++ ./cWnn/tdic/Makefile.in	Mon May 21 15:41:44 2001
@@ -59,10 +59,10 @@
 $(DICS): $(HINSI)
 
 $(FULL):: $(FZK_SRCS)
-	$(CPP) $(FZK_FLAG) con.master | egrep -v '^(# |#line |$$)' | $(ATOF) -h $(HINSI) $@
+	$(DIC_PP) $(FZK_FLAG) con.master | egrep -v '^(# |#line |$$)' | $(ATOF) -h $(HINSI) $@
 
 $(FULLR):: $(FZK_SRCS)
-	$(CPP) $(FZK_FLAG) con.masterR | egrep -v '^(# |#line |$$)' | $(ATOF) -h $(HINSI) $@
+	$(DIC_PP) $(FZK_FLAG) con.masterR | egrep -v '^(# |#line |$$)' | $(ATOF) -h $(HINSI) $@
 
 instserver:: install
 
diff -ur ../orig/configure.in ./configure.in
--- ../orig/configure.in	Fri Mar 17 01:15:32 2000
+++ ./configure.in	Tue May 29 11:33:23 2001
@@ -54,7 +54,12 @@
 dnl Checks for cc and cpp.
 dnl
 AC_PROG_CC
-AC_MSG_CHECKING(for cpp)
+# preserve user-defined CPP variable.
+CPP_orig=$CPP
+AC_PROG_CPP
+
+AC_MSG_CHECKING(pre-processor for dictionaries)
+
 hosttype=`uname`
 CCOPTIONS=""
 CDEBUGFLAGS=-O
@@ -62,23 +67,23 @@
 "Linux")
     CCOPTIONS="-Dlinux -D_POSIX_SOURCE -D_BSD_SOURCE"
     CDEBUGFLAGS="-O2 -fno-strength-reduce"
-    if test -x /lib/cpp; then
-        CPP=/lib/cpp
-    fi
+#    if test -x /lib/cpp; then
+#        CPP_NONC=/lib/cpp
+#    fi
     ;;
 "FreeBSD"|"NetBSD"|"OpenBSD")
     CCOPTIONS="-DCSRG_BASED"
     CDEBUGFLAGS="-O2 -fno-strength-reduce"
-    if test -x /usr/libexec/cpp; then
-        CPP=/usr/libexec/cpp
-    fi
+#    if test -x /usr/libexec/cpp; then
+#        CPP_NONC=/usr/libexec/cpp
+#    fi
     ;;
 "BSD/OS")
     CCOPTIONS="-DCSRG_BASED"
     CDEBUGFLAGS="-O2 -fno-strength-reduce"
-    if test -x /usr/bin/cpp; then
-        CPP=/usr/bin/cpp
-    fi
+#    if test -x /usr/bin/cpp; then
+#        CPP_NONC=/usr/bin/cpp
+#    fi
     ;;
 "SunOS")
     case `uname -r` in
@@ -90,7 +95,7 @@
         CDEBUGFLAGS=-O4
         CCOPTIONS=""
       fi
-      CPP=/usr/lib/cpp
+      CPP_NONC=/usr/lib/cpp
       ;;
     5.*)
       if test $CC = gcc; then
@@ -100,12 +105,12 @@
           CCOPTIONS="-Xc -xF -xcg92 -Dsun -D`uname -p` -DSVR4 -DSYSV"
       fi
       if test -x /usr/ccs/lib/cpp; then
-          CPP=/usr/ccs/lib/cpp
+          CPP_NONC=/usr/ccs/lib/cpp
       fi
       ;;
-    *)
-      AC_MSG_WARN("This system is not supported.  But continuing...")
-      ;;
+    #*)
+    #  AC_MSG_WARN("This system is not supported.  But continuing...")
+    #  ;;
     esac
     ;;
 "HP-UX")
@@ -118,17 +123,17 @@
     case `uname -r` in
     A.09.*)
       if test -x /lib/cpp; then
-          CPP=/lib/cpp
+          CPP_NONC=/lib/cpp
       fi
       ;;
     B.10.*|B.11.*)
       if test -x /opt/langtools/lbin/cpp; then
-          CPP=/opt/langtools/lbin/cpp
+          CPP_NONC=/opt/langtools/lbin/cpp
       fi
       ;;
-    *)
-      AC_MSG_WARN("This system is not supported.  But continuing...")
-      ;;
+    #*)
+    #  AC_MSG_WARN("This system is not supported.  But continuing...")
+    #  ;;
     esac
     ;;
 "BeOS")
@@ -136,17 +141,17 @@
     "BePC")
 	  CCOPTIONS="-DBEOS -D_POSIX_SOURCE -D_BSD_SOURCE"
 	  CDEBUGFLAGS="-O2 -fno-strength-reduce"
-	  if test -x /boot/develop/tools/gnupro/lib/gcc-lib/i586-beos/2.9-beos-980929/cpp; then
-	    CPP=/boot/develop/tools/gnupro/lib/gcc-lib/i586-beos/2.9-beos-980929/cpp
-	  fi
+#	  if test -x /boot/develop/tools/gnupro/lib/gcc-lib/i586-beos/2.9-beos-980929/cpp; then
+#	    CPP_NONC=/boot/develop/tools/gnupro/lib/gcc-lib/i586-beos/2.9-beos-980929/cpp
+#	  fi
 	;;
     "BeBox"|"BeMac")
 	  CCOPTIONS="-DBEOS -D_POSIX_SOURCE -D_BSD_SOURCE"
-	  NON_GNU_CPP=/boot/apps/GeekGadgets/bin/cpp
+#	  NON_GNU_CPP=/boot/apps/GeekGadgets/bin/cpp
 	;;
-    *)
-      { echo "configure: error: "This system is not supported."" 1>&2; exit 1; }
-      ;;
+    #*)
+    #  { echo "configure: error: "This system is not supported."" 1>&2; exit 1; }
+    #  ;;
     esac
     ;;
 "AIX")
@@ -156,13 +161,37 @@
       CDEBUGFLAGS=-O
     fi
     CCOPTIONS="-DSYSV"
-    CPP=/usr/lib/cpp
-    ;;
-*)
-    AC_MSG_WARN("This system is not supported.  But continuing...")
+    CPP_NONC=/usr/lib/cpp
     ;;
+#*)
+#    AC_MSG_WARN("This system is not supported.  But continuing...")
+#    ;;
 esac
-AC_PROG_CPP
+
+dnl
+dnl gccを使っている時は言語指定('-x c')を使う
+dnl
+if test "$GCC" = yes ; then
+    # CPP_NONC=`${CC} -print-prog-name=cpp`
+    CPP_NONC="${CC} -x c -E"
+fi
+
+dnl
+dnl 環境変数 DIC_PP / CPP が設定されていたときはその順で、
+dnl 設定されていない場合は上の節で検出された $CPP_NONC、
+dnl それもない場合はAC_PROG_CPPで検出されたCPPを使う。
+dnl FIXME: config.cache に記録した方がよい?
+dnl
+if test -z "$DIC_PP"; then
+    if test -z "$CPP_orig" -a -n "$CPP_NONC"; then
+	DIC_PP="$CPP_NONC"
+    else
+	DIC_PP="$CPP"
+    fi
+fi
+
+AC_MSG_RESULT($DIC_PP)
+AC_SUBST(DIC_PP)
 
 dnl
 dnl Checks for programs.
diff -ur ../orig/kWnn/kdic/Makefile.in ./kWnn/kdic/Makefile.in
--- ../orig/kWnn/kdic/Makefile.in	Sun Sep 12 23:01:35 1999
+++ ./kWnn/kdic/Makefile.in	Mon May 21 15:41:52 2001
@@ -56,7 +56,7 @@
 $(DICS): $(HINSI)
 
 $(FULL):: $(FZK_SRCS)
-	$(CPP) $(FZK_FLAG) fzk.master | egrep -v '^(# |#line |$$)' | $(ATOF) -h $(HINSI) $@
+	$(DIC_PP) $(FZK_FLAG) fzk.master | egrep -v '^(# |#line |$$)' | $(ATOF) -h $(HINSI) $@
 
 instserver:: install
 
diff -ur ../orig/makerule.mk.in ./makerule.mk.in
--- ../orig/makerule.mk.in	Sun Feb 13 18:15:54 2000
+++ ./makerule.mk.in	Mon May 21 14:07:48 2001
@@ -54,6 +54,7 @@
                AS = as
 
               CPP = @CPP@
+           DIC_PP = @DIC_PP@
 
      INSTALLFLAGS = -c
                LD = ld

----
(関係ない話)

slashdot.ne.jpでAnthyという仮名漢字変換サーバ(?)を作ってらっ
しゃる方(方々?)がおられることを知りました。フルスクラッチ
で作る意欲は評価したい(し、頑張ってほしい)のですが、
Canna/Wnn に対する、すでに過去のものであるかのような説明を
読んで多少複雑な気持ちになっています。
#今のところソースやドキュメントすら見ていませんが(^^;;。
----
大阪教育大学 情報処理センター
青野智樹	(aono@cc.osaka-kyoiku.ac.jp)
#情報処理センターに関するお問い合わせは 
#center@cc.osaka-kyoiku.ac.jp へお願いします。


http://www.freewnn.org/ FreeWnn Project