#!/bin/sh
#
# This script generate some valid Slackware packages
#
#
# Some variables.
#
CWD=`pwd`
PACKAGE=xine-lib.tgz
ossPACKAGE=xine-lib-oss.tgz
#alsa05PACKAGE=xine-lib-alsa05.tgz
alsa09PACKAGE=xine-lib-alsa09.tgz
#dxr3PACKAGE=xine-lib-dxr3.tgz
artsPACKAGE=xine-lib-arts.tgz
esdPACKAGE=xine-lib-esd.tgz
xvPACKAGE=xine-lib-xv.tgz
aaPACKAGE=xine-lib-aa.tgz
w32PACKAGE=xine-lib-w32.tgz
oggvorbisPACKAGE=xine-lib-oggvorbis.tgz
SLCK=$CWD/slack
PREFIX=/home/guenter/usr/x86/
PKG=$CWD/slktmp
TMPBUILD=$CWD/tmpbuild
#DOINSTDIR=/install

#
# Create the post-install script
#
do_install_sh() {
cat > doinst.sh <<EOF
/sbin/ldconfig
EOF
}

#
# Create package description for pkgtool.
#
do_descr() {
cat > package_descriptions << EOF
xine-lib: xine-lib 0.9.8.
xine-lib:
xine-lib: xine is a free gpl-licensed video player for unix-like systems.
xine-lib: We support mpeg-2 and mpeg-1 system (audio + video multiplexed) streams,
xine-lib: eventually mpeg-4 and other formats might be added.

xine-lib: xine plays the video and audio data of mpeg-2 videos and synchronizes
xine-lib: the playback of both. Depending on the properties of the mpeg stream,
xine-lib: playback will need more or less processor power, 100% frame rate
xine-lib: has been seen on a 400 MHz P II system.
EOF

cat > package_descriptions_oss << EOF
xine-lib-oss: xine-lib-oss 0.9.8.
xine-lib-oss:
xine-lib-oss: audio plugin with oss support.
EOF

#cat > package_descriptions_alsa05 << EOF
#xine-lib-alsa05: xine-lib-alsa05 0.9.8.
#xine-lib-alsa05:
#xine-lib-alsa05: audio plugin with alsa 0.5.x support.
#EOF

cat > package_descriptions_alsa09 << EOF
xine-lib-alsa09: xine-lib-alsa09 0.9.8.
xine-lib-alsa09:
xine-lib-alsa09: audio plugin with alsa >= 0.9.x support.
EOF

cat > package_descriptions_arts << EOF
xine-lib-arts: xine-lib-arts 0.9.8.
xine-lib-arts:
xine-lib-arts: audio plugin with ARTS support.
EOF

cat > package_descriptions_esd << EOF
xine-lib-esd: xine-lib-esd 0.9.8.
xine-lib-esd:
xine-lib-esd: audio plugin with ESD support.
EOF

#cat > package_descriptions_drx3 << EOF
#xine-lib-dxr3: xine-lib-dxr3 0.9.8.
#xine-lib-dxr3:
#xine-lib-dxr3: video/decoder plugins for DXR3 card support.
#EOF

cat > package_descriptions_xv << EOF
xine-lib-xv: xine-lib-xv 0.9.8.
xine-lib-xv:
xine-lib-xv: video plugin with XVideo support.
EOF

cat > package_descriptions_aa << EOF
xine-lib-aa: xine-lib-aa 0.9.8.
xine-lib-aa:
xine-lib-aa: video plugin with Ascii Art library support.
EOF

cat > package_descriptions_w32 << EOF
xine-lib-w32: xine-lib-w32 0.9.8.
xine-lib-w32:
xine-lib-w32: video decoder with win32dll support.
EOF

cat > package_descriptions_oggvorbis << EOF
xine-lib-oggvorbis: xine-lib-oggvorbis 0.9.8.
xine-lib-oggvorbis:
xine-lib-oggvorbis: demuxer/decoder plugins with Ogg/Vorbis support.
EOF
}

