⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 build-mspgcc

📁 tinyos最新版
💻
字号:
#!/bin/bash#$Id: build-mspgcc,v 1.2 2004/12/03 00:47:43 cssharp Exp $#@author Cory Sharp <cssharp@eecs.berkeley.edu>OPT="$1"if [ x$OPT = x ]then  cat <<"EOF"usage: build-mspgcc install$Id: build-mspgcc,v 1.2 2004/12/03 00:47:43 cssharp Exp $build-mspgcc downloads, extracts, builds, and installs binutils, gcc,and libc for the TI MSP430 microcontroller.  As root, run:  ./build-mspgcc installThe default installation directory is /opt/msp430.  Change this bysetting the environment variable INSTALL_DIR before compiling andinstalling:  INSTALL_DIR=/usr/local/msp430 ./build-mspgcc installAll other build options are unsupported.Unsupported usage: build-mspgcc [command] (package)commands: get, extract, build, installpackages: MSPGCC_CVS, BINUTILS, GCC, LIBCenvironment variables:  INSTALL_DIR  USE_GCC=3.2 or 3.3    - currently 3.3 does not include msp430 1611 supportEOF  exit 0fi[ $OPT = get ] && OPT_NUM=1[ $OPT = extract ] && OPT_NUM=2[ $OPT = build ] && OPT_NUM=3[ $OPT = install ] && OPT_NUM=4[ x$OPT_NUM = x ] && echo "invalid option" && exit 1PACKAGE="$2"START_DIR=$PWD: ${ARCHIVE_DIR:=archive}: ${BUILD_DIR:=build}: ${INSTALL_DIR:=/opt/msp430}# {package}_URL will by default derive#   {package}_ARCHIVE for the tarball, and#   {package}_DIR for the source directory extracted from the tarball# which can be overridden just by specifying the variable.# Each package can specify following Bash functions #   {package}_get#   {package}_extact#   {package}_build#   {package}_install# which take on defaults defined below if unspecified.BINUTILS_URL="ftp://sources.redhat.com/pub/binutils/snapshots/binutils.weekly.tar.bz2"GCC32_URL="ftp://mirrors.rcn.net/pub/sourceware/gcc/releases/gcc-3.2.3/gcc-core-3.2.3.tar.bz2"GCC33_URL="ftp://mirrors.rcn.net/pub/sourceware/gcc/releases/gcc-3.3.5/gcc-core-3.3.5.tar.bz2"MSPGCC_CVS_ARCHIVE=mspgcc-cvs.tar.gzLIBC_ARCHIVE="$MSPGCC_CVS_ARCHIVE"LIBC_DIR="mspgcc-cvs/msp430-libc/src"GCC_URL="$GCC32_URL"[ x$USE_GCC = x3.3 ] && GCC_URL="$GCC33_URL"### --- binutilsBINUTILS_build() {  perl -i.orig -pe 's/define (LEX_DOLLAR) 0/undef $1/' gas/config/tc-msp430.h || exit 1  ./configure --target=msp430 --prefix=$INSTALL_DIR || exit 1  make || exit 1}### --- gccGCC_build() {  BUILD_BASE="`cd "$START_DIR"; cd "$BUILD_DIR"; echo "$PWD"`"  if [ x$USE_GCC = x3.3 ]  then    cp -a "$BUILD_BASE"/mspgcc-cvs/gcc/gcc-3.4/* .  else    cp -a "$BUILD_BASE"/mspgcc-cvs/gcc/gcc-3.3/* .  fi  GCC_SRCDIR="$PWD"  GCC_OBJDIR="$PWD-obj"  [ -d "$GCC_OBJDIR" ] || mkdir -p "$GCC_OBJDIR"  cd "$GCC_OBJDIR"  "$GCC_SRCDIR"/configure --target=msp430 --prefix="$INSTALL_DIR"  make || exit 1  cd "$GCC_SRCDIR"}GCC_install() {  GCC_SRCDIR="$PWD"  GCC_OBJDIR="$PWD-obj"  cd "$GCC_OBJDIR"  make install || exit 1  cd "$GCC_SRCDIR"}### --- mspgcc cvsMSPGCC_CVS_get() {  cd $ARCHIVE_DIR  mkdir -p mspgcc-cvs  cd mspgcc-cvs  if [ -f $HOME/.cvspass ] && grep -q -F ':pserver:anonymous@cvs.sourceforge.net:' $HOME/.cvspass  then    :  else    echo    echo "***  Logging into SourceForge for anonymous CVS access."    echo "***  Press ENTER when prompted for a password."    echo    cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/mspgcc login  fi  cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/mspgcc export -D now gcc msp430-libc  cd $START_DIR  cd $ARCHIVE_DIR  tar cfvz $MSPGCC_CVS_ARCHIVE mspgcc-cvs  rm -rf mspgcc-cvs  cd $START_DIR}MSPGCC_CVS_build() {  true}MSPGCC_CVS_install() {  true}### --- libc cvsLIBC_get() {  MSPGCC_CVS_get}LIBC_build() {  [ -d msp1 ] || mkdir msp1  [ -d msp2 ] || mkdir msp2  perl -i.orig -pe 's{^(prefix\s*=\s*)(.*)}{${1}'"$INSTALL_DIR"'}' Makefile  make || exit 1}### --- defaults for get, extract, build, installdefault_get() {  get_url "$1" "$2" || exit 1}default_extract() {  extract_tarx "$1" "$2" || exit 1}default_build() {  make || exit 1}default_install() {  make install || exit 1}### ---### ---### ---is_dir_in_path() {  perl -e '@p=split /:/, $ENV{PATH}; @g=grep { $_ eq "'"$1"'" } @p; exit (@g?0:1);'}get_url() {  wget "$1" -O "$2"}tar_compress_opt() {  [ ${1##*gz}x == x ] && echo z && return  [ ${1##*bz2}x == x ] && echo j && return}tar_topdir() {  tar -tv`tar_compress_opt $1`f "$1" 2>/dev/null \    | perl -e 'print $1 if <> =~ /^(?:\S+\s+){5}([^\/\n]+)/'}extract_tarx() {  [ -d "$2" ] || mkdir -p "$2"  tar -xv`tar_compress_opt $1`f "$1" -C "$2"}get_pkg_function() {  type "${1}_$2" >/dev/null 2>/dev/null && echo "${1}_$2" && return  echo "default_$2"}process_package() {  PKG="$1"  echo  echo "processing $PKG"  ###  get  if [ $OPT_NUM -ge 1 ]  then    eval PKG_URL="\$${PKG}_URL"    eval PKG_ARCHIVE="\$${PKG}_ARCHIVE"    [ x"$PKG_ARCHIVE" = x ] && PKG_ARCHIVE="${PKG_URL##*/}"    [ -d "$ARCHIVE_DIR" ] || mkdir -p "$ARCHIVE_DIR" || exit 1    WORK_FILE="$ARCHIVE_DIR/$PKG_ARCHIVE"    if [ -f "$WORK_FILE" ]    then      echo "download $PKG: found $WORK_FILE, skipping download"    else      echo "download $PKG: downloading $WORK_FILE"      eval `get_pkg_function $PKG get` "$PKG_URL" "$WORK_FILE"    fi  fi  ###  extract  if [ $OPT_NUM -ge 2 ]  then    eval PKG_DIR="\$${PKG}_DIR"    [ x"$PKG_DIR" = x ] && PKG_DIR=`tar_topdir "$WORK_FILE"`    [ -d "$BUILD_DIR" ] || mkdir -p "$BUILD_DIR" || exit 1    WORK_DIR="$BUILD_DIR/$PKG_DIR"    if [ -d "$WORK_DIR" ]    then      echo "found $WORK_DIR, skipping decompress"    else      echo "decompressing $WORK_FILE to $WORK_DIR"      eval `get_pkg_function $PKG extract` "$WORK_FILE" "$BUILD_DIR"    fi  fi  ###  build  if [ $OPT_NUM -ge 3 ]  then    BUILD_COMPLETE="$WORK_DIR/build-complete"    if [ -f "$BUILD_COMPLETE" ]    then      echo "found $BUILD_COMPLETE, skipping build"    else      echo "building $PKG"      cd "$WORK_DIR"      eval `get_pkg_function $PKG build`      cd "$START_DIR"      touch "$BUILD_COMPLETE"    fi  fi  ###  install  if [ $OPT_NUM -ge 4 ]  then    echo "installing $PKG"    cd "$WORK_DIR"    eval `get_pkg_function $PKG install`    cd "$START_DIR"  fi}### ---# Force path to something explicit to avoid seriously weird errorsexport PATH="$INSTALL_DIR/bin:/usr/local/bin:/usr/bin:/bin"if [ x$PACKAGE = x ]then  process_package MSPGCC_CVS  process_package BINUTILS  process_package GCC  process_package LIBCelse  process_package $PACKAGEfi

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -