# Bootstrap configuration.

# Copyright (C) 2009-2019 John W. Eaton
# Copyright (C) 2006-2007, 2009-2012 Free Software Foundation, Inc.

# This file is part of Octave.
#
# Octave is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Octave is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Octave; see the file COPYING.  If not, see
# <https://www.gnu.org/licenses/>.

# gnulib modules used by this package.
gnulib_modules="
  areadlink
  base64
  canonicalize
  chdir
  clock-time
  close
  closedir
  crypto/md2
  crypto/md4
  crypto/md5
  crypto/sha1
  crypto/sha256
  crypto/sha512
  dup2
  fcntl
  filemode
  fnmatch
  fpucw
  frexp
  frexpf
  fseek
  ftell
  ftruncate
  getcwd
  gethostname
  getopt-gnu
  getrusage
  gettimeofday
  glob
  isatty
  largefile
  link
  localcharset
  lstat
  malloc-gnu
  mkdir
  mkfifo
  mkostemp
  mkostemps
  mktime
  nanosleep
  nproc
  nstrftime
  open
  opendir
  pipe-posix
  progname
  putenv
  readdir
  rewinddir
  rmdir
  select
  sigaction
  signal
  sigprocmask
  stat
  std-gnu11
  stddef
  stdio
  strdup-posix
  strerror
  strptime
  strsignal
  symlink
  sys_stat
  sys_time
  sys_times
  sys_wait
  tempname
  tmpfile
  uname
  unicase/u8-tolower
  unicase/u8-toupper
  uniconv/u32-conv-to-enc
  uniconv/u8-conv-from-enc
  uniconv/u8-conv-to-enc
  unictype/ctype-alnum
  unictype/ctype-alpha
  unictype/ctype-blank
  unictype/ctype-cntrl
  unictype/ctype-digit
  unictype/ctype-graph
  unictype/ctype-lower
  unictype/ctype-print
  unictype/ctype-punct
  unictype/ctype-space
  unictype/ctype-upper
  unictype/ctype-xdigit
  unistd
  unistr/u8-strmblen
  unistr/u8-strmbtouc
  unistr/u8-to-u32
  unlink
  unsetenv
  vasprintf
  waitpid
"

# Additional gnulib files and scripts used by Octave's buildsystem.
gnulib_files="
  build-aux/move-if-change
"

# Additional xgettext options to use.  Use "\\\newline" to break lines.
XGETTEXT_OPTIONS=$XGETTEXT_OPTIONS'\\\
 --from-code=UTF-8\\\
 --flag=asprintf:2:c-format --flag=vasprintf:2:c-format\\\
 --flag=asnprintf:3:c-format --flag=vasnprintf:3:c-format\\\
 --flag=wrapf:1:c-format\\\
'

# If "AM_GNU_GETTEXT(external" or "AM_GNU_GETTEXT([external]"
# appears in configure.ac, exclude some unnecessary files.
# Without grep's -E option (not portable enough, pre-configure),
# the following test is ugly.  Also, this depends on the existence
# of configure.ac, not the obsolescent-named configure.in.  But if
# you're using this infrastructure, you should care about such things.

gettext_external=0
grep '^[	 ]*AM_GNU_GETTEXT(external\>' configure.ac > /dev/null &&
  gettext_external=1
grep '^[	 ]*AM_GNU_GETTEXT(\[external\]' configure.ac > /dev/null &&
  gettext_external=1

if test $gettext_external = 1; then
  # Gettext supplies these files, but we don't need them since
  # we don't have an intl subdirectory.
  excluded_files='
      m4/glibc2.m4
      m4/intdiv0.m4
      m4/lcmessage.m4
      m4/lock.m4
      m4/printf-posix.m4
      m4/size_max.m4
      m4/uintmax_t.m4
      m4/ulonglong.m4
      m4/visibility.m4
      m4/xsize.m4
  '
fi

# Build prerequisites
buildreq="\
autoconf   2.59
automake   1.9.6
git        1.5.5
tar        -
"
checkout_only_file=etc/HACKING.md
gnulib_tool_option_extras="--libtool"
gnulib_name="libgnu"
source_base="libgnu"

# Don't use git to update gnulib sources. We keep gnulib under a
# Mercurial subrepository instead.
use_git=false
GNULIB_SRCDIR=gnulib

# Don't check for translations since we don't have any in Octave yet.
# This avoids the need for sha1sum or compatible utility in bootstrap.
SKIP_PO=true

bootstrap_post_import_hook ()
{
  SHELL=${CONFIG_SHELL-/bin/sh}
  export SHELL

  ## Check for files that automake --gnu would normally look for, except
  ## AUTHORS, which we autogenerate from the documentation files along
  ## with building the rest of Octave, and INSTALL, which is linked from
  ## gnulib/doc/INSTALL by the bootstrap script.

  for f in NEWS README COPYING CITATION; do
    if ! test -f $f; then
      echo "required file $f is missing" 2>&1
      exit 1
    fi
  done

  echo "generating source lists for liboctave/operators/module.mk..."

  rm -f liboctave/operators/*-op-*.mk
  (cd liboctave/operators && $SHELL config-ops.sh)

  echo "generating doc/interpreter/images.mk..."

  rm -f doc/interpreter/images.mk
  (cd doc/interpreter && $SHELL config-images.sh)

  echo "generating libinterp/dldfcn/module.mk..."

  rm -f libinterp/dldfcn/module.mk
  (cd libinterp/dldfcn && $SHELL config-module.sh)
}
