126 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #! /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 $MACOSX_DEPLOYMENT_TARGET ]
 | |
| then
 | |
| 	if [ -z $IPHONEOS_DEPLOYMENT_TARGET ]
 | |
| 	then
 | |
| 		MACOSX_DEPLOYMENT_TARGET=10.7
 | |
| 	fi
 | |
| fi
 | |
| 
 | |
| if [ -z $RC_ProjectSourceVersion ]
 | |
| then
 | |
|   RC_ProjectSourceVersion=1
 | |
| fi
 | |
| 
 | |
| EXTRA_FLAGS="-std=c++0x -fstrict-aliasing -Wall -Wextra -Wshadow -Wconversion \
 | |
|              -Wnewline-eof -Wpadded -Wmissing-prototypes -Wstrict-aliasing=2 \
 | |
|              -Wstrict-overflow=4"
 | |
| 
 | |
| case $TRIPLE in
 | |
|   *-apple-*)
 | |
|     if [ -z $RC_XBS ]
 | |
|     then
 | |
|       RC_CFLAGS="-arch i386 -arch x86_64"
 | |
|     fi
 | |
|     SOEXT=dylib
 | |
| 	if [ "$MACOSX_DEPLOYMENT_TARGET" == "10.6" ]
 | |
| 	then
 | |
| 	    EXTRA_FLAGS="-std=c++0x -U__STRICT_ANSI__"
 | |
| 		LDSHARED_FLAGS="-o libc++.1.dylib \
 | |
| 			-dynamiclib -nodefaultlibs -current_version 1 \
 | |
| 			-compatibility_version 1 \
 | |
| 			-install_name /usr/lib/libc++.1.dylib \
 | |
| 			-Wl,-reexport_library,/usr/lib/libc++abi.dylib \
 | |
| 			-Wl,-unexported_symbols_list,libc++unexp.exp  \
 | |
| 			/usr/lib/libSystem.B.dylib"
 | |
| 	else
 | |
| 		RE_EXPORT_LINE="/usr/lib/libc++abi.dylib -Wl,-reexported_symbols_list,libc++abi.exp"
 | |
| 		if [ -n "$SDKROOT" ]
 | |
| 		then
 | |
| 			EXTRA_FLAGS+="-isysroot ${SDKROOT}"
 | |
| 			if echo "${RC_ARCHS}" | grep -q "armv7"  
 | |
| 			then
 | |
| 				RE_EXPORT_LINE="${SDKROOT}/usr/lib/libc++abi.dylib -Wl,-reexported_symbols_list,libc++sjlj-abi.exp"
 | |
| 			else
 | |
| 				RE_EXPORT_LINE="-Wl,-reexport_library,${SDKROOT}/usr/lib/libc++abi.dylib"
 | |
| 			fi
 | |
| 			CXX=`xcrun -sdk "${SDKROOT}"  -find clang++`
 | |
| 			CC=`xcrun -sdk "${SDKROOT}"  -find clang`
 | |
| 		fi
 | |
| 	    LDSHARED_FLAGS="-o libc++.1.dylib \
 | |
| 			-dynamiclib -nodefaultlibs  \
 | |
| 			-current_version ${RC_ProjectSourceVersion} \
 | |
| 			-compatibility_version 1 \
 | |
| 			-install_name /usr/lib/libc++.1.dylib \
 | |
| 			-lSystem  \
 | |
| 			-Wl,-unexported_symbols_list,libc++unexp.exp  \
 | |
| 			${RE_EXPORT_LINE}  \
 | |
| 			-Wl,-force_symbols_not_weak_list,notweak.exp \
 | |
| 			-Wl,-force_symbols_weak_list,weak.exp"
 | |
| 	fi
 | |
|     ;;
 | |
|   *-*-mingw*)
 | |
|     # FIXME: removing libgcc and libsupc++ dependencies means porting libcxxrt and LLVM/compiler-rt
 | |
|     SOEXT=dll
 | |
|     LDSHARED_FLAGS="-o libc++.dll \
 | |
|         -shared -nodefaultlibs -Wl,--export-all-symbols -Wl,--allow-multiple-definition -Wl,--out-implib,libc++.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++.so.1.0 \
 | |
|         -shared -nodefaultlibs -Wl,-soname,libc++.so.1 \
 | |
|         -lpthread -lrt -lc -lstdc++"
 | |
|     ;;
 | |
| esac
 | |
| 
 | |
| if [ -z $RC_XBS ]
 | |
| then
 | |
|     rm -f libc++.1.$SOEXT*
 | |
| fi
 | |
| 
 | |
| set -x
 | |
| 
 | |
| for FILE in ../src/*.cpp; do
 | |
| 	$CXX -c -g -Os $RC_CFLAGS $EXTRA_FLAGS -nostdinc++ -I../include $FILE
 | |
| done
 | |
| case $TRIPLE in
 | |
|   *-*-mingw*)
 | |
|   for FILE in ../src/support/win32/*.cpp; do
 | |
|     $CXX -c -g -Os $RC_CFLAGS $EXTRA_FLAGS -nostdinc++ -I../include $FILE
 | |
|   done
 | |
|   ;;
 | |
| esac
 | |
| $CC *.o $RC_CFLAGS $LDSHARED_FLAGS $EXTRA_FLAGS
 | |
| 
 | |
| #libtool -static -o libc++.a *.o
 | |
| 
 | |
| if [ -z $RC_XBS ]
 | |
| then
 | |
|     rm *.o
 | |
| fi
 |