#!/bin/sh

# this is a sample shell script used for building a cmake
# based project for a cygwin setup package.

# get the current directory
TOP_DIR=`cd \`echo "$0" | sed -n '/\//{s/\/[^\/]*$//;p;}'\`;pwd`

# create build directory
mkdirs()
{
  (
  mkdir -p "$TOP_DIR/@CPACK_PACKAGE_FILE_NAME@/.build" 
  )
}

# cd into 
# untar source tree and apply patch
prep()
{
  (
  cd "$TOP_DIR" &&
  tar xvfj @CPACK_PACKAGE_FILE_NAME@.tar.bz2
  patch -p0 < "@CPACK_PACKAGE_FILE_NAME@-@CPACK_CYGWIN_PATCH_NUMBER@.patch" &&
  mkdirs
  )
}

# configure the build tree in .build directory
# of the source tree
conf()
{
  (
  cd "$TOP_DIR/@CPACK_PACKAGE_FILE_NAME@/.build" && 
  cmake ..
  )
}

# build the package in the .build directory
build()
{
  (
  cd "$TOP_DIR/@CPACK_PACKAGE_FILE_NAME@/.build" &&
  make &&
  make test
  )
}

# clean the build tree
clean()
{
  (
  cd "$TOP_DIR/@CPACK_PACKAGE_FILE_NAME@/.build" &&
  make clean
  )
}

# create the package
pkg()
{
  (
  cd "$TOP_DIR/@CPACK_PACKAGE_FILE_NAME@/.build" &&
  cpack && 
  mv @CPACK_PACKAGE_FILE_NAME@-@CPACK_CYGWIN_PATCH_NUMBER@.tar.bz2 "$TOP_DIR"     
  )
}

# create the source package
spkg()
{
 (
  cd "$TOP_DIR/@CPACK_PACKAGE_FILE_NAME@/.build" &&
  cpack --config  CPackSourceConfig.cmake &&
  mv @CPACK_PACKAGE_FILE_NAME@-@CPACK_CYGWIN_PATCH_NUMBER@-src.tar.bz2 "$TOP_DIR" 
  )
}

# clean up
finish()
{
  (
  rm -rf "@CPACK_PACKAGE_FILE_NAME@"
  )
}

case $1 in
  prep)         prep    ; STATUS=$? ;;
  mkdirs)       mkdirs  ; STATUS=$? ;;
  conf)         conf    ; STATUS=$? ;;
  build)        build   ; STATUS=$? ;;
  clean)        clean   ; STATUS=$? ;;
  package)      pkg     ; STATUS=$? ;;
  pkg)          pkg     ; STATUS=$? ;;
  src-package)  spkg    ; STATUS=$? ;;
  spkg)         spkg    ; STATUS=$? ;;
  finish)       finish  ; STATUS=$? ;;
  all) (
       prep && conf && build && pkg && spkg && finish ;
       STATUS=$?
       ) ;;
  *) echo "Error: bad argument (all or one of these: prep mkdirs conf build clean package pkg src-package spkg finish)" ; exit 1 ;;
esac
exit ${STATUS}
