gcc-4.4.2のビルド

いつからか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