111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#! /bin/sh 211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# 311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# Set the $TRIPLE environment variable to your system's triple before 411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# running this script. If you set $CXX, that will be used to compile 511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# the library. Otherwise we'll use clang++. 611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertset -e 811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertif [ `basename $(pwd)` != "lib" ] 1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertthen 1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert echo "current directory must be lib" 1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert exit 1 1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfi 1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertif [ -z "$CXX" ] 1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertthen 1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert CXX=clang++ 1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfi 1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertif [ -z "$CC" ] 2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertthen 2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert CC=clang 2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfi 2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertif [ -z $RC_ProjectSourceVersion ] 2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertthen 2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RC_ProjectSourceVersion=1 2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfi 2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEXTRA_FLAGS="-std=c++11 -stdlib=libc++ -fstrict-aliasing -Wstrict-aliasing=2 \ 3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert -Wsign-conversion -Wshadow -Wconversion -Wunused-variable \ 3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert -Wmissing-field-initializers -Wchar-subscripts -Wmismatched-tags \ 3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert -Wmissing-braces -Wshorten-64-to-32 -Wsign-compare \ 3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert -Wstrict-aliasing=2 -Wstrict-overflow=4 -Wunused-parameter \ 3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert -Wnewline-eof" 3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertcase $TRIPLE in 3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *-apple-*) 3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert if [ -z $RC_XBS ] 4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert then 4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RC_CFLAGS="-arch i386 -arch x86_64" 4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert fi 4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert SOEXT=dylib 4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert if [ -n "$SDKROOT" ] 4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert then 4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert EXTRA_FLAGS+="-isysroot ${SDKROOT}" 4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert CXX=`xcrun -sdk "${SDKROOT}" -find clang++` 4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert CC=`xcrun -sdk "${SDKROOT}" -find clang` 4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert fi 5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert LDSHARED_FLAGS="-o libc++abi.dylib \ 5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert -dynamiclib -nodefaultlibs \ 5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert -current_version ${RC_ProjectSourceVersion} \ 5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert -compatibility_version 1 \ 5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert -install_name /usr/lib/libc++abi.dylib \ 5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert -lSystem" 5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert if [ -f "${SDKROOT}/usr/local/lib/libCrashReporterClient.a" ] 5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert then 5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert LDSHARED_FLAGS+=" -lCrashReporterClient" 5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert fi 6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ;; 6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *-*-mingw*) 6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert # FIXME: removing libgcc and libsupc++ dependencies means porting libcxxrt and LLVM/compiler-rt 6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert SOEXT=dll 6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert LDSHARED_FLAGS="-o libc++abi.dll \ 6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert -shared -nodefaultlibs -Wl,--export-all-symbols -Wl,--allow-multiple-definition -Wl,--out-implib,libc++abi.dll.a \ 6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert -lsupc++ -lpthread -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcr100 -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt" 6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ;; 6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *) 6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert RC_CFLAGS="-fPIC" 7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert SOEXT=so 7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert LDSHARED_FLAGS="-o libc++abi.so.1.0 \ 7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert -shared -nodefaultlibs -Wl,-soname,libc++abi.so.1 \ 7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert -lpthread -lrt -lc -lstdc++" 7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ;; 7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertesac 7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertif [ -z $RC_XBS ] 7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertthen 7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert rm -f libc++abi.1.$SOEXT* 8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfi 8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertset -x 8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfor FILE in ../src/*.cpp; do 8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert $CXX -c -g -O3 $RC_CFLAGS $EXTRA_FLAGS -I../include $OPTIONS $FILE 8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdone 8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertcase $TRIPLE in 8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *-*-mingw*) 8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert for FILE in ../src/support/win32/*.cpp; do 9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert $CXX -c -g -Os $RC_CFLAGS $EXTRA_FLAGS -I../include $OPTIONS $FILE 9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert done 9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ;; 9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertesac 9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert$CC *.o $RC_CFLAGS $LDSHARED_FLAGS $EXTRA_FLAGS 9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertif [ -z $RC_XBS ] 9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertthen 9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert rm *.o 9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfi 100