#
# Create extra packages (alsa05, alsa09 and dxr3, etc...)
#
do_extra_packages() {
    cwd=`pwd`

## OSS plugin
    mkdir -p oss$PREFIX/lib/xine/plugins && \
    cp $PKG/$PREFIX/lib/xine/plugins/xineplug_ao_out_oss.la $PKG/$PREFIX/lib/xine/plugins/xineplug_ao_out_oss.so oss$PREFIX/lib/xine/plugins && \
    (cd oss && \
    echo "n" | makepkg $ossPACKAGE && \
    echo "move $ossPACKAGE to $SLCK" && mv $ossPACKAGE $SLCK) && \
    rm -rf oss && \
    rm -f $PKG/$PREFIX/lib/xine/plugins/xineplug_ao_out_oss.la $PKG/$PREFIX/lib/xine/plugins/xineplug_ao_out_oss.so

## Alsa 0.5 plugin
#    mkdir -p alsa05$PREFIX/lib/xine/plugins && \
#    cp $PKG/$PREFIX/lib/xine/plugins/xineplug_ao_out_alsa05.la $PKG/$PREFIX/lib/xine/plugins/xineplug_ao_out_alsa05.so alsa05$PREFIX/lib/xine/plugins && \
#    (cd alsa05 && \
#    echo "n" | makepkg $alsa05PACKAGE && \
#    echo "move $alsa05PACKAGE to $SLCK" && mv $alsa05PACKAGE $SLCK) && \
#    rm -rf alsa05 && \
#    rm -f $PKG/$PREFIX/lib/xine/plugins/xineplug_ao_out_alsa05.la $PKG/$PREFIX/lib/xine/plugins/xineplug_ao_out_alsa05.so

## Alsa 0.9 plugin
    mkdir -p alsa09$PREFIX/lib/xine/plugins && \
    cp $PKG/$PREFIX/lib/xine/plugins/xineplug_ao_out_alsa.la $PKG/$PREFIX/lib/xine/plugins/xineplug_ao_out_alsa.so alsa09$PREFIX/lib/xine/plugins && \
    (cd alsa09 && \
    echo "n" | makepkg $alsa09PACKAGE && \
    echo "move $alsa09PACKAGE to $SLCK" && mv $alsa09PACKAGE $SLCK) && \
    rm -rf alsa09 && \
    rm -f $PKG/$PREFIX/lib/xine/plugins/xineplug_ao_out_alsa.la $PKG/$PREFIX/lib/xine/plugins/xineplug_ao_out_alsa.so

## Arts plugin
    mkdir -p arts$PREFIX/lib/xine/plugins && \
    cp $PKG/$PREFIX/lib/xine/plugins/xineplug_ao_out_arts.la $PKG/$PREFIX/lib/xine/plugins/xineplug_ao_out_arts.so arts$PREFIX/lib/xine/plugins && \
    (cd arts && \
    echo "n" | makepkg $artsPACKAGE && \
    echo "move $artsPACKAGE to $SLCK" && mv $artsPACKAGE $SLCK) && \
    rm -rf arts && \
    rm -f $PKG/$PREFIX/lib/xine/plugins/xineplug_ao_out_arts.la $PKG/$PREFIX/lib/xine/plugins/xineplug_ao_out_arts.so

## Esd plugin
    mkdir -p esd$PREFIX/lib/xine/plugins && \
    cp $PKG/$PREFIX/lib/xine/plugins/xineplug_ao_out_esd.la $PKG/$PREFIX/lib/xine/plugins/xineplug_ao_out_esd.so esd$PREFIX/lib/xine/plugins && \
    (cd esd && \
    echo "n" | makepkg $esdPACKAGE && \
    echo "move $esdPACKAGE to $SLCK" && mv $esdPACKAGE $SLCK) && \
    rm -rf esd && \
    rm -f $PKG/$PREFIX/lib/xine/plugins/xineplug_ao_out_esd.la $PKG/$PREFIX/lib/xine/plugins/xineplug_ao_out_esd.so

## DXR3 plugins
#    mkdir -p dxr3$PREFIX/lib/xine/plugins && \
#    cp $PKG/$PREFIX/lib/xine/plugins/xineplug_decode_dxr3.la $PKG/$PREFIX/lib/xine/plugins/xineplug_decode_dxr3.so $PKG/$PREFIX/lib/xine/plugins/xineplug_vo_out_dxr3.la $PKG/$PREFIX/lib/xine/plugins/xineplug_vo_out_dxr3.so dxr3$PREFIX/lib/xine/plugins && \
#    (cd dxr3 && \
#    echo "n" | makepkg $dxr3PACKAGE && \
#    echo "move $dxr3PACKAGE to $SLCK" && mv $dxr3PACKAGE $SLCK) && \
#    rm -rf dxr3 && \
#    rm -f $PKG/$PREFIX/lib/xine/plugins/xineplug_decode_dxr3.la $PKG/$PREFIX/lib/xine/plugins/xineplug_decode_dxr3.so $PKG/$PREFIX/lib/xine/plugins/xineplug_vo_out_dxr3.la $PKG/$PREFIX/lib/xine/plugins/xineplug_vo_out_dxr3.so

## XV plugin
    mkdir -p xv$PREFIX/lib/xine/plugins && \
    cp $PKG/$PREFIX/lib/xine/plugins/xineplug_vo_out_xv.la $PKG/$PREFIX/lib/xine/plugins/xineplug_vo_out_xv.so xv$PREFIX/lib/xine/plugins && \
    (cd xv && \
    echo "n" | makepkg $xvPACKAGE && \
    echo "move $xvPACKAGE to $SLCK" && mv $xvPACKAGE $SLCK) && \
    rm -rf xv && \
    rm -f $PKG/$PREFIX/lib/xine/plugins/xineplug_vo_out_xv.la $PKG/$PREFIX/lib/xine/plugins/xineplug_vo_out_xv.so

## AA plugin
    mkdir -p aa$PREFIX/lib/xine/plugins && \
    cp $PKG/$PREFIX/lib/xine/plugins/xineplug_vo_out_aa.la $PKG/$PREFIX/lib/xine/plugins/xineplug_vo_out_aa.so aa$PREFIX/lib/xine/plugins && \
    (cd aa && \
    echo "n" | makepkg $aaPACKAGE && \
    echo "move $aaPACKAGE to $SLCK" && mv $aaPACKAGE $SLCK) && \
    rm -rf aa && \
    rm -f $PKG/$PREFIX/lib/xine/plugins/xineplug_vo_out_aa.la $PKG/$PREFIX/lib/xine/plugins/xineplug_vo_out_aa.so

## W32DLL plugin
    mkdir -p w32$PREFIX/lib/xine/plugins && \
    cp $PKG/$PREFIX/lib/xine/plugins/xineplug_decode_w32dll.la $PKG/$PREFIX/lib/xine/plugins/xineplug_decode_w32dll.so w32$PREFIX/lib/xine/plugins && \
    (cd w32 && \
    echo "n" | makepkg $w32PACKAGE && \
    echo "move $w32PACKAGE to $SLCK" && mv $w32PACKAGE $SLCK) && \
    rm -rf w32 && \
    rm -f $PKG/$PREFIX/lib/xine/plugins/xineplug_decode_w32dll.la $PKG/$PREFIX/lib/xine/plugins/xineplug_decode_w32dll.so

## Ogg/Vorbis plugins
    mkdir -p oggvorbis$PREFIX/lib/xine/plugins && \
    cp $PKG/$PREFIX/lib/xine/plugins/xineplug_dmx_ogg.la $PKG/$PREFIX/lib/xine/plugins/xineplug_dmx_ogg.so $PKG/$PREFIX/lib/xine/plugins/xineplug_decode_vorbis.la $PKG/$PREFIX/lib/xine/plugins/xineplug_decode_vorbis.so oggvorbis$PREFIX/lib/xine/plugins && \
    (cd oggvorbis && \
    echo "n" | makepkg $oggvorbisPACKAGE && \
    echo "move $oggvorbisPACKAGE to $SLCK" && mv $oggvorbisPACKAGE $SLCK) && \
    rm -rf oggvorbis && \
    rm -f $PKG/$PREFIX/lib/xine/plugins/xineplug_dmx_ogg.la $PKG/$PREFIX/lib/xine/plugins/xineplug_dmx_ogg.so $PKG/$PREFIX/lib/xine/plugins/xineplug_decode_vorbis.la $PKG/$PREFIX/lib/xine/plugins/xineplug_decode_vorbis.so

    cd $cwd
}

