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