#! /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 $MACOSX_DEPLOYMENT_TARGET ]
then
  MACOSX_DEPLOYMENT_TARGET=10.6
fi

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

case $TRIPLE in
  *-apple-*)
    if [ -z $RC_BUILDIT ]
    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"
		LDSHARED_FLAGS="-o libc++.1.dylib \
			-dynamiclib -nodefaultlibs  \
			-current_version ${RC_ProjectSourceVersion} -compatibility_version 1 \
			-install_name /usr/lib/libc++.1.dylib \
			${SDKROOT}/usr/lib/libc++abi.dylib \
			-lSystem  \
			-Wl,-unexported_symbols_list,libc++unexp.exp  \
			-Wl,-reexported_symbols_list,libc++abi.exp \
			-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_BUILDIT ]
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

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

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