mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 02:09:05 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			345 lines
		
	
	
	
		
			15 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			345 lines
		
	
	
	
		
			15 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
#
 | 
						|
# Copyright (c) 2017, Alliance for Open Media. All rights reserved
 | 
						|
#
 | 
						|
# This source code is subject to the terms of the BSD 2 Clause License and the
 | 
						|
# Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License was
 | 
						|
# not distributed with this source code in the LICENSE file, you can obtain it
 | 
						|
# at www.aomedia.org/license/software. If the Alliance for Open Media Patent
 | 
						|
# License 1.0 was not distributed with this source code in the PATENTS file, you
 | 
						|
# can obtain it at www.aomedia.org/license/patent.
 | 
						|
#
 | 
						|
if(AOM_DOCS_CMAKE_)
 | 
						|
  return()
 | 
						|
endif() # AOM_DOCS_CMAKE_
 | 
						|
set(AOM_DOCS_CMAKE_ 1)
 | 
						|
 | 
						|
cmake_minimum_required(VERSION 3.5)
 | 
						|
 | 
						|
set(AOM_DOXYFILE "${AOM_CONFIG_DIR}/doxyfile")
 | 
						|
set(AOM_DOXYGEN_CONFIG_TEMPLATE "libs.doxy_template")
 | 
						|
set(AOM_DOXYGEN_OUTPUT_DIR "${AOM_CONFIG_DIR}/dox")
 | 
						|
set(AOM_DOXYGEN_SECTIONS "av1")
 | 
						|
 | 
						|
set(AOM_DOXYGEN_SOURCES
 | 
						|
    "${AOM_ROOT}/aom/aom.h"
 | 
						|
    "${AOM_ROOT}/aom/aom_codec.h"
 | 
						|
    "${AOM_ROOT}/aom/aom_decoder.h"
 | 
						|
    "${AOM_ROOT}/aom/aom_encoder.h"
 | 
						|
    "${AOM_ROOT}/aom/aom_external_partition.h"
 | 
						|
    "${AOM_ROOT}/aom/aom_frame_buffer.h"
 | 
						|
    "${AOM_ROOT}/aom/aom_image.h"
 | 
						|
    "${AOM_ROOT}/aom/aom_integer.h"
 | 
						|
    "${AOM_ROOT}/av1/common/av1_common_int.h"
 | 
						|
    "${AOM_ROOT}/av1/common/av1_loopfilter.h"
 | 
						|
    "${AOM_ROOT}/av1/common/blockd.h"
 | 
						|
    "${AOM_ROOT}/av1/common/cdef.h"
 | 
						|
    "${AOM_ROOT}/av1/common/enums.h"
 | 
						|
    "${AOM_ROOT}/av1/common/restoration.h"
 | 
						|
    "${AOM_ROOT}/keywords.dox"
 | 
						|
    "${AOM_ROOT}/mainpage.dox"
 | 
						|
    "${AOM_ROOT}/usage.dox")
 | 
						|
 | 
						|
