xref: /netbsd-src/external/gpl3/gcc/dist/libstdc++-v3/scripts/run_doxygen (revision 0a3071956a3a9fdebdbf7f338cf2d439b45fc728)
14fee23f9Smrg#!/bin/bash
24fee23f9Smrg
34fee23f9Smrg# Runs doxygen and massages the output files.
4b1e83836Smrg# Copyright (C) 2001-2022 Free Software Foundation, Inc.
54fee23f9Smrg#
64fee23f9Smrg# Synopsis:  run_doxygen --mode=[html|latex|man|xml] --host_alias=<alias> \
74fee23f9Smrg#                        v3srcdir \
84fee23f9Smrg#                        v3builddir \
94fee23f9Smrg#                        shortname
104fee23f9Smrg#
114fee23f9Smrg# Originally hacked together by Phil Edwards <pme@gcc.gnu.org>
124fee23f9Smrg
134fee23f9Smrg
144fee23f9Smrg# We can check now that the version of doxygen is >= this variable.
1548fb7bfaSmrgDOXYVER=1.7.0
164fee23f9Smrg
174fee23f9Smrgfind_doxygen() {
184fee23f9Smrg    local -r v_required=`echo $DOXYVER |  \
194fee23f9Smrg		awk -F. '{if(NF<3)$3=0;print ($1*100+$2)*100+$3}'`
204fee23f9Smrg    local testing_version doxygen maybedoxy v_found
214fee23f9Smrg    # thank you goat book
224fee23f9Smrg    set `IFS=:; X="$PATH:/usr/local/bin:/bin:/usr/bin"; echo $X`
234fee23f9Smrg    for dir
244fee23f9Smrg    do
254fee23f9Smrg      # AC_EXEEXT could come in useful here
264fee23f9Smrg      maybedoxy="$dir/doxygen"
274fee23f9Smrg      test -f "$maybedoxy" && testing_version=`$maybedoxy --version`
284fee23f9Smrg      if test -n "$testing_version"; then
294fee23f9Smrg       v_found=`echo $testing_version |  \
304fee23f9Smrg		awk -F. '{if(NF<3)$3=0;print ($1*100+$2)*100+$3}'`
314fee23f9Smrg       if test $v_found -ge $v_required; then
324fee23f9Smrg	 doxygen="$maybedoxy"
334fee23f9Smrg	 break
344fee23f9Smrg       fi
354fee23f9Smrg      fi
364fee23f9Smrg    done
374fee23f9Smrg    if test -z "$doxygen"; then
38b1e83836Smrg	fail "Could not find Doxygen $DOXYVER in path."
394fee23f9Smrg    fi
404fee23f9Smrg    # We need to use other tools from the same package/version.
414fee23f9Smrg    echo :: Using Doxygen tools from ${dir}.
424fee23f9Smrg    PATH=$dir:$PATH
434fee23f9Smrg    hash -r
444fee23f9Smrg}
454fee23f9Smrg
464fee23f9Smrgprint_usage() {
47b1e83836Smrg    cat <<EOF
48b1e83836SmrgUsage:  run_doxygen --mode=MODE --host_alias=HOST_ALIAS [<options>]
494fee23f9Smrg		    <v3-src-dir> <v3-build-dir> <shortnamesp>
504fee23f9Smrg      MODE is one of:
514fee23f9Smrg	  html           Generate user-level HTML library documentation.
524fee23f9Smrg	  man            Generate user-level man pages.
534fee23f9Smrg	  xml            Generate user-level XML pages.
544fee23f9Smrg	  latex          Generate user-level LaTeX pages.
554fee23f9Smrg
56b1e83836Smrg      HOST_ALIAS is the GCC host alias triplet set at configure time.
57b1e83836Smrg
58b1e83836Smrg      shortnamesp is one of YES or NO and is used as the SHORT_NAMES value
59b1e83836Smrg      in the Doxygen config file.
60b1e83836Smrg
61b1e83836Smrg      Supported options:
62b1e83836Smrg
63b1e83836Smrg      --help | -h      Print this message and exit.
64b1e83836Smrg      --latex_cmd=CMD  Set LATEX_CMD_NAME=CMD in the Doxygen config file.
654fee23f9Smrg
664fee23f9SmrgNote:  Requires Doxygen ${DOXYVER} or later; get it at
674fee23f9Smrg       ftp://ftp.stack.nl/pub/users/dimitri/doxygen-${DOXYVER}.src.tar.gz
684fee23f9Smrg
694fee23f9SmrgEOF
70b1e83836Smrg}
71b1e83836Smrg
72b1e83836Smrg# Print an error message followed by usage to stderr, then exit.
73b1e83836Smrgfail() {
74b1e83836Smrg  echo "$0: error: $*" 1>&2
75b1e83836Smrg  echo 1>&2
76b1e83836Smrg  print_usage 1>&2
774fee23f9Smrg  exit 1
784fee23f9Smrg}
794fee23f9Smrg
804fee23f9Smrgparse_options() {
81b1e83836Smrg  while [ $# -ne 0 ]
824fee23f9Smrg  do
834fee23f9Smrg    # Blatantly ripped from autoconf, er, I mean, "gratefully standing
844fee23f9Smrg    # on the shoulders of those giants who have gone before us."
85b1e83836Smrg    case "$1" in
86b1e83836Smrg      -*=*) arg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
874fee23f9Smrg      *) arg= ;;
884fee23f9Smrg    esac
894fee23f9Smrg
90b1e83836Smrg    case "$1" in
914fee23f9Smrg      --mode=*)
924fee23f9Smrg	mode=$arg ;;
934fee23f9Smrg      --host_alias=*)
944fee23f9Smrg	host_alias=$arg ;;
95b1e83836Smrg      --help | -h)
96b1e83836Smrg	print_usage ; exit ;;
97b1e83836Smrg      --mode | --host_alias)
98b1e83836Smrg	fail "missing argument: $1" ;;
99b1e83836Smrg      --latex_cmd=*)
100b1e83836Smrg	latex_cmd=$arg ;;
101b1e83836Smrg      --*)
102b1e83836Smrg	fail "invalid option: $1" ;;
1034fee23f9Smrg      *)
104b1e83836Smrg	break ;;
1054fee23f9Smrg    esac
106b1e83836Smrg    shift
1074fee23f9Smrg  done
108b1e83836Smrg
109b1e83836Smrg  if [ $# -ne 3 ]
110b1e83836Smrg  then
111b1e83836Smrg    fail "wrong number of arguments"
112b1e83836Smrg  fi
113b1e83836Smrg  srcdir="$1"
114b1e83836Smrg  builddir="$2"
115b1e83836Smrg  outdir="$2/doc/doxygen"
116b1e83836Smrg  shortname="$3"
1174fee23f9Smrg}
1184fee23f9Smrg
1194fee23f9Smrg
1204fee23f9Smrg# script begins here
1214fee23f9Smrgmode=unset
1224fee23f9Smrghost_alias=unset
1234fee23f9Smrgsrcdir=unset
1244fee23f9Smrgoutdir=unset
1254fee23f9Smrgshortname=unset
1264fee23f9Smrgdo_html=false
1274fee23f9Smrgdo_man=false
1284fee23f9Smrgdo_xml=false
1294fee23f9Smrgdo_latex=false
130b1e83836Smrglatex_cmd=
1314fee23f9Smrgenabled_sections=
1324fee23f9Smrggenerate_tagfile=
1334fee23f9SmrgDATEtext=`date '+%Y-%m-%d'`
1344fee23f9Smrg
1354fee23f9Smrg# Show how this script is called.
1364fee23f9Smrgecho run_doxygen $*
1374fee23f9Smrg
1384fee23f9Smrgparse_options $*
1394fee23f9Smrgfind_doxygen
1404fee23f9Smrg
1414fee23f9Smrgif test $srcdir = unset || test $outdir = unset || test $mode = unset || test $shortname = unset || test $host_alias = unset; then
1424fee23f9Smrg    # this could be better
143b1e83836Smrg    fail "You have not given enough information...!  $srcdir - "
1444fee23f9Smrgfi
1454fee23f9Smrg
1464fee23f9Smrgcase x"$mode" in
1474fee23f9Smrg    xhtml)
1484fee23f9Smrg      do_html=true
1494fee23f9Smrg      enabled_sections=maint
1504fee23f9Smrg      generate_tagfile="$outdir/html/libstdc++.tag"
1514fee23f9Smrg      ;;
1524fee23f9Smrg    xlatex)
1534fee23f9Smrg      do_latex=true
1544fee23f9Smrg      enabled_sections=maint
1554fee23f9Smrg      ;;
1564fee23f9Smrg    xman)
1574fee23f9Smrg      do_man=true
1584fee23f9Smrg      ;;
1594fee23f9Smrg    xxml)
1604fee23f9Smrg      do_xml=true
1614fee23f9Smrg      enabled_sections=maint
1624fee23f9Smrg      ;;
1634fee23f9Smrg    *)
1644fee23f9Smrg      echo run_doxygen error:  $mode is an invalid mode 1>&2
1654fee23f9Smrg      exit 1 ;;
1664fee23f9Smrgesac
1674fee23f9Smrg
1684fee23f9Smrgcase x"$shortname" in
1694fee23f9Smrg    xYES)
1704fee23f9Smrg      ;;
1714fee23f9Smrg    xNO)
1724fee23f9Smrg      ;;
1734fee23f9Smrg    *)
1744fee23f9Smrg      echo run_doxygen error:  $shortname is invalid 1>&2
1754fee23f9Smrg      exit 1 ;;
1764fee23f9Smrgesac
1774fee23f9Smrg
1784fee23f9Smrg
1794fee23f9Smrgmkdir -p $outdir
1804fee23f9Smrgchmod u+w $outdir
1814fee23f9Smrg
1824fee23f9Smrg# Run it
1834fee23f9Smrg(
1844fee23f9Smrg    set -e
1854fee23f9Smrg    cd $builddir
1864fee23f9Smrg    sed -e "s=@outdir@=${outdir}=g" \
1874fee23f9Smrg	-e "s=@srcdir@=${srcdir}=g" \
1884fee23f9Smrg	-e "s=@shortname@=${shortname}=g" \
1894fee23f9Smrg	-e "s=@builddir@=${builddir}=g" \
1904fee23f9Smrg	-e "s=@host_alias@=${host_alias}=g" \
1914fee23f9Smrg	-e "s=@enabled_sections@=${enabled_sections}=" \
1924fee23f9Smrg	-e "s=@do_html@=${do_html}=" \
1934fee23f9Smrg	-e "s=@do_latex@=${do_latex}=" \
194b1e83836Smrg	-e "s=@latex_cmd@=${latex_cmd}=" \
1954fee23f9Smrg	-e "s=@do_man@=${do_man}=" \
1964fee23f9Smrg	-e "s=@do_xml@=${do_xml}=" \
1974fee23f9Smrg	-e "s=@generate_tagfile@=${generate_tagfile}=" \
1984fee23f9Smrg	${srcdir}/doc/doxygen/user.cfg.in > ${outdir}/${mode}.cfg
1994fee23f9Smrg    echo :: NOTE that this may take some time...
2004fee23f9Smrg    echo doxygen ${outdir}/${mode}.cfg
2014fee23f9Smrg    doxygen ${outdir}/${mode}.cfg
2024fee23f9Smrg)
2034fee23f9Smrgret=$?
2044fee23f9Smrgtest $ret -ne 0 && exit $ret
2054fee23f9Smrg
2064fee23f9Smrgif $do_xml; then
2074fee23f9Smrg    echo ::
2084fee23f9Smrg    echo :: XML pages begin with
2094fee23f9Smrg    echo :: ${outdir}/xml/index.xml
2104fee23f9Smrgfi
2114fee23f9Smrg
2124fee23f9Smrgif $do_latex; then
2134fee23f9Smrg    cd ${outdir}/${mode}
2144fee23f9Smrg
215cd5ea10dSmrg    # Grrr, Doxygen 1.8.x changed the -w latex options.
216cd5ea10dSmrg    need_footer=`doxygen -h | sed -n -e '/-w latex/s=.*footer.*=true=p'`
217cd5ea10dSmrg
218cd5ea10dSmrg    # Also drop in the header file (maybe footer file) and style sheet
219cd5ea10dSmrg    if $need_footer; then
220cd5ea10dSmrg      doxygen -w latex header.tex footer.tex doxygen.sty
221cd5ea10dSmrg    else
2224fee23f9Smrg      doxygen -w latex header.tex doxygen.sty
223cd5ea10dSmrg    fi
2244fee23f9Smrg
2254fee23f9Smrg    echo ::
2264fee23f9Smrg    echo :: LaTeX pages begin with
2274fee23f9Smrg    echo :: ${outdir}/latex/refman.tex
2284fee23f9Smrgfi
2294fee23f9Smrg
2304fee23f9Smrgif $do_html; then
2314fee23f9Smrg  cd ${outdir}/${mode}
2324fee23f9Smrg
2334fee23f9Smrg  #doxytag -t libstdc++.tag . > /dev/null 2>&1
23448fb7bfaSmrg
23548fb7bfaSmrg  # Strip pathnames from tag file.
2364fee23f9Smrg  sed -e '/<path>/d' libstdc++.tag > TEMP
2374fee23f9Smrg  mv TEMP libstdc++.tag
2384fee23f9Smrg
2394fee23f9Smrg  sed -e "s=@DATE@=${DATEtext}=" \
2404fee23f9Smrg      ${srcdir}/doc/doxygen/mainpage.html > index.html
2414fee23f9Smrg
2424fee23f9Smrg  # The following bit of line noise changes annoying
2434fee23f9Smrg  #   std::foo < typename _Ugly1, typename _Ugly2, .... _DefaultUgly17 >
2444fee23f9Smrg  # to user-friendly
2454fee23f9Smrg  #   std::foo
2464fee23f9Smrg  # in the major "Compound List" page.
2474fee23f9Smrg  sed -e 's=\(::[[:alnum:]_]*\)&lt; .* &gt;=\1=' annotated.html > annstrip.html
2484fee23f9Smrg  mv annstrip.html annotated.html
2494fee23f9Smrg
2504fee23f9Smrg  cp ${srcdir}/doc/doxygen/tables.html tables.html
2514fee23f9Smrg
2524fee23f9Smrg  echo ::
2534fee23f9Smrg  echo :: HTML pages begin with
2544fee23f9Smrg  echo :: ${outdir}/html/index.html
2554fee23f9Smrgfi
2564fee23f9Smrg
2574fee23f9Smrg# Mess with the man pages.  We don't need documentation of the internal
2584fee23f9Smrg# headers, since the man pages for those contain nothing useful anyhow.  The
2594fee23f9Smrg# man pages for doxygen modules need to be renamed (or deleted).  And the
2604fee23f9Smrg# generated #include lines need to be changed from the internal names to the
2614fee23f9Smrg# standard ones (e.g., "#include <stl_tempbuf.h>" -> "#include <memory>").
2624fee23f9Smrgif $do_man; then
2634fee23f9Smrgecho ::
2644fee23f9Smrgecho :: Fixing up the man pages...
2654fee23f9Smrgcd $outdir/man/man3
2664fee23f9Smrg
2674fee23f9Smrg# File names with embedded spaces (EVIL!) need to be....?  renamed or removed?
2684fee23f9Smrgfind . -name "* *" -print0 | xargs -0r rm        # requires GNU tools
2694fee23f9Smrg
2704fee23f9Smrg# man pages are for functions/types/other entities, not source files
2714fee23f9Smrg# directly.  who the heck would type "man foo.h" anyhow?
272b1e83836Smrg# FIXME: This also removes std.3 which is the only place that a lot of
273b1e83836Smrg# functions are documented. Should we keep it?
2744fee23f9Smrgfind . -name "[a-z]*" -a ! -name "std_*" -print | xargs rm
2754fee23f9Smrgrm -f *.h.3 *.hpp.3 *config* *.cc.3 *.tcc.3 *_t.3
2764fee23f9Smrg#rm ext_*.3 tr1_*.3 debug_*.3
2774fee23f9Smrg
2784fee23f9Smrg# this is used to examine what we would have deleted, for debugging
2794fee23f9Smrg#mkdir trash
2804fee23f9Smrg#find . -name "[a-z]*" -a ! -name "std_*" -print | xargs -i mv {} trash
2814fee23f9Smrg#mv *.h.3 *config* *.cc.3 *.tcc.3 *_t.3  trash
2824fee23f9Smrg
283b1e83836Smrggxx=$($builddir/scripts/testsuite_flags --build-cxx)
284b1e83836Smrgcppflags=$($builddir/scripts/testsuite_flags --build-includes)
285b1e83836Smrgcxxflags="-Og -g -std=gnu++23"
286b1e83836Smrg
2874fee23f9Smrg# Standardize the displayed header names.  If anyone who knows perl cares
2884fee23f9Smrg# enough to rewrite all this, feel free.  This only gets run once a century,
2894fee23f9Smrg# and I'm off getting coffee then anyhow, so I didn't care enough to make
2904fee23f9Smrg# this super-fast.
291b1e83836Smrg$gxx $cppflags $cxxflags ${srcdir}/doc/doxygen/stdheader.cc -o ./stdheader || exit 1
292b1e83836Smrg# Doxygen outputs something like "\fC#include <unique_lock\&.h>\fP" and
293b1e83836Smrg# we want that internal header to be replaced with something like <mutex>.
294*0a307195Smrgproblematic=`grep -E -l '#include <.*h>' [a-z]*.3`
2954fee23f9Smrgfor f in $problematic; do
2964fee23f9Smrg    # this is also slow, but safe and easy to debug
2974fee23f9Smrg    oldh=`sed -n '/fC#include </s/.*<\(.*\)>.*/\1/p' $f`
298b1e83836Smrg    newh=`echo $oldh | sed 's/\\\\&\\././g' | ./stdheader`
299b1e83836Smrg    sed "s=${oldh/\\/.}=${newh}=" $f > TEMP && mv TEMP $f
3004fee23f9Smrgdone
3014fee23f9Smrgrm stdheader
3024fee23f9Smrg
3034fee23f9Smrg# Some of the pages for generated modules have text that confuses certain
30448fb7bfaSmrg# implementations of man(1), e.g. on GNU/Linux.  We need to have another
30548fb7bfaSmrg# top-level *roff tag to /stop/ the .SH NAME entry.
306*0a307195Smrgproblematic=`grep -E --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3`
3074fee23f9Smrg#problematic='Containers.3 Sequences.3 Assoc_containers.3 Iterator_types.3'
3084fee23f9Smrg
3094fee23f9Smrgfor f in $problematic; do
3104fee23f9Smrg    sed '/^\.SH NAME/{
3114fee23f9Smrgn
3124fee23f9Smrga\
3134fee23f9Smrg\
3144fee23f9Smrg.SH SYNOPSIS
3154fee23f9Smrg    }' $f > TEMP
3164fee23f9Smrg    mv TEMP $f
3174fee23f9Smrgdone
3184fee23f9Smrg
3194fee23f9Smrg# Also, break this (generated) line up.  It's ugly as sin.
3204fee23f9Smrgproblematic=`grep -l '[^^]Definition at line' *.3`
3214fee23f9Smrgfor f in $problematic; do
3224fee23f9Smrg    sed 's/Definition at line/\
3234fee23f9Smrg.PP\
3244fee23f9Smrg&/'  $f > TEMP
3254fee23f9Smrg    mv TEMP $f
3264fee23f9Smrgdone
3274fee23f9Smrg
3284fee23f9Smrgcp ${srcdir}/doc/doxygen/Intro.3 C++Intro.3
3294fee23f9Smrg
3304fee23f9Smrg# Why didn't I do this at the start?  Were rabid weasels eating my brain?
3314fee23f9Smrg# Who the fsck would "man std_vector" when the class isn't named that?
3324fee23f9Smrg
333b1e83836Smrg# If no files match a glob, skip the for-loop:
334b1e83836Smrgshopt -s nullglob
3354fee23f9Smrg# First, deal with nested namespaces.
336b1e83836Smrgfor ns in chrono filesystem ranges views literals; do
337b1e83836Smrg  for f in std_${ns}_*; do
338b1e83836Smrg      newname=`echo $f | sed "s/std_${ns}_/std::${ns}::/"`
3394fee23f9Smrg      mv $f $newname
3404fee23f9Smrg  done
341b1e83836Smrgdone
3424fee23f9Smrgfor f in *__debug_*; do
3434fee23f9Smrg    newname=`echo $f | sed 's/__debug_/__debug::/'`
3444fee23f9Smrg    mv $f $newname
3454fee23f9Smrgdone
3464fee23f9Smrgfor f in *decimal_*; do
3474fee23f9Smrg    newname=`echo $f | sed 's/decimal_/decimal::/'`
3484fee23f9Smrg    mv $f $newname
3494fee23f9Smrgdone
3504fee23f9Smrgfor f in *__detail_*; do
3514fee23f9Smrg    newname=`echo $f | sed 's/__detail_/__detail::/'`
3524fee23f9Smrg    mv $f $newname
3534fee23f9Smrgdone
35448fb7bfaSmrgfor f in *__gnu_pbds_detail_*; do
35548fb7bfaSmrg    newname=`echo $f | sed 's/detail_/detail::/'`
35648fb7bfaSmrg    mv $f $newname
35748fb7bfaSmrgdone
3584fee23f9Smrgfor f in *__parallel_*; do
3594fee23f9Smrg    newname=`echo $f | sed 's/__parallel_/__parallel::/'`
3604fee23f9Smrg    mv $f $newname
3614fee23f9Smrgdone
3624fee23f9Smrg
363f30ff588Smrg# Remove inline namespaces used for versioning.
364f30ff588Smrgfor f in *_V2_*; do
365f30ff588Smrg    newname=`echo $f | sed 's/_V2_/::/'`
366f30ff588Smrg    sed 's/::_V2::/::/g' $f > $newname
367f30ff588Smrg    rm $f
368f30ff588Smrgdone
369f30ff588Smrgfor f in *_experimental_filesystem_v?_*; do
370f30ff588Smrg    newname=`echo $f | sed 's/_filesystem_v._/::filesystem::/'`
371f30ff588Smrg    sed 's/::filesystem::v.::/::filesystem::/g' $f > $newname
372f30ff588Smrg    rm $f
373f30ff588Smrgdone
374f30ff588Smrgfor f in *experimental_fundamentals_v?_*; do
375f30ff588Smrg    newname=`echo $f | sed 's/experimental_.*_v[[:digit:]]_/experimental::/'`
376f30ff588Smrg    sed 's/::experimental::fundamentals_v[[:digit:]]::/::experimental::/g' $f > $newname
377f30ff588Smrg    rm $f
378f30ff588Smrgdone
379f30ff588Smrg
3804fee23f9Smrg# Then, clean up other top-level namespaces.
3814fee23f9Smrgfor f in std_tr1_*; do
3824fee23f9Smrg    newname=`echo $f | sed 's/^std_tr1_/std::tr1::/'`
3834fee23f9Smrg    mv $f $newname
3844fee23f9Smrgdone
38548fb7bfaSmrgfor f in std_tr2_*; do
38648fb7bfaSmrg    newname=`echo $f | sed 's/^std_tr2_/std::tr2::/'`
38748fb7bfaSmrg    mv $f $newname
38848fb7bfaSmrgdone
3894fee23f9Smrgfor f in std_*; do
3904fee23f9Smrg    newname=`echo $f | sed 's/^std_/std::/'`
3914fee23f9Smrg    mv $f $newname
3924fee23f9Smrgdone
3934fee23f9Smrgfor f in __gnu_cxx_*; do
3944fee23f9Smrg    newname=`echo $f | sed 's/^__gnu_cxx_/__gnu_cxx::/'`
3954fee23f9Smrg    mv $f $newname
3964fee23f9Smrgdone
3974fee23f9Smrgfor f in __gnu_debug_*; do
3984fee23f9Smrg    newname=`echo $f | sed 's/^__gnu_debug_/__gnu_debug::/'`
3994fee23f9Smrg    mv $f $newname
4004fee23f9Smrgdone
4014fee23f9Smrgfor f in __gnu_parallel_*; do
4024fee23f9Smrg    newname=`echo $f | sed 's/^__gnu_parallel_/__gnu_parallel::/'`
4034fee23f9Smrg    mv $f $newname
4044fee23f9Smrgdone
4054fee23f9Smrgfor f in __gnu_pbds_*; do
4064fee23f9Smrg    newname=`echo $f | sed 's/^__gnu_pbds_/__gnu_pbds::/'`
4074fee23f9Smrg    mv $f $newname
4084fee23f9Smrgdone
4094fee23f9Smrgfor f in __cxxabiv1_*; do
4104fee23f9Smrg    newname=`echo $f | sed 's/^__cxxabiv1_/abi::/'`
4114fee23f9Smrg    mv $f $newname
4124fee23f9Smrgdone
4134fee23f9Smrg
4144fee23f9Smrg# Then piecemeal nested classes
4154fee23f9Smrg
4164fee23f9Smrg
4174fee23f9Smrg# Generic removal bits, where there are things in the generated man
4184fee23f9Smrg# pages that need to be killed.
4194fee23f9Smrgfor f in *_libstdc__-v3_*; do
4204fee23f9Smrg    rm $f
4214fee23f9Smrgdone
4224fee23f9Smrg
4234fee23f9Smrgfor f in *_src_*; do
4244fee23f9Smrg    rm $f
4254fee23f9Smrgdone
4264fee23f9Smrg
427b1e83836Smrg# Remove all internal implementation details?
428b1e83836Smrg# rm std::_[A-Z]*.3 std::__detail*.3
429b1e83836Smrg
430b1e83836Smrgshopt -u nullglob
431b1e83836Smrg
4324fee23f9Smrg
4334fee23f9Smrg# Also, for some reason, typedefs don't get their own man pages.  Sigh.
4344fee23f9Smrgfor f in ios streambuf istream ostream iostream stringbuf \
4354fee23f9Smrg	 istringstream ostringstream stringstream filebuf ifstream \
436b1e83836Smrg	 ofstream fstream string
4374fee23f9Smrgdo
4384fee23f9Smrg    echo ".so man3/std::basic_${f}.3" > std::${f}.3
4394fee23f9Smrg    echo ".so man3/std::basic_${f}.3" > std::w${f}.3
4404fee23f9Smrgdone
4414fee23f9Smrg
4424fee23f9Smrgecho ::
4434fee23f9Smrgecho :: Man pages in ${outdir}/man
4444fee23f9Smrgfi
4454fee23f9Smrg
4464fee23f9Smrg# all done
4474fee23f9Smrgecho ::
4484fee23f9Smrg
4494fee23f9Smrgexit 0
450