#
# Building binaries process, then install and move package in right place
#
do_build() {
  cd $CWD
  rm -rf $TMPBUILD
  mkdir -p $TMPBUILD
  cd $TMPBUILD && tar -xzf $CWD/xine-lib-0.9.8.tar.gz
  do_install_sh;
  cd xine-lib-0.9.8
  DIE=1
  ./configure --prefix=$PREFIX && make && make install-strip prefix=$PKG/$PREFIX && \
  mkdir -p $PKG/install && cp $TMPBUILD/doinst.sh $PKG/install && \
  do_extra_packages && \
  cd $PKG && \
  echo "n" | makepkg $PACKAGE && \
  mv $PACKAGE $SLCK && \
  cd $SLCK && DIE=0
  do_descr
}

#
# Cleaning building directory
#
do_clean() {
  rm -rf $TMPBUILD
  rm -f $PACKAGE package_descriptions
   rm -f $ossPACKAGE
#   rm -f $alsa05PACKAGE
   rm -f $alsa09PACKAGE
#   rm -f $dxr3PACKAGE
   rm -f $artsPACKAGE
   rm -f $esdPACKAGE
   rm -f $xvPACKAGE
   rm -f $aaPACKAGE
   rm -f $w32PACKAGE
   rm -f $oggvorbisPACKAGE
  rm -rf $PKG
  cd $CWD
}

