いつからかgccのビルドがやたら厄介になってた。gcc3以降f77が システムに付いて来なくなったから、「Fortranつかいてー」ってことで 自前でフルセットgccを作ろうとしてやたら苦労した。configure開始から makeでこけるまでそれなりに時間がかかるもんだから、気付けば放置で ちゃんとした解がみつかるまで到達しないまま1年以上かかった気がする。
面倒臭いので caam 前提。まず gmp と ppl と cloog を同じ prefix にインストール。 これは一直線。
(gmp) caam -gmaic --enable-cxx --build=i686-pc-netbsd5 --prefix=/opt/gcc4 (ppl) CAAM_ADD=/opt/gcc4 caam -gmaic --build=i686-pc-netbsd5 --prefix=/opt/gcc4 (cloog) CAAM_ADD=/opt/gcc4 caam -gmaic --build=i686-pc-netbsd5 \ --prefix=/opt/gcc4 --with-{gmp,ppl}=/opt/gcc4 (mpfr (Fortranが要るなら)) CAAM_ADD=/opt/gcc4 caam -gmaic --build=i686-pc-netbsd5 --prefix=/opt/gcc4
で、gcc-4.4.2の出番。stddef.h が悪さするようなので、 ソースを展開したらpkgsrcの patch-ae を当てる。こんなやつ。
--- gcc/Makefile.in.orig 2009-05-27 00:57:20 +0200 +++ gcc/Makefile.in @@ -310,7 +310,6 @@ USER_H = $(srcdir)/ginclude/float.h \ $(srcdir)/ginclude/iso646.h \ $(srcdir)/ginclude/stdarg.h \ $(srcdir)/ginclude/stdbool.h \ - $(srcdir)/ginclude/stddef.h \ $(srcdir)/ginclude/varargs.h \ $(srcdir)/ginclude/stdfix.h \ $(EXTRA_HEADERS)
そしたら、ビルド。これも同じ caam コマンドラインで行ける。 と思ったら、gcc の場合はちゃんと buildターゲットに "elf" を入れとかないとダメと気付いた。あー、gmpとかもそうしとけば よかったけどまあいいや。
CAAM_ADD=/opt/gcc4 caam -gmaic \
--build=i686-pc-netbsdelf5 --prefix=/opt/gcc4 --with-cloog=/opt/gcc4
gmpもpplもmpfrも、--with-ほげほげは caam任せで付けなくていいが、何故か
cloogだけは --with-cloog で指定しないとダメみたいだ。
ちなみに、configure を生で呼んで --with-gmp=/opt/gcc4
とかを指定しても、shared object にそのパスが埋め込まれないので
システム標準ライブラリパスでない場合はライブラリがロードできない
使えないコンパイラが bootstrap 時にでき上がってそれでこける。
pkgsrcの patch-ac
あたりは
そのへん -R ${exec_prefix}/lib
を埋め込むことで
回避しているが、caamの場合は CAAM_ADD 変数に指定したPATHを
しつこくコンパイル(-I)とリンク(-L -R)時に自動的に付けるので大丈夫。
以下個人メモ。
NetBSD/i386
CAAM_ADD=math CFG=../gcc-4.4.2/configure caam -j3 -g \ --prefix=/usr/local/gcc4 --with-gmp=/usr/local/math \ --with-ppl=/usr/local/math --with-cloog=/usr/local/math --with-long-long \ --disable-libssp --enable-shared --with-system-zlib \ --build=i686-pc-netbsdelf5 --host=i686-pc-netbsdelf5 \ --enable-languages=c,c++,fortran
sparc
CAAM_ADD=gcc4 gt_cv_func_gnugettext1_libintl=yes ac_cv_c_bigendian=yes \ CFG=../gcc-4.4.2/configure caam -j15 -g --prefix=/usr/koeki/gcc4 \ --enable-languages='c,c++,fortran' --with-system-zlib --enable-shared \ --enable-__cxa_atexit --enable-long-long --disable-libssp \ --with-{gmp,ppl}=/usr/koeki/gcc4