caam
annotate bin/caam @ 13:b403946716d6
Export main variables for DO jobs
author | HIROSE Yuuji <yuuji@gentei.org> |
---|---|
date | Thu, 26 Sep 2013 11:47:00 +0900 |
parents | 90d1d0f6c627 |
children | f12119170e39 |
rev | line source |
---|---|
yuuji@0 | 1 #!/bin/sh |
yuuji@0 | 2 # caam - Configure And And Make |
yuuji@8 | 3 # (C)2008-2012 by HIROSE, Yuuji [yuuji/at/gentei.org] |
yuuji@9 | 4 # Last modified Mon Jul 30 08:09:22 2012 on firestorm |
yuuji@9 | 5 # Update count: 40 |
yuuji@0 | 6 # http://www.gentei.org/~yuuji/software/caam/ |
yuuji@0 | 7 |
yuuji@0 | 8 ca=`echo $CAAM_ADD|tr : ' '` |
yuuji@0 | 9 cpx=`echo $CAAM_PREFIXES|tr : ' '` |
yuuji@0 | 10 CAAM_GCC=${GCC:-`which gcc`} |
yuuji@13 | 11 CAAM_CXX=${CXX:-`which c++`} |
yuuji@0 | 12 if [ -x /usr/xpg4/bin/sh ]; then |
yuuji@0 | 13 CAAM_SH=/usr/xpg4/bin/sh |
yuuji@0 | 14 else |
yuuji@0 | 15 CAAM_SH=`which sh` |
yuuji@0 | 16 fi |
yuuji@0 | 17 CONFIG_SHELL=${CONFIG_SHELL:-${CAAM_SH}} |
yuuji@0 | 18 export CONFIG_SHELL |
yuuji@0 | 19 |
yuuji@0 | 20 # setup final callee |
yuuji@0 | 21 ####DO=${DO:-${MAKE:-make}} |
yuuji@1 | 22 CAAM_MAKE=${CAAM_MAKE:-${MAKE:-make}} |
yuuji@0 | 23 CAAM_CFG=${CFG:-"$CONFIG_SHELL ./configure"} |
yuuji@0 | 24 MKTGT='' |
yuuji@0 | 25 CAAM_MKOPT=${MKOPT:-""} |
yuuji@0 | 26 TGT2='' |
yuuji@0 | 27 |
yuuji@0 | 28 myname=`basename $0` |
yuuji@0 | 29 mydir=`dirname $0` |
yuuji@0 | 30 mydir=`(cd $mydir; pwd -P)` |
yuuji@0 | 31 myargs=$* |
yuuji@0 | 32 dir=`dirname $mydir` |
yuuji@0 | 33 case "$dir" in |
yuuji@0 | 34 */caam*) top=`dirname $dir` ;; |
yuuji@0 | 35 *) top="$dir" ;; |
yuuji@0 | 36 esac |
yuuji@0 | 37 echo d=$dir, top=$top |
yuuji@0 | 38 |
yuuji@0 | 39 chasemytop () {( |
yuuji@0 | 40 me=$0; cd $mydir |
yuuji@0 | 41 while [ -L $me ]; do |
yuuji@0 | 42 me=`ls -l $me|awk '{print $NF}'` |
yuuji@0 | 43 d=`dirname $me` |
yuuji@0 | 44 me=`basename $me` |
yuuji@0 | 45 cd $d |
yuuji@0 | 46 done |
yuuji@0 | 47 (cd ..; pwd -P) |
yuuji@0 | 48 )} |
yuuji@0 | 49 |
yuuji@0 | 50 mytop=`chasemytop` |
yuuji@0 | 51 |
yuuji@0 | 52 PROOT=$top |
yuuji@0 | 53 CONFDIR=${CAAM_CONFDIR:-$mydir} |
yuuji@0 | 54 DPF="$CONFDIR/caam.dirs" |
yuuji@0 | 55 WRAPDIR=$mytop/wrap |
yuuji@0 | 56 [ "$CAAM_DEBUG" ] && echo wrapdir=$WRAPDIR |
yuuji@10 | 57 SUSPEND=: |
yuuji@0 | 58 |
yuuji@0 | 59 # Parse my own arguments |
yuuji@0 | 60 while [ x"" != x"$1" ]; do |
yuuji@0 | 61 case "$1" in |
yuuji@0 | 62 --) break;; |
yuuji@0 | 63 -gmaic) TGT2="install clean"; CAAM_MAKE=gmake;; |
yuuji@0 | 64 -maic) TGT2="install clean";; |
yuuji@0 | 65 -gmai) TGT2="install"; CAAM_MAKE=gmake;; |
yuuji@0 | 66 -mai) TGT2="install";; |
yuuji@0 | 67 -m) CAAM_CFG="echo configure done";; |
yuuji@0 | 68 -t) shift; MKTGT=${MKTGT:+"all "}"$1" ;; |
yuuji@0 | 69 -j[0-9]*) CAAM_MKOPT="$MKOPT${MKOPT:+ }$1";; |
yuuji@0 | 70 -j) shift; CAAM_MKOPT="$MKOPT${MKOPT:+ }-j $1";; |
yuuji@0 | 71 -k) CAAM_MKOPT="$MKOPT${MKOPT:+ }-k";; |
yuuji@0 | 72 # -CC) setcc=1 ;; |
yuuji@0 | 73 -c) DO="echo done";; |
yuuji@0 | 74 -g) CAAM_MAKE=gmake ;; |
yuuji@0 | 75 -s) shift; CAAM_MAKE="sleep $1; $CAAM_MAKE" ;; |
yuuji@10 | 76 -S) SUSPEND=suspend ;; |
yuuji@0 | 77 -d) debug=1 ;; |
yuuji@0 | 78 *) break ;; |
yuuji@0 | 79 esac |
yuuji@0 | 80 shift |
yuuji@0 | 81 done |
yuuji@0 | 82 POSTDO=${TGT2:+" && ${CAAM_MAKE} $TGT2"} |
yuuji@0 | 83 DO=${DO:-"${CAAM_MAKE} ${CAAM_MKOPT} $MKTGT$POSTDO"} |
yuuji@0 | 84 |
yuuji@0 | 85 # Add extra path |
yuuji@0 | 86 for p in $ca; do |
yuuji@0 | 87 case "$p" in |
yuuji@0 | 88 /*) PATH=${p}/bin:$PATH ;; |
yuuji@0 | 89 *) PATH=$PROOT/${p}/bin:$PATH ;; |
yuuji@0 | 90 esac |
yuuji@0 | 91 done |
yuuji@0 | 92 |
yuuji@0 | 93 defprefix="gnu graphics xc X11-contrib Xclient" |
yuuji@0 | 94 [ -f $DPF ] && defprefix=`grep -v '^#' $DPF` |
yuuji@0 | 95 dpx=${cpx:-$defprefix} |
yuuji@0 | 96 |
yuuji@0 | 97 # extract pkg-config path's |
yuuji@0 | 98 pcp=$PKG_CONFIG_PATH |
yuuji@0 | 99 |
yuuji@0 | 100 [ $debug ] && echo ca=$ca |
yuuji@0 | 101 for e in $ca '' $dpx; do |
yuuji@0 | 102 case "$e" in |
yuuji@0 | 103 /*) pfx=$e ;; |
yuuji@0 | 104 *) pfx=$PROOT/$e ;; |
yuuji@0 | 105 esac |
yuuji@0 | 106 [ $debug ] && echo checking $pfx |
yuuji@0 | 107 [ -d $pfx ] || continue |
yuuji@0 | 108 cf="$cf -I${pfx}${e:+/}include" |
yuuji@0 | 109 lf="$lf -L${pfx}${e:+/}lib -R${pfx}${e:+/}lib" |
yuuji@0 | 110 lp="$lp${lp:+:}${pfx}${e:+/}lib" |
yuuji@0 | 111 [ -d $pfx/lib/pkgconfig ] && pcp=$pcp${pcp:+:}$pfx${e:+/}lib/pkgconfig |
yuuji@0 | 112 done |
yuuji@0 | 113 |
yuuji@0 | 114 # Save old variable |
yuuji@1 | 115 acvars=`env|grep '^ac_'|cut -d= -f 1` |
yuuji@3 | 116 otvars=`env|egrep '(_CFLAGS|_LIBS?|_INCLUDES?)='|cut -d= -f 1` |
yuuji@0 | 117 for e in PATH LD_LIBRARY_PATH LD_RUN_PATH PERL RUBY PYTHON M4 \ |
yuuji@9 | 118 LIBTOOL SED INSTALL MAKE MSGFMT \ |
yuuji@0 | 119 CC CFLAGS LDFLAGS LIBS CXX CXXFLAGS \ |
yuuji@0 | 120 CONFIG_SHELL \ |
yuuji@1 | 121 PKG_CONFIG_PATH CAAM_PREFIXES CAAM_ADD CFG MAKE MKOPT \ |
yuuji@1 | 122 $acvars $otvars; do |
yuuji@0 | 123 eval "v=\$$e" |
yuuji@0 | 124 if [ x"$v" != x"" ]; then |
yuuji@0 | 125 eval "old_${e}=\"$v\"" |
yuuji@0 | 126 kept_env="$kept_env $e" |
yuuji@0 | 127 fi |
yuuji@0 | 128 done |
yuuji@0 | 129 |
yuuji@0 | 130 CFLAGS=`echo $CFLAGS $cf` |
yuuji@0 | 131 CPPFLAGS=`echo $CFLAGS $cf` |
yuuji@0 | 132 LDFLAGS=`echo $LDFLAGS $lf` |
yuuji@0 | 133 export LD_RUN_PATH |
yuuji@0 | 134 LD_RUN_PATH="$lp" |
yuuji@0 | 135 PKG_CONFIG_PATH=$pcp |
yuuji@0 | 136 export PKG_CONFIG_PATH |
yuuji@0 | 137 |
yuuji@0 | 138 # Setup gcc wrapper environment |
yuuji@0 | 139 # point to gcc wrapper |
yuuji@0 | 140 if [ -d $WRAPDIR ]; then |
yuuji@0 | 141 PATH=$WRAPDIR:$PATH |
yuuji@0 | 142 ldf='' |
yuuji@0 | 143 if [ x"$LD_RUN_PATH" != x"" ]; then |
yuuji@0 | 144 oifs=$IFS |
yuuji@0 | 145 IFS=: |
yuuji@0 | 146 for d in $LD_RUN_PATH; do |
yuuji@0 | 147 ldf=$ldf${ldf:+\ }"-R $d -L $d" |
yuuji@0 | 148 done |
yuuji@0 | 149 IFS=$oifs |
yuuji@0 | 150 fi |
yuuji@0 | 151 CAAM_LDF=$ldf; export CAAM_LDF |
yuuji@0 | 152 fi |
yuuji@0 | 153 |
yuuji@10 | 154 suspend() { |
yuuji@12 | 155 cat<<_EOF_ |
yuuji@12 | 156 ====================================================================== |
yuuji@12 | 157 Suspending caam. Type 'fg' to make caam work again. |
yuuji@12 | 158 ====================================================================== |
yuuji@12 | 159 _EOF_ |
yuuji@10 | 160 kill -STOP $$ |
yuuji@12 | 161 : |
yuuji@10 | 162 } |
yuuji@10 | 163 |
yuuji@0 | 164 successlog() { |
yuuji@0 | 165 status=$? |
yuuji@0 | 166 (PWD=`pwd` # for compatibility |
yuuji@5 | 167 uname=`uname -sm 2>/dev/null` |
yuuji@0 | 168 logfile=../`basename $PWD`.caam |
yuuji@0 | 169 [ -s $logfile ] || echo "### $logfile started at `date`" > $logfile |
yuuji@0 | 170 (echo 1i |
yuuji@5 | 171 echo "# ** $uname ** - $myname succeeded at `date`" |
yuuji@7 | 172 cat <<EOF |
yuuji@7 | 173 if [ x"\`uname -sm\`" = x"$uname" ]; then |
yuuji@7 | 174 if [ x"\$1" = x"-n" ]; then |
yuuji@8 | 175 sed -n -e '1,/#[:]BEGIN/d' -e '/^ exit\$/q' -e p \$0 \\ |
yuuji@8 | 176 | sed -e 's/^ *//' -e 's/ "\$@"//' \\ |
yuuji@8 | 177 | sed "s,\$PATH,\\\$PATH,"|sed '/PATH="\\\$PATH" /d' |
yuuji@8 | 178 exit 0 |
yuuji@7 | 179 fi |
yuuji@8 | 180 #:BEGIN |
yuuji@7 | 181 EOF |
yuuji@0 | 182 for e in $kept_env; do |
yuuji@0 | 183 eval v="\$old_$e" |
yuuji@7 | 184 echo " "$e=\"$v\" \\ |
yuuji@0 | 185 done |
yuuji@7 | 186 echo " $myname" $myargs '"$@"' |
yuuji@7 | 187 echo " exit" |
yuuji@5 | 188 echo "fi" |
yuuji@5 | 189 echo "#### ** $uname Success log ends here." |
yuuji@0 | 190 echo .; echo w; echo q) | ed $logfile 2> /dev/null |
yuuji@7 | 191 |
yuuji@7 | 192 echo "Saved caam log in $logfile." |
yuuji@7 | 193 echo "To build again with same parameters: sh $logfile" |
yuuji@7 | 194 echo "To see successfull caam arguments: sh $logfile -n" |
yuuji@0 | 195 ) |
yuuji@0 | 196 exit $status |
yuuji@0 | 197 } |
yuuji@0 | 198 |
yuuji@0 | 199 # if [ $setcc ]; then |
yuuji@0 | 200 # # CC="$CAAM_GCC $CFLAGS $LDFLAGS"; export CC |
yuuji@0 | 201 # DO="$DO CC='$CAAM_GCC $CFLAGS $LDFLAGS'" |
yuuji@0 | 202 # fi |
yuuji@0 | 203 |
yuuji@0 | 204 echo CFLAGS=\"$CFLAGS\" \ |
yuuji@0 | 205 CPPFLAGS=\"$CFLAGS\" \ |
yuuji@0 | 206 LDFLAGS=\"$LDFLAGS\" \ |
yuuji@0 | 207 LD_LIBRARY_PATH="$lp" \ |
yuuji@0 | 208 PKG_CONFIG_PATH=\"$PKG_CONFIG_PATH\" \ |
yuuji@0 | 209 GCC=\"$CAAM_GCC\" \ |
yuuji@13 | 210 CXX=\"$CAAM_CXX\" \ |
yuuji@0 | 211 sh -c "$CAAM_CFG $* && $DO" |
yuuji@0 | 212 |
yuuji@0 | 213 PATH=$PATH \ |
yuuji@0 | 214 CFLAGS="$CFLAGS" \ |
yuuji@0 | 215 CPPFLAGS="$CFLAGS" \ |
yuuji@0 | 216 LDFLAGS="$LDFLAGS" \ |
yuuji@0 | 217 LD_LIBRARY_PATH="$lp" \ |
yuuji@0 | 218 CAAM_GCC=$CAAM_GCC \ |
yuuji@13 | 219 CAAM_CXX=$CAAM_CXX |
yuuji@13 | 220 export PATH CFLAGS CPPFLAGS LDFLAGS LD_LIBRARY_PATH LD_RUN_PATH |
yuuji@13 | 221 export CAAM_GCC CAAM_CXX |
yuuji@12 | 222 sh -c "$CAAM_CFG $*" && |
yuuji@13 | 223 $SUSPEND && sh -c "$DO" && successlog |