#! /bin/sh
#
# Set the $TRIPLE environment variable to your system's triple before
# running this script.  If you set $CXX, that will be used to compile
# the library.  Otherwise we'll use clang++.

set -e

if [ `basename $(pwd)` != "lib" ]
then
	echo "current directory must be lib"
	exit 1
fi

if [ -z "$CXX" ]
then
	CXX=clang++
fi

if [ -z "$CC" ]
then
    CC=clang
fi

if [ -z $MACOSX_DEPLOYMENT_TARGET ]
then
	if [ -z $IPHONEOS_DEPLOYMENT_TARGET ]
	then
		MACOSX_DEPLOYMENT_TARGET=10.6
	fi
fi

if [ -z $RC_ProjectSourceVersion ]
then
  RC_ProjectSourceVersion=1
fi

case $TRIPLE in
  *-apple-*)
    if [ -z $RC_XBS ]
    then
      RC_CFLAGS="-arch i386 -arch x86_64"
    fi
    SOEXT=dylib
	if [ "$MACOSX_DEPLOYMENT_TARGET" == "10.6" ]
	then
	    EXTRA_FLAGS="-std=c++0x -U__STRICT_ANSI__"
		LDSHARED_FLAGS="-o libc++.1.dylib \
			-dynamiclib -nodefaultlibs -current_version 1 \
			-compatibility_version 1 \
			-install_name /usr/lib/libc++.1.dylib \
			-Wl,-reexport_library,/usr/lib/libc++abi.dylib \
			-Wl,-unexported_symbols_list,libc++unexp.exp  \
			/usr/lib/libSystem.B.dylib"
	else
		EXTRA_FLAGS="-std=c++0x "
		RE_EXPORT_LINE="/usr/lib/libc++abi.dylib -Wl,-reexported_symbols_list,libc++abi.exp"
		if [ -n "$SDKROOT" ]
		then
			EXTRA_FLAGS+="-isysroot ${SDKROOT}"
			if echo "${RC_ARCHS}" | grep -q "armv7"  
			then
				RE_EXPORT_LINE="${SDKROOT}/usr/lib/libc++abi.dylib -Wl,-reexported_symbols_list,libc++sjlj-abi.exp"
			else
				RE_EXPORT_LINE="-Wl,-reexport_library,${SDKROOT}/usr/lib/libc++abi.dylib"
			fi
			CXX=`xcrun -sdk "${SDKROOT}"  -find clang++`
			CC=`xcrun -sdk "${SDKROOT}"  -find clang`
		fi
	    LDSHARED_FLAGS="-o libc++.1.dylib \
			-dynamiclib -nodefaultlibs  \
			-current_version ${RC_ProjectSourceVersion} -compatibility_version 1 \
			-install_name /usr/lib/libc++.1.dylib \
			-lSystem  \
			-Wl,-unexported_symbols_list,libc++unexp.exp  \
			${RE_EXPORT_LINE}  \
			-Wl,-force_symbols_not_weak_list,notweak.exp "
	fi
    ;;
  *)
    RC_CFLAGS="-fPIC"
    SOEXT=so
    LDSHARED_FLAGS="-o libc++.so.1.0 \
        -shared -nodefaultlibs -Wl,-soname,libc++.so.1 \
        -lpthread -lrt -lc"
    ;;
esac

if [ -z $RC_XBS ]
then
    rm -f libc++.1.$SOEXT*
fi

set -x

for FILE in ../src/*.cpp; do
	$CXX -c -g -Os $RC_CFLAGS $EXTRA_FLAGS -nostdinc++ -I../include $FILE
done


$CC *.o $RC_CFLAGS $LDSHARED_FLAGS $EXTRA_FLAGS

#libtool -static -o libc++.a *.o

if [ -z $RC_XBS ]
then
    rm *.o
fi
