OSDN Git Service

Add GNATS ID.
[pf3gnuchains/gcc-fork.git] / libstdc++-v3 / mknumeric_limits
index a1ecc96..635e280 100755 (executable)
@@ -8,23 +8,6 @@
 
 echo "running mknumeric_limits"
 
-: ${CXX:=g++}
-
-case `uname` in
-    CYGWIN*) 
-       LDFLAGS='-nodefaultlibs -lcygwin -lc -lkernel32 -lgcc' ;;
-    AIX*) 
-       case $CXX in
-           *pthread*)
-               LDFLAGS='-nodefaultlibs -lgcc -L/usr/lib/threads -lpthreads -lc_r /usr/lib/libc.a' ;;
-           *)
-               LDFLAGS='-nodefaultlibs -lgcc -lc' ;;
-       esac
-       ;;
-    *)
-       LDFLAGS='-nodefaultlibs -lgcc -lc' ;;
-esac
-
 BUILD_DIR=$1
 if [ ! -d "$BUILD_DIR" ]; then
   echo "build directory $BUILD_DIR not found, exiting."
@@ -47,7 +30,7 @@ OUT_H="$BUILD_DIR/include/bits/std_limits.h"
 OUT_C="$BUILD_DIR/src/limitsMEMBERS.cc"
 
 if [ -f $OUT_C ]; then
-    rm -f $OUT_H OUT_C
+    rm -f $OUT_H $OUT_C $OUT_H-t $OUT_C-t
 fi
 
 SRC_DIR=$2
@@ -64,7 +47,11 @@ if [ $XCOMPILE -eq 1 ]; then
   exit 0;
 fi   
 
-cat <<EOF > $OUT_H
+CC=${CC="$BUILD_DIR/../../gcc/xgcc -B$BUILD_DIR/../../gcc/"}
+
+# We output to a temporary file, so that we don't appear to have
+# succeeded unless we actually do.
+cat <<EOF > $OUT_H-t
 // The template and inlines for the -*- C++ -*- numeric_limits classes.
 
 // Copyright (C) 1999, 2000 Free Software Foundation, Inc.
@@ -176,22 +163,24 @@ namespace std {
 
 EOF
 
-echo "$CXX $CPPFLAGS -I$BUILD_DIR/include \
-    -o "$BUILD_DIR/src/gen-num-limits" "$SRC_DIR/src/gen-num-limits.cc" \
-     $LDFLAGS"
-
-$CXX $CPPFLAGS -I$BUILD_DIR/include \
-    -o "$BUILD_DIR/src/gen-num-limits" "$SRC_DIR/src/gen-num-limits.cc" \
-     $LDFLAGS
+# Must turn off exceptions, because the C++ exception handling support
+# routines have not been built yet.
+echo "$CC -I. $CPPFLAGS -I$BUILD_DIR/include -DHAVE_CONFIG_H -fno-exceptions \
+    -o $BUILD_DIR/src/gen-num-limits $SRC_DIR/src/gen-num-limits.cc"
 
-if [ ! -f "$BUILD_DIR/src/gen-num-limits" ]; then
+{ $CC -I. $CPPFLAGS -I$BUILD_DIR/include -DHAVE_CONFIG_H -fno-exceptions \
+    -o "$BUILD_DIR/src/gen-num-limits" "$SRC_DIR/src/gen-num-limits.cc"
+} || {
   echo "gen-num-limits failed to build, exiting."
   exit 1
-fi
+}
 
-"$BUILD_DIR/src/gen-num-limits" >> $OUT_H
+"$BUILD_DIR/src/gen-num-limits" >> $OUT_H-t || {
+  echo "gen-num-limits failed to execute, exiting."
+  exit 1
+}
 
-cat <<EOF >> $OUT_H
+cat <<EOF >> $OUT_H-t
 } // namespace std
 
 #endif // _CPP_NUMERIC_LIMITS
@@ -199,7 +188,7 @@ EOF
 
 trait_name=numeric_limits
 
-cat <<EOF > $OUT_C
+cat <<EOF > $OUT_C-t
 // Static data members of -*- C++ -*- numeric_limits classes
 
 // Copyright (C) 1999, 2000 Free Software Foundation, Inc.
@@ -245,8 +234,8 @@ for type_name in bool char 'signed char' 'unsigned char' \
            long 'unsigned long' 'long long' 'unsigned long long' \
            float double 'long double'
     do
-     grep "<$type_name>" $OUT_H >/dev/null 2>&1 || continue
-     cat <<EOF >> $OUT_C
+     grep "<$type_name>" $OUT_H-t >/dev/null 2>&1 || continue
+     cat <<EOF >> $OUT_C-t
 
     const bool $trait_name<$type_name>::is_specialized;
     const int  $trait_name<$type_name>::digits;
@@ -274,8 +263,11 @@ EOF
 
 done
 
-cat <<EOF >> $OUT_C
+cat <<EOF >> $OUT_C-t
 } // namespace std
 
 
 EOF
+
+mv $OUT_C-t $OUT_C
+mv $OUT_H-t $OUT_H