Compare with Previous | Blame | View Log
#!/bin/bash
#
#
# Copyright (C) 2000 Silicon Graphics, Inc. All Rights Reserved.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of version 2 of the GNU General Public License as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it would be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# Further, this software is distributed without any warranty that it is
# free of the rightful claim of any third person regarding infringement
# or the like. Any license provided herein, whether implied or
# otherwise, applies only to this software file. Patent licenses, if
# any, provided herein do not apply to combinations of this program with
# other software, or any other product whatsoever.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write the Free Software Foundation, Inc., 59
# Temple Place - Suite 330, Boston MA 02111-1307, USA.
#
# Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pky,
# Mountain View, CA 94043, or:
#
# http://www.sgi.com
#
# For further information regarding this notice, see:
#
# http://oss.sgi.com/projects/GenInfo/NoticeExplan
#
#
VER_MAJOR="0"
VER_MINOR="16"
#PATCH_LEVEL=""
VERSION="${VER_MAJOR}.${VER_MINOR}"
PREBUILT_LIB="./lib"
PREBUILD_BIN="./bin"
# set the build host
BUILD_HOST="ia64" ;
#[ `uname -m | grep -i 'i[0-9]86' | wc -l` -eq 1 ] && BUILD_HOST="ia32"
# set the target host, it must be "ia64"
TARG_HOST="ia64"
# set the TARGET O.S, only linux is supported currently
TARG_OS="linux"
# set the building host's O.S, currently only linux is supported.
BUILD_OS="linux"
#[ `uname -s | grep -i linux | wc -l` -eq 1 ] && BUILD_OS="linux"
# everything we will install is under $ROOT
ROOT=${TOOLROOT}/
INTERPOSE=#${TARG_HOST}-open64-${TARG_OS}
[ "$BUILD_HOST" = "$TARG_HOST" ] && INTERPOSE="" ;
AREA="osprey1.0/targ${BUILD_HOST}_${TARG_HOST}_nodebug"
PHASEPATH=${ROOT}/usr/${INTERPOSE}/lib/gcc-lib/${TARG_HOST}-open64-linux/${VERSION}/
NATIVE_LIB_DIR=${PHASEPATH}
BIN_DIR=${ROOT}/usr/${INTERPOSE}/bin
ALT_BIN_DIR=${ROOT}/usr/${INTERPOSE}/altbin
INSTALL="/usr/bin/install -D"
INSTALL_DATA="/usr/bin/install -D -m 644"
INSTALL_EXEC_SUB () {
[ $# -ne 2 ] && echo "Usage: INSTALL_EXEC_SUB SRC_file DEST_file" && return 1
[ ! -e "$1" ] && echo "$1 does not exist" && return 1
echo -e "$2 : $1 \n\t${INSTALL} $1 $2\n" | make -f - |\
grep -v "Entering directory\|Leaving directory\|up to date"
return 0;
}
INSTALL_DATA_SUB () {
[ $# -ne 2 ] && echo "Usage: INSTALL_DATA_SUB SRC_file DEST_file" && exit 1
[ ! -e "$1" ] && echo "$1 does not exist" && return 1
echo -e "$2 : $1 \n\t${INSTALL_DATA} $1 $2\n" | make -f - |\
grep -v "Entering directory\|Leaving directory\|up to date"
return 0
}
INSTALL_DRIVER () {
INSTALL_EXEC_SUB ${AREA}/driver/driver ${PHASEPATH}/driver
[ ! -d ${BIN_DIR} ] && mkdir -p ${BIN_DIR}
[ ! -e ${BIN_DIR}/opencc ] && ln -sf ${PHASEPATH}/driver ${BIN_DIR}/opencc
[ ! -e ${BIN_DIR}/openCC ] && ln -sf ${PHASEPATH}/driver ${BIN_DIR}/openCC
[ ! -e ${BIN_DIR}/openc++ ] && ln -sf ${PHASEPATH}/driver ${BIN_DIR}/openc++
[ ! -e ${BIN_DIR}/openf90 ] && ln -sf ${PHASEPATH}/driver ${BIN_DIR}/openf90
return 0
}
# Install front-end components
INSTALL_FE () {
INSTALL_EXEC_SUB ${AREA}/gccfe/gfec ${PHASEPATH}/gfec
INSTALL_EXEC_SUB ${AREA}/g++fe/gfecc ${PHASEPATH}/gfecc
# Currently we do not install fortran 90 front-end
# INSTALL_EXEC_SUB ${AREA}/crayf90/sgi/mfef90 ${PHASEPATH}/mfef90
# INSTALL_EXEC_SUB ${AREA}/crayf90/sgi/cf90.cat ${PHASEPATH}/cf90.cat
return 0
}
# Install back-end components
INSTALL_BE () {
INSTALL_EXEC_SUB ${AREA}/be/be ${PHASEPATH}/be
INSTALL_EXEC_SUB ${AREA}/be/be.so ${PHASEPATH}/be.so
return 0
}
# Install IPA-related components
INSTALL_IPA () {
INSTALL_EXEC_SUB ${AREA}/ipa/ipa.so ${PHASEPATH}/ipa.so
INSTALL_EXEC_SUB ${AREA}/ipl/ipl.so ${PHASEPATH}/ipl.so
ld_new_dir="osprey1.0/targcygnus_${BUILD_HOST}_${TARG_HOST}/ld"
INSTALL_EXEC_SUB ${ld_new_dir}/ld-new ${PHASEPATH}/ipa_link
ln -sf ${PHASEPATH}/be ${PHASEPATH}/ipl
# gen_cord stuff
INSTALL_EXEC_SUB ${AREA}/cord/gen_cord ${BIN_DIR}/gen_cord
INSTALL_DATA_SUB ${AREA}/cord/cord_prologue ${BIN_DIR}/cord_prologue
INSTALL_DATA_SUB ${AREA}/cord/cord_epilogue ${BIN_DIR}/cord_epilogue
return 0
}
INSTALL_CG () {
INSTALL_EXEC_SUB ${AREA}/cg/cg.so ${PHASEPATH}/cg.so
INSTALL_EXEC_SUB ${AREA}/orc_ict/orc_ict.so ${PHASEPATH}/orc_ict.so
INSTALL_EXEC_SUB ${AREA}/orc_intel/orc_intel.so ${PHASEPATH}/orc_intel.so
return 0
}
INSTALL_WHIRL_STUFF () {
INSTALL_EXEC_SUB ${AREA}/whirl2c/whirl2c ${PHASEPATH}/whirl2c
INSTALL_EXEC_SUB ${AREA}/whirl2f/whirl2f ${PHASEPATH}/whirl2f
INSTALL_EXEC_SUB ${AREA}/whirl2c/whirl2c.so ${PHASEPATH}/whirl2c.so
INSTALL_EXEC_SUB ${AREA}/whirl2f/whirl2f.so ${PHASEPATH}/whirl2f.so
INSTALL_EXEC_SUB ${AREA}/ir_tools/ir_b2a ${BIN_DIR}/ir_b2a
return 0
}
# Install those archieves that are deemed as part of compiler, so
# we put them where the orcc-phases reside.
INSTALL_PHASE_SPECIFIC_ARCHIVES () {
# f90 related archieves
INSTALL_DATA_SUB ${AREA}/temp_f90libs/lib.cat ${PHASEPATH}/lib.cat
INSTALL_DATA_SUB ${AREA}/temp_f90libs/lib.exp ${PHASEPATH}/lib.exp
# instrument archieves.
d="osprey1.0/targ${TARG_HOST}/"
INSTALL_DATA_SUB $d/libcginstr/libcginstr.a ${PHASEPATH}/libcginstr.a
INSTALL_DATA_SUB $d/libinstr/libinstr.a ${PHASEPATH}/libinstr.a
# SGI implementation for turning on FLUSH to ZERO
INSTALL_DATA_SUB $d/init/ftz.o ${PHASEPATH}/ftz.o
# libgcc.a and libstdc++.a are deemed as "GNU link" specific archieves
d="${PREBUILT_LIB}/${TARG_HOST}-${TARG_OS}/gnu/"
for i in libstdc++.a libgcc.a ; do
INSTALL_DATA_SUB ${d}/${i} ${PHASEPATH}/$i
done
return 0
}
INSTALL_GENERAL_PURPOSE_NATIVE_ARCHIVES () {
d="osprey1.0/targ${TARG_HOST}/"
INSTALL_DATA_SUB ${d}/libfortran/libfortran.a ${NATIVE_LIB_DIR}/libfortran.a
INSTALL_DATA_SUB ${d}/libu/libffio.a ${NATIVE_LIB_DIR}/libffio.a
INSTALL_DATA_SUB ${d}/libmsgi/libmsgi.a ${NATIVE_LIB_DIR}/libmsgi.a
INSTALL_DATA_SUB ${d}/libmv/libmv.a ${NATIVE_LIB_DIR}/libmv.a
# It seems libm.so sometimes could not work, so we put it at ${PHASEPATH}
#
INSTALL_DATA_SUB ${PREBUILT_LIB}/${TARG_HOST}-${TARG_OS}/gnu/libm.a ${PHASEPATH}/libm.a
return 0
}
INSTALL_PREBUILD_GNU_NATIVE_CRT_STARTUP () {
for i in ${PREBUILT_LIB}/${TARG_HOST}-${TARG_OS}/crt/* ; do
[ "`basename $i`" = "CVS" ] && continue
INSTALL_DATA_SUB $i ${PHASEPATH}/`basename $i`
done
return 0
}
INSTALL_PREBUILD_OPEN64_NATIVE_LIB () {
for i in ${PREBUILT_LIB}/${TARG_HOST}-${TARG_OS}/open64/* ; do
[ "`basename $i`" = "CVS" ] && continue;
[ "`basename $i`" = "libinstr.a" ] &&
INSTALL_DATA_SUB $i ${PHASEPATH}/`basename $i` &&
continue;
[ "`basename $i`" = "libcginstr.a" ] &&
INSTALL_DATA_SUB $i ${PHASEPATH}/`basename $i` &&
continue;
INSTALL_DATA_SUB $i ${NATIVE_LIB_DIR}/`basename $i`
done
return 0
}
# Install GNU glic-devel package. this is perform only for cross compilation.
# On native environment, we requires the end user install glibc-devel before
# hand.
INSTALL_PREBUILD_GLIBC_NATIVE_LIB () {
for i in ${PREBUILT_LIB}/${TARG_HOST}-${TARG_OS}/gnu/* ; do
x=`basename $i`
[ "$x" = "CVS" ] && continue;
[ "$x" = "libstdc++.a" ] && continue;
[ "$x" = "libgcc.a" ] && continue;
INSTALL_EXEC_SUB $i ${NATIVE_LIB_DIR}/`basename $i`
done
return 0
}
INSTALL_PREBUILD_PHASE () {
# Some prebuild
for i in ${PREBUILT_BIN}/${BUILD_HOST}-${BUILD_OS}/phase/* ; do
[ ! -e $i ] && continue;
[ "`basename $i`" = "CVS" ] && continue
INSTALL_EXEC_SUB $i ${PHASEPATH}/`basename $i`
done
return 0
}
INSTALL_CROSS_UTIL () {
for i in ${PREBUILT_BIN}/${BUILD_HOST}-${BUILD_OS}/util/* ; do
[ "`basename $i`" = "CVS" ] && continue
INSTALL_EXEC_SUB $i ${BIN_DIR}/`basename $i`
done
return 0
}
INSTALL_NATIVE_HEADER () {
INSTALL_DATA_SUB osprey1.0/include/nue/stdarg.h ${PHASEPATH}/include/stdarg.h
INSTALL_DATA_SUB osprey1.0/include/nue/va-ia64.h ${PHASEPATH}/include/va-ia64.h
cp -f -a osprey1.0/include ${PHASEPATH}/
return 0
}
INSTALL_MAN_PAGE () {
d1=osprey1.0/man/linux/man1
d2=$ROOT/usr/man/man1
INSTALL_DATA_SUB $d1/sgicc.1 $d2
INSTALL_DATA_SUB $d1/sgif90.1 $d2
ln -sf $d2/sgicc.1 $d2/sgiCC.1
return 0
}
INSTALL_MISC () {
INSTALL_EXEC_SUB ${AREA}/wopt/wopt.so ${PHASEPATH}/wopt.so
INSTALL_EXEC_SUB ${AREA}/lw_inline/lw_inline ${PHASEPATH}/inline
INSTALL_EXEC_SUB ${AREA}/lno/lno.so ${PHASEPATH}/lno.so
INSTALL_EXEC_SUB ${AREA}/targ_info/itanium.so ${PHASEPATH}/itanium.so
INSTALL_EXEC_SUB ${AREA}/targ_info/itanium2.so ${PHASEPATH}/itanium2.so
[ "$BUILD_HOST" != "$TARG_HOST" ] && ln -s /nue/usr/bin ${ALT_BIN_DIR} 2>/dev/null
if [ ! -z "$ROOT" ] ; then
for i in gcc f77 as ld g++ gas as ; do
x=`which $i 2>/dev/null`
[ ! -z "$x" ] && ln -s $x $BIN_DIR/`basename $x` 2>/dev/null
done
fi
# install some scripts
for i in ${PREBUILT_BIN}/misc/* ; do
[ -f "$i" ] && INSTALL_EXEC_SUB ${i} ${BIN_DIR}/`basename $i`
done
return 0
}
cd `dirname $0`
INSTALL_DRIVER
INSTALL_FE
INSTALL_BE
INSTALL_IPA
INSTALL_CG
INSTALL_WHIRL_STUFF
cat << _EOF_
------------------------------------------------------------------------
NOTE: Following archives may not present. (these archives are built by
by 'make build -f Make.NUE.lib', but do not worry, prebuild verion of
them are provided.
osprey1.0/targia64/{libcginstr.a libinstr.a ftz.o libfortran.a libffio.a
libmsgi.a libmv.a}
Normally, you need not to build these archives.
------------------------------------------------------------------------
_EOF_
# Install archieves
INSTALL_PHASE_SPECIFIC_ARCHIVES
[ "$BUILD_HOST" != "$TARG_HOST" ] && INSTALL_PREBUILD_GLIBC_NATIVE_LIB
[ "$BUILD_HOST" != "$TARG_HOST" ] && INSTALL_NATIVE_HEADER
INSTALL_PREBUILD_OPEN64_NATIVE_LIB
INSTALL_GENERAL_PURPOSE_NATIVE_ARCHIVES
INSTALL_PREBUILD_GNU_NATIVE_CRT_STARTUP
[ "$BUILD_HOST" != "$TARG_HOST" ] && INSTALL_CROSS_UTIL
INSTALL_PREBUILD_PHASE
INSTALL_MISC
exit 0