#!/bin/sh
echo "Start release"
date
echo ""
echo  "remove and create working directory @CMAKE_RELEASE_DIRECTORY@"
rm -rf @CMAKE_RELEASE_DIRECTORY@
mkdir @CMAKE_RELEASE_DIRECTORY@
@ENV@

check_exit_value()
{
   VALUE="$1"
   if [ "$VALUE" != "0" ]; then
    echo "error in $2"
    exit 1
   fi
}

CMAKE_DOC_TARBALL=""
if [ ! -z "@CMAKE_DOC_TARBALL_NAME@" ] ; then
    CMAKE_DOC_TARBALL=@CMAKE_RELEASE_DIRECTORY@/@CMAKE_DOC_TARBALL_NAME@
    mv "$HOME/@CMAKE_DOC_TARBALL_STAGED@" "$CMAKE_DOC_TARBALL"
    check_exit_value $? "mv doc tarball" || exit 1
fi

if [ ! -z "@CC@" ]; then
    export CC="@CC@"
    check_exit_value $? "set CC compiler env var" || exit 1
fi

if [ ! -z "@FC@" ]; then
    export FC="@FC@"
    check_exit_value $? "set FC compiler env var" || exit 1
fi

if [ ! -z "@CXX@" ]; then
    export CXX="@CXX@"
    check_exit_value $? "set CC compiler env var" || exit 1
fi

if [ ! -z "@LDFLAGS@" ]; then
    export LDFLAGS="@LDFLAGS@"
    check_exit_value $? "set LDFLAGS env var" || exit 1
fi

if [ ! -z "@FFLAGS@" ]; then
    export FFLAGS="@FFLAGS@"
    check_exit_value $? "set FFLAGS env var" || exit 1
fi

if [ ! -z "@CFLAGS@" ]; then
    export CFLAGS="@CFLAGS@"
    check_exit_value $? "set CFLAGS  env var" || exit 1
fi

if [ ! -z "@CXXFLAGS@" ]; then
    export CXXFLAGS="@CXXFLAGS@"
    check_exit_value $? "setCXXFLAGS env var" || exit 1
fi

if [ ! -z "@USER_MAKE_RULE_FILE_CONTENTS@" ]; then
    echo "@USER_MAKE_RULE_FILE_CONTENTS@" > "@USER_MAKE_RULE_FILE@"
    check_exit_value $? "Create User Rule file" || exit 1
fi
echo "Create a directory to build in"
rm -rf @CMAKE_RELEASE_DIRECTORY@/@CMAKE_CREATE_VERSION@-build
check_exit_value $? "Remove build tree" || exit 1
mkdir @CMAKE_RELEASE_DIRECTORY@/@CMAKE_CREATE_VERSION@-build
check_exit_value $? "Create build directory" || exit 1
# make sure directory was created
if [ ! -d @CMAKE_RELEASE_DIRECTORY@/@CMAKE_CREATE_VERSION@-build ]; then
        echo "Could not create @CMAKE_RELEASE_DIRECTORY@/@CMAKE_CREATE_VERSION@-build"
        exit -1
fi

echo "Create initial cache"
echo "@INITIAL_CACHE@" > @CMAKE_RELEASE_DIRECTORY@/@CMAKE_CREATE_VERSION@-build/CMakeCache.txt
check_exit_value $? "Create initial cache" || exit 1

# create a user override file user.txt if USER_OVERRIDE is set,
# and append the cache variable to the cache
if [ ! -z "@USER_OVERRIDE@" ]; then
  echo "@USER_OVERRIDE@" >  @CMAKE_RELEASE_DIRECTORY@/@CMAKE_CREATE_VERSION@-build/user.txt
  echo "CMAKE_USER_MAKE_RULES_OVERRIDE:FILEPATH=@CMAKE_RELEASE_DIRECTORY@/@CMAKE_CREATE_VERSION@-build/user.txt" >> @CMAKE_RELEASE_DIRECTORY@/@CMAKE_CREATE_VERSION@-build/CMakeCache.txt
fi

# Point build at pre-built documentation tarball, if any.
if [ ! -z "$CMAKE_DOC_TARBALL" ]; then
  echo "CMAKE_DOC_TARBALL:FILEPATH=$CMAKE_DOC_TARBALL" >> @CMAKE_RELEASE_DIRECTORY@/@CMAKE_CREATE_VERSION@-build/CMakeCache.txt
fi

echo "Checkout the source for @CMAKE_CREATE_VERSION@"
cd @CMAKE_RELEASE_DIRECTORY@
if [ ! -z "@GIT_COMMAND@" ]; then
   # clone the repo without creating any source files in the directory
   # matching the branch being built (i.e. master CMake-2-8, etc)
   @GIT_COMMAND@ clone -n git://cmake.org/cmake.git @CMAKE_CREATE_VERSION@
   check_exit_value $? "Checkout git cmake source" || exit 1
   # go into the git directory
   cd @CMAKE_CREATE_VERSION@
   # run any extra commands if they exist
   @GIT_EXTRA@
   check_exit_value $? "git extra cmake source" || exit 1
   # now checkout a copy on the local branch working
   @GIT_COMMAND@ checkout -b working @GIT_BRANCH@
   check_exit_value $? "git checkout" || exit 1
   cd ..
else
   echo GIT_COMMAND does not exist
   exit 1
fi

cd @CMAKE_RELEASE_DIRECTORY@/@CMAKE_CREATE_VERSION@-build

if [ ! -z "@CONFIGURE_WITH_CMAKE@" ]; then
    echo  "Run cmake to configure cmake"
    @CMAKE_CONFIGURE_PATH@ ../@CMAKE_CREATE_VERSION@
    check_exit_value $? "Configure cmake" || exit 1
else
    echo  "Run cmake bootstrap @BOOTSTRAP_ARGS@ --parallel=@PROCESSORS@"
    ../@CMAKE_CREATE_VERSION@/bootstrap @BOOTSTRAP_ARGS@ --parallel=@PROCESSORS@
    check_exit_value $? "Bootstrap cmake" || exit 1
fi

echo "Build cmake with @MAKE@"
@MAKE@
check_exit_value $? "Build cmake" || exit 1

if [ -z "@SKIP_TESTS@" ]; then
    echo "Run cmake tests"
    ./bin/ctest --output-on-failure -j @PROCESSORS@ @EXTRA_CTEST_ARGS@
    check_exit_value $? "Test cmake" || exit 1
fi

# loop over binary generators
generators="@CPACK_BINARY_GENERATORS@"
for GEN in $generators; do
    echo "Create $GEN package"
    ./bin/cpack -D CMAKE_MAKE_PROGRAM=@MAKE_PROGRAM@ -G $GEN
    check_exit_value $? "Create $GEN package" || exit 1
done

# loop over source generators
generators="@CPACK_SOURCE_GENERATORS@"
for GEN in $generators; do
    echo "Create $GEN package"
    ./bin/cpack -D CMAKE_MAKE_PROGRAM=@MAKE_PROGRAM@ -G $GEN --config CPackSourceConfig.cmake
    check_exit_value $? "Create $GEN package" || exit 1
done



echo "End release"
date
echo ""
exit 0