#
# Build for PPro
# 
build_pentiumpro() {
  echo "*****************************************************"
  echo
  echo "building slack for xine-lib 0.9.8"
  echo 
  echo "current architecture:pentiumpro"
  echo "slackware package will be copied to ./slack directory"
  echo
  echo "*****************************************************"
  rm -rf $PKG
  export XINE_BUILD=i686-pc-linux-gnu
  do_build
  if test "$DIE" -eq 0; then 
    tar -czvf xine-lib-0.9.8-i686.tar.gz $PACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_oss package_descriptions && \
    tar -czvf xine-lib-0.9.8-oss-i686.tar.gz $ossPACKAGE package_descriptions
#    rm -f package_descriptions
#    mv package_descriptions_alsa05 package_descriptions && \
#    tar -czvf xine-lib-0.9.8-alsa05-i686.tar.gz $alsa05PACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_alsa09 package_descriptions && \
    tar -czvf xine-lib-0.9.8-alsa09-i686.tar.gz $alsa09PACKAGE package_descriptions
#    rm -f package_descriptions
#    mv package_descriptions_dxr3 package_descriptions && \
#    tar -czvf xine-lib-0.9.8-dxr3-i686.tar.gz $dxr3PACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_arts package_descriptions && \
    tar -czvf xine-lib-0.9.8-arts-i686.tar.gz $artsPACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_esd package_descriptions && \
    tar -czvf xine-lib-0.9.8-esd-i686.tar.gz $esdPACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_xv package_descriptions && \
    tar -czvf xine-lib-0.9.8-xv-i686.tar.gz $xvPACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_aa package_descriptions && \
    tar -czvf xine-lib-0.9.8-aa-i686.tar.gz $aaPACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_w32 package_descriptions && \
    tar -czvf xine-lib-0.9.8-w32-i686.tar.gz $w32PACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_oggvorbis package_descriptions && \
    tar -czvf xine-lib-0.9.8-oggvorbis-i686.tar.gz $oggvorbisPACKAGE package_descriptions

  fi
  do_clean
}

#
# Build for Pentium
#
build_pentium() {
  echo "*****************************************************"
  echo
  echo "building slack for xine-lib 0.9.8"
  echo 
  echo "current architecture:pentium"
  echo "slackware package will be copied to ./slack directory"
  echo
  echo "*****************************************************"
  rm -rf $PKG
  export XINE_BUILD=i586-pc-linux-gnu
  do_build
  if test "$DIE" -eq 0; then 
    tar -czvf xine-lib-0.9.8-i586.tar.gz $PACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_oss package_descriptions && \
    tar -czvf xine-lib-0.9.8-oss-i586.tar.gz $ossPACKAGE package_descriptions
#    rm -f package_descriptions
#    mv package_descriptions_alsa05 package_descriptions && \
#    tar -czvf xine-lib-0.9.8-alsa05-i586.tar.gz $alsa05PACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_alsa09 package_descriptions && \
    tar -czvf xine-lib-0.9.8-alsa09-i586.tar.gz $alsa09PACKAGE package_descriptions
#    rm -f package_descriptions
#    mv package_descriptions_dxr3 package_descriptions && \
#    tar -czvf xine-lib-0.9.8-dxr3-i586.tar.gz $dxr3PACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_arts package_descriptions && \
    tar -czvf xine-lib-0.9.8-arts-i586.tar.gz $artsPACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_esd package_descriptions && \
    tar -czvf xine-lib-0.9.8-esd-i586.tar.gz $esdPACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_xv package_descriptions && \
    tar -czvf xine-lib-0.9.8-xv-i586.tar.gz $xvPACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_aa package_descriptions && \
    tar -czvf xine-lib-0.9.8-aa-i586.tar.gz $aaPACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_w32 package_descriptions && \
    tar -czvf xine-lib-0.9.8-w32-i586.tar.gz $w32PACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_oggvorbis package_descriptions && \
    tar -czvf xine-lib-0.9.8-oggvorbis-i586.tar.gz $oggvorbisPACKAGE package_descriptions
  fi
  do_clean
}

