You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.5 KiB
99 lines
2.5 KiB
#! /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
|
|
|