1#! /bin/sh 2# 3# Set the $TRIPLE environment variable to your system's triple before 4# running this script. If you set $CXX, that will be used to compile 5# the library. Otherwise we'll use clang++. 6 7set -e 8 9if [ `basename $(pwd)` != "lib" ] 10then 11 echo "current directory must be lib" 12 exit 1 13fi 14 15if [ -z "$CXX" ] 16then 17 CXX=clang++ 18fi 19 20if [ -z "$CC" ] 21then 22 CC=clang 23fi 24 25if [ -z $RC_ProjectSourceVersion ] 26then 27 RC_ProjectSourceVersion=1 28fi 29 30EXTRA_FLAGS="-std=c++11 -stdlib=libc++ -fstrict-aliasing -Wstrict-aliasing=2 \ 31 -Wsign-conversion -Wshadow -Wconversion -Wunused-variable \ 32 -Wmissing-field-initializers -Wchar-subscripts -Wmismatched-tags \ 33 -Wmissing-braces -Wshorten-64-to-32 -Wsign-compare \ 34 -Wstrict-aliasing=2 -Wstrict-overflow=4 -Wunused-parameter \ 35 -Wnewline-eof" 36 37case $TRIPLE in 38 *-apple-*) 39 if [ -z $RC_XBS ] 40 then 41 RC_CFLAGS="-arch i386 -arch x86_64" 42 fi 43 SOEXT=dylib 44 if [ -n "$SDKROOT" ] 45 then 46 EXTRA_FLAGS+="-isysroot ${SDKROOT}" 47 CXX=`xcrun -sdk "${SDKROOT}" -find clang++` 48 CC=`xcrun -sdk "${SDKROOT}" -find clang` 49 fi 50 LDSHARED_FLAGS="-o libc++abi.dylib \ 51 -dynamiclib -nodefaultlibs \ 52 -current_version ${RC_ProjectSourceVersion} \ 53 -compatibility_version 1 \ 54 -install_name /usr/lib/libc++abi.dylib \ 55 -lSystem" 56 if [ -f "${SDKROOT}/usr/local/lib/libCrashReporterClient.a" ] 57 then 58 LDSHARED_FLAGS+=" -lCrashReporterClient" 59 fi 60 ;; 61 *-*-mingw*) 62 # FIXME: removing libgcc and libsupc++ dependencies means porting libcxxrt and LLVM/compiler-rt 63 SOEXT=dll 64 LDSHARED_FLAGS="-o libc++abi.dll \ 65 -shared -nodefaultlibs -Wl,--export-all-symbols -Wl,--allow-multiple-definition -Wl,--out-implib,libc++abi.dll.a \ 66 -lsupc++ -lpthread -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcr100 -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt" 67 ;; 68 *) 69 RC_CFLAGS="-fPIC" 70 SOEXT=so 71 LDSHARED_FLAGS="-o libc++abi.so.1.0 \ 72 -shared -nodefaultlibs -Wl,-soname,libc++abi.so.1 \ 73 -lpthread -lrt -lc -lstdc++" 74 ;; 75esac 76 77if [ -z $RC_XBS ] 78then 79 rm -f libc++abi.1.$SOEXT* 80fi 81 82set -x 83 84for FILE in ../src/*.cpp; do 85 $CXX -c -g -O3 $RC_CFLAGS $EXTRA_FLAGS -I../include $OPTIONS $FILE 86done 87case $TRIPLE in 88 *-*-mingw*) 89 for FILE in ../src/support/win32/*.cpp; do 90 $CXX -c -g -Os $RC_CFLAGS $EXTRA_FLAGS -I../include $OPTIONS $FILE 91 done 92 ;; 93esac 94$CC *.o $RC_CFLAGS $LDSHARED_FLAGS $EXTRA_FLAGS 95 96if [ -z $RC_XBS ] 97then 98 rm *.o 99fi 100