if(CONFIG_AV1_DECODER)
 | 
						|
  set(AOM_DOXYGEN_EXAMPLE_SOURCES ${AOM_DOXYGEN_EXAMPLE_SOURCES}
 | 
						|
                                  "${AOM_ROOT}/apps/aomdec.c"
 | 
						|
                                  "${AOM_ROOT}/examples/decode_to_md5.c"
 | 
						|
                                  "${AOM_ROOT}/examples/decode_with_drops.c"
 | 
						|
                                  "${AOM_ROOT}/examples/simple_decoder.c")
 | 
						|
 | 
						|
  set(AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS ${AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS}
 | 
						|
                                       "Full featured decoder."
 | 
						|
                                       "Frame by frame MD5 checksum."
 | 
						|
                                       "Drops frames while decoding."
 | 
						|
                                       "Simplified decoder loop.")
 | 
						|
 | 
						|
  set(AOM_DOXYGEN_SECTIONS ${AOM_DOXYGEN_SECTIONS} "av1_decoder decoder")
 | 
						|
 | 
						|
  set(AOM_DOXYGEN_SOURCES ${AOM_DOXYGEN_SOURCES} "${AOM_ROOT}/aom/aomdx.h"
 | 
						|
                          "${AOM_ROOT}/usage_dx.dox"
 | 
						|
                          "${AOM_ROOT}/av1/decoder/decoder.h")
 | 
						|
 | 
						|
  if(CONFIG_ANALYZER)
 | 
						|
    set(AOM_DOXYGEN_EXAMPLE_SOURCES ${AOM_DOXYGEN_EXAMPLE_SOURCES}
 | 
						|
                                    "${AOM_ROOT}/examples/analyzer.cc")
 | 
						|
 | 
						|
    set(AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS ${AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS}
 | 
						|
                                         "Bitstream analyzer.")
 | 
						|
  endif()
 | 
						|
 | 
						|
  if(CONFIG_INSPECTION)
 | 
						|
    set(AOM_DOXYGEN_EXAMPLE_SOURCES ${AOM_DOXYGEN_EXAMPLE_SOURCES}
 | 
						|
                                    "${AOM_ROOT}/examples/inspect.c")
 | 
						|
 | 
						|
    set(AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS ${AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS}
 | 
						|
                                         "Bitstream inspector.")
 | 
						|
  endif()
 | 
						|
 | 
						|
  set(AOM_DOXYGEN_SOURCES ${AOM_DOXYGEN_SOURCES}
 | 
						|
                          "${AOM_ROOT}/doc/dev_guide/av1_decoder.dox")
 | 
						|
endif()
 | 
						|
 | 
						|
