Gauche:HPUX
0.7.3
環境: HP-UX 11.11 /PARISC
0.7.3はそのままでは通りません。次の変更が必要です。
- configure.acへのパッチ
次のパッチをconfigure.acに当てて、 autoconfを走らせてconfigureを作りなおす
*** configure.ac 17 Dec 2003 01:26:01 -0000 1.22 --- configure.ac 18 Dec 2003 01:46:48 -0000 *************** *** 447,455 **** SHLIB_SO_CFLAGS="+z +Z" SHLIB_SO_LDFLAGS=";ld -b -o" fi ! SHLIB_SO_SUFFIX="so" SHLIB_MAIN_LDFLAGS="" SHLIB_OK=ok ;; *cygwin*) SHLIB_SO_CFLAGS="" --- 447,456 ---- SHLIB_SO_CFLAGS="+z +Z" SHLIB_SO_LDFLAGS=";ld -b -o" fi ! SHLIB_SO_SUFFIX="sl" SHLIB_MAIN_LDFLAGS="" SHLIB_OK=ok + LINK_HELPER='./link-hpux' ;; *cygwin*) SHLIB_SO_CFLAGS=""
- リンクスクリプトの作成
src/link-hpuxというシェルスクリプトを 以下の内容で作成し、実行可能にしておく
#!/bin/sh # Helper script to handle building libgauche.sl on HP-UX # Assumes $TARGETLIB is set by the caller. CCLD=$1 shift $CCLD -L${TARGETLIB} "$@"
gcc-3.3.2, gnu make 3.80 の環境ではこれでOK。 なお、HPUXのmakeは通らない。また、HPUX付属のinstallは 問題が出るので、GNU互換のinstallを使う必要がある。
0.7_pre4での未解決問題メモ
(0.7では一応の解決をみています)
- gc/ での +ESdbgasm 問題: プラットフォームがhpuxの時、gc/configure.hostが+ESdbgasmというフラグを コンパイルフラグに足すが、少なくともgcc-3.2ではこのフラグが認識されず エラーになる。 gc-6.2alpha5でもこのフラグは消えていないから、acceptするgccもあるのだろう。
- selectの検出:
AC_CHECK_FUNCS(select)がエラーになるため、HAVE_SELECTが定義されない。
AC_CHECK_FUNCSの使うプロトタイプがselectの宣言と一致してないのが原因。
最新のautoconfを要チェック。
- 結局、configure.in中でhpuxの時だけ無条件にHAVE_SELECTを定義するようにした。
- なんか、古いHP-UXではselectのプロトタイプが違うという いやんな状況があるらしい(AC_FUNC_SELECT_ARGTYPESマクロはそのためのようだ)。 でもHP-UX11ではちゃんとfd_set*を取るようになってるから古いのはとりあえず おいとこう。
- dumb make: HPUXのmakeって、.stub.cと.c.loのルールを定義しといても
.stubから.loを作ってくれない…
- foo.c : foo.stub の依存関係だけ明示的にMakefileに書いとくのが安全か。
- configureがみつけたinstallは/opt/imake/bin/installだったが、 こいつが-d (ディレクトリの作成) オプションを理解しやがらねえ。 これはHP test driveの設定の問題かもしれんが… 素直にmkinstalldirs使おうかなあ。