#! /bin/sh
# Script to build release-archives with
#

echo "LIB version number?"
read version

libversion="$version"

#
# Now we have a section to get the major, minor and patch number from the
# full version string. We create a single hexadecimal number from it '0xMMmmpp'
#
perl='$a=<STDIN>;@p=split("[\\.-]",$a);for(0..2){printf STDOUT ("%02x",$p[0+$_]);}';

numeric=`echo $libversion | perl -e "$perl"`

echo "CURL version number?"
read curlversion

HEADER=include/curl/curl.h
CHEADER=src/version.h

# Replace version number in header file:
sed -e 's/^#define LIBCURL_VERSION .*/#define LIBCURL_VERSION "'$libversion'"/g' \
    -e 's/^#define LIBCURL_VERSION_NUM .*/#define LIBCURL_VERSION_NUM 0x'$numeric'/g' \
 $HEADER >$HEADER.new

# Save old header file
cp -p $HEADER $HEADER.old

# Make new header:
mv $HEADER.new $HEADER

# Replace version number in header file:
sed 's/#define CURL_VERSION.*/#define CURL_VERSION "'$curlversion'"/g' $CHEADER >$CHEADER.new

echo "curl version $curlversion"
echo "libcurl version $libversion"
echo "libcurl numerical $numeric"

# Save old header file
cp -p $CHEADER $CHEADER.old

# Make new header:
mv $CHEADER.new $CHEADER

findprog()
{
  file="$1"
  for part in `echo $PATH| tr ':' ' '`; do
    path="$part/$file"
    if [ -x "$path" ]; then
      # there it is!
      return 1
    fi
  done

  # no such executable
  return 0
}

############################################################################
#
# Enforce a rerun of configure (updates the VERSION)
#

echo "Re-running config.status"
./config.status --recheck >/dev/null

############################################################################
#
# automake is needed to run to make a non-GNU Makefile.in if Makefile.am has
# been modified.
#

if { findprog automake >/dev/null 2>/dev/null; } then
  echo "- Could not find or run automake, I hope you know what you're doing!"
else
  echo "Runs automake --include-deps"
  automake --include-deps Makefile >/dev/null
fi

############################################################################
#
# Make sure we have updated HTML versions of all man pages:
#
make html

# And the PDF versions
make pdf

############################################################################
#
# Now run make dist to generate a tar.gz archive
#

targz="curl-$version.tar.gz"
make dist

############################################################################
#
# Now make a bz2 archive from the tar.gz original
#

bzip2="curl-$version.tar.bz2"
echo "Generating $bzip2"
gzip -dc $targz | bzip2 - > $bzip2

############################################################################
#
# Now make a zip archive from the tar.gz original
#
makezip ()
{
  rm -rf $tempdir
  mkdir $tempdir
  cd $tempdir
  gzip -dc ../$targz | tar -xf -
  find . | zip $zip -@ >/dev/null
  mv $zip ../
  cd ..
  rm -rf $tempdir
}

zip="curl-$version.zip"
echo "Generating $zip"
tempdir=".builddir"
makezip

echo "------------------"
echo "maketgz report:"
echo ""
ls -l $targz $bzip2 $zip

