OSDN Git Service

* mknumeric_limits: Output to temporary files, and rename them at
[pf3gnuchains/gcc-fork.git] / libstdc++-v3 / mknumeric_limits
index 3f52211..25d8a27 100755 (executable)
@@ -8,12 +8,18 @@
 
 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
 
@@ -23,18 +29,23 @@ if [ ! -d "$BUILD_DIR" ]; then
   exit 1
 fi
 
-if [ ! -d "$BUILD_DIR/bits" ]; then
-  mkdir  "$BUILD_DIR/bits"
+if [ ! -d "$BUILD_DIR/include" ]; then
+  mkdir  "$BUILD_DIR/include"
+fi
+
+if [ ! -d "$BUILD_DIR/include/bits" ]; then
+  mkdir  "$BUILD_DIR/include/bits"
 fi
+
 if [ ! -d "$BUILD_DIR/src" ]; then
   mkdir  "$BUILD_DIR/src"
 fi
 
-OUT_H="$BUILD_DIR/bits/std_limits.h"
+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
@@ -46,12 +57,16 @@ fi
 XCOMPILE=$3
 if [ $XCOMPILE -eq 1 ]; then
   echo "using default values for cross compiles"
-  cp $SRC_DIR/bits/limits_generic.h $OUT_H
+  cp $SRC_DIR/include/bits/limits_generic.h $OUT_H
   cp $SRC_DIR/src/limits_generic.cc $OUT_C
   exit 0;
 fi   
 
-cat <<EOF > $OUT_H
+: ${CXX:="$BUILD_DIR/../../gcc/g++ -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.
@@ -163,11 +178,11 @@ namespace std {
 
 EOF
 
-echo "$CXX $CPPFLAGS -I$BUILD_DIR \
+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 \
+$CXX $CPPFLAGS -I$BUILD_DIR/include \
     -o "$BUILD_DIR/src/gen-num-limits" "$SRC_DIR/src/gen-num-limits.cc" \
      $LDFLAGS
 
@@ -176,9 +191,9 @@ if [ ! -f "$BUILD_DIR/src/gen-num-limits" ]; then
   exit 1
 fi
 
-"$BUILD_DIR/src/gen-num-limits" >> $OUT_H
+"$BUILD_DIR/src/gen-num-limits" >> $OUT_H-t
 
-cat <<EOF >> $OUT_H
+cat <<EOF >> $OUT_H-t
 } // namespace std
 
 #endif // _CPP_NUMERIC_LIMITS
@@ -232,8 +247,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;
@@ -261,8 +276,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