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