#
# Build for K6
#
build_k6() {
  echo "*****************************************************"
  echo
  echo "building slack for xine-lib 0.9.8"
  echo 
  echo "current architecture:k6"
  echo "slackware package will be copied to ./slack directory"
  echo
  echo "*****************************************************"
  rm -rf $PKG
  export XINE_BUILD=k6-pc-linux-gnu
  do_build
  if test "$DIE" -eq 0; then 
    tar -czvf xine-lib-0.9.8-k6.tar.gz $PACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_oss package_descriptions && \
    tar -czvf xine-lib-0.9.8-oss-k6.tar.gz $ossPACKAGE package_descriptions
#    rm -f package_descriptions
#    mv package_descriptions_alsa05 package_descriptions && \
#    tar -czvf xine-lib-0.9.8-alsa05-k6.tar.gz $alsa05PACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_alsa09 package_descriptions && \
    tar -czvf xine-lib-0.9.8-alsa09-k6.tar.gz $alsa09PACKAGE package_descriptions
#    rm -f package_descriptions
#    mv package_descriptions_dxr3 package_descriptions && \
#    tar -czvf xine-lib-0.9.8-dxr3-k6.tar.gz $dxr3PACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_arts package_descriptions && \
    tar -czvf xine-lib-0.9.8-arts-k6.tar.gz $artsPACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_esd package_descriptions && \
    tar -czvf xine-lib-0.9.8-esd-k6.tar.gz $esdPACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_xv package_descriptions && \
    tar -czvf xine-lib-0.9.8-xv-k6.tar.gz $xvPACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_aa package_descriptions && \
    tar -czvf xine-lib-0.9.8-aa-k6.tar.gz $aaPACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_w32 package_descriptions && \
    tar -czvf xine-lib-0.9.8-w32-k6.tar.gz $w32PACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_oggvorbis package_descriptions && \
    tar -czvf xine-lib-0.9.8-oggvorbis-k6.tar.gz $oggvorbisPACKAGE package_descriptions
  fi
  do_clean
}

#
# Build for K7
#
build_k7() {
  echo "*****************************************************"
  echo
  echo "building slack for xine-lib 0.9.8"
  echo 
  echo "current architecture:k7"
  echo "slackware package will be copied to ./slack directory"
  echo
  echo "*****************************************************"
  rm -rf $PKG
  export XINE_BUILD=athlon-pc-linux-gnu
  do_build
  if test "$DIE" -eq 0; then 
    tar -czvf xine-lib-0.9.8-k7.tar.gz $PACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_oss package_descriptions && \
    tar -czvf xine-lib-0.9.8-oss-k7.tar.gz $ossPACKAGE package_descriptions
#    rm -f package_descriptions
#    mv package_descriptions_alsa05 package_descriptions && \
#    tar -czvf xine-lib-0.9.8-alsa05-k7.tar.gz $alsa05PACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_alsa09 package_descriptions && \
    tar -czvf xine-lib-0.9.8-alsa09-k7.tar.gz $alsa09PACKAGE package_descriptions
#    rm -f package_descriptions
#    mv package_descriptions_dxr3 package_descriptions && \
#    tar -czvf xine-lib-0.9.8-dxr3-ik7.tar.gz $dxr3PACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_arts package_descriptions && \
    tar -czvf xine-lib-0.9.8-arts-k7.tar.gz $artsPACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_esd package_descriptions && \
    tar -czvf xine-lib-0.9.8-esd-k7.tar.gz $esdPACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_xv package_descriptions && \
    tar -czvf xine-lib-0.9.8-xv-k7.tar.gz $xvPACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_aa package_descriptions && \
    tar -czvf xine-lib-0.9.8-aa-k7.tar.gz $aaPACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_w32 package_descriptions && \
    tar -czvf xine-lib-0.9.8-w32-k7.tar.gz $w32PACKAGE package_descriptions
    rm -f package_descriptions
    mv package_descriptions_oggvorbis package_descriptions && \
    tar -czvf xine-lib-0.9.8-oggvorbis-k7.tar.gz $oggvorbisPACKAGE package_descriptions
  fi
  do_clean
}

#
# Main function
#
main() {
  rm -rf $SLCK
  mkdir -p $SLCK
  rm -f config.cache && ./cvscompile.sh && make dist
  build_pentiumpro
  build_pentium
  build_k6
  build_k7
  mv -f $CWD/xine-lib-0.9.8.tar.gz $SLCK
}


#
# Handle arguments if available.
#
build_arch() {
      rm -rf $SLCK
      mkdir -p $SLCK
      rm -f config.cache && ./cvscompile.sh && make dist
      $barch
      mv -f $CWD/xine-lib-0.9.8.tar.gz $SLCK
}
case "$1" in
    pentiumpro | ppro | i686 | 686)
      barch=build_pentiumpro
      build_arch
    ;;
    pentium | i586 | 586)
      barch=build_pentium
      build_arch
    ;;
    k6)
      barch=build_k6
      build_arch
    ;;
    k7 | athlon)
      barch=build_k7
      build_arch
    ;;
    *)
      main
    ;;
esac
