mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-19 03:13:40 +00:00
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.
64 lines
2.6 KiB
Bash
Executable File
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
|