Gauche > Archives > 2011/02/23

2011/02/23 00:33:32 UTC(もと)
#
どうも。職場に出てきてコンピュータの環境が変わってしまったのですが、./config.guessの出力は i386-pc-solaris2.11 です。
#
OpenSolarisのバージョンが少し違ってます。
#
ただ...こっちだと、さっきのCFLAGSでext/net のコンパイルの問題は無くなるんですが、make test で以下の部分がfailしてしまいました。
#
Testing advanced read/write features ...                         passed.
Testing gauche.process ...                                       failed.
discrepancies found.  Errors are:
test open-input-process-port (redirect/error): expects #t => got #f
test call-with-input-process (redirect/error - ignore): expects #t => got #f
test call-with-input-process (redirect/error - handle): expects 1 => got 2
test call-with-output-process (redirect/error - handle): expects 1 => got 2
Testing gauche.version ...                                       passed.
#
半端なレポートですみません。
2011/02/23 01:07:15 UTCshiro
#
あ、そこはlsとcatの仕様差によるものっぽい。
#
後ろふたつはcatでファイルが見つからなかった時のexit statusの違いですね。これはテスト変更で吸収できると思います。
#
前の二つは system() 経由で実行した ls や cat の結果と、gauche.process経由で実行したそれとを比べてるんだけど、Solarisでは呼び出されるコマンドが違ったりする可能性はあるかな。フルパスを最初に探してそれを指定すれば確実かも。
2011/02/23 02:21:33 UTCshiro
#
とりあえずCFLAGSについては、configure.acに加えてみました (r7373)。良ければ試してみてください。svn upの後、make maintainer-clean && ./DIST gen が必要です。gauche.processのテストについては後で見ます。
2011/02/23 04:04:58 UTC(もと)
#
別のところでエラーが出るようになりました。
#
mm@mypa.0.$ make
for d in gc src lib ext doc; do (cd $d; make all); done
depbase=`echo allchblk.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`; \
if /bin/sh ./libtool --tag=CC --mode=compile gcc -DPACKAGE_NAME=\"gc\" -DPACKAGE_TARNAME=\"gc\" -DPACKAGE_VERSION=\"7.1\" -DPACKAGE_STRING=\"gc\ 7.1\" -DPACKAGE_BUGREPORT=\"Hans.Boehm@hp.com\" -DGC_VERSION_MAJOR=7 -DGC_VERSION_MINOR=1 -DPACKAGE=\"gc\" -DVERSION=\"7.1\" -DGC_SOLARIS_THREADS=1 -DTHREAD_LOCAL_ALLOC=1 -DSOLARIS25_PROC_VDB_BUG_FIXED=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DNO_EXECUTE_PERMISSION=1 -DALL_INTERIOR_POINTERS=1 -DGC_GCJ_SUPPORT=1 -DJAVA_FINALIZATION=1 -DATOMIC_UNCOLLECTABLE=1 -DDONT_ADD_BYTE_AT_END=1 -DLARGE_CONFIG=1   -I./include    -fexceptions -I libatomic_ops/src -g -O2 -MT allchblk.lo -MD -MP -MF "$depbase.Tpo" -c -o allchblk.lo allchblk.c; \
then mv -f "$depbase.Tpo" "$depbase.Plo"; else rm -f "$depbase.Tpo"; exit 1; fi
     .
     . [中略]
     .
libtool: link: (cd ".libs" && rm -f "libcord.so.1" && ln -s "libcord.so.1.0.3" "libcord.so.1")
libtool: link: (cd ".libs" && rm -f "libcord.so" && ln -s "libcord.so.1.0.3" "libcord.so")
libtool: link: ar cru .libs/libcord.a  cord/cordbscs.o cord/cordprnt.o cord/cordtest.o cord/cordxtra.o
libtool: link: ranlib .libs/libcord.a
libtool: link: ( cd ".libs" && rm -f "libcord.la" && ln -s "../libcord.la" "libcord.la" )
/bin/sh ./genconfig
GAUCHE_LOAD_PATH="" GAUCHE_DYNLOAD_PATH=""  gosh -l./preload -I../src -I../lib ./builtin-syms.scm
GAUCHE_LOAD_PATH="" GAUCHE_DYNLOAD_PATH=""  gosh -l./preload -I../src -I../lib ./geninsn
gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I./../gc/include  -g -O2 -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__ -fPIC -fomit-frame-pointer -c box.c
In file included from /usr/include/stdio.h:37,
                 from gauche.h:44,
                 from box.c:35:
