#! /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++11 -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 $OPTIONS $FILE done case $TRIPLE in *-*-mingw*) for FILE in ../src/support/win32/*.cpp; do $CXX -c -g -Os $RC_CFLAGS $EXTRA_FLAGS -I../include $OPTIONS $FILE done ;; esac $CC *.o $RC_CFLAGS $LDSHARED_FLAGS $EXTRA_FLAGS if [ -z $RC_XBS ] then rm *.o fi