if(CONFIG_AV1_ENCODER)
 | 
						|
  set(AOM_DOXYGEN_EXAMPLE_SOURCES ${AOM_DOXYGEN_EXAMPLE_SOURCES}
 | 
						|
                                  "${AOM_ROOT}/apps/aomenc.c"
 | 
						|
                                  "${AOM_ROOT}/examples/lossless_encoder.c"
 | 
						|
                                  "${AOM_ROOT}/examples/set_maps.c"
 | 
						|
                                  "${AOM_ROOT}/examples/simple_encoder.c"
 | 
						|
                                  "${AOM_ROOT}/examples/twopass_encoder.c")
 | 
						|
 | 
						|
  set(AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS ${AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS}
 | 
						|
                                       "Full featured encoder."
 | 
						|
                                       "Simplified lossless encoder."
 | 
						|
                                       "Set active and ROI maps."
 | 
						|
                                       "Simplified encoder loop."
 | 
						|
                                       "Two-pass encoder loop.")
 | 
						|
 | 
						|
  set(AOM_DOXYGEN_EXAMPLE_SOURCES ${AOM_DOXYGEN_EXAMPLE_SOURCES}
 | 
						|
                                  "${AOM_ROOT}/examples/scalable_encoder.c")
 | 
						|
 | 
						|
  set(AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS ${AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS}
 | 
						|
                                       "Scalable encoder loop.")
 | 
						|
 | 
						|
  set(AOM_DOXYGEN_EXAMPLE_SOURCES ${AOM_DOXYGEN_EXAMPLE_SOURCES}
 | 
						|
                                  "${AOM_ROOT}/examples/svc_encoder_rtc.cc")
 | 
						|
 | 
						|
  set(AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS ${AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS}
 | 
						|
                                       "Layered encoder for RTC.")
 | 
						|
 | 
						|
  set(AOM_DOXYGEN_SECTIONS ${AOM_DOXYGEN_SECTIONS} "av1_encoder encoder")
 | 
						|
 | 
						|
  set(AOM_DOXYGEN_SOURCES ${AOM_DOXYGEN_SOURCES} "${AOM_ROOT}/aom/aomcx.h"
 | 
						|
                          "${AOM_ROOT}/usage_cx.dox")
 | 
						|
  set(AOM_DOXYGEN_SOURCES ${AOM_DOXYGEN_SOURCES}
 | 
						|
                          "${AOM_ROOT}/doc/dev_guide/av1_encoder.dox")
 | 
						|
  set(AOM_DOXYGEN_SOURCES
 | 
						|
      ${AOM_DOXYGEN_SOURCES}
 | 
						|
      "${AOM_ROOT}/aom_scale/yv12config.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/bitstream.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/block.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/aq_cyclicrefresh.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/encode_strategy.c"
 | 
						|
      "${AOM_ROOT}/av1/encoder/encode_strategy.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/encodeframe.c"
 | 
						|
      "${AOM_ROOT}/av1/encoder/encoder.c"
 | 
						|
      "${AOM_ROOT}/av1/encoder/encoder.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/encodetxb.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/firstpass.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/gop_structure.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/interp_search.c"
 | 
						|
      "${AOM_ROOT}/av1/encoder/intra_mode_search.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/intra_mode_search.c"
 | 
						|
      "${AOM_ROOT}/av1/encoder/intra_mode_search_utils.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/lookahead.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/palette.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/palette.c"
 | 
						|
      "${AOM_ROOT}/av1/encoder/partition_search.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/partition_search.c"
 | 
						|
      "${AOM_ROOT}/av1/encoder/pass2_strategy.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/pass2_strategy.c"
 | 
						|
      "${AOM_ROOT}/av1/encoder/pickcdef.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/picklpf.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/pickrst.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/ratectrl.c"
 | 
						|
      "${AOM_ROOT}/av1/encoder/ratectrl.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/rc_utils.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/rdopt.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/rdopt.c"
 | 
						|
      "${AOM_ROOT}/av1/encoder/speed_features.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/svc_layercontext.c"
 | 
						|
      "${AOM_ROOT}/av1/encoder/svc_layercontext.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/temporal_filter.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/temporal_filter.c"
 | 
						|
      "${AOM_ROOT}/av1/encoder/tpl_model.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/tx_search.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/txb_rdopt.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/var_based_part.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/nonrd_opt.h"
 | 
						|
      "${AOM_ROOT}/av1/encoder/nonrd_pickmode.c")
 | 
						|
endif()
 | 
						|
 | 
						|
if(CONFIG_AV1_DECODER AND CONFIG_AV1_ENCODER)
 | 
						|
  set(AOM_DOXYGEN_EXAMPLE_SOURCES ${AOM_DOXYGEN_EXAMPLE_SOURCES}
 | 
						|
                                  "${AOM_ROOT}/examples/aom_cx_set_ref.c")
 | 
						|
 | 
						|
  set(AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS ${AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS}
 | 
						|
                                       "Set encoder reference frame.")
 | 
						|
endif()
 | 
						|
 | 
						|
if(CONFIG_AV1_ENCODER)
 | 
						|
  set(AOM_DOXYGEN_EXAMPLE_SOURCES ${AOM_DOXYGEN_EXAMPLE_SOURCES}
 | 
						|
                                  "${AOM_ROOT}/examples/lightfield_encoder.c")
 | 
						|
 | 
						|
  set(AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS ${AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS}
 | 
						|
                                       "Lightfield encoder example.")
 | 
						|
endif()
 | 
						|
 | 
						|
if(CONFIG_AV1_DECODER)
 | 
						|
  set(AOM_DOXYGEN_EXAMPLE_SOURCES
 | 
						|
      ${AOM_DOXYGEN_EXAMPLE_SOURCES}
 | 
						|
      "${AOM_ROOT}/examples/lightfield_tile_list_decoder.c")
 | 
						|
 | 
						|
  set(AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS ${AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS}
 | 
						|
                                       "Lightfield tile list decoder example.")
 | 
						|
endif()
 | 
						|
 | 
						|
if(CONFIG_AV1_DECODER)
 | 
						|
  set(AOM_DOXYGEN_EXAMPLE_SOURCES ${AOM_DOXYGEN_EXAMPLE_SOURCES}
 | 
						|
                                  "${AOM_ROOT}/examples/lightfield_decoder.c")
 | 
						|
 | 
						|
  set(AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS ${AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS}
 | 
						|
                                       "Lightfield decoder example.")
 | 
						|
endif()
 | 
						|
 | 
						|
if(CONFIG_AV1_DECODER AND CONFIG_AV1_ENCODER)
 | 
						|
  set(AOM_DOXYGEN_EXAMPLE_SOURCES
 | 
						|
      ${AOM_DOXYGEN_EXAMPLE_SOURCES}
 | 
						|
      "${AOM_ROOT}/examples/lightfield_bitstream_parsing.c")
 | 
						|
 | 
						|
  set(AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS ${AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS}
 | 
						|
                                       "Lightfield bitstream parsing example.")
 | 
						|
endif()
 | 
						|
 | 
						|
# Iterates over list named by $list_name and appends each item to $AOM_DOXYFILE
 | 
						|
# as values assigned to $var_name with no line breaks between list items.
 | 
						|
# Appends a new line after the entire config variable is expanded.
 | 
						|
function(write_cmake_list_to_doxygen_config_var var_name list_name)
 | 
						|
  unset(output_string)
 | 
						|
  foreach(list_item ${${list_name}})
 | 
						|
    set(output_string "${output_string} ${list_item} ")
 | 
						|
  endforeach()
 | 
						|
  string(STRIP "${output_string}" output_string)
 | 
						|
  file(APPEND "${AOM_DOXYFILE}" "${var_name} += ${output_string}\n")
 | 
						|
endfunction()
 | 
						|
 | 
						|
function(get_name file_path name_var)
 | 
						|
  get_filename_component(file_basename ${file_path} NAME)
 | 
						|
  get_filename_component(${name_var} ${file_basename} NAME_WE)
 | 
						|
  set(${name_var} ${${name_var}} PARENT_SCOPE)
 | 
						|
endfunction()
 | 
						|
 | 
						|
function(setup_documentation_targets)
 | 
						|
 | 
						|
  # Sanity check: the lengths of these lists must match.
 | 
						|
  list(LENGTH AOM_DOXYGEN_EXAMPLE_SOURCES num_sources)
 | 
						|
  list(LENGTH AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS num_descs)
 | 
						|
  if(NOT ${num_sources} EQUAL ${num_descs})
 | 
						|
    message(FATAL_ERROR "Unequal example and description totals.")
 | 
						|
  endif()
 | 
						|
 | 
						|
  # Take the list of examples and produce example_basename.dox for each file in
 | 
						|
  # the list.
 | 
						|
  file(MAKE_DIRECTORY "${AOM_DOXYGEN_OUTPUT_DIR}")
 | 
						|
  foreach(example_file ${AOM_DOXYGEN_EXAMPLE_SOURCES})
 | 
						|
    unset(example_basename)
 | 
						|
    get_name("${example_file}" "example_name")
 | 
						|
    set(example_dox "${AOM_DOXYGEN_OUTPUT_DIR}/${example_name}.dox")
 | 
						|
    set(dox_string "/*!\\page example_${example_name} ${example_name}\n")
 | 
						|
    set(dox_string "${dox_string} \\includelineno ${example_file}\n*/\n")
 | 
						|
    file(WRITE "${example_dox}" ${dox_string})
 | 
						|
    set(AOM_DOXYGEN_SOURCES ${AOM_DOXYGEN_SOURCES} "${example_dox}")
 | 
						|
  endforeach()
 | 
						|
 | 
						|
  # Generate samples.dox, an index page that refers to the example_basename.dox
 | 
						|
  # files that were just created.
 | 
						|
  set(samples_header "
 | 
						|
/*!\\page samples Sample Code
 | 
						|
This SDK includes a number of sample applications. Each sample documents a
 | 
						|
feature of the SDK in both prose and the associated C code. The following
 | 
						|
samples are included:
 | 
						|
")
 | 
						|
 | 
						|
  set(utils_desc "
 | 
						|
In addition, the SDK contains a number of utilities. Since these utilities are
 | 
						|
built upon the concepts described in the sample code listed above, they are not
 | 
						|
documented in pieces like the samples are. Their source is included here for
 | 
						|
reference. The following utilities are included:
 | 
						|
")
 | 
						|
 | 
						|
  # Write the description for the samples section.
 | 
						|
  set(samples_dox "${AOM_CONFIG_DIR}/samples.dox")
 | 
						|
  file(WRITE "${samples_dox}" "${samples_header}\n")
 | 
						|
 | 
						|
  # Iterate over $AOM_DOXYGEN_EXAMPLE_SOURCES and
 | 
						|
  # $AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS and massage example names as required by
 | 
						|
  # AV1's doxygen setup.
 | 
						|
  math(EXPR max_example_index "${num_sources} - 1")
 | 
						|
  foreach(NUM RANGE ${max_example_index})
 | 
						|
    list(GET AOM_DOXYGEN_EXAMPLE_SOURCES ${NUM} ex_name)
 | 
						|
    get_name("${ex_name}" "ex_name")
 | 
						|
 | 
						|
    # AV1's doxygen lists aomdec and aomenc as utils apart from the examples.
 | 
						|
    # Save the indexes for another pass.
 | 
						|
    if("${ex_name}" MATCHES "aomdec\|aomenc")
 | 
						|
      set(util_indexes "${util_indexes}" "${NUM}")
 | 
						|
      continue()
 | 
						|
    endif()
 | 
						|
    list(GET AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS ${NUM} ex_desc)
 | 
						|
    file(APPEND "${samples_dox}" " - \\subpage example_${ex_name} ${ex_desc}\n")
 | 
						|
  endforeach()
 | 
						|
 | 
						|
  # Write the description and index for the utils.
 | 
						|
  file(APPEND "${samples_dox}" "${utils_desc}\n")
 | 
						|
  foreach(util_index ${util_indexes})
 | 
						|
    list(GET AOM_DOXYGEN_EXAMPLE_SOURCES ${util_index} ex_name)
 | 
						|
    get_name("${ex_name}" "ex_name")
 | 
						|
    list(GET AOM_DOXYGEN_EXAMPLE_DESCRIPTIONS ${util_index} ex_desc)
 | 
						|
    file(APPEND "${samples_dox}" " - \\subpage example_${ex_name} ${ex_desc}\n")
 | 
						|
  endforeach()
 | 
						|
  file(APPEND "${samples_dox}" "*/")
 | 
						|
 | 
						|
  # Add $samples_dox to the doxygen inputs.
 | 
						|
  get_filename_component(samples_dox ${samples_dox} NAME)
 | 
						|
  set(AOM_DOXYGEN_SOURCES ${AOM_DOXYGEN_SOURCES} ${samples_dox})
 | 
						|
 | 
						|
  # There are issues to show Markdown file for old Doxygen version. Here, only
 | 
						|
  # enable Markdown support for 1.8.16 or newer.
 | 
						|
  if(${DOXYGEN_VERSION_VALUE} GREATER_EQUAL 1008016)
 | 
						|
    set(AOM_DOXYGEN_SECTIONS ${AOM_DOXYGEN_SECTIONS} "av1_md_support")
 | 
						|
    set(AOM_DOXYGEN_SOURCES ${AOM_DOXYGEN_SOURCES} "${AOM_ROOT}/README.md")
 | 
						|
    # Uncomment and add AlgorithmDescription.md in result page when it is done.
 | 
						|
    # set(AOM_DOXYGEN_SOURCES ${AOM_DOXYGEN_SOURCES}
 | 
						|
    # "${AOM_ROOT}/doc/AlgorithmDescription.md")
 | 
						|
  endif()
 | 
						|
 | 
						|
  # Generate libaom's doxyfile.
 | 
						|
  file(WRITE "${AOM_DOXYFILE}" "##\n## GENERATED FILE. DO NOT EDIT\n##\n")
 | 
						|
  file(READ "${AOM_ROOT}/${AOM_DOXYGEN_CONFIG_TEMPLATE}" doxygen_template_data)
 | 
						|
  file(APPEND "${AOM_DOXYFILE}" ${doxygen_template_data})
 | 
						|
  file(APPEND "${AOM_DOXYFILE}"
 | 
						|
       "EXAMPLE_PATH += ${AOM_ROOT} ${AOM_ROOT}/examples\n")
 | 
						|
  file(APPEND "${AOM_DOXYFILE}"
 | 
						|
       "INCLUDE_PATH += ${AOM_CONFIG_DIR} ${AOM_ROOT}\n")
 | 
						|
  file(APPEND "${AOM_DOXYFILE}"
 | 
						|
       "STRIP_FROM_PATH += ${AOM_ROOT} ${AOM_CONFIG_DIR}\n")
 | 
						|
  write_cmake_list_to_doxygen_config_var("INPUT" "AOM_DOXYGEN_SOURCES")
 | 
						|
  write_cmake_list_to_doxygen_config_var("ENABLED_SECTIONS"
 | 
						|
                                         "AOM_DOXYGEN_SECTIONS")
 | 
						|
 | 
						|
  # Add AOMedia logo.
 | 
						|
  set(aom_logo "aomedia_logo_200.png")
 | 
						|
  configure_file(${AOM_ROOT}/${aom_logo} ${AOM_CONFIG_DIR}/${aom_logo} COPYONLY)
 | 
						|
  file(APPEND "${AOM_DOXYFILE}"
 | 
						|
       "PROJECT_LOGO = ${AOM_CONFIG_DIR}/${aom_logo}\n")
 | 
						|
 | 
						|
  # Only set HAVE_DOT to YES if dot tool is found.
 | 
						|
  if(DOXYGEN_DOT_FOUND)
 | 
						|
    file(APPEND "${AOM_DOXYFILE}" "HAVE_DOT = YES\n")
 | 
						|
    file(APPEND "${AOM_DOXYFILE}" "DOT_GRAPH_MAX_NODES = 10000\n")
 | 
						|
  endif()
 | 
						|
 | 
						|
  # Add image path.
 | 
						|
  file(APPEND "${AOM_DOXYFILE}" "IMAGE_PATH += ${AOM_ROOT}/doc/dev_guide\n")
 | 
						|
 | 
						|
  # Allow banner style comments
 | 
						|
  file(APPEND "${AOM_DOXYFILE}" "JAVADOC_BANNER = YES")
 | 
						|
 | 
						|
  # Add the doxygen generation rule.
 | 
						|
  add_custom_target(docs ALL
 | 
						|
                    COMMAND "${DOXYGEN_EXECUTABLE}" "${AOM_DOXYFILE}"
 | 
						|
                    DEPENDS "${AOM_DOXYFILE}" ${AOM_DOXYGEN_SOURCES}
 | 
						|
                            ${AOM_DOXYGEN_EXAMPLE_SOURCES}
 | 
						|
                            "${AOM_DOXYGEN_CONFIG_TEMPLATE}"
 | 
						|
                    SOURCES "${AOM_DOXYFILE}" ${AOM_DOXYGEN_SOURCES}
 | 
						|
                            ${AOM_DOXYGEN_EXAMPLE_SOURCES}
 | 
						|
                            "${AOM_DOXYGEN_CONFIG_TEMPLATE}")
 | 
						|
endfunction()
 |