blob: 6856518db3bd25eddba41bd246123d3ff10a78fc [file] [log] [blame]
Howard Hinnantadff4892010-05-24 17:49:411#! /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
Michael J. Spencer626916f2010-12-10 19:47:545# the library. Otherwise we'll use clang++.
Howard Hinnantadff4892010-05-24 17:49:416
7set -e
8
Howard Hinnantbc8d3f92010-05-11 19:42:169if [ `basename $(pwd)` != "lib" ]
10then
11echo "current directory must be lib"
12exit 1
13fi
14
Howard Hinnanta6a062d2010-06-02 18:20:3915if [ -z "$CXX" ]
Howard Hinnantbc8d3f92010-05-11 19:42:1616then
Howard Hinnant45f57172010-09-14 20:26:2717CXX=clang++
Howard Hinnantbc8d3f92010-05-11 19:42:1618fi
19
Nick Kledzikc6e08d62011-05-04 21:50:4620if [ -z "$CC" ]
21then
22 CC=clang
23fi
24
Nick Kledzikc7e4d822010-09-10 20:42:3625if [ -z $MACOSX_DEPLOYMENT_TARGET ]
26then
27 MACOSX_DEPLOYMENT_TARGET=10.6
28fi
29
30if [ -z $RC_ProjectSourceVersion ]
31then
32 RC_ProjectSourceVersion=1
33fi
34
Howard Hinnantadff4892010-05-24 17:49:4135case $TRIPLE in
36 *-apple-*)
37 if [ -z $RC_BUILDIT ]
38 then
Howard Hinnant0e353f22010-08-11 18:11:3639 RC_CFLAGS="-arch i386 -arch x86_64"
Howard Hinnantadff4892010-05-24 17:49:4140 fi
41 SOEXT=dylib
Nick Kledzikc7e4d822010-09-10 20:42:3642if [ "$MACOSX_DEPLOYMENT_TARGET" == "10.6" ]
43then
Howard Hinnant30bbc932011-01-27 21:01:5144 EXTRA_FLAGS="-std=c++0x -U__STRICT_ANSI__"
Nick Kledzikc7e4d822010-09-10 20:42:3645LDSHARED_FLAGS="-o libc++.1.dylib \
46-dynamiclib -nodefaultlibs -current_version 1 \
47-compatibility_version 1 \
Howard Hinnant08774c52011-02-16 00:40:0648-install_name /usr/lib/libc++.1.dylib \
Nick Kledzikc7e4d822010-09-10 20:42:3649-Wl,-reexport_library,/usr/lib/libc++abi.dylib \
Howard Hinnant2d72b1e2010-12-17 14:46:4350-Wl,-unexported_symbols_list,libc++unexp.exp \
Nick Kledzikc7e4d822010-09-10 20:42:3651/usr/lib/libSystem.B.dylib"
52else
Nick Kledzikc6e08d62011-05-04 21:50:4653EXTRA_FLAGS="-std=c++0x "
54RE_EXPORT_FILE="libc++abi.exp"
55if [ -n "$SDKROOT" ]
56then
57EXTRA_FLAGS+="-isysroot ${SDKROOT}"
58RE_EXPORT_FILE="libc++sjlj-abi.exp"
59CXX=`xcrun -sdk "${SDKROOT}" -find clang++`
60CC=`xcrun -sdk "${SDKROOT}" -find clang`
61fi
62 LDSHARED_FLAGS="-o libc++.1.dylib \
Nick Kledzikc7e4d822010-09-10 20:42:3663-dynamiclib -nodefaultlibs \
64-current_version ${RC_ProjectSourceVersion} -compatibility_version 1 \
Howard Hinnant08774c52011-02-16 00:40:0665-install_name /usr/lib/libc++.1.dylib \
Nick Kledzikc7e4d822010-09-10 20:42:3666${SDKROOT}/usr/lib/libc++abi.dylib \
67-lSystem \
Howard Hinnant2d72b1e2010-12-17 14:46:4368-Wl,-unexported_symbols_list,libc++unexp.exp \
Nick Kledzikc6e08d62011-05-04 21:50:4669 -Wl,-reexported_symbols_list,${RE_EXPORT_FILE} \
70-Wl,-force_symbols_not_weak_list,notweak.exp "
Nick Kledzikc7e4d822010-09-10 20:42:3671fi
Howard Hinnantadff4892010-05-24 17:49:4172 ;;
73 *)
74 RC_CFLAGS="-fPIC"
75 SOEXT=so
76 LDSHARED_FLAGS="-o libc++.so.1.0 \
77 -shared -nodefaultlibs -Wl,-soname,libc++.so.1 \
Howard Hinnant364f5962010-10-02 23:27:2378 -lpthread -lrt -lc"
Howard Hinnantadff4892010-05-24 17:49:4179 ;;
80esac
81
Howard Hinnantbc8d3f92010-05-11 19:42:1682if [ -z $RC_BUILDIT ]
83then
Howard Hinnantadff4892010-05-24 17:49:4184 rm -f libc++.1.$SOEXT*
Howard Hinnantbc8d3f92010-05-11 19:42:1685fi
86
87set -x
88
Howard Hinnantadff4892010-05-24 17:49:4189for FILE in ../src/*.cpp; do
Howard Hinnant30bbc932011-01-27 21:01:5190$CXX -c -g -Os $RC_CFLAGS $EXTRA_FLAGS -nostdinc++ -I../include $FILE
Howard Hinnantbc8d3f92010-05-11 19:42:1691done
92
Nick Kledzikc7e4d822010-09-10 20:42:3693
Nick Kledzikc6e08d62011-05-04 21:50:4694$CC *.o $RC_CFLAGS $LDSHARED_FLAGS $EXTRA_FLAGS
Howard Hinnantbc8d3f92010-05-11 19:42:1695
96#libtool -static -o libc++.a *.o
97
Howard Hinnantbc8d3f92010-05-11 19:42:1698if [ -z $RC_BUILDIT ]
99then
100 rm *.o
101fi