##  Copyright (c) 2015 The WebM project authors. All Rights Reserved.
##
##  Use of this source code is governed by a BSD-style license
##  that can be found in the LICENSE file in the root of the source
##  tree. An additional intellectual property rights grant can be found
##  in the file PATENTS.  All contributing project authors may
##  be found in the AUTHORS file in the root of the source tree.
cmake_minimum_required(VERSION 3.2)
project(LIBWEBM CXX)

include("${CMAKE_CURRENT_SOURCE_DIR}/build/msvc_runtime.cmake")

set(LIBWEBM_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}")

# Build/test configuration flags. Defined here for visibility.
option(ENABLE_WEBMTS "Enables WebM PES/TS support." ON)
option(ENABLE_WEBMINFO "Enables building webm_info." ON)
option(ENABLE_TESTS "Enables tests." OFF)
option(ENABLE_IWYU "Enables include-what-you-use support." OFF)
option(ENABLE_WERROR "Enable warnings as errors." OFF)
option(ENABLE_WEBM_PARSER "Enables new parser API." OFF)
set(GTEST_SRC_DIR "${LIBWEBM_SRC_DIR}/../googletest" CACHE PATH
    "Path to Googletest git repository.")

# This directory is where libwebm will build googletest dependencies.
set(GTEST_BUILD_DIR "${CMAKE_BINARY_DIR}/googletest_build")

include("${CMAKE_CURRENT_SOURCE_DIR}/build/cxx_flags.cmake")
if (ENABLE_TESTS OR ENABLE_WEBMTS OR ENABLE_WEBMINFO OR ENABLE_WEBM_PARSER)
  include("${CMAKE_CURRENT_SOURCE_DIR}/build/cxx11_tests.cmake")

  if (NOT HAVE_CXX11)
    message(WARNING
            "C++11 feature(s) not supported: tests, webmts and "
            "webm_parser disabled.")
    set(ENABLE_TESTS OFF)
    set(ENABLE_WEBMTS OFF)
    set(ENABLE_WEBM_PARSER OFF)
  endif ()
endif ()