/usr/include/sys/feature_tests.h:353:2:
#
(続きです)
#
/usr/include/sys/feature_tests.h:353:2: #error "Compiler or options invalid for pre-UNIX 03 X/Open applications 	and pre-2001 POSIX applications"
In file included from gauche.h:54,
                 from box.c:35:
./gauche/int64.h:153:2: #error system does not have 32bit integer
In file included from gauche.h:1123,
                 from box.c:35:
./gauche/vector.h:78: error: negative width in bit-field `size'
./gauche/vector.h:193: error: syntax error before "ScmInt32"
./gauche/vector.h:194: warning: type defaults to `int' in declaration of `ScmInt32'
./gauche/vector.h:194: error: syntax error before "array"
./gauche/vector.h:195: error: syntax error before "ScmInt32"
./gauche/vector.h:204: error: syntax error before "ScmUInt32"
./gauche/vector.h:205: warning: type defaults to `int' in declaration of `ScmUInt32'
./gauche/vector.h:205: error: syntax error before "array"
./gauche/vector.h:206: error: syntax error before "ScmUInt32"
In file included from gauche.h:1203,
                 from box.c:35:
./gauche/charset.h:55: warning: division by zero
In file included from gauche.h:1233,
                 from box.c:35:
./gauche/number.h:90: error: negative width in bit-field `size'
./gauche/number.h:204: error: syntax error before "Scm_GetInteger32Clamp"
./gauche/number.h:204: warning: type defaults to `int' in declaration of `Scm_GetInteger32Clamp'
./gauche/number.h:204: warning: data definition has no type or storage class
./gauche/number.h:205: error: syntax error before "Scm_GetIntegerU32Clamp"
./gauche/number.h:205: warning: type defaults to `int' in declaration of `Scm_GetIntegerU32Clamp'
./gauche/number.h:205: warning: data definition has no type or storage class
*** Error code 1
make: Fatal error: Command failed for target `box.o'
Current working directory /home/mm/archives/Gauche/make/head/Gauche/src
*** Error code 1
make: Fatal error: Command failed for target `all'
mm@mypa.0.$
#
「/usr/include/sys/feature_tests.h:353:2:」の部分だけだぶってます。
#
(ハッシュって、なにかのエスケープでしたっけ?)
2011/02/23 04:13:16 UTC(もと)
#
sys/feature_tests.h の前後は、こんなです。
#
/*
 * It is invalid to compile an XPG3, XPG4, XPG4v2, or XPG5 application
 * using c99.  The same is true for POSIX.1-1990, POSIX.2-1992, POSIX.1b,
 * and POSIX.1c applications. Likewise, it is invalid to compile an XPG6
 * or a POSIX.1-2001 application with anything other than a c99 or later
 * compiler.  Therefore, we force an error in both cases.
 */
#if defined(_STDC_C99) && (defined(__XOPEN_OR_POSIX) && !defined(_XPG6))
#error "Compiler or options invalid for pre-UNIX 03 X/Open applications \
	and pre-2001 POSIX applications"
#elif !defined(_STDC_C99) && \
	(defined(__XOPEN_OR_POSIX) && defined(_XPG6))
#error "Compiler or options invalid; UNIX 03 and POSIX.1-2001 applications \
	require the use of c99"
#endif
#
353行めは、uenohouno
#
353行目は、上の方の #errorの行です。
#
えーと、sys/feature_tests.h のヘッダーもつけます。
#
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License (the "License").
 * You may not use this file except in compliance with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */

/*
 * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */
2011/02/23 04:34:21 UTCshiro
#
先に「-D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__ を与えれば]
#
とあったのは、
#
ext/net以下だけに与えたということでしょうか。
2011/02/23 04:37:00 UTC(もと)
#
いえ、トップレベル(?)の configure に、 CFLAGS='-D_XOPEN_.... -D_XOPEN_ ...' ./configure って感じでやりました。
2011/02/23 04:39:17 UTCshiro
#
成功した時と現在とでどこかが違うはずですね。r7372で、configureにCFLAGSを指定する形でやってみるとどうなりますか。
#
それによってconfigure.acに入れた問題(r7373)なのか、それ以前かつ0.9.1以後の変更の問題か、切り分けたいです。
2011/02/23 04:40:51 UTC(もと)
#
了解です。すみません、r7372の取り出し方を教えてください。
2011/02/23 04:43:51 UTCshiro
#
svn co https://gauche.svn.sourceforge.net/svnroot/gauche/Gauche/trunk@r7372 Gauche-r7372
2011/02/23 04:43:59 UTC(もと)
#
えーと、svn co https://gauche.svn.sourceforge.net/svnroot/gauche/Gauche/trunk@r7372 Gauche de
#
でいいでしょうかね。
2011/02/23 04:44:18 UTCshiro
#
かぶった。変更はconfigure.acだけだから、手パッチの方が早いかも。
#
$ svn diff -r 7372 configure.ac
Index: configure.ac
===================================================================
--- configure.ac	(revision 7372)
+++ configure.ac	(working copy)
@@ -337,6 +337,10 @@
 
 dnl solaris specific
 AC_CHECK_HEADERS(sunmath.h)
+case $host in
+  *-pc-solaris2.*)
+    CFLAGS="$CFLAGS -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__" ;;
+esac
 
 dnl ===========================================================
 dnl Checks processor type, for processor-specific stuff
#
ここが足されてるだけなので、削って ./DIST gen から
2011/02/23 04:50:13 UTC(もと)
#
はい、make maintainer-clean して、4行削って, CFLAGSつきで ./cofigure して、そして make をやってみてます。 (いまんとこ、通過したっぽい。。)
2011/02/23 05:01:08 UTCshiro
#
ふーむ、そしたら次は両者のgccコマンドラインの違いを見ることですね。ひとつ可能性として、上のconfigure.acはフラグをそれまでのCFLAGSに足していますが、CFLAGS=... ./configure とするとconfigureでの設定は多分無視されて与えたフラグで上書きされるんじゃないかなあ。
2011/02/23 05:13:08 UTC(もと)
#
make は通りました。(書き忘れてましたけど、./DIST genも,削ったあとにやってます。) コマンドライン、少々お待ち下さい。
#
うーん、途中で仕事の電話がかかってきて、頭が飛んでしまった...(涙) 整理のため、7372と7373の展開場所変えて、やり直してからまたご連絡します。
2011/02/23 05:20:31 UTC(もと)
#
手元のautoconfが 2.63なので./DIST genするとwarningが出ますが、無視して大丈夫ですか?
2011/02/23 05:28:48 UTC(もと)
#
えーと、box.c のコンパイルのとこで比べると、7372で、CFLAGS='-D_XOPEN_SOUCE ... ' ./configure ってやったときは、 -std=gnu99 と、-g -O2 がありません。7373で、configureにまかせたときには、それらがついてます。
#
[7372]
gcc -DHAVE_CONFIG_H -I. -I./../gc/include  -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__ -fPIC -fomit-frame-pointer -c box.c
[7373]
gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I./../gc/include  -g -O2 -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__ -fPIC -fomit-frame-pointer -c box.c
#
make 直後の libtoolのとこのながーい行だと、7372 のときには -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__ もオプションに含まれていて、7373にはそれが無い。(そのかわりに-g -O2がついてる)
#
そんな感じです。
#
[7372]
mm@mypa.0.$ make
for d in gc src lib ext doc; do (cd $d; make all); done
depbase=`echo allchblk.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`; \
if /bin/sh ./libtool --tag=CC --mode=compile gcc -DPACKAGE_NAME=\"gc\" -DPACKAGE_TARNAME=\"gc\" -DPACKAGE_VERSION=\"7.1\" -DPACKAGE_STRING=\"gc\ 7.1\" -DPACKAGE_BUGREPORT=\"Hans.Boehm@hp.com\" -DGC_VERSION_MAJOR=7 -DGC_VERSION_MINOR=1 -DPACKAGE=\"gc\" -DVERSION=\"7.1\" -DGC_SOLARIS_THREADS=1 -DTHREAD_LOCAL_ALLOC=1 -DSOLARIS25_PROC_VDB_BUG_FIXED=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DNO_EXECUTE_PERMISSION=1 -DALL_INTERIOR_POINTERS=1 -DGC_GCJ_SUPPORT=1 -DJAVA_FINALIZATION=1 -DATOMIC_UNCOLLECTABLE=1 -DDONT_ADD_BYTE_AT_END=1 -DLARGE_CONFIG=1   -I./include    -fexceptions -I libatomic_ops/src -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__ -MT allchblk.lo -MD -MP -MF "$depbase.Tpo" -c -o allchblk.lo allchblk.c; \
then mv -f "$depbase.Tpo" "$depbase.Plo"; else rm -f "$depbase.Tpo"; exit 1; fi

[7373]
mm@mypa.0.$ make
for d in gc src lib ext doc; do (cd $d; make all); done
depbase=`echo allchblk.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`; \
if /bin/sh ./libtool --tag=CC --mode=compile gcc -DPACKAGE_NAME=\"gc\" -DPACKAGE_TARNAME=\"gc\" -DPACKAGE_VERSION=\"7.1\" -DPACKAGE_STRING=\"gc\ 7.1\" -DPACKAGE_BUGREPORT=\"Hans.Boehm@hp.com\" -DGC_VERSION_MAJOR=7 -DGC_VERSION_MINOR=1 -DPACKAGE=\"gc\" -DVERSION=\"7.1\" -DGC_SOLARIS_THREADS=1 -DTHREAD_LOCAL_ALLOC=1 -DSOLARIS25_PROC_VDB_BUG_FIXED=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DNO_EXECUTE_PERMISSION=1 -DALL_INTERIOR_POINTERS=1 -DGC_GCJ_SUPPORT=1 -DJAVA_FINALIZATION=1 -DATOMIC_UNCOLLECTABLE=1 -DDONT_ADD_BYTE_AT_END=1 -DLARGE_CONFIG=1   -I./include    
2011/02/23 06:16:22 UTCshiro
#
-std=gnu99 が怪しいですね。
#
7372でCFLAGS="... -std=gnu99" ./configure として同じ失敗になるんじゃないですか。
2011/02/23 07:34:31 UTC(もと)
#
そうですね。まずconfigure のときで既にこんなwaringが出ました。
#
checking sys/time.h usability... no
checking sys/time.h presence... yes
configure: WARNING: sys/time.h: present but cannot be compiled
configure: WARNING: sys/time.h:     check for missing prerequisite headers?
configure: WARNING: sys/time.h: see the Autoconf documentation
configure: WARNING: sys/time.h:     section "Present But Cannot Be Compiled"
configure: WARNING: sys/time.h: proceeding with the preprocessor's result
configure: WARNING: sys/time.h: in the future, the compiler will take precedence
configure: WARNING:     ## ---------------------------- ##
configure: WARNING:     ## Report this to shiro@acm.org ##
configure: WARNING:     ## ---------------------------- ##
checking for sys/time.h... yes
#
make は、もっと早いところでエラーになりました。
#
mm@mypa.0.$ make
for d in gc src lib ext doc; do (cd $d; make all); done
depbase=`echo allchblk.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`; \
if /bin/sh ./libtool --tag=CC --mode=compile gcc -DPACKAGE_NAME=\"gc\" -DPACKAGE_TARNAME=\"gc\" -DPACKAGE_VERSION=\"7.1\" -DPACKAGE_STRING=\"gc\ 7.1\" -DPACKAGE_BUGREPORT=\"Hans.Boehm@hp.com\" -DGC_VERSION_MAJOR=7 -DGC_VERSION_MINOR=1 -DPACKAGE=\"gc\" -DVERSION=\"7.1\" -DGC_SOLARIS_THREADS=1 -DTHREAD_LOCAL_ALLOC=1 -DSOLARIS25_PROC_VDB_BUG_FIXED=1 -DLT_OBJDIR=\".libs/\" -DNO_EXECUTE_PERMISSION=1 -DALL_INTERIOR_POINTERS=1 -DGC_GCJ_SUPPORT=1 -DJAVA_FINALIZATION=1 -DATOMIC_UNCOLLECTABLE=1 -DDONT_ADD_BYTE_AT_END=1 -DLARGE_CONFIG=1   -I./include    -fexceptions -I libatomic_ops/src -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__ -std=gnu99 -MT allchblk.lo -MD -MP -MF "$depbase.Tpo" -c -o allchblk.lo allchblk.c; \
then mv -f "$depbase.Tpo" "$depbase.Plo"; else rm -f "$depbase.Tpo"; exit 1; fi
libtool: compile:  gcc "-DPACKAGE_NAME=\"gc\"" "-DPACKAGE_TARNAME=\"gc\"" "-DPACKAGE_VERSION=\"7.1\"" "-DPACKAGE_STRING=\"gc 7.1\"" "-DPACKAGE_BUGREPORT=\"Hans.Boehm@hp.com\"" -DGC_VERSION_MAJOR=7 -DGC_VERSION_MINOR=1 "-DPACKAGE=\"gc\"" "-DVERSION=\"7.1\"" -DGC_SOLARIS_THREADS=1 -DTHREAD_LOCAL_ALLOC=1 -DSOLARIS25_PROC_VDB_BUG_FIXED=1 "-DLT_OBJDIR=\".libs/\"" -DNO_EXECUTE_PERMISSION=1 -DALL_INTERIOR_POINTERS=1 -DGC_GCJ_SUPPORT=1 -DJAVA_FINALIZATION=1 -DATOMIC_UNCOLLECTABLE=1 -DDONT_ADD_BYTE_AT_END=1 -DLARGE_CONFIG=1 -I./include -fexceptions -I libatomic_ops/src -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__ -std=gnu99 -MT allchblk.lo -MD -MP -MF .deps/allchblk.Tpo -c allchblk.c  -fPIC -DPIC -o .libs/allchblk.o
In file included from /usr/include/stdio.h:37,
                 from allchblk.c:18:
