# Copyright (C) 2014-2021 Free Software Foundation, Inc.

# Base doxyfile for GDB.
# This file is part of GDB.

# 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 <http://www.gnu.org/licenses/>.

# The definitions in this file are shared by several different
# renditions of GDB documentation, and should reflect common
# GDB practices and assumptions.

# (Note that we are not following a common doxygen practice, which is
# to include the entirety of doxygen's large default Doxyfile, and
# edit it slightly for the project.  Instead, these Doxyfile fragments
# include only parameter settings that differ from the default.)

PROJECT_NAME = "GDB"

# Start out with an everything-is-documented assumption.  (Later
# on we may want to limit to only specific areas.)

EXTRACT_ALL = YES

# These are intended for GDB developers, so include anything flagged
# "internal".

INTERNAL_DOCS = YES

# Always dig through subdirectories.

RECURSIVE = YES

INCLUDE_PATH = @srcdir@/../ @srcdir@/../common @srcdir@/../../include/

# Exclude testsuite and other subdirectories that do not have any code
# that goes into GDB or GDBserver.

EXCLUDE = @srcdir@/../gdbserver/ \
                   ../gdbserver/ \
          @srcdir@/../gnulib/ \
		   ../build-gnulib/ \
          @srcdir@/../testsuite/ \
		   ../testsuite/ \
          @srcdir@/../stubs/

# Scrub out any stuff that might be a problem for Doxygen.

INPUT_FILTER =  @srcdir@/filter-for-doxygen

# Comment this out (or set to YES) to see lots of finicky complaints.

WARN_IF_DOC_ERROR = NO

# By default, HTML will be generated.

# We are missing javascript to make this work?
#HTML_DYNAMIC_SECTIONS = YES

# In 1.8 only?
#HTML_INDEX_NUM_ENTRIES = 10

# We never have a use for a LaTex version of this.

GENERATE_LATEX = NO

# We always want to get to sources easily.

SOURCE_BROWSER = YES

FORCE_LOCAL_INCLUDES = YES

# We would like to have full macro expansion, but it's very slow.

ENABLE_PREPROCESSING = YES
#MACRO_EXPANSION = YES
#EXPAND_ONLY_PREDEF = YES
#PREDEFINED = __attribute__(x)= __extension__=

# Suppress the huge volume of chatter.

QUIET = YES
