#!/bin/bash DIR=$(pwd) if [ -z $ECHO ]; then ECHO=echo fi if [ -z $XLOGO ]; then #XLOGO=xlogo XLOGO="" fi if [ -z $SRC ]; then if [ -f log/src.txt ]; then SRC=$(cat log/src.txt) else SRC=.. fi fi if [ -z $PREFIX]; then if [ -f log/prefix.txt ]; then PREFIX=$(cat log/prefix.txt) else PREFIX=/usr/local fi fi if [ -z $CFLAGS ]; then if [ -f log/cflags.txt ]; then CFLAGS=$(cat log/cflags.txt) else CFLAGS="-mcpu=i686 -march=i686" fi fi if [ -z $CXXFLAGS ]; then if [ -f log/cxxflags.txt ]; then CXXFLAGS=$(cat log/cxxflags.txt) else CXXFLAGS=$CFLAGS fi fi if [ -z $MAKEOPTS ]; then if [ -f log/makeopts.txt ];then MAKEOPTS=$(cat log/makeopts.txt) else MAKEOPTS="-j2" fi fi PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/sbin:/bin:/opt/kde/bin PROJECT=$(echo $(basename $(pwd)) | sed -e "s/^obj-//") case "$1" in check-dir) if [ ! -d log ]; then $ECHO "error: log dir not found. try $0 pre." exit 1 fi ;; check-conf) if [ ! -f $PROJECT.conf ]; then $ECHO "error: $PROJECT.conf not found. try $0 pre." exit 1 fi ;; link) ln -s ../$PROJECT.conf . ln -s ../log . ;; check) $ECHO "find . -name \"Makefile\" | xargs grep \"\-O\"" find . -name "Makefile" | xargs grep "\-O" ;; docs.sh) if [ ! -f log/docs.txt ]; then $ECHO "error: log/docs.txt not found. try $0 pre." exit 1 fi touch log/docs.sh rm log/docs.sh >/dev/null 2>&1 #for i in $(cat log/docs.txt); do DOCDIR= cat log/docs.txt | while read i; do j=$(echo $i | sed -e "s/ .*$//") if [ "$j" = "%gzip" ]; then GZIP=on elif [ "$j" = "%nogzip" ]; then GZIP=off elif [ "$j" = "%mkdir" ]; then echo "$(echo "$i" | sed -e "s|^%mkdir |mkdir -p work$PREFIX/doc/$PROJECT/|")" >>log/docs.sh elif [ "$j" = "%docdir" ]; then DOCDIR="$(echo "$i" | sed -e "s|^%docdir *||")/" elif [ -z "$i" ]; then echo "" >>log/docs.sh else echo "# === $i ===" >>log/docs.sh echo "cp $DOCDIR$i work$PREFIX/doc/$PROJECT/$i" >>log/docs.sh if [ "$GZIP" = "on" ]; then echo "gzip work$PREFIX/doc/$PROJECT/$i" >>log/docs.sh fi fi done ;; pre) $ECHO "make obj-$PROJECT log & work dir..." mkdir -p obj-$PROJECT log work $ECHO "echo -n ".." > log/src.txt" echo -n ".." > log/src.txt if [ ! -f log/cflags.txt ]; then $ECHO "echo -n \"$CFLAGS\" > log/cflags.txt" echo -n "$CFLAGS" > log/cflags.txt fi if [ ! -f log/prefix.txt ]; then $ECHO "echo -n \"$PREFIX\" >log/prefix.txt" echo -n "$PREFIX" >log/prefix.txt fi if [ ! -f log/makeopts.txt ]; then $ECHO "echo -n $MAKEOPTS >log/makeopts.txt" echo -n $MAKEOPTS >log/makeopts.txt fi if [ ! -f log/docs.txt ]; then $ECHO "echo %gzip" >log/docs.txt echo "%gzip" >log/docs.txt $ECHO "ls [A-Z]* >>log/docs.txt" ls [A-Z]* >>log/docs.txt fi $ECHO "cd obj-$PROJECT" cd obj-$PROJECT $ECHO "../configure --help >../configure.help 2>&1" ../configure --help >../configure.help 2>&1 if [ ! -f ../$PROJECT.conf ]; then $ECHO "perl -pe "s/^/#/" ../configure.help >../$PROJECT.conf" perl -pe "s/^/#/" ../configure.help >../$PROJECT.conf fi $ECHO "ln -s ../$PROJECT.conf . & ln -s ../log ." $0 link $ECHO "cd obj-$PROJECT && edit $PROJECT.conf" #beep exit 1 ;; pre-conf) $0 check-dir || exit 1 $0 check-conf || exit 1 $ECHO "cat $SRC/$PROJECT.conf \ | perl -pe \"s/\#.*//\" \ | perl -pe \"s/^ +//\" \ | perl -pe \"s/\t/ /g\" \ | cut -d \" \" -f 1 \ | perl -pe \"s/^\n//\" \ | perl -pe \"s/\n/ /\" \ > $SRC/log/configure.conf" cat $SRC/$PROJECT.conf \ | perl -pe "s/\#.*//" \ | perl -pe "s/^ +//" \ | perl -pe "s/\t/ /g" \ | cut -d " " -f 1 \ | perl -pe "s/^\n//" \ | perl -pe "s/\n/ /" \ > $SRC/log/configure.conf $ECHO "CFLAGS=$CFLAGS CXXFLAGS=$CXXFLAGS $SRC/configure $(cat $SRC/log/configure.conf) 2>&1 \ | tee $SRC/log/configure.log ; $XLOGO" ;; conf) $0 pre-conf || exit 1 CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" $SRC/configure $(cat $SRC/log/configure.conf) 2>&1 \ | tee $SRC/log/configure.log || exit 1 ; $XLOGO #beep ;; pre-make) $0 check-dir || exit 1 $ECHO "make $MAKEOPTS 2>&1 | tee $SRC/log/make.log ; $XLOGO" ;; make) $0 pre-make || exit 1 make $MAKEOPTS 2>&1 | tee $SRC/log/make.log || exit 1 ; $XLOGO #beep ;; install) $0 check-dir || exit 1 if [ -f $SRC/log/force-prefix.txt ]; then $ECHO "make install prefix=$(pwd)/$SRC/work$PREFIX" make install prefix=$(pwd)/$SRC/work$PREFIX && echo "OK." || echo "Faild." else $ECHO "DESTDIR=$(pwd)/$SRC/work make install" DESTDIR=$(pwd)/$SRC/work make install && echo "OK." || echo "Faild." fi #$ECHO "sudo ldconfig ; $XLOGO" #sudo ldconfig || exit 1 ; $XLOGO #beep ;; all) XLOGO="" $0 check-dir || exit 1 XLOGO="" $0 check-conf || exit 1 $ECHO "$0 conf" $0 conf || exit 1 $ECHO "$0 make" $0 make || exit 1 #$ECHO "$0 install" #$0 install || exit 1 ;; strip) find work$PREFIX/bin -type f -exec strip {} \; find work$PREFIX/lib -type f -exec strip {} \; find work$PREFIX/libexec -type f -exec strip {} \; gzip -r work$PREFIX/man/* ;; install-doc) mkdir -p work$PREFIX/doc/$PROJECT if [ ! -f log/docs.sh ]; then $0 docs.sh || exit 1 $0 install-doc || exit 1 else sh log/docs.sh #else # for i in $(cat $SRC/log/DOCS.txt); do # cp -P $i work$PREFIX/doc/$PROJECT # gzip work$PREFIX/doc/$PROJECT/$i # done fi ;; *) $ECHO "Usage: $0 {pre|conf|make|install|strip|install-doc}" exit 1 ;; esac exit 0