/usr/include/sys/feature_tests.h:353:2: #error "Compiler or options invalid for pre-UNIX 03 X/Open applications 	and pre-2001 POSIX applications"
*** Error code 1
make: Fatal error: Command failed for target `allchblk.lo'
#
ちなみに、r7373で CFLAGSの環境変数ありで configure した場合には、make するとき "-std=gnu99"はオミットされますね。コンパイルも通っちゃいました。
#
XPGがreviseされたときに、acceptableなCの版も変わったんでしょうかね。
#
あ、ちなみに、7372でも7373でも、subversionからとって来たものは、コンパイルは通ってもmake testは途中でエラーで停まります。
2011/02/23 07:47:03 UTCshiro
#
ありがとうございます。make testの問題はとりあえず置いといて、CFLAGSから解決していきましょうか。-std=gnu99と上の-Dフラグとが共存できないようなので、無理やり抜いてしまいましょう。これで試していただけるでしょうか。
#
===================================================================
--- configure.ac	(revision 7373)
+++ configure.ac	(working copy)
@@ -326,6 +326,15 @@
 
 dnl ===========================================================
 dnl Checks for header files.
+
+dnl Kludge for Solaris.  We need this setup before start checking with
+dnl the compiler.
+case $host in
+  *-pc-solaris2.*)
+    CFLAGS=`echo $CFLAGS | sed s/-std=gnu99//`
+    CFLAGS="$CFLAGS -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__" ;;
+esac
+
 dnl   We check sys/types.h merely to include it in the following tests,
 dnl   for some tests needs it.
 AC_HEADER_STDC
@@ -337,10 +346,6 @@
 
 dnl solaris specific
 AC_CHECK_HEADERS(sunmath.h)
