#! /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

# 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)
#

./config.status --recheck

############################################################################
#
# 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
fi

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

############################################################################
#
# Now run make dist
#

make dist