set(CMAKE_CXX_FLAGS "-D__STDC_CONSTANT_MACROS ${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS "-D__STDC_FORMAT_MACROS ${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS "-D__STDC_LIMIT_MACROS ${CMAKE_CXX_FLAGS}")

# mkvmuxer section.
# TODO(tomfinegan): move to mkvmuxer/CMakeLists.txt
add_library(mkvmuxer STATIC
            "${LIBWEBM_SRC_DIR}/mkvmuxer/mkvmuxer.cc"
            "${LIBWEBM_SRC_DIR}/mkvmuxer/mkvmuxer.h"
            "${LIBWEBM_SRC_DIR}/mkvmuxer/mkvmuxertypes.h"
            "${LIBWEBM_SRC_DIR}/mkvmuxer/mkvmuxerutil.cc"
            "${LIBWEBM_SRC_DIR}/mkvmuxer/mkvmuxerutil.h"
            "${LIBWEBM_SRC_DIR}/mkvmuxer/mkvwriter.cc"
            "${LIBWEBM_SRC_DIR}/mkvmuxer/mkvwriter.h"
            "${LIBWEBM_SRC_DIR}/common/webmids.h")

# mkvparser section.
# TODO(tomfinegan): move to mkvparser/CMakeLists.txt.
add_library(mkvparser STATIC
            "${LIBWEBM_SRC_DIR}/mkvparser/mkvparser.cc"
            "${LIBWEBM_SRC_DIR}/mkvparser/mkvparser.h"
            "${LIBWEBM_SRC_DIR}/mkvparser/mkvreader.cc"
            "${LIBWEBM_SRC_DIR}/mkvparser/mkvreader.h"
            "${LIBWEBM_SRC_DIR}/common/webmids.h")


# webm_parser section.
# TODO(tomfinegan): move to webm_parser/CMakeLists.txt.
# TODO(tomfinegan): add fuzzing target.
# TODO(tomfinegan): add doxygen generation target.
if (ENABLE_WEBM_PARSER)
include_directories(webm_parser webm_parser/include)
add_library(webm_parser STATIC
            "${LIBWEBM_SRC_DIR}/webm_parser/include/webm/buffer_reader.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/include/webm/callback.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/include/webm/dom_types.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/include/webm/element.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/include/webm/file_reader.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/include/webm/id.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/include/webm/istream_reader.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/include/webm/reader.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/include/webm/status.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/include/webm/webm_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/ancestory.cc"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/ancestory.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/audio_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/bit_utils.cc"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/bit_utils.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/block_additions_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/block_group_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/block_header_parser.cc"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/block_header_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/block_more_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/block_parser.cc"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/block_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/bool_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/buffer_reader.cc"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/byte_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/callback.cc"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/chapter_atom_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/chapter_display_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/chapters_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/cluster_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/colour_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/content_enc_aes_settings_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/content_encoding_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/content_encodings_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/content_encryption_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/cue_point_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/cue_track_positions_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/cues_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/date_parser.cc"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/date_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/ebml_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/edition_entry_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/element_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/file_reader.cc"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/float_parser.cc"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/float_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/id_element_parser.cc"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/id_element_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/id_parser.cc"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/id_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/info_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/int_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/istream_reader.cc"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/master_parser.cc"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/master_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/master_value_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/mastering_metadata_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/parser_utils.cc"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/parser_utils.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/projection_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/recursive_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/seek_head_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/seek_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/segment_parser.cc"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/segment_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/simple_tag_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/size_parser.cc"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/size_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/skip_callback.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/skip_parser.cc"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/skip_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/slices_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/tag_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/tags_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/targets_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/time_slice_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/track_entry_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/tracks_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/unknown_parser.cc"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/unknown_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/var_int_parser.cc"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/var_int_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/video_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/virtual_block_parser.cc"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/virtual_block_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/void_parser.cc"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/void_parser.h"
            "${LIBWEBM_SRC_DIR}/webm_parser/src/webm_parser.cc")
endif()

# Libwebm section.
add_library(webm STATIC
            "${LIBWEBM_SRC_DIR}/common/file_util.cc"
            "${LIBWEBM_SRC_DIR}/common/file_util.h"
            "${LIBWEBM_SRC_DIR}/common/hdr_util.cc"
            "${LIBWEBM_SRC_DIR}/common/hdr_util.h"
            "${LIBWEBM_SRC_DIR}/common/webmids.h")
target_link_libraries(webm LINK_PUBLIC mkvmuxer mkvparser)
if (ENABLE_WEBM_PARSER)
  target_link_libraries(webm LINK_PUBLIC webm_parser)
endif ()

if (WIN32)
  # Use libwebm and libwebm.lib for project and library name on Windows (instead
  # webm and webm.lib).
  set_target_properties(webm PROPERTIES PROJECT_LABEL libwebm)
  set_target_properties(webm PROPERTIES PREFIX lib)
endif ()

include_directories("${LIBWEBM_SRC_DIR}")

# mkvparser_sample section.
add_executable(mkvparser_sample
               "${LIBWEBM_SRC_DIR}/mkvparser_sample.cc")
target_link_libraries(mkvparser_sample LINK_PUBLIC webm)

# mkvmuxer_sample section.
add_executable(mkvmuxer_sample
               "${LIBWEBM_SRC_DIR}/mkvmuxer_sample.cc"
               "${LIBWEBM_SRC_DIR}/sample_muxer_metadata.cc"
               "${LIBWEBM_SRC_DIR}/sample_muxer_metadata.h"
               "${LIBWEBM_SRC_DIR}/webvtt/vttreader.cc"
               "${LIBWEBM_SRC_DIR}/webvtt/vttreader.h"
               "${LIBWEBM_SRC_DIR}/webvtt/webvttparser.cc"
               "${LIBWEBM_SRC_DIR}/webvtt/webvttparser.h")
target_link_libraries(mkvmuxer_sample LINK_PUBLIC webm)

# Dumpvtt section.
add_executable(dumpvtt
               "${LIBWEBM_SRC_DIR}/dumpvtt.cc"
               "${LIBWEBM_SRC_DIR}/webvtt/vttreader.cc"
               "${LIBWEBM_SRC_DIR}/webvtt/vttreader.h"
               "${LIBWEBM_SRC_DIR}/webvtt/webvttparser.cc"
               "${LIBWEBM_SRC_DIR}/webvtt/webvttparser.h")
target_link_libraries(dumpvtt LINK_PUBLIC webm)

# Vttdemux section.
add_executable(vttdemux
               "${LIBWEBM_SRC_DIR}/vttdemux.cc"
               "${LIBWEBM_SRC_DIR}/webvtt/webvttparser.cc"
               "${LIBWEBM_SRC_DIR}/webvtt/webvttparser.h")
target_link_libraries(vttdemux LINK_PUBLIC webm)

if (ENABLE_WEBMINFO)
# Webm_info section.
add_executable(webm_info
               "${LIBWEBM_SRC_DIR}/common/indent.cc"
               "${LIBWEBM_SRC_DIR}/common/indent.h"
               "${LIBWEBM_SRC_DIR}/common/vp9_header_parser.cc"
               "${LIBWEBM_SRC_DIR}/common/vp9_header_parser.h"
               "${LIBWEBM_SRC_DIR}/common/vp9_level_stats.cc"
               "${LIBWEBM_SRC_DIR}/common/vp9_level_stats.h"
               "${LIBWEBM_SRC_DIR}/common/webm_constants.h"
               "${LIBWEBM_SRC_DIR}/common/webm_endian.cc"
               "${LIBWEBM_SRC_DIR}/common/webm_endian.h"
               "${LIBWEBM_SRC_DIR}/webm_info.cc")
target_link_libraries(webm_info LINK_PUBLIC webm)
endif ()

if (ENABLE_WEBM_PARSER)
# webm_parser_demo section.
add_executable(webm_parser_demo
               "${LIBWEBM_SRC_DIR}/webm_parser/demo/demo.cc")
target_link_libraries(webm_parser_demo LINK_PUBLIC webm)
endif ()

if (ENABLE_WEBMTS)
  # webmts (PES/TS support) library section.
  add_library(webmts
              "${LIBWEBM_SRC_DIR}/common/libwebm_util.cc"
              "${LIBWEBM_SRC_DIR}/common/libwebm_util.h"
              "${LIBWEBM_SRC_DIR}/common/video_frame.cc"
              "${LIBWEBM_SRC_DIR}/common/video_frame.h"
              "${LIBWEBM_SRC_DIR}/m2ts/vpxpes2ts.cc"
              "${LIBWEBM_SRC_DIR}/m2ts/vpxpes2ts.h"
              "${LIBWEBM_SRC_DIR}/m2ts/vpxpes_parser.cc"
              "${LIBWEBM_SRC_DIR}/m2ts/vpxpes_parser.h"
              "${LIBWEBM_SRC_DIR}/m2ts/webm2pes.cc"
              "${LIBWEBM_SRC_DIR}/m2ts/webm2pes.h")

  # webm2pes section.
  add_executable(webm2pes
                "${LIBWEBM_SRC_DIR}/m2ts/webm2pes_main.cc")
  target_link_libraries(webm2pes LINK_PUBLIC webm webmts)

  # webm2ts section.
  add_executable(webm2ts "${LIBWEBM_SRC_DIR}/m2ts/vpxpes2ts_main.cc")
  target_link_libraries(webm2ts LINK_PUBLIC webm webmts)
endif ()

if (ENABLE_TESTS)
  add_subdirectory("${GTEST_SRC_DIR}" "${GTEST_BUILD_DIR}")
  include_directories("${GTEST_SRC_DIR}/googletest/include")

  add_executable(mkvmuxer_tests
                 "${LIBWEBM_SRC_DIR}/testing/mkvmuxer_tests.cc"
                 "${LIBWEBM_SRC_DIR}/testing/test_util.cc"
                 "${LIBWEBM_SRC_DIR}/testing/test_util.h")
  target_link_libraries(mkvmuxer_tests LINK_PUBLIC gtest webm)

  add_executable(mkvparser_tests
                 "${LIBWEBM_SRC_DIR}/testing/mkvparser_tests.cc"
                 "${LIBWEBM_SRC_DIR}/testing/test_util.cc"
                 "${LIBWEBM_SRC_DIR}/testing/test_util.h")
  target_link_libraries(mkvparser_tests LINK_PUBLIC gtest webm)

  add_executable(vp9_header_parser_tests
                 "${LIBWEBM_SRC_DIR}/common/vp9_header_parser_tests.cc"
                 "${LIBWEBM_SRC_DIR}/common/vp9_header_parser.cc"
                 "${LIBWEBM_SRC_DIR}/common/vp9_header_parser.h"
                 "${LIBWEBM_SRC_DIR}/testing/test_util.cc"
                 "${LIBWEBM_SRC_DIR}/testing/test_util.h")
  target_link_libraries(vp9_header_parser_tests LINK_PUBLIC gtest webm)

  add_executable(vp9_level_stats_tests
                 "${LIBWEBM_SRC_DIR}/common/vp9_header_parser.cc"
                 "${LIBWEBM_SRC_DIR}/common/vp9_header_parser.h"
                 "${LIBWEBM_SRC_DIR}/common/vp9_level_stats_tests.cc"
                 "${LIBWEBM_SRC_DIR}/common/vp9_level_stats.cc"
                 "${LIBWEBM_SRC_DIR}/common/vp9_level_stats.h"
                 "${LIBWEBM_SRC_DIR}/testing/test_util.cc"
                 "${LIBWEBM_SRC_DIR}/testing/test_util.h")
  target_link_libraries(vp9_level_stats_tests LINK_PUBLIC gtest webm)

  if (ENABLE_WEBMTS)
    add_executable(webm2pes_tests
                  "${LIBWEBM_SRC_DIR}/testing/test_util.cc"
                  "${LIBWEBM_SRC_DIR}/testing/test_util.h"
                  "${LIBWEBM_SRC_DIR}/testing/video_frame_tests.cc"
                  "${LIBWEBM_SRC_DIR}/m2ts/tests/webm2pes_tests.cc")
    target_link_libraries(webm2pes_tests LINK_PUBLIC gtest webm webmts)
  endif ()

  # TODO(tomfinegan): Move to webm_parser/CMakeLists.txt.
  if (ENABLE_WEBM_PARSER)
    include_directories("${GTEST_SRC_DIR}/googlemock/include")
    add_executable(webm_parser_tests
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/audio_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/bit_utils_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/block_additions_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/block_group_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/block_header_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/block_more_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/block_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/bool_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/buffer_reader_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/byte_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/callback_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/chapter_atom_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/chapter_display_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/chapters_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/cluster_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/colour_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/content_enc_aes_settings_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/content_encoding_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/content_encodings_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/content_encryption_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/cue_point_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/cue_track_positions_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/cues_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/date_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/ebml_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/edition_entry_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/element_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/float_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/id_element_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/id_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/info_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/int_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/istream_reader_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/limited_reader_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/master_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/master_value_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/mastering_metadata_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/parser_utils_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/projection_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/recursive_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/seek_head_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/seek_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/segment_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/simple_tag_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/size_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/skip_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/slices_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/tag_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/tags_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/targets_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/time_slice_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/track_entry_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/tracks_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/unknown_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/var_int_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/video_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/virtual_block_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/void_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/webm_parser_test.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/test_utils/element_parser_test.h"
                   "${LIBWEBM_SRC_DIR}/webm_parser/test_utils/limited_reader.cc"
                   "${LIBWEBM_SRC_DIR}/webm_parser/test_utils/limited_reader.h"
                   "${LIBWEBM_SRC_DIR}/webm_parser/test_utils/mock_callback.h"
                   "${LIBWEBM_SRC_DIR}/webm_parser/test_utils/parser_test.h"
                   "${LIBWEBM_SRC_DIR}/webm_parser/tests/webm_parser_tests.cc")
    target_link_libraries(webm_parser_tests LINK_PUBLIC gmock gtest webm)
  endif ()
endif ()

# Include-what-you-use section.
if (ENABLE_IWYU)
  # Make sure all the tools necessary for IWYU are present.
  find_program(iwyu_path NAMES include-what-you-use)
  find_program(iwyu_tool_path NAMES iwyu_tool.py)

  # Some odd behavior on cmake's part: PYTHON_EXECUTABLE and PYTHON_VERSION_*
  # are set by cmake when it does its internal python check, but
  # PYTHONINTERP_FOUND is empty without explicitly looking for it.
  find_package(PythonInterp)

  if (iwyu_path AND iwyu_tool_path AND PYTHONINTERP_FOUND)
    # Enable compilation command export (needed for iwyu_tool.py)
    set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

    # Add a custom target to run iwyu across all targets.
    add_custom_target(iwyu
                      ALL
                      COMMAND "${PYTHON_EXECUTABLE}" "${iwyu_tool_path}" -p
                          "${CMAKE_BINARY_DIR}"
                      COMMENT "Running include-what-you-use..."
                      VERBATIM)
  else ()
    message(STATUS "Ignoring ENABLE_IWYU because reasons:")
    message(STATUS "  iwyu_path=" ${iwyu_path})
    message(STATUS "  iwyu_tool_path=" ${iwyu_tool_path})
    message(STATUS "  PYTHONINTERP_FOUND=" ${PYTHONINTERP_FOUND})
    message(STATUS "  See README.libwebm for more information.")
  endif ()
endif ()
