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 |