新千葉 ガーベージ・コレクション

FPGA マガジンやインターフェースで書けなかったこと等をちょぼちょぼ書いてます。@ryos36

ghdl

cygwin で ghdl をコンパイルするも結局できなかった。おそらく 32bit 環境ならできる。
vhdl/ortho-lang.c がコンパイルできなかった。

[追記] 最終的にうまくいったryos36.hatenablog.com

以下ダメだった記録。

cygwin で ada をインストール。gnatmake が動くことを確認。

procedure Example is
begin
   null;
end Example;

example.adb でセーブして gnatmake

> gnatmake example

example.exe ができた。
毎回言われる gmp と mpfr

configure: error: Building GCC requires GMP 4.1+ and MPFR 2.3.0+.

これらもインストール

gcc-4.3.4 のしたの gcc に ghdl の vhdl というディレクトリをシンボリックリンクgcc-4.3.4 の下ではなくて ggcc-4.3.4/gcc のしたに ghdl-0.29 ではなくて vhdl 。間違えると、configure 時にこんな感じでエラー

The following requested languages could not be built: vhdl
Supported languages are: c,ada,c++,fortran,java,objc,obj-c++,treelang

でもって、configure

../gcc-4.3.4/configure --prefix=/home/FPGA/test-install --enable-languages=vhdl,treelang --disable-bootstrap
    • disable-bootstrap オプションは GHDL の README につけた方がよい(つけろではない)と書かれていたので意味も分からず追加。treelang は必要ないけど追加。Makefile ができるので make。README には
make CFLAGS="-O"

と書いてあったのでその通りにする。make だけでうまくいくかは不明。あとは make install でいくはずだ。そう願いたい。ただいまコンパイル中。

*** Configuration x86_64-unknown-cygwin not supported

がーん x86_64 サポートしていない。gcc-4.9.3 でやりなおし。(なんか達成しない気がしてきた)

configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.

げで、こんどは MPC が必要だって。なめてんのか。4.9.3 では treelang がなくなっている、、、まぁべつにいいや。

../gcc-4.9.3/configure --prefix=/home/FPGA/test-install --enable-languages=vhdl --disable-bootstrap
make CFLAGS="-O"

できるとすごくうれしい。コンパイル中。

/home/ryos/FPGA/ghdl/gcc-4.9.3/gcc/vhdl/ortho-lang.c:31: parse error: GTY must be specified before identifier

やはりエラー。できね~~。
GTY でエラーになるらしい。GTY は
GTY - GCC Wikia - Wikia
によると

GCC が使用する GC,GGC のためのタグらしい.いたるところで使われまくっている.

このタグがついてる構造体を含む C ソースを,gengtype というプログラムに渡すと,GC 用のコードが自動生成されるというステキなことをやっているらしい.

で、微妙に構文が変わったみたい。GTY の位置をずらしたらコンパイルが通り始めた。3たびコンパイル中。

無念。またもコンパイルできず。

options.c:1276:2: エラー: #error Multiple different help strings for C:
 #error Multiple different help strings for C:
  ^
options.c:1279:2: エラー: #error Multiple different help strings for P:
 #error Multiple different help strings for P:

v と C と P のオプションが C言語のそれとかぶっている。 v は意味が同じなのでコメントアウト。C と P は上書きしたいのだが lang.opt のフォーマットわからず。やむを得ずコメントアウト。4たびコンパイル中。
アーまたエラー

../gcc/coretypes.h:171:1: エラー: 不明な型名 ‘class’ です
 class rtl_opt_pass;
 ^
../gcc/coretypes.h:173:1: エラー: 不明な型名 ‘namespace’ です
 namespace gcc {

ん?C++ じゃないか。