components/gcc47/gcc_post_install_processing.sh
changeset 1462 bcf516ed6959
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gcc47/gcc_post_install_processing.sh	Mon Sep 09 11:34:17 2013 -0700
@@ -0,0 +1,183 @@
+#!/bin/bash
+
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+#
+
+PROTODIR=""
+PYTHON=""
+INSTALLDIR=""
+LIBGCCDIR=""
+MACH="`uname -p`"
+SED="/usr/gnu/bin/sed"
+STRIP="/usr/bin/strip -x"
+# Solaris 11 uname does not support -o
+UNAME="/usr/gnu/bin/uname"
+GCC_FULL_VERSION=""
+
+UNKNOWN_ARG=yes
+PRINT_HELP=no
+
+while [ "$#" -gt 0 ] ; do
+  UNKNOWN_ARG=no
+  case "$1" in
+    -protodir=*)
+      export PROTODIR=`echo $1 | ${SED} "s,^-protodir=\(.*\),\1,"`
+      ;;
+    -python=*)
+      export PYTHON=`echo $1 | ${SED} "s,^-python=\(.*\),\1,"`
+      ;;
+    -gccversion=*)
+      export GCC_FULL_VERSION=`echo $1 | ${SED} "s,^-gccversion=\(.*\),\1,"`
+      ;;
+    *)
+      UNKNOWN_ARG=yes
+      ;;
+  esac
+
+  if [ "$UNKNOWN_ARG" = "yes" ] ; then
+    echo "$1: Invalid argument"
+    PRINT_HELP=yes
+    shift
+    continue
+  fi
+  shift
+done
+
+if [ "$PRINT_HELP" = "yes" ] || [ "$UNKNOWN_ARG" = "yes" ] ; then
+  echo ""
+  echo "Usage: `basename $0` -protodir=[ build area prototype directory ]"
+  echo "        -python=[ Python interpreter to use ]"
+  echo ""
+  exit 1
+fi
+
+if [ ${MACH} = "i386" ] ; then
+  export MACH64="amd64"
+  export VENDOR="pc"
+else
+  export MACH64="sparcv9"
+  export VENDOR="sun"
+fi
+
+gcc_maj="`echo ${GCC_FULL_VERSION} | cut -d . -f 1`"
+gcc_min="`echo ${GCC_FULL_VERSION} | cut -d . -f 2`"
+GCC_VERSION="${gcc_maj}.${gcc_min}"
+
+export RELEASE="`${UNAME} -r | cut -d . -f 2`"
+export OS="`${UNAME} -o | /usr/gnu/bin/tr -s '[:upper:]' '[:lower:]'`"
+export GCC_TRIPLE="${MACH}-${VENDOR}-${OS}2.${RELEASE}"
+
+export MACH MACH64 SED STRIP GCC_VERSION GCC_FULL_VERSION PYTHON
+
+export BINDIR="${PROTODIR}/usr/gcc/${GCC_VERSION}/bin"
+export LIBDIR="${PROTODIR}/usr/gcc/${GCC_VERSION}/lib"
+export LIB64DIR="${PROTODIR}/usr/gcc/${GCC_VERSION}/lib/${MACH64}"
+export GCCSHAREDIR="${PROTODIR}/usr/gcc/${GCC_VERSION}/share"
+export GCCUSRSHAREDIR="${PROTODIR}/usr/share/gcc-${GCC_FULL_VERSION}"
+export GDBSHAREDIR="${PROTODIR}/usr/share/gdb"
+export LIBGCCDIR="${PROTODIR}/usr/gcc/${GCC_VERSION}/lib/gcc"
+export GCCTRIPLEDIR="${LIBGCCDIR}/${GCC_TRIPLE}/${GCC_FULL_VERSION}"
+export LIBTRIPLEDIR="${LIBDIR}/gcc/${GCC_TRIPLE}/${GCC_FULL_VERSION}"
+
+echo "Stripping GCC binaries ... "
+
+for file in \
+  c++ \
+  cpp \
+  g++ \
+  gcc \
+  gcc-ar \
+  gcc-nm \
+  gcc-ranlib \
+  gcov \
+  gfortran \
+  ${GCC_TRIPLE}-c++ \
+  ${GCC_TRIPLE}-g++ \
+  ${GCC_TRIPLE}-gcc \
+  ${GCC_TRIPLE}-gcc-${GCC_FULL_VERSION} \
+  ${GCC_TRIPLE}-gcc-ar \
+  ${GCC_TRIPLE}-gcc-nm \
+  ${GCC_TRIPLE}-gcc-ranlib \
+  ${GCC_TRIPLE}-gfortran
+do
+  ${STRIP} ${BINDIR}/${file}
+done
+
+for file in \
+  libgfortran.so.3.0.0 \
+  libgomp.so.1.0.0 \
+  libitm.so.1.0.0 \
+  libobjc.so.4.0.0 \
+  libssp.so.0.0.0
+do
+  ${STRIP} ${LIBDIR}/${file}
+  ${STRIP} ${LIB64DIR}/${file}
+done
+
+# libquadmath is not available on SPARC.
+if [ "${MACH}" = "i386" ] ; then
+  ${STRIP} ${LIBDIR}/libquadmath.so.0.0.0
+  ${STRIP} ${LIB64DIR}/libquadmath.so.0.0.0
+fi
+
+for file in \
+  cc1 \
+  cc1obj \
+  cc1plus \
+  collect2 \
+  f951 \
+  liblto_plugin.so.0.0.0 \
+  lto-wrapper \
+  lto1
+do
+  ${STRIP} ${GCCTRIPLEDIR}/${file}
+done
+
+echo "... Done."
+echo ""
+echo "Copying GCC's gdb Python files ... "
+
+mkdir -p ${GDBSHAREDIR}/auto-load/usr/lib/${MACH64}
+mkdir -p ${GCCUSRSHAREDIR}/python/libstdcxx/v6
+
+cp -p ${LIBDIR}/libstdc++.so.6.0.17-gdb.py ${GDBSHAREDIR}/auto-load/usr/lib/
+cp -p ${LIB64DIR}/libstdc++.so.6.0.17-gdb.py ${GDBSHAREDIR}/auto-load/usr/lib/${MACH64}
+cp -p ${GCCSHAREDIR}/gcc-${GCC_FULL_VERSION}/python/libstdcxx/__init__.py \
+  ${GCCUSRSHAREDIR}/python/libstdcxx/
+cp -p ${GCCSHAREDIR}/gcc-${GCC_FULL_VERSION}/python/libstdcxx/v6/__init__.py \
+  ${GCCUSRSHAREDIR}/python/libstdcxx/v6/
+cp -p ${GCCSHAREDIR}/gcc-${GCC_FULL_VERSION}/python/libstdcxx/v6/printers.py \
+  ${GCCUSRSHAREDIR}/python/libstdcxx/v6/printers.py
+
+cd ${GDBSHAREDIR}/auto-load/usr/lib/
+${PYTHON} -m compileall .
+
+cd ${GCCUSRSHAREDIR}/python/libstdcxx/
+${PYTHON} -m compileall .
+
+cd ${GCCUSRSHAREDIR}/python/libstdcxx/v6/
+${PYTHON} -m compileall .
+
+echo "... Done."
+echo""
+exit 0