################################################################################
# Primary project setup.                                                       #
################################################################################
PROJECT_NAME           = "PyTorch"
# Parent directory of where Doxygen should output files.  Cannot be for example
# `../build/doxygen` because if `../build` does not exist Doxygen will error.
OUTPUT_DIRECTORY       = ../build
# XML output stored in ${OUTPUT_DIRECTORY}/${XML_OUTPUT}.  Must agree
# with what is specified to `breathe_projects` in `conf.py`.
XML_OUTPUT             = xml
# HTML output stored in ${OUTPUT_DIRECTORY}/${HTML_OUTPUT}.
# NOTE: it can be useful to have Doxygen generate HTML to verify what sphinx is
#       creating, or to generate HTML documentation to check a docstring you are
#       writing without needing to wait for Sphinx.
#
#       # Must run from this directory (see relative paths below...)
#       $ cd /path/to/pytorch/docs/cpp/source
#
#       # Send configs in this file plus `GENERATE_HTML=YES` to doxygen on stdin
#       $ (cat Doxyfile; echo 'GENERATE_HTML = YES') | doxygen -
#
#       # View the doxygen results.
#       $ open ../build/doxygen_html/index.html
#
#       This sends everything in this file plus `GENERATE_HTML = YES` to doxygen
#       on stdin.  Without needing to edit this `Doxyfile` directly.
HTML_OUTPUT            = doxygen_html
# Strip the path prefix.  *MUST* agree with `exhale_args` in conf.py.
# {repo_root}/docs/cpp/source/../../.. -> {repo_root}
STRIP_FROM_PATH        = ../../..
# What folders / files Doxygen should process.
INPUT                  = ../../../aten/src/ATen/ATen.h \
                         ../../../aten/src/ATen/Backend.h \
                         ../../../aten/src/ATen/core/ivalue.h \
                         ../../../aten/src/ATen/core/ScalarType.h \
                         ../../../aten/src/ATen/cuda/CUDAContext.h \
                         ../../../aten/src/ATen/cudnn/Descriptors.h \
                         ../../../aten/src/ATen/cudnn/Handles.h \
                         ../../../aten/src/ATen/cudnn/Types.h \
                         ../../../aten/src/ATen/cudnn/Utils.h \
                         ../../../aten/src/ATen/DeviceGuard.h \
                         ../../../aten/src/ATen/Layout.h \
                         ../../../aten/src/ATen/mkl/Descriptors.h \
                         ../../../aten/src/ATen/Scalar.h \
                         ../../../aten/src/ATen/TensorOptions.h \
                         ../../../aten/src/ATen/core/Tensor.h \
                         ../../../aten/src/ATen/native/TensorShape.h \
                         ../../../build/aten/src/ATen/Functions.h \
                         ../../../build/aten/src/ATen/core/TensorBody.h \
                         ../../../c10/core/Device.h \
                         ../../../c10/core/DeviceType.h \
                         ../../../c10/util/Half.h \
                         ../../../c10/util/ArrayRef.h \
                         ../../../c10/util/OptionalArrayRef.h \
                         ../../../c10/util/Exception.h \
                         ../../../c10/util/Optional.h \
                         ../../../c10/cuda/CUDAGuard.h \
                         ../../../c10/cuda/CUDAStream.h \
                         ../../../torch/csrc/api/include \
                         ../../../torch/csrc/api/src \
                         ../../../torch/csrc/autograd/autograd.h \
                         ../../../torch/csrc/autograd/custom_function.h \
                         ../../../torch/csrc/autograd/function.h \
                         ../../../torch/csrc/autograd/variable.h \
                         ../../../torch/csrc/autograd/generated/variable_factories.h \
                         ../../../torch/csrc/jit/runtime/custom_operator.h \
                         ../../../torch/csrc/jit/serialization/import.h \
                         ../../../torch/csrc/jit/api/module.h \
                         ../../../torch/library.h \
                         ../../../torch/custom_class.h
# Don't include .cpp files!
FILE_PATTERNS          = *.h
# If you need this to be YES, exhale will probably break.
CREATE_SUBDIRS         = NO
# So that Doxygen does not trim paths, which affects the file hierarchy
FULL_PATH_NAMES        = YES
# Nested folders will be ignored without this.
RECURSIVE              = YES
# Exclude certain file patterns from the INPUT section.
EXCLUDE = ../../../torch/csrc/api/include/torch/nn/pimpl-inl.h \
          ../../../torch/csrc/api/include/torch/detail
# Increase the max node size for our large files
DOT_GRAPH_MAX_NODES    = 100
################################################################################
# Output formats for Doxygen to create.                                        #
################################################################################
# Set to YES if you are debugging or want to compare.
GENERATE_HTML          = NO
# Unless you want it...
GENERATE_LATEX         = NO
# Both breathe and exhale need the xml.
GENERATE_XML           = YES
# Set to NO if you do not want the Doxygen program listing included.
# NOTE: setting to NO may result in unrecovered file relationships
#       (which file defined which compound)
XML_PROGRAMLISTING     = YES
################################################################################
# Doxygen preprocessor / parser control.                                       #
################################################################################
ENABLE_PREPROCESSING   = YES
MACRO_EXPANSION        = YES
EXPAND_ONLY_PREDEF     = NO
SKIP_FUNCTION_MACROS   = NO
# Extra defs for to help with building the _right_ version of the docs
PREDEFINED             = DOXYGEN_DOCUMENTATION_BUILD
PREDEFINED            += DOXYGEN_SHOULD_SKIP_THIS
# Symbol expansion to follow for #include statements (not input)
SEARCH_INCLUDES        = YES
INCLUDE_PATH           = ../../.. \
                         ../../../torch/csrc/api/include \
                         ../../../build/aten/src
################################################################################
# Compound extraction control.                                                 #
################################################################################
EXTRACT_ALL            = YES
EXTRACT_PACKAGE        = YES
EXTRACT_STATIC         = YES
CASE_SENSE_NAMES       = NO
EXCLUDE_SYMBOLS        = caffe2::* cereal* DL* TH* cudnn* std::*
# EXCLUDE_SYMBOLS        = c10::* caffe2::* cereal* DL* TH* cudnn* std::*
################################################################################
# Docstring control / customization.                                           #
################################################################################
# First line of /** comment */ treated as \brief
JAVADOC_AUTOBRIEF      = YES
# Allow for rst directives and advanced functions e.g. grid tables
# Example:
#     /**
#      * \rst
#      * .. code-block:: cpp
#      *
#      *     int main() {
#      *         return 0;
#      *     }
#      *
#      * \endrst
#      */
# NOTE:
#     1. \rst and \endrst must be on their own line.
#     2. leading-asterisk required.
ALIASES                = "rst=\verbatim embed:rst:leading-asterisk"
ALIASES               += "endrst=\endverbatim"
################################################################################
# Warning suppression.                                                         #
################################################################################
QUIET                  = YES
WARN_IF_UNDOCUMENTED   = NO
