xref: /aosp_15_r20/external/libcxxabi/lib/buildit (revision c05d8e5dc3e10f6ce4317e8bc22cc4a25f55fa94)
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