Subversion Repositories Open64

[/] [legacy/] [open64/] [INSTALL.cross] - Rev 30

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

Compare with Previous | Blame | View Log