[llvm-commits] [llvm-gcc-4.2] r125803 - in /llvm-gcc-4.2/trunk: build_gcc gcc/Makefile.in gcc/mklibgcc.in
Bob Wilson
bob.wilson at apple.com
Thu Feb 17 16:39:11 PST 2011
Author: bwilson
Date: Thu Feb 17 18:39:11 2011
New Revision: 125803
URL: http://llvm.org/viewvc/llvm-project?rev=125803&view=rev
Log:
Radar 8710868: Build a separate version of libcc_kext.a for each ARM slice.
Combine them together into a single fat library, as is already done for x86.
Modified:
llvm-gcc-4.2/trunk/build_gcc
llvm-gcc-4.2/trunk/gcc/Makefile.in
llvm-gcc-4.2/trunk/gcc/mklibgcc.in
Modified: llvm-gcc-4.2/trunk/build_gcc
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/build_gcc?rev=125803&r1=125802&r2=125803&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/build_gcc (original)
+++ llvm-gcc-4.2/trunk/build_gcc Thu Feb 17 18:39:11 2011
@@ -397,14 +397,25 @@
# LLVM LOCAL Support for non /usr $DEST_ROOT
D=`echo $DT/$DEST_ROOT/lib/gcc/$t-apple-darwin$DARWIN_VERS/$VERS`
mv $D/static/libgcc.a $D/libgcc_static.a || exit 1
- mv $D/kext/libgcc.a $D/libcc_kext.a || exit 1
- rm -r $D/static $D/kext || exit 1
+ # LLVM LOCAL begin ARM slice-specific kext libraries
+ rm -r $D/static || exit 1
+ if [ -e $D/kext/libgcc.a ]; then
+ mv $D/kext/libgcc.a $D/libcc_kext.a || exit 1
+ rm -r $D/kext || exit 1
+ fi
+ # LLVM LOCAL end ARM slice-specific kext libraries
# glue together kext64 stuff
if [ -e $D/kext64/libgcc.a ]; then
libtool -static $D/{kext64/libgcc.a,libcc_kext.a} -o $D/libcc_kext1.a 2>&1 | grep -v 'has no symbols'
mv $D/libcc_kext1.a $D/libcc_kext.a
rm -rf $D/kext64
fi
+ # LLVM LOCAL begin ARM slice-specific kext libraries
+ if [ $t = 'arm' ]; then
+ libtool -static $D/kext*/libgcc.a -o $D/libcc_kext.a 2>&1 | grep -v 'has no symbols'
+ rm -rf $D/kext* || exit 1
+ fi
+ # LLVM LOCAL end ARM slice-specific kext libraries
done
# Build the cross-hosted compilers.
Modified: llvm-gcc-4.2/trunk/gcc/Makefile.in
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/Makefile.in?rev=125803&r1=125802&r2=125803&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/Makefile.in (original)
+++ llvm-gcc-4.2/trunk/gcc/Makefile.in Thu Feb 17 18:39:11 2011
@@ -1689,12 +1689,27 @@
# LLVM LOCAL begin libcc_kext
ifneq (,$(findstring darwin,$(target)))
-APPLE_EXTRA_MULTI := static;@static at fno-pic kext;@Dmalloc=kern_os_malloc at Dfree=kern_os_free at DLIBCC_KEXT@static at fno-pic@fno-exceptions at fno-non-call-exceptions$(KEXT_EXTRA_FLAGS) $(if $(findstring i686,$(target)),kext64;@mkernel at m64@Dmalloc=kern_os_malloc at Dfree=kern_os_free at DLIBCC_KEXT$(KEXT_EXTRA_FLAGS))
+APPLE_KEXT_FLAGS := Dmalloc=kern_os_malloc at Dfree=kern_os_free at DLIBCC_KEXT@static at fno-pic@fno-exceptions at fno-non-call-exceptions$(KEXT_EXTRA_FLAGS)
+APPLE_KEXT64_FLAGS := mkernel at m64@Dmalloc=kern_os_malloc at Dfree=kern_os_free at DLIBCC_KEXT$(KEXT_EXTRA_FLAGS)
+APPLE_EXTRA_MULTI := \
+ static;@static at fno-pic \
+ $(if $(findstring arm,$(target)),,kext;@$(APPLE_KEXT_FLAGS)) \
+ $(if $(findstring i686,$(target)),kext64;@$(APPLE_KEXT64_FLAGS))
endif
# LLVM LOCAL end libcc_kext
+# LLVM LOCAL Set apple_extra_multi with a separate kext for each ARM slice.
libgcc.mk: config.status Makefile mklibgcc $(LIB2ADD) $(LIB2ADD_ST) specs \
xgcc$(exeext) stamp-as stamp-collect-ld stamp-nm
+ apple_extra_multi="$(APPLE_EXTRA_MULTI)"; \
+ for multilib in `$(GCC_FOR_TARGET) --print-multi-lib`; do \
+ multilib_dir=`echo $$multilib | sed -e "s/;.*//"`; \
+ if [ "$$multilib_dir" != "." ]; then \
+ if echo v5 v6 v7 | grep $$multilib_dir > /dev/null 2>&1; then \
+ apple_extra_multi="$$apple_extra_multi kext$${multilib}@$(APPLE_KEXT_FLAGS)"; \
+ fi; \
+ fi; \
+ done; \
objext='$(objext)' \
LIB1ASMFUNCS='$(LIB1ASMFUNCS)' \
LIB2FUNCS_ST='$(LIB2FUNCS_ST)' \
@@ -1727,7 +1742,7 @@
D128PBIT='$(D128PBIT)' \
D128PBIT_FUNCS='$(D128PBIT_FUNCS)' \
APPLE_LOCAL='APPLE LOCAL libcc_kext' \
- MULTILIBS="`$(GCC_FOR_TARGET) --print-multi-lib` $(APPLE_EXTRA_MULTI)" \
+ MULTILIBS="`$(GCC_FOR_TARGET) --print-multi-lib` $$apple_extra_multi" \
EXTRA_MULTILIB_PARTS='$(EXTRA_MULTILIB_PARTS)' \
SHLIB_LINK='$(SHLIB_LINK)' \
SHLIB_INSTALL='$(SHLIB_INSTALL)' \
Modified: llvm-gcc-4.2/trunk/gcc/mklibgcc.in
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/mklibgcc.in?rev=125803&r1=125802&r2=125803&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/mklibgcc.in (original)
+++ llvm-gcc-4.2/trunk/gcc/mklibgcc.in Thu Feb 17 18:39:11 2011
@@ -827,7 +827,13 @@
# Shared libraries.
# APPLE LOCAL libcc_kext
- if [ "$libgcc_s_so" -a "$dir" != "static" -a "$dir" != "kext" -a "$dir" != "kext64" ]; then
+ # LLVM LOCAL begin ARM slice-specific kext libraries
+ kextdir=
+ if echo "$dir" | grep kext > /dev/null 2>&1; then
+ kextdir=1
+ fi
+ # LLVM LOCAL end ARM slice-specific kext libraries
+ if [ "$libgcc_s_so" -a "$dir" != "static" -a "X$kextdir" = "X" ]; then
echo ""
echo "$libgcc_s_so: stmp-dirs $libunwind_so"
echo " $SHLIB_LINK" \
@@ -908,7 +914,13 @@
shlib_slibdir_qual="/$os_multilib_dir"
fi
# APPLE LOCAL libcc_kext
- if [ "$dir" != "static" -a "$dir" != "kext" -a "$dir" != "kext64" ]; then
+ # LLVM LOCAL begin ARM slice-specific kext libraries
+ kextdir=
+ if echo "$dir" | grep kext > /dev/null 2>&1; then
+ kextdir=1
+ fi
+ # LLVM LOCAL end ARM slice-specific kext libraries
+ if [ "$dir" != "static" -a "X$kextdir" = "X" ]; then
echo " $SHLIB_INSTALL" \
| sed -e "s%@multilib_dir@%$dir%g" \
-e "s%@shlib_base_name@%libgcc_s%g" \
More information about the llvm-commits
mailing list