- Also install libintl.a and libiberty.
Doug Kwan [Wed, 23 Mar 2011 18:53:17 +0000 (11:53 -0700)]
- Build libsupc++.a for ARM.

Change-Id: I9a83af7870a605c2d1ebc3849b31547aef15cd9c

Makefile.in
configure
configure.ac

index b1b7605..e445deb 100644 (file)
@@ -44,6 +44,9 @@ mandir = @mandir@
 
 builddir = @builddir@
 abs_builddir = @abs_builddir@
+
+INSTALL=@INSTALL@
+
 #
 # miscellaneous variables
 #
@@ -305,7 +308,8 @@ endif
 config-host-libbfd: stmp-config-host-libbfd
 LIBBFD_CONFIG_ARGS=--prefix=$(prefix) \
        --enable-targets=all --host=${host} --build=${build} \
-       $(baseargs) --disable-shared --enable-install-libbfd
+       $(baseargs) --disable-shared \
+       --enable-install-libbfd --with-included-gettext
 stmp-config-host-libbfd: config.status
        ([ -d libbfd-${BINUTILS_VERSION} ] || \
          mkdir libbfd-${BINUTILS_VERSION}) && \
@@ -315,9 +319,18 @@ stmp-config-host-libbfd: config.status
        $(STAMP) $@
 build-host-libbfd: stmp-build-host-libbfd
 stmp-build-host-libbfd: stmp-config-host-libbfd
-       $(MAKE) -C libbfd-${BINUTILS_VERSION} all-bfd && $(STAMP) $@
+       $(MAKE) -C libbfd-${BINUTILS_VERSION} all-bfd all-libiberty && \
+       $(STAMP) $@
+# Also include libintl.a.  We have to do this manully since the
+# source of libintl in binutils is modified to not install the library.
+# We build with -m32 always.  To avoid installing libiberty.a into /lib32,
+# we need to manually install the archive.  This will need to be cleaned up.
 install-host-libbfd: stmp-build-host-libbfd install-target-binutils
-       $(MAKE) -C libbfd-${BINUTILS_VERSION} install-bfd
+       $(MAKE) -C libbfd-${BINUTILS_VERSION} install-bfd install-libiberty && \
+       $(INSTALL) -m 644 libbfd-${BINUTILS_VERSION}/intl/libintl.a \
+               $(libdir) && \
+       $(INSTALL) -m 644 libbfd-${BINUTILS_VERSION}/libiberty/libiberty.a \
+               $(libdir)
 
 # target gcc rules
 .PHONY: config-target-gcc build-target-gcc install-target-gcc
@@ -346,19 +359,29 @@ endif
 
 
 # Target indenpendent Android gcc options.
+# For now we build a static version of libsupc++.
 ifeq ($(BUILD_ANDROID_GCC),yes)
 GCC_CONFIG_ARGS += $(GCC_CONFIG_LIBSTDCXX_V3) --disable-libssp \
        --enable-threads --disable-nls --disable-libmudflap --disable-libgomp \
-       --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-shared \
+       --disable-sjlj-exceptions --disable-shared \
        --disable-tls
+
 CFLAGS_FOR_TARGET += -DTARGET_POSIX_IO -fno-short-enums
 # ARM specific options.
 ifeq ($(target_cpu),arm)
 GCC_CONFIG_ARGS += --with-float=soft --with-fpu=vfp --with-arch=armv5te \
        --enable-target-optspace
+
+# Experimental: build libsupc++.a for ARM.
+GCC_CONFIG_ARGS += --disable-hosted-libstdcxx \
+       --enable-cxx-flags="-fexceptions -frtti"
+
 ifneq ($(target_os),linux-androideabi)
 GCC_CONFIG_ARGS += --with-abi=aapcs
 endif
+
+else
+GCC_CONFIG_ARGS += --disable-libstdc__-v3
 endif
 
 endif
index 32756c4..d6e17ff 100755 (executable)
--- a/configure
+++ b/configure
@@ -271,7 +271,7 @@ PACKAGE_VERSION='2.0'
 PACKAGE_STRING='android-tools 2.0'
 PACKAGE_BUGREPORT=''
 
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os BUILD_ANDROID_GCC GDB_TARGET TOPLEVEL_CONFIGURE_ARGUMENTS baseargs gold_baseargs package_to_srcdir BINUTILS_VERSION GOLD_VERSION GCC_VERSION GCC_MIN_VERSION_4_3_0 GCC_MIN_VERSION_4_5_0 NEWLIB_VERSION GMP_VERSION MPFR_VERSION MPC_VERSION GDB_VERSION sysroot have_mpc have_mpfr have_gmp LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA BUILD_ANDROID_GCC GDB_TARGET TOPLEVEL_CONFIGURE_ARGUMENTS baseargs gold_baseargs package_to_srcdir BINUTILS_VERSION GOLD_VERSION GCC_VERSION GCC_MIN_VERSION_4_3_0 GCC_MIN_VERSION_4_5_0 NEWLIB_VERSION GMP_VERSION MPFR_VERSION MPC_VERSION GDB_VERSION sysroot have_mpc have_mpfr have_gmp LIBOBJS LTLIBOBJS'
 ac_subst_files=''
 
 # Initialize some variables set by options.
@@ -1377,6 +1377,87 @@ test -n "$target_alias" &&
     NONENONEs,x,x, &&
   program_prefix=${target_alias}-
 
+# Get 'install' or 'install-sh' and its variants.
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+  ./ | .// | /cC/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+       if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+         if test $ac_prog = install &&
+           grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+           # AIX install.  It has an incompatible calling convention.
+           :
+         elif test $ac_prog = install &&
+           grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+           # program-specific install script used by HP pwplus--don't use.
+           :
+         else
+           ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+           break 3
+         fi
+       fi
+      done
+    done
+    ;;
+esac
+done
+
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  We don't cache a
+    # path for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the path is relative.
+    INSTALL=$ac_install_sh
+  fi
+fi
+echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+
 # We only allow the following 3 targets:
 # 1. arm-linux-androideabi (primary target)
 # 2. arm-eabi (for Android kernel)
@@ -2496,6 +2577,7 @@ Copyright (C) 2003 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 srcdir=$srcdir
+INSTALL="$INSTALL"
 _ACEOF
 
 cat >>$CONFIG_STATUS <<\_ACEOF
@@ -2686,6 +2768,9 @@ s,@target@,$target,;t t
 s,@target_cpu@,$target_cpu,;t t
 s,@target_vendor@,$target_vendor,;t t
 s,@target_os@,$target_os,;t t
+s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+s,@INSTALL_DATA@,$INSTALL_DATA,;t t
 s,@BUILD_ANDROID_GCC@,$BUILD_ANDROID_GCC,;t t
 s,@GDB_TARGET@,$GDB_TARGET,;t t
 s,@TOPLEVEL_CONFIGURE_ARGUMENTS@,$TOPLEVEL_CONFIGURE_ARGUMENTS,;t t
@@ -2869,6 +2954,10 @@ case $ac_abs_builddir in
 esac
 
 
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+  esac
 
   if test x"$ac_file" != x-; then
     { echo "$as_me:$LINENO: creating $ac_file" >&5
@@ -2930,6 +3019,7 @@ s,@builddir@,$ac_builddir,;t t
 s,@abs_builddir@,$ac_abs_builddir,;t t
 s,@top_builddir@,$ac_top_builddir,;t t
 s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+s,@INSTALL@,$ac_INSTALL,;t t
 " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
   rm -f $tmp/stdin
   if test x"$ac_file" != x-; then
index 3de117e..3bfcea7 100644 (file)
@@ -1,4 +1,4 @@
-#   Copyright (C) 2008, 2010 Google Inc.
+#   Copyright (C) 2008, 2010, 2011 Google Inc.
 #
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -18,6 +18,9 @@ AC_CONFIG_FILES([Makefile])
 
 AC_CANONICAL_SYSTEM
 
+# Get 'install' or 'install-sh' and its variants.
+AC_PROG_INSTALL
+
 # We only allow the following 3 targets:
 # 1. arm-linux-androideabi (primary target)
 # 2. arm-eabi (for Android kernel)