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

EXTRA_FLAGS="-std=c++0x -stdlib=libc++ -fstrict-aliasing -Wstrict-aliasing=2 \
             -Wsign-conversion -Wshadow -Wconversion -Wunused-variable \
             -Wmissing-field-initializers -Wchar-subscripts -Wmismatched-tags \
             -Wmissing-braces -Wshorten-64-to-32 -Wsign-compare \
             -Wstrict-aliasing=2 -Wstrict-overflow=4 -Wunused-parameter \
             -Wnewline-eof"

case $TRIPLE in
  *-apple-*)
    if [ -z $RC_XBS ]
    then
      RC_CFLAGS="-arch i386 -arch x86_64"
    fi
    SOEXT=dylib
    if [ -n "$SDKROOT" ]
    then
        EXTRA_FLAGS+="-isysroot ${SDKROOT}"
        CXX=`xcrun -sdk "${SDKROOT}"  -find clang++`
        CC=`xcrun -sdk "${SDKROOT}"  -find clang`
    fi
    LDSHARED_FLAGS="-o libc++abi.dylib \
        -dynamiclib -nodefaultlibs  \
        -current_version ${RC_ProjectSourceVersion} \
        -compatibility_version 1 \
        -install_name /usr/lib/libc++abi.dylib \
        -lSystem"
	if [ -f "${SDKROOT}/usr/local/lib/libCrashReporterClient.a" ]
	then
		LDSHARED_FLAGS+=" -lCrashReporterClient"
	fi
    ;;
  *-*-mingw*)
    # FIXME: removing libgcc and libsupc++ dependencies means porting libcxxrt and LLVM/compiler-rt
    SOEXT=dll
    LDSHARED_FLAGS="-o libc++abi.dll \
        -shared -nodefaultlibs -Wl,--export-all-symbols -Wl,--allow-multiple-definition -Wl,--out-implib,libc++abi.dll.a \
        -lsupc++ -lpthread -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcr100 -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt"
	;;
  *)
    RC_CFLAGS="-fPIC"
    SOEXT=so
    LDSHARED_FLAGS="-o libc++abi.so.1.0 \
        -shared -nodefaultlibs -Wl,-soname,libc++abi.so.1 \
        -lpthread -lrt -lc -lstdc++"
    ;;
esac

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

set -x

for FILE in ../src/*.cpp; do
	$CXX -c -g -O3 $RC_CFLAGS $EXTRA_FLAGS -I../include $FILE
done
case $TRIPLE in
  *-*-mingw*)
  for FILE in ../src/support/win32/*.cpp; do
    $CXX -c -g -Os $RC_CFLAGS $EXTRA_FLAGS -I../include $FILE
  done
  ;;
esac
$CC *.o $RC_CFLAGS $LDSHARED_FLAGS $EXTRA_FLAGS

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