| #! /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 |