caam

changeset 0:3578cc37f9cd

init
author yuuji@gentei.org
date Mon, 25 Jan 2010 17:32:28 +0900
parents
children 4e6762b4b0cb
files bin/caam wrap/c++ wrap/cc wrap/gcc
diffstat 4 files changed, 219 insertions(+), 0 deletions(-) [+]
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/bin/caam	Mon Jan 25 17:32:28 2010 +0900
     1.3 @@ -0,0 +1,186 @@
     1.4 +#!/bin/sh
     1.5 +# caam - Configure And And Make
     1.6 +# (C)2008-2009 by HIROSE, Yuuji [yuuji/at/gentei.org]
     1.7 +# Last modified Wed Sep 23 06:16:25 2009 on firestorm
     1.8 +# Update count: 14
     1.9 +# http://www.gentei.org/~yuuji/software/caam/
    1.10 +
    1.11 +ca=`echo $CAAM_ADD|tr : ' '`
    1.12 +cpx=`echo $CAAM_PREFIXES|tr : ' '`
    1.13 +CAAM_GCC=${GCC:-`which gcc`}
    1.14 +CAAM_CXX=${GCC:-`which c++`}
    1.15 +if [ -x /usr/xpg4/bin/sh ]; then
    1.16 +  CAAM_SH=/usr/xpg4/bin/sh
    1.17 +else
    1.18 +  CAAM_SH=`which sh`
    1.19 +fi
    1.20 +CONFIG_SHELL=${CONFIG_SHELL:-${CAAM_SH}}
    1.21 +export CONFIG_SHELL
    1.22 +
    1.23 +# setup final callee
    1.24 +####DO=${DO:-${MAKE:-make}}
    1.25 +CAAM_MAKE=${MAKE:-make}
    1.26 +CAAM_CFG=${CFG:-"$CONFIG_SHELL ./configure"}
    1.27 +MKTGT=''
    1.28 +CAAM_MKOPT=${MKOPT:-""}
    1.29 +TGT2=''
    1.30 +
    1.31 +myname=`basename $0`
    1.32 +mydir=`dirname $0`
    1.33 +mydir=`(cd $mydir; pwd -P)`
    1.34 +myargs=$*
    1.35 +dir=`dirname $mydir`
    1.36 +case "$dir" in
    1.37 +  */caam*) top=`dirname $dir` ;;
    1.38 +  *)     top="$dir" ;;
    1.39 +esac
    1.40 +echo d=$dir, top=$top
    1.41 +
    1.42 +chasemytop () {(
    1.43 + me=$0; cd $mydir
    1.44 + while [ -L $me ]; do
    1.45 +   me=`ls -l $me|awk '{print $NF}'`
    1.46 +   d=`dirname $me`
    1.47 +   me=`basename $me`
    1.48 +   cd $d
    1.49 + done
    1.50 + (cd ..; pwd -P)
    1.51 +)}
    1.52 +
    1.53 +mytop=`chasemytop`
    1.54 +
    1.55 +PROOT=$top
    1.56 +CONFDIR=${CAAM_CONFDIR:-$mydir}
    1.57 +DPF="$CONFDIR/caam.dirs"
    1.58 +WRAPDIR=$mytop/wrap
    1.59 +[ "$CAAM_DEBUG" ] && echo wrapdir=$WRAPDIR
    1.60 +
    1.61 +# Parse my own arguments
    1.62 +while [ x"" != x"$1" ]; do
    1.63 +  case "$1" in
    1.64 +    --)		break;;
    1.65 +    -gmaic)	TGT2="install clean"; CAAM_MAKE=gmake;;
    1.66 +    -maic)	TGT2="install clean";;
    1.67 +    -gmai)	TGT2="install"; CAAM_MAKE=gmake;;
    1.68 +    -mai)	TGT2="install";;
    1.69 +    -m)		CAAM_CFG="echo configure done";;
    1.70 +    -t)		shift; MKTGT=${MKTGT:+"all "}"$1" ;;
    1.71 +    -j[0-9]*)	CAAM_MKOPT="$MKOPT${MKOPT:+ }$1";;
    1.72 +    -j)		shift; CAAM_MKOPT="$MKOPT${MKOPT:+ }-j $1";;
    1.73 +    -k)		CAAM_MKOPT="$MKOPT${MKOPT:+ }-k";;
    1.74 +#    -CC)	setcc=1 ;;
    1.75 +    -c)		DO="echo done";;
    1.76 +    -g)		CAAM_MAKE=gmake ;;
    1.77 +    -s)		shift; CAAM_MAKE="sleep $1; $CAAM_MAKE" ;;
    1.78 +    -d)		debug=1 ;;
    1.79 +    *)		break ;;
    1.80 +  esac
    1.81 +  shift
    1.82 +done
    1.83 +POSTDO=${TGT2:+" && ${CAAM_MAKE} $TGT2"}
    1.84 +DO=${DO:-"${CAAM_MAKE} ${CAAM_MKOPT} $MKTGT$POSTDO"}
    1.85 +
    1.86 +# Add extra path
    1.87 +for p in $ca; do
    1.88 +  case "$p" in
    1.89 +    /*) PATH=${p}/bin:$PATH ;;
    1.90 +     *) PATH=$PROOT/${p}/bin:$PATH ;;
    1.91 +  esac
    1.92 +done
    1.93 +
    1.94 +defprefix="gnu graphics xc X11-contrib Xclient"
    1.95 +[ -f $DPF ] && defprefix=`grep -v '^#' $DPF`
    1.96 +dpx=${cpx:-$defprefix}
    1.97 +
    1.98 +# extract pkg-config path's
    1.99 +pcp=$PKG_CONFIG_PATH
   1.100 +
   1.101 +[ $debug ] && echo ca=$ca
   1.102 +for e in $ca '' $dpx; do
   1.103 +  case "$e" in
   1.104 +    /*) pfx=$e ;;
   1.105 +     *) pfx=$PROOT/$e ;;
   1.106 +  esac
   1.107 +  [ $debug ] && echo checking $pfx
   1.108 +  [ -d $pfx ] || continue
   1.109 +  cf="$cf -I${pfx}${e:+/}include"
   1.110 +  lf="$lf -L${pfx}${e:+/}lib -R${pfx}${e:+/}lib"
   1.111 +  lp="$lp${lp:+:}${pfx}${e:+/}lib"
   1.112 +  [ -d $pfx/lib/pkgconfig ] && pcp=$pcp${pcp:+:}$pfx${e:+/}lib/pkgconfig
   1.113 +done
   1.114 +
   1.115 +# Save old variable
   1.116 +for e in PATH LD_LIBRARY_PATH LD_RUN_PATH PERL RUBY PYTHON M4 \
   1.117 +		CC CFLAGS LDFLAGS LIBS CXX CXXFLAGS \
   1.118 +		CONFIG_SHELL \
   1.119 +  		PKG_CONFIG_PATH CAAM_PREFIXES CAAM_ADD CFG MAKE MKOPT; do
   1.120 +  eval "v=\$$e"
   1.121 +  if [ x"$v" != x"" ]; then
   1.122 +    eval "old_${e}=\"$v\""
   1.123 +    kept_env="$kept_env $e"
   1.124 +  fi
   1.125 +done
   1.126 +
   1.127 +CFLAGS=`echo $CFLAGS $cf`
   1.128 +CPPFLAGS=`echo $CFLAGS $cf`
   1.129 +LDFLAGS=`echo $LDFLAGS $lf`
   1.130 +export LD_RUN_PATH
   1.131 +LD_RUN_PATH="$lp"
   1.132 +PKG_CONFIG_PATH=$pcp
   1.133 +export PKG_CONFIG_PATH
   1.134 +
   1.135 +# Setup gcc wrapper environment
   1.136 +# point to gcc wrapper
   1.137 +if [ -d $WRAPDIR ]; then
   1.138 +  PATH=$WRAPDIR:$PATH
   1.139 +  ldf=''
   1.140 +  if [ x"$LD_RUN_PATH" != x"" ]; then
   1.141 +    oifs=$IFS
   1.142 +    IFS=:
   1.143 +    for d in $LD_RUN_PATH; do
   1.144 +      ldf=$ldf${ldf:+\ }"-R $d -L $d"
   1.145 +    done
   1.146 +    IFS=$oifs
   1.147 +  fi
   1.148 +  CAAM_LDF=$ldf; export CAAM_LDF
   1.149 +fi
   1.150 +
   1.151 +successlog() {
   1.152 + status=$?
   1.153 + (PWD=`pwd`				  # for compatibility
   1.154 +  logfile=../`basename $PWD`.caam
   1.155 +  [ -s $logfile ] || echo "### $logfile started at `date`" > $logfile
   1.156 +  (echo 1i
   1.157 +   echo "# $myname succeeded at `date`"
   1.158 +   for e in $kept_env; do
   1.159 +     eval v="\$old_$e"
   1.160 +     echo $e=\"$v\" \\
   1.161 +   done
   1.162 +   echo $myname $myargs
   1.163 +   echo exit
   1.164 +   echo .; echo w; echo q) | ed $logfile 2> /dev/null
   1.165 +  )
   1.166 +  exit $status
   1.167 +}
   1.168 +
   1.169 +# if [ $setcc ]; then
   1.170 +#   # CC="$CAAM_GCC $CFLAGS $LDFLAGS"; export CC
   1.171 +#   DO="$DO CC='$CAAM_GCC $CFLAGS $LDFLAGS'"
   1.172 +# fi
   1.173 +
   1.174 +echo CFLAGS=\"$CFLAGS\" \
   1.175 +CPPFLAGS=\"$CFLAGS\" \
   1.176 +LDFLAGS=\"$LDFLAGS\" \
   1.177 +LD_LIBRARY_PATH="$lp" \
   1.178 +PKG_CONFIG_PATH=\"$PKG_CONFIG_PATH\" \
   1.179 +GCC=\"$CAAM_GCC\" \
   1.180 +sh -c "$CAAM_CFG $* && $DO"
   1.181 +
   1.182 +PATH=$PATH \
   1.183 +CFLAGS="$CFLAGS" \
   1.184 +CPPFLAGS="$CFLAGS" \
   1.185 +LDFLAGS="$LDFLAGS" \
   1.186 +LD_LIBRARY_PATH="$lp" \
   1.187 +CAAM_GCC=$CAAM_GCC \
   1.188 +CAAM_CXX=$CAAM_CXX \
   1.189 +sh -c "$CAAM_CFG $* && $DO" && successlog
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/wrap/c++	Mon Jan 25 17:32:28 2010 +0900
     2.3 @@ -0,0 +1,16 @@
     2.4 +#!/bin/sh
     2.5 +CAAM_CXX=${CAAM_CXX:-`which c++`}
     2.6 +ldf=''
     2.7 +if [ x"${CAAM_LDF+x}" = x"x" ]; then
     2.8 +  # if CAAM_LDF is unset
     2.9 +  if [ x"$LD_RUN_PATH" != x"" ]; then
    2.10 +    oifs=$IFS
    2.11 +    IFS=:
    2.12 +    for d in $LD_RUN_PATH; do
    2.13 +      ldf=$ldf"${ldf:+ }-R $d -L $d"
    2.14 +    done
    2.15 +    IFS=$oifs
    2.16 +  fi
    2.17 +fi
    2.18 +# echo cmd=$CAAM_GCC $ldf "$@"
    2.19 +exec $CAAM_CXX $ldf "$@"
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/wrap/cc	Mon Jan 25 17:32:28 2010 +0900
     3.3 @@ -0,0 +1,1 @@
     3.4 +gcc
     3.5 \ No newline at end of file
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/wrap/gcc	Mon Jan 25 17:32:28 2010 +0900
     4.3 @@ -0,0 +1,16 @@
     4.4 +#!/bin/sh
     4.5 +CAAM_GCC=${CAAM_GCC:-/usr/bin/gcc}
     4.6 +ldf=${CAAM_LDF}
     4.7 +if [ x"${CAAM_LDF+x}" != x"x" ]; then
     4.8 +  # if CAAM_LDF is unset
     4.9 +  if [ x"$LD_RUN_PATH" != x"" ]; then
    4.10 +    oifs=$IFS
    4.11 +    IFS=:
    4.12 +    for d in $LD_RUN_PATH; do
    4.13 +      ldf=$ldf"${ldf:+ }-R $d -L $d"
    4.14 +    done
    4.15 +    IFS=$oifs
    4.16 +  fi
    4.17 +fi
    4.18 +# echo cmd=$CAAM_GCC $ldf "$@"
    4.19 +exec $CAAM_GCC $ldf "$@"