Files
mercury/doc/generate_mdb_doc
Julien Fischer e3b2cc1272 Fix generation of the debugger documentation on Windows.
We generate the debugger documentation files, e.g. the command list, by
processing the output of the info tool and running through a series of sh and
awk scripts. This is breaking builds for MSYS based systems on Windows because
the port of awk there does not handle non-ASCII characters and info will
sometimes output those. Using the C locale on affected systems causes the
output of info to be ASCII.

doc/generate_mdb_doc:
    Force the use of the C locale on MSYS / MinGW systems in order to avoid
    problems with awk.

    Shut up some warnings form shellcheck.
2023-05-13 16:51:57 +10:00

64 lines
2.6 KiB
Bash
Executable File

#!/bin/sh
# vim: sw=4 ts=4 et
#---------------------------------------------------------------------------#
# Copyright (C) 1998-1999,2002, 2004-2006 The University of Melbourne.
# Copyright (C) 2014, 2020, 2023 The Mercury team.
# This file may only be copied under the terms of the GNU General
# Public License - see the file COPYING in the Mercury distribution.
#---------------------------------------------------------------------------#
# Some versions of the info tool will emit single quotes as directional
# quotation marks (i.e. U+2018 and U+2019). This causes problems because awk
# on MSYS* / MinGW* systems does not handle UTF-8 encoded input properly.
# (Apparently, it's some weird Windows code page thing.)
# Using the C locale makes info emit the apostrophe character for single quotes.
# Since that is ASCII, affected versions of awk do not have a problem with it.
# None of this is an issue on non-Windows systems since their versions of
# awk are not affected.
#
platform=$(uname -a)
case "$platform" in
MINGW*|MSYS*) export LC_ALL=C ;;
esac
# The info menu items that get us to the chapter on debugger commands.
cat mdb_categories > mdb_doc
tmp="mdb_doc_tmp.$$"
trap 'rm -f ${tmp}' 0 1 2 3 15
info -f ./mercury_user_guide.info -o ${tmp} \
-n "Mercury debugger concepts"
../util/info_to_mdb concepts ${tmp} >> mdb_doc
# Document the declarative debugger.
info -f ./mercury_user_guide.info -o ${tmp} \
-n "Declarative debugging overview"
echo "document concepts 10 decl_debug" >> mdb_doc
sed 's/^ //' < ${tmp} | sed -n '6,1000s/^/ /p' >> mdb_doc
echo >> mdb_doc
info -f ./mercury_user_guide.info -o ${tmp} \
-n "Declarative debugging commands"
echo "The following commands are available from within the" \
"declarative debugger:" "$(./commands ${tmp})" | \
fold -w72 -s | sed "s/^/ /" >> mdb_doc
echo end >> mdb_doc
../util/info_to_mdb decl ${tmp} >> mdb_doc
debug_cmd_path="debug debugger"
for section in interactive forward backward browsing breakpoint \
i/o parameter help declarative misc exp developer
do
case ${section} in
interactive) category=queries ;;
i/o) category=io_tabling ;;
declarative) category=mdb_dd ;;
*) category=$section ;;
esac
info -f ./mercury_user_guide.info -o ${tmp} ${debug_cmd_path} ${section}
../util/info_to_mdb ${category} ${tmp} >> mdb_doc
done
mv mdb_doc ${tmp}
./squeeze < ${tmp} > mdb_doc