caam

view bin/caam @ 15:f1f17c1c87f8

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