(toppers-users 849) Re: makefile.dependの件

Imai Kazuhiko kimai @ mit.pref.miyagi.jp
2003年 6月 3日 (火) 12:09:29 JST


アンドール
 波多野様

> というように、<command line>と<built-in>が残っている
> ようです。

内部で呼び出しているperlスクリプトの処理がgcc3.x系の
プリプロセッサのフォーマットに対応していないためです。
(toppers-users 736) の尾形さんの投稿が参考になるかと思います。
末尾に添付します。


宮城県産業技術総合センター
今井和彦
E-mail kimai @ mit.pref.miyagi.jp

*****************************



 (toppers-users 702)で書きましたがgcc-3.x のプリプロセッサ出力に依存関係のある
ファイルと同じ
フォーマットで<built-in>と出力するために、Makefile.depend に、依存関係ファイルと
して書き込まれてしまうためです。

> もう一つ、gcc 3.2 のプリプロセッサは依存関係のあるファイル名と同じフォー
> マットで「<コマンドライン>」、「<built-in>」、「<command line>」を出力してし
> まうため cfg がエラーを起こしたり、Makefile.depend にこれらが依存関係の
> ファイル名として現われてしまうので、make が通らないという障害がありました。
> 前者は、tarditional オプションを付け、後者は utils/makedep の124行目に
> 「<」、「>」の文字のある行は、除くように追加して逃げたのですが、もっとスマー
> トなやり方はないものでしょうか。

 とりあえずgcc 3.x 系でとりあえず使えるようにするやり方は次のとおりです。

・/utils/makedep の書き換え

 124行目を次のように変更します。

---
変更前
<               if ($line =~ /^\#\s*([0-9]+)\s*\"([^\"]+)\"/) {
---
変更後
>               if ($line =~ /^\#\s*([0-9]+)\s*\"([^\"\<\>]+)\"/) {
---

 セルフコンパイラもgcc 3.x 系の場合(Redhat 8.0)の場合は、Makefile も修正しま
す。Redhat 7.x では必要ありません。
 154行目の $(CPP)のあとにオプション「-traditional」を付加します。

 kernel_cfg.c kernel_id.h kernel_chk.c: $(UTASK_CFG)
        $(CPP) -traditional $(INCLUDES) $(CDEFS) $(UTASK_CFG) | $(JSPDIR)/cfg/c\
fg -s -c -cpu $(CPU) -system $(SYS) -obj