caam

annotate bin/caam @ 1:4e6762b4b0cb

Save other build related vars.
author yuuji@gentei.org
date Sun, 08 May 2011 11:10:43 +0900
parents 3578cc37f9cd
children 5099ad83cb56 a56791ad41af
rev   line source
yuuji@0 1 #!/bin/sh
yuuji@0 2 # caam - Configure And And Make
yuuji@1 3 # (C)2008-2011 by HIROSE, Yuuji [yuuji/at/gentei.org]
yuuji@0 4 # Last modified Wed Sep 23 06:16:25 2009 on firestorm
yuuji@0 5 # Update count: 14
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@0 11 CAAM_CXX=${GCC:-`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@0 57
yuuji@0 58 # Parse my own arguments
yuuji@0 59 while [ x"" != x"$1" ]; do
yuuji@0 60 case "$1" in
yuuji@0 61 --) break;;
yuuji@0 62 -gmaic) TGT2="install clean"; CAAM_MAKE=gmake;;
yuuji@0 63 -maic) TGT2="install clean";;
yuuji@0 64 -gmai) TGT2="install"; CAAM_MAKE=gmake;;
yuuji@0 65 -mai) TGT2="install";;
yuuji@0 66 -m) CAAM_CFG="echo configure done";;
yuuji@0 67 -t) shift; MKTGT=${MKTGT:+"all "}"$1" ;;
yuuji@0 68 -j[0-9]*) CAAM_MKOPT="$MKOPT${MKOPT:+ }$1";;
yuuji@0 69 -j) shift; CAAM_MKOPT="$MKOPT${MKOPT:+ }-j $1";;
yuuji@0 70 -k) CAAM_MKOPT="$MKOPT${MKOPT:+ }-k";;
yuuji@0 71 # -CC) setcc=1 ;;
yuuji@0 72 -c) DO="echo done";;
yuuji@0 73 -g) CAAM_MAKE=gmake ;;
yuuji@0 74 -s) shift; CAAM_MAKE="sleep $1; $CAAM_MAKE" ;;
yuuji@0 75 -d) debug=1 ;;
yuuji@0 76 *) break ;;
yuuji@0 77 esac
yuuji@0 78 shift
yuuji@0 79 done
yuuji@0 80 POSTDO=${TGT2:+" && ${CAAM_MAKE} $TGT2"}
yuuji@0 81 DO=${DO:-"${CAAM_MAKE} ${CAAM_MKOPT} $MKTGT$POSTDO"}
yuuji@0 82
yuuji@0 83 # Add extra path
yuuji@0 84 for p in $ca; do
yuuji@0 85 case "$p" in
yuuji@0 86 /*) PATH=${p}/bin:$PATH ;;
yuuji@0 87 *) PATH=$PROOT/${p}/bin:$PATH ;;
yuuji@0 88 esac
yuuji@0 89 done
yuuji@0 90
yuuji@0 91 defprefix="gnu graphics xc X11-contrib Xclient"
yuuji@0 92 [ -f $DPF ] && defprefix=`grep -v '^#' $DPF`
yuuji@0 93 dpx=${cpx:-$defprefix}
yuuji@0 94
yuuji@0 95 # extract pkg-config path's
yuuji@0 96 pcp=$PKG_CONFIG_PATH
yuuji@0 97
yuuji@0 98 [ $debug ] && echo ca=$ca
yuuji@0 99 for e in $ca '' $dpx; do
yuuji@0 100 case "$e" in
yuuji@0 101 /*) pfx=$e ;;
yuuji@0 102 *) pfx=$PROOT/$e ;;
yuuji@0 103 esac
yuuji@0 104 [ $debug ] && echo checking $pfx
yuuji@0 105 [ -d $pfx ] || continue
yuuji@0 106 cf="$cf -I${pfx}${e:+/}include"
yuuji@0 107 lf="$lf -L${pfx}${e:+/}lib -R${pfx}${e:+/}lib"
yuuji@0 108 lp="$lp${lp:+:}${pfx}${e:+/}lib"
yuuji@0 109 [ -d $pfx/lib/pkgconfig ] && pcp=$pcp${pcp:+:}$pfx${e:+/}lib/pkgconfig
yuuji@0 110 done
yuuji@0 111
yuuji@0 112 # Save old variable
yuuji@1 113 acvars=`env|grep '^ac_'|cut -d= -f 1`
yuuji@1 114 otvars=`env|egrep '(_CFLAGS|_LIBS|_INCLUDES)='|cut -d= -f 1`
yuuji@0 115 for e in PATH LD_LIBRARY_PATH LD_RUN_PATH PERL RUBY PYTHON M4 \
yuuji@0 116 CC CFLAGS LDFLAGS LIBS CXX CXXFLAGS \
yuuji@0 117 CONFIG_SHELL \
yuuji@1 118 PKG_CONFIG_PATH CAAM_PREFIXES CAAM_ADD CFG MAKE MKOPT \
yuuji@1 119 $acvars $otvars; do
yuuji@0 120 eval "v=\$$e"
yuuji@0 121 if [ x"$v" != x"" ]; then
yuuji@0 122 eval "old_${e}=\"$v\""
yuuji@0 123 kept_env="$kept_env $e"
yuuji@0 124 fi
yuuji@0 125 done
yuuji@0 126
yuuji@0 127 CFLAGS=`echo $CFLAGS $cf`
yuuji@0 128 CPPFLAGS=`echo $CFLAGS $cf`
yuuji@0 129 LDFLAGS=`echo $LDFLAGS $lf`
yuuji@0 130 export LD_RUN_PATH
yuuji@0 131 LD_RUN_PATH="$lp"
yuuji@0 132 PKG_CONFIG_PATH=$pcp
yuuji@0 133 export PKG_CONFIG_PATH
yuuji@0 134
yuuji@0 135 # Setup gcc wrapper environment
yuuji@0 136 # point to gcc wrapper
yuuji@0 137 if [ -d $WRAPDIR ]; then
yuuji@0 138 PATH=$WRAPDIR:$PATH
yuuji@0 139 ldf=''
yuuji@0 140 if [ x"$LD_RUN_PATH" != x"" ]; then
yuuji@0 141 oifs=$IFS
yuuji@0 142 IFS=:
yuuji@0 143 for d in $LD_RUN_PATH; do
yuuji@0 144 ldf=$ldf${ldf:+\ }"-R $d -L $d"
yuuji@0 145 done
yuuji@0 146 IFS=$oifs
yuuji@0 147 fi
yuuji@0 148 CAAM_LDF=$ldf; export CAAM_LDF
yuuji@0 149 fi
yuuji@0 150
yuuji@0 151 successlog() {
yuuji@0 152 status=$?
yuuji@0 153 (PWD=`pwd` # for compatibility
yuuji@0 154 logfile=../`basename $PWD`.caam
yuuji@0 155 [ -s $logfile ] || echo "### $logfile started at `date`" > $logfile
yuuji@0 156 (echo 1i
yuuji@0 157 echo "# $myname succeeded at `date`"
yuuji@0 158 for e in $kept_env; do
yuuji@0 159 eval v="\$old_$e"
yuuji@0 160 echo $e=\"$v\" \\
yuuji@0 161 done
yuuji@0 162 echo $myname $myargs
yuuji@0 163 echo exit
yuuji@0 164 echo .; echo w; echo q) | ed $logfile 2> /dev/null
yuuji@0 165 )
yuuji@0 166 exit $status
yuuji@0 167 }
yuuji@0 168
yuuji@0 169 # if [ $setcc ]; then
yuuji@0 170 # # CC="$CAAM_GCC $CFLAGS $LDFLAGS"; export CC
yuuji@0 171 # DO="$DO CC='$CAAM_GCC $CFLAGS $LDFLAGS'"
yuuji@0 172 # fi
yuuji@0 173
yuuji@0 174 echo CFLAGS=\"$CFLAGS\" \
yuuji@0 175 CPPFLAGS=\"$CFLAGS\" \
yuuji@0 176 LDFLAGS=\"$LDFLAGS\" \
yuuji@0 177 LD_LIBRARY_PATH="$lp" \
yuuji@0 178 PKG_CONFIG_PATH=\"$PKG_CONFIG_PATH\" \
yuuji@0 179 GCC=\"$CAAM_GCC\" \
yuuji@0 180 sh -c "$CAAM_CFG $* && $DO"
yuuji@0 181
yuuji@0 182 PATH=$PATH \
yuuji@0 183 CFLAGS="$CFLAGS" \
yuuji@0 184 CPPFLAGS="$CFLAGS" \
yuuji@0 185 LDFLAGS="$LDFLAGS" \
yuuji@0 186 LD_LIBRARY_PATH="$lp" \
yuuji@0 187 CAAM_GCC=$CAAM_GCC \
yuuji@0 188 CAAM_CXX=$CAAM_CXX \
yuuji@0 189 sh -c "$CAAM_CFG $* && $DO" && successlog