# Copyright (C) 2016-2021 Simon Josefsson
# Copyright (C) 2016,2018 Tim Rühsen

# This program 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.

# This program 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 this program.  If not, see <https://www.gnu.org/licenses/>.

# gnulib library name
source_base=lib/gl
local_gl_dir=$source_base
tests_base=tests-gl
gnulib_name=libgnu
gnulib_tool_option_extras="--lgpl=2 --without-tests --no-vc-files"
checkout_only_file=.gitignore

gnulib_modules="
c-ctype
git-version-gen
gitlog-to-changelog
intprops
lib-msvc-compat
lib-symbol-versions
lib-symbol-visibility
manywarnings
minmax
readme-release
stdint
strverscmp
update-copyright
valgrind-tests
"

src_gnulib_modules="
gettime
progname
read-file
version-etc-fsf
"

# Build prerequisites
buildreq="\
autoconf   2.64
automake   1.13
git        1.4.4
bison      -
make       -
"

GTKDOCIZE=$(which gtkdocize 2>/dev/null)
if test $? -ne 0; then
  echo "No gtk-doc support found. You can't build the docs."
  # rm because gtk-doc.make might be a link to a protected file
  rm -f gtk-doc.make 2>/dev/null
  echo "EXTRA_DIST =" >gtk-doc.make
  echo "CLEANFILES =" >>gtk-doc.make
  GTKDOCIZE=""
else
  $GTKDOCIZE --copy
fi

bootstrap_post_import_hook ()
{
  ${GNULIB_SRCDIR}/gnulib-tool --import --libtool --m4-base=src/gl/m4 --macro-prefix=sgl --lib=libsgl --source-base=src/gl --local-dir=src/gl --tests-base=src/gl/tests --no-conditional-dependencies --without-tests $src_gnulib_modules

  # Automake requires that ChangeLog exist.
  touch ChangeLog || return 1
}