-case $host in
-  *-pc-solaris2.*)
-    CFLAGS="$CFLAGS -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__" ;;
-esac
 
 dnl ===========================================================
 dnl Checks processor type, for processor-specific stuff
#
あ、sedの引数はquoteしないとまずいかも。訂正。
#
===================================================================
--- configure.ac	(revision 7373)
+++ configure.ac	(working copy)
@@ -326,6 +326,15 @@
 
 dnl ===========================================================
 dnl Checks for header files.
+
+dnl Kludge for Solaris.  We need this setup before start checking with
+dnl the compiler.
+case $host in
+  *-pc-solaris2.*)
+    CFLAGS=`echo $CFLAGS | sed 's/-std=gnu99//'`
+    CFLAGS="$CFLAGS -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__" ;;
+esac
+
 dnl   We check sys/types.h merely to include it in the following tests,
 dnl   for some tests needs it.
 AC_HEADER_STDC
@@ -337,10 +346,6 @@
 
 dnl solaris specific
 AC_CHECK_HEADERS(sunmath.h)
-case $host in
-  *-pc-solaris2.*)
-    CFLAGS="$CFLAGS -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__" ;;
-esac
 
 dnl ===========================================================
 dnl Checks processor type, for processor-specific stuff
2011/02/23 08:16:54 UTC(もと)
#
box.cのコンパイルのとこでは-std=gnu99が消えておらず、停まってしまいます。
#
mm@mypa.0.$ make
for d in gc src lib ext doc; do (cd $d; make all); done
depbase=`echo allchblk.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`; \
if /bin/sh ./libtool --tag=CC --mode=compile gcc -DPACKAGE_NAME=\"gc\" -DPACKAGE_TARNAME=\"gc\" -DPACKAGE_VERSION=\"7.1\" -DPACKAGE_STRING=\"gc\ 7.1\" -DPACKAGE_BUGREPORT=\"Hans.Boehm@hp.com\" -DGC_VERSION_MAJOR=7 -DGC_VERSION_MINOR=1 -DPACKAGE=\"gc\" -DVERSION=\"7.1\" -DGC_SOLARIS_THREADS=1 -DTHREAD_LOCAL_ALLOC=1 -DSOLARIS25_PROC_VDB_BUG_FIXED=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DNO_EXECUTE_PERMISSION=1 -DALL_INTERIOR_POINTERS=1 -DGC_GCJ_SUPPORT=1 -DJAVA_FINALIZATION=1 -DATOMIC_UNCOLLECTABLE=1 -DDONT_ADD_BYTE_AT_END=1 -DLARGE_CONFIG=1   -I./include    -fexceptions -I libatomic_ops/src -g -O2 -MT allchblk.lo -MD -MP -MF "$depbase.Tpo" -c -o allchblk.lo allchblk.c; \
then mv -f "$depbase.Tpo" "$depbase.Plo"; else rm -f "$depbase.Tpo"; exit 1; fi

[中略]

libtool: compile:  gcc "-DPACKAGE_NAME=\"gc\"" "-DPACKAGE_TARNAME=\"gc\"" "-DPACKAGE_VERSION=\"7.1\"" "-DPACKAGE_STRING=\"gc 7.1\"" "-DPACKAGE_BUGREPORT=\"Hans.Boehm@hp.com\"" -DGC_VERSION_MAJOR=7 -DGC_VERSION_MINOR=1 "-DPACKAGE=\"gc\"" "-DVERSION=\"7.1\"" -DGC_SOLARIS_THREADS=1 -DTHREAD_LOCAL_ALLOC=1 -DSOLARIS25_PROC_VDB_BUG_FIXED=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 "-DLT_OBJDIR=\".libs/\"" -DNO_EXECUTE_PERMISSION=1 -DALL_INTERIOR_POINTERS=1 -DGC_GCJ_SUPPORT=1 -DJAVA_FINALIZATION=1 -DATOMIC_UNCOLLECTABLE=1 -DDONT_ADD_BYTE_AT_END=1 -DLARGE_CONFIG=1 -I./include -fexceptions -I libatomic_ops/src -g -O2 -MT cord/cordxtra.lo -MD -MP -MF cord/.deps/cordxtra.Tpo -c cord/cordxtra.c -o cord/cordxtra.o >/dev/null 2>&1
/bin/sh ./libtool --tag=CC --mode=link gcc -fexceptions -I libat
#
続き
#
上の最後の-I libat の -I以後は、
#
-I libatomic_ops/src -g -O2 -MT cord/cordxtra.lo -MD -MP -MF cord/.deps/cordxtra.Tpo -c cord/cordxtra.c -o cord/cordxtra.o >/dev/null 2>&1
/bin/sh ./libtool --tag=CC --mode=link gcc -fexceptions -I libatomic_ops/src -g -O2    -o libcord.la -rpath /usr/local/lib -version-info 1:3:0 -no-undefined cord/cordbscs.lo cord/cordprnt.lo  cord/cordtest.lo cord/cordxtra.lo ./libgc.la 
libtool: link: gcc -shared -Wl,-z -Wl,text -Wl,-h -Wl,libcord.so.1 -o .libs/libcord.so.1.0.3  cord/.libs/cordbscs.o cord/.libs/cordprnt.o cord/.libs/cordtest.o cord/.libs/cordxtra.o   -R/home/mm/archives/Gauche/make/7373-try3/Gauche/gc/.libs -R/usr/local/lib ./.libs/libgc.so -lc   
libtool: link: (cd ".libs" && rm -f "libcord.so.1" && ln -s "libcord.so.1.0.3" "libcord.so.1")
libtool: link: (cd ".libs" && rm -f "libcord.so" && ln -s "libcord.so.1.0.3" "libcord.so")
libtool: link: ar cru .libs/libcord.a  cord/cordbscs.o cord/cordprnt.o cord/cordtest.o cord/cordxtra.o
libtool: link: ranlib .libs/libcord.a
libtool: link: ( cd ".libs" && rm -f "libcord.la" && ln -s "../libcord.la" "libcord.la" )
/bin/sh ./genconfig
GAUCHE_LOAD_PATH="" GAUCHE_DYNLOAD_PATH=""  gosh -l./preload -I../src -I../lib ./builtin-syms.scm
GAUCHE_LOAD_PATH="" GAUCHE_DYNLOAD_PATH=""  gosh -l./preload -I../src -I../lib ./geninsn
gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I./../gc/include  -g -O2 -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__ -fPIC -fomit-frame-pointer -c box.c
In file included from /usr/include/stdio.h:37,
                 from gauche.h:44,
                 from box.c:35:
/usr/include/sys/feature_tests.h:353:2: #error "Compiler or options invalid for pre-UNIX 03 X/Open applications 	and pre-2001 POSIX applications"
In file included from gauche.h:54,
                 from box.c:35:
./gauche/int64.h:153:2: #error system does not have 32bit integer
In file included from gauche.h:1123,
                 from box.c:35:
./gauche/vector.h:78: error: negative width in bit-field `size'
./gauche/vector.h:193: error: syntax error before "ScmInt32"
./gauche/vector.h:19
#
さらに続き.
#
上の193行のエラー以後は、
#
./gauche/vector.h:193: error: syntax error before "ScmInt32"
./gauche/vector.h:194: warning: type defaults to `int' in declaration of `ScmInt32'
./gauche/vector.h:194: error: syntax error before "array"
./gauche/vector.h:195: error: syntax error before "ScmInt32"
./gauche/vector.h:204: error: syntax error before "ScmUInt32"
./gauche/vector.h:205: warning: type defaults to `int' in declaration of `ScmUInt32'
./gauche/vector.h:205: error: syntax error before "array"
./gauche/vector.h:206: error: syntax error before "ScmUInt32"
In file included from gauche.h:1203,
                 from box.c:35:
./gauche/charset.h:55: warning: division by zero
In file included from gauche.h:1233,
                 from box.c:35:
./gauche/number.h:90: error: negative width in bit-field `size'
./gauche/number.h:204: error: syntax error before "Scm_GetInteger32Clamp"
./gauche/number.h:204: warning: type defaults to `int' in declaration of `Scm_GetInteger32Clamp'
./gauche/number.h:204: warning: data definition has no type or storage class
./gauche/number.h:205: error: syntax error before "Scm_GetIntegerU32Clamp"
./gauche/number.h:205: warning: type defaults to `int' in declaration of `Scm_GetIntegerU32Clamp'
./gauche/number.h:205: warning: data definition has no type or storage class
*** Error code 1
make: Fatal error: Command failed for target `box.o'
Current working directory /home/mm/archives/Gauche/make/7373-try3/Gauche/src
*** Error code 1
make: Fatal error: Command failed for target `all'
mm@mypa.0.$
#
こんなかんじです。
2011/02/23 08:52:13 UTCenami
#
configure みると c99 option は $CC のほうにつけてるようですよ
2011/02/23 11:06:38 UTCshiro
#
ああそっちにつくのか。あれ、そしたら CFLAGS=... ./configure でうまくいったのはなぜだろう。
#
AC_PROG_CC_STDCの時点でCFLAGSが定義されてることが重要なのかな。
2011/02/23 11:30:09 UTCshiro
#
わかった。AC_PROC_CCより前にCFLAGSが設定されてた場合、-std=gnu99オプションのテストはエラーになるから、それで-std=gnu99がつかないんだ。たぶん。
#
というわけでこっちに動かしてやってみてください>(もと)さん
#
--- configure.ac	(revision 7373)
+++ configure.ac	(working copy)
@@ -305,6 +305,14 @@
 
 dnl ==========================================================
 dnl Checks for programs.
+
+dnl Kludge for Solaris.  We need this setup before start checking with
+dnl the compiler.
+case $host in
+  *-pc-solaris2.*)
+    CFLAGS="$CFLAGS -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__" ;;
+esac
+
 AC_PROG_CC
 AC_PROG_CC_STDC
 AC_C_CONST
@@ -337,10 +345,6 @@
 
 dnl solaris specific
 AC_CHECK_HEADERS(sunmath.h)
-case $host in
-  *-pc-solaris2.*)
-    CFLAGS="$CFLAGS -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__" ;;
-esac
 
 dnl ===========================================================
 dnl Checks processor type, for processor-specific stuff
2011/02/23 12:39:38 UTC(もと)
#
ありがとうございます。コンパイルは通るようになりました。
2011/02/23 12:46:47 UTCshiro
#
よっしゃ。テストでこけるのはどこですか? gauche.process以外で。
2011/02/23 13:15:55 UTC(もと)
#
あー、えーと、-std=gnu99 といっしょに-O2も消えてしまったので、ふと、先ほどいただいたパッチに -g -O2も書き足してコンパイルし直しはじめてしまいまして... イタズラなしで、これからまたやり直します。少々お待ち下さい。ちなみに、たわむれに-O2も足してみたほうでは、make testhafailなしでした。家に戻ったので、またSolaris Expressでやってます。こっちのほうが新しいので、こっちで問題なければそれで良いのだと思います。
#
すみません、何寝惚けてんだ私は。 -O2うんぬんは勘違いでした。ごめんなさい。
#
一カ所failしましたが、自信無いです。後日また、顔を洗って出直します。
#
いちおう、貼ります。ここです。
#
Testing UTF8 ...                                                 passed.
Testing system ...                                               failed.
discrepancies found.  Errors are:
test select: expects (0 #f #f #f #f 1 #t #f #f #t #\x) => got (1 #f #f #f #t 1 #t #f #f #t #\x)
Testing autoload and autoprovide ...                             passed.
Testing rfc ...                                                  passed.
#
今度、もうすこし頭をすっきりさせてやり直してみます。
2011/02/23 13:26:17 UTCokuoku
#
select(2)の挙動はいかにも問題が出そうなところだ。。
2011/02/23 13:30:31 UTCshiro
#
ふむ、そのselectのテストはfork後の子プロセスの実行タイミングに依存してるところがあるのでそのせいかも。どっかでハンドシェーク入れれば確実になるかな。