libcxx initial import

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@103490 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/testit b/test/testit
new file mode 100755
index 0000000..b06e8e5
--- /dev/null
+++ b/test/testit
@@ -0,0 +1,175 @@
+#!/bin/bash
+# //===--------------------------- testit ---------------------------------===//
+# //
+# // ÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊThe LLVM Compiler Infrastructure
+# //
+# // This file is distributed under the University of Illinois Open Source
+# // License. See LICENSE.TXT for details.
+# //
+# //===--------------------------------------------------------------------===//
+
+BACKUP="../"
+
+currentpath=`pwd`
+origpath=$currentpath
+currentdir=`basename $currentpath`
+while [ $currentdir != "test" ]; do
+	if [ $currentdir == "/" ]
+	then
+		echo "current directory must be in or under \"test\"."
+		exit 1
+	fi
+	cd ..
+	currentpath=`pwd`
+	currentdir=`basename $currentpath`
+	BACKUP="../"$BACKUP
+done
+cd $origpath
+
+if [ -z $CC ]
+then
+	CC=g++
+fi
+
+auto_header=0
+
+if [ -z $HEADER_INCLUDE ]
+then
+	HEADER_INCLUDE=$BACKUP"include"
+	let "auto_header+=1"
+fi
+
+auto_lib=0
+
+SOURCE_LIB=/usr/lib/libc++.dylib
+#SOURCE_LIB=/Users/hinnant/Development/libcpp/lib/libc++.a
+
+if [ -z $SOURCE_LIB ]
+then
+	SOURCE_LIB=$BACKUP"lib/libc++.dylib"
+	let "auto_lib+=1"
+fi
+
+if [ -z "$OPTIONS" ]
+then
+ 	OPTIONS="-nostdinc++ -nodefaultlibs /usr/lib/libSystem.B.dylib -arch `arch`"
+fi
+
+FAIL=0
+PASS=0
+UNIMPLEMENTED=0
+IMPLEMENTED_FAIL=0
+IMPLEMENTED_PASS=0
+
+function afunc
+{
+	fail=0
+	pass=0
+	if (ls *.fail.cpp &> /dev/null)
+	then
+		for FILE in $(ls *.fail.cpp); do
+			if $CC $OPTIONS -I$HEADER_INCLUDE $SOURCE_LIB $FILE &> /dev/null
+			then
+				rm ./a.out
+				echo "$FILE should not compile"
+				let "fail+=1"
+			else
+				let "pass+=1"
+			fi
+		done
+	fi
+	
+	if (ls *.pass.cpp &> /dev/null)
+	then
+		for FILE in $(ls *.pass.cpp); do
+			if $CC $OPTIONS -I$HEADER_INCLUDE $SOURCE_LIB $FILE
+			then
+				if ./a.out
+				then
+					rm ./a.out
+					let "pass+=1"
+				else
+					echo "$FILE failed at run time"
+					let "fail+=1"
+					rm ./a.out
+				fi
+			else
+				echo "$FILE failed to compile"
+				let "fail+=1"
+			fi
+		done
+	fi
+
+	if [ $fail -gt 0 ]
+	then
+		echo "failed $fail tests in `pwd`"
+		let "IMPLEMENTED_FAIL+=1"
+	fi
+	if [ $pass -gt 0 ]
+	then
+		echo "passed $pass tests in `pwd`"
+		if [ $fail -eq 0 ]
+		then
+			let "IMPLEMENTED_PASS+=1"
+		fi
+	fi
+	if [ $fail -eq 0 -a $pass -eq 0 ]
+	then
+		echo "not implemented:  `pwd`"
+		let "UNIMPLEMENTED+=1"
+	fi
+
+	let "FAIL+=$fail"
+	let "PASS+=$pass"
+
+	for FILE in *
+	do
+		if [ -d "$FILE" ];
+		then
+			cd $FILE
+			if [ $auto_header -eq 1 ]
+			then
+				SAVE_HEADER_INCLUDE=$HEADER_INCLUDE
+				HEADER_INCLUDE="../"$HEADER_INCLUDE
+			fi
+			if [ $auto_lib -eq 1 ]
+			then
+				SAVE_SOURCE_LIB=$SOURCE_LIB
+				SOURCE_LIB="../"$SOURCE_LIB
+			fi
+
+			afunc
+
+			if [ $auto_header -eq 1 ]
+			then
+				HEADER_INCLUDE=${HEADER_INCLUDE:3}
+			fi
+			if [ $auto_lib -eq 1 ]
+			then
+				SOURCE_LIB=${SOURCE_LIB:3}
+			fi
+			cd ..
+		fi
+	done
+}
+
+afunc
+
+echo "****************************************************"
+echo "Results for `pwd`:"
+echo "using `$CC --version`"
+echo "with $OPTIONS -I$HEADER_INCLUDE $SOURCE_LIB"
+echo "----------------------------------------------------"
+echo "sections without tests   : $UNIMPLEMENTED"
+echo "sections with failures   : $IMPLEMENTED_FAIL"
+echo "sections without failures: $IMPLEMENTED_PASS"
+echo "                       +   ----"
+echo "total number of sections : $(($UNIMPLEMENTED+$IMPLEMENTED_FAIL+$IMPLEMENTED_PASS))"
+echo "----------------------------------------------------"
+echo "number of tests failed   : $FAIL"
+echo "number of tests passed   : $PASS"
+echo "                       +   ----"
+echo "total number of tests    : $(($FAIL+$PASS))"
+echo "****************************************************"
+
+exit $FAIL