Home | History | Annotate | Download | only in lib
      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 
      7 set -e
      8 
      9 if [ `basename $(pwd)` != "lib" ]
     10 then
     11 	echo "current directory must be lib"
     12 	exit 1
     13 fi
     14 
     15 if [ -z "$CXX" ]
     16 then
     17 	CXX=clang++
     18 fi
     19 
     20 if [ -z "$CC" ]
     21 then
     22     CC=clang
     23 fi
     24 
     25 if [ -z $RC_ProjectSourceVersion ]
     26 then
     27   RC_ProjectSourceVersion=1
     28 fi
     29 
     30 EXTRA_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 
     37 case $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     ;;
     75 esac
     76 
     77 if [ -z $RC_XBS ]
     78 then
     79     rm -f libc++abi.1.$SOEXT*
     80 fi
     81 
     82 set -x
     83 
     84 for FILE in ../src/*.cpp; do
     85 	$CXX -c -g -O3 $RC_CFLAGS $EXTRA_FLAGS -I../include $OPTIONS $FILE
     86 done
     87 case $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   ;;
     93 esac
     94 $CC *.o $RC_CFLAGS $LDSHARED_FLAGS $EXTRA_FLAGS
     95 
     96 if [ -z $RC_XBS ]
     97 then
     98     rm *.o
     99 fi
    100