2015-02-13 20:23:40 +01:00
|
|
|
## 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.
|
2016-02-24 19:03:37 +01:00
|
|
|
cmake_minimum_required(VERSION 3.2)
|
|
|
|
project(LIBWEBM CXX)
|
2015-02-13 20:23:40 +01:00
|
|
|
|
2017-01-19 17:40:31 +01:00
|
|
|
include("${CMAKE_CURRENT_SOURCE_DIR}/build/cxx_flags.cmake")
|
2016-04-07 19:06:31 +02:00
|
|
|
include("${CMAKE_CURRENT_SOURCE_DIR}/build/msvc_runtime.cmake")
|
2016-01-25 21:13:34 +01:00
|
|
|
|
2016-02-24 19:03:37 +01:00
|
|
|
set(LIBWEBM_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
|
2016-01-22 20:24:55 +01:00
|
|
|
|
2017-01-19 17:40:31 +01:00
|
|
|
# Build/test configuration flags.
|
2016-02-24 19:03:37 +01:00
|
|
|
option(ENABLE_WEBMTS "Enables WebM PES/TS support." ON)
|
2016-04-26 18:51:59 +02:00
|
|
|
option(ENABLE_WEBMINFO "Enables building webm_info." ON)
|
2016-01-12 03:46:55 +01:00
|
|
|
option(ENABLE_TESTS "Enables tests." OFF)
|
2016-03-10 22:22:51 +01:00
|
|
|
option(ENABLE_IWYU "Enables include-what-you-use support." OFF)
|
2016-04-07 19:06:31 +02:00
|
|
|
option(ENABLE_WERROR "Enable warnings as errors." OFF)
|
2016-06-16 22:51:59 +02:00
|
|
|
option(ENABLE_WEBM_PARSER "Enables new parser API." OFF)
|
2016-01-12 03:46:55 +01:00
|
|
|
|
2016-06-16 22:51:59 +02:00
|
|
|
if (ENABLE_TESTS OR ENABLE_WEBMTS OR ENABLE_WEBMINFO OR ENABLE_WEBM_PARSER)
|
2017-01-19 17:40:31 +01:00
|
|
|
require_cxx_flag_nomsvc("-std=c++11")
|
2016-02-24 19:03:37 +01:00
|
|
|
endif ()
|
|
|
|
|
2017-01-19 17:40:31 +01:00
|
|
|
add_cxx_preproc_definition("__STDC_CONSTANT_MACROS")
|
|
|
|
add_cxx_preproc_definition("__STDC_FORMAT_MACROS")
|
|
|
|
add_cxx_preproc_definition("__STDC_LIMIT_MACROS")
|
2016-03-17 04:34:30 +01:00
|
|
|
|
2017-01-19 17:40:31 +01:00
|
|
|
# Set up compiler flags and build properties.
|
|
|
|
include_directories("${LIBWEBM_SRC_DIR}")
|
2015-02-13 20:23:40 +01:00
|
|
|
|
2017-01-19 17:40:31 +01:00
|
|
|
if (MSVC)
|
|
|
|
add_cxx_flag_if_supported("/W4")
|
|
|
|
# Disable MSVC warnings that suggest making code non-portable.
|
|
|
|
add_cxx_flag_if_supported("/wd4996")
|
|
|
|
if (ENABLE_WERROR)
|
|
|
|
add_cxx_flag_if_supported("/WX")
|
|
|
|
endif ()
|
|
|
|
else ()
|
|
|
|
add_cxx_flag_if_supported("-Wall")
|
|
|
|
add_cxx_flag_if_supported("-Wextra")
|
|
|
|
add_cxx_flag_if_supported("-Wnarrowing")
|
|
|
|
add_cxx_flag_if_supported("-Wno-deprecated")
|
|
|
|
add_cxx_flag_if_supported("-Wshorten-64-to-32")
|
|
|
|
if (ENABLE_WERROR)
|
|
|
|
add_cxx_flag_if_supported("-Werror")
|
|
|
|
endif ()
|
|
|
|
endif ()
|
2015-02-13 20:23:40 +01:00
|
|
|
|
2017-01-19 17:40:31 +01:00
|
|
|
# Source list variables.
|
|
|
|
set(dumpvtt_sources "${LIBWEBM_SRC_DIR}/dumpvtt.cc")
|
|
|
|
|
|
|
|
set(libwebm_common_sources
|
|
|
|
"${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")
|
|
|
|
|
|
|
|
set(mkvmuxer_sources
|
|
|
|
"${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")
|
|
|
|
|
|
|
|
set(mkvmuxer_sample_sources
|
|
|
|
"${LIBWEBM_SRC_DIR}/mkvmuxer_sample.cc"
|
|
|
|
"${LIBWEBM_SRC_DIR}/sample_muxer_metadata.cc"
|
|
|
|
"${LIBWEBM_SRC_DIR}/sample_muxer_metadata.h")
|
|
|
|
|
|
|
|
set(mkvmuxer_tests_sources
|
|
|
|
"${LIBWEBM_SRC_DIR}/testing/mkvmuxer_tests.cc"
|
|
|
|
"${LIBWEBM_SRC_DIR}/testing/test_util.cc"
|
|
|
|
"${LIBWEBM_SRC_DIR}/testing/test_util.h")
|
|
|
|
|
|
|
|
set(mkvparser_sources
|
|
|
|
"${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")
|
|
|
|
|
|
|
|
set(mkvparser_sample_sources "${LIBWEBM_SRC_DIR}/mkvparser_sample.cc")
|
|
|
|
set(mkvparser_tests_sources
|
|
|
|
"${LIBWEBM_SRC_DIR}/testing/mkvparser_tests.cc"
|
|
|
|
"${LIBWEBM_SRC_DIR}/testing/test_util.cc"
|
|
|
|
"${LIBWEBM_SRC_DIR}/testing/test_util.h")
|
|
|
|
|
|
|
|
set(vp9_header_parser_tests_sources
|
|
|
|
"${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")
|
|
|
|
|
|
|
|
set(vp9_level_stats_tests_sources
|
|
|
|
"${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")
|
|
|
|
|
|
|
|
set(vttdemux_sources
|
|
|
|
"${LIBWEBM_SRC_DIR}/vttdemux.cc"
|
|
|
|
"${LIBWEBM_SRC_DIR}/webvtt/webvttparser.cc"
|
|
|
|
"${LIBWEBM_SRC_DIR}/webvtt/webvttparser.h")
|
|
|
|
|
|
|
|
set(webm_parser_sources
|
|
|
|
"${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")
|
|
|
|
|
|
|
|
set(webm_parser_demo_sources "${LIBWEBM_SRC_DIR}/webm_parser/demo/demo.cc")
|
|
|
|
set(webm_parser_tests_sources
|
|
|
|
"${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")
|
|
|
|
|
|
|
|
set(webm_info_sources
|
|
|
|
"${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")
|
|
|
|
|
|
|
|
set(webmts_sources
|
|
|
|
"${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")
|
|
|
|
|
|
|
|
set(webm2pes_sources "${LIBWEBM_SRC_DIR}/m2ts/webm2pes_main.cc")
|
|
|
|
set(webm2pes_tests_sources
|
|
|
|
"${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")
|
|
|
|
set(webm2ts_sources "${LIBWEBM_SRC_DIR}/m2ts/vpxpes2ts_main.cc")
|
|
|
|
|
|
|
|
set(webvtt_common_sources
|
|
|
|
"${LIBWEBM_SRC_DIR}/webvtt/vttreader.cc"
|
|
|
|
"${LIBWEBM_SRC_DIR}/webvtt/vttreader.h"
|
|
|
|
"${LIBWEBM_SRC_DIR}/webvtt/webvttparser.cc"
|
|
|
|
"${LIBWEBM_SRC_DIR}/webvtt/webvttparser.h")
|
|
|
|
|
|
|
|
# Targets.
|
|
|
|
add_library(mkvmuxer OBJECT ${mkvmuxer_sources})
|
|
|
|
add_library(mkvparser OBJECT ${mkvparser_sources})
|
|
|
|
add_library(webvtt_common OBJECT ${webvtt_common_sources})
|
|
|
|
|
|
|
|
add_library(webm STATIC ${libwebm_common_sources}
|
|
|
|
$<TARGET_OBJECTS:mkvmuxer>
|
|
|
|
$<TARGET_OBJECTS:mkvparser>)
|
|
|
|
|
2017-01-26 16:40:09 +01:00
|
|
|
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 ()
|
|
|
|
|
2017-01-19 17:40:31 +01:00
|
|
|
add_executable(mkvparser_sample ${mkvparser_sample_sources})
|
2016-08-23 20:59:33 +02:00
|
|
|
target_link_libraries(mkvparser_sample LINK_PUBLIC webm)
|
|
|
|
|
2017-01-19 17:40:31 +01:00
|
|
|
add_executable(mkvmuxer_sample ${mkvmuxer_sample_sources}
|
|
|
|
$<TARGET_OBJECTS:webvtt_common>)
|
2016-08-23 20:59:33 +02:00
|
|
|
target_link_libraries(mkvmuxer_sample LINK_PUBLIC webm)
|
2015-02-13 20:23:40 +01:00
|
|
|
|
2017-01-19 17:40:31 +01:00
|
|
|
add_executable(dumpvtt ${dumpvtt_sources} $<TARGET_OBJECTS:webvtt_common>)
|
2016-03-17 22:55:12 +01:00
|
|
|
target_link_libraries(dumpvtt LINK_PUBLIC webm)
|
|
|
|
|
2017-01-19 17:40:31 +01:00
|
|
|
add_executable(vttdemux ${vttdemux_sources})
|
2015-03-02 21:43:56 +01:00
|
|
|
target_link_libraries(vttdemux LINK_PUBLIC webm)
|
2015-11-30 20:23:10 +01:00
|
|
|
|
2016-04-26 18:51:59 +02:00
|
|
|
if (ENABLE_WEBMINFO)
|
2017-01-19 17:40:31 +01:00
|
|
|
add_executable(webm_info ${webm_info_sources})
|
|
|
|
target_link_libraries(webm_info LINK_PUBLIC webm)
|
2016-04-26 18:51:59 +02:00
|
|
|
endif ()
|
2016-04-01 04:46:21 +02:00
|
|
|
|
2016-06-16 22:51:59 +02:00
|
|
|
if (ENABLE_WEBM_PARSER)
|
2017-01-19 17:40:31 +01:00
|
|
|
include_directories(webm_parser webm_parser/include)
|
|
|
|
add_library(webm_parser OBJECT ${webm_parser_sources})
|
|
|
|
target_sources(webm PUBLIC $<TARGET_OBJECTS:webm_parser>)
|
|
|
|
|
|
|
|
add_executable(webm_parser_demo ${webm_parser_demo_sources})
|
|
|
|
target_link_libraries(webm_parser_demo LINK_PUBLIC webm)
|
2016-06-16 22:51:59 +02:00
|
|
|
endif ()
|
|
|
|
|
2016-02-24 19:03:37 +01:00
|
|
|
if (ENABLE_WEBMTS)
|
2017-01-19 17:40:31 +01:00
|
|
|
add_library(webmts OBJECT ${webmts_sources})
|
|
|
|
|
|
|
|
add_executable(webm2pes ${webm2pes_sources} $<TARGET_OBJECTS:webmts>)
|
|
|
|
target_link_libraries(webm2pes LINK_PUBLIC webm)
|
|
|
|
|
|
|
|
add_executable(webm2ts ${webm2ts_sources} $<TARGET_OBJECTS:webmts>)
|
|
|
|
target_link_libraries(webm2ts LINK_PUBLIC webm)
|
2016-02-24 19:03:37 +01:00
|
|
|
endif ()
|
2016-01-22 20:24:55 +01:00
|
|
|
|
2016-01-12 03:46:55 +01:00
|
|
|
if (ENABLE_TESTS)
|
2017-01-19 17:40:31 +01:00
|
|
|
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")
|
|
|
|
|
2017-09-18 22:10:57 +02:00
|
|
|
if (LIBWEBM_DISABLE_GTEST_CMAKE)
|
|
|
|
add_library(gtest STATIC "${GTEST_SRC_DIR}/googletest/src/gtest-all.cc")
|
|
|
|
include_directories("${GTEST_SRC_DIR}/googletest")
|
|
|
|
else ()
|
|
|
|
add_subdirectory("${GTEST_SRC_DIR}" "${GTEST_BUILD_DIR}")
|
|
|
|
endif ()
|
2016-01-12 03:46:55 +01:00
|
|
|
include_directories("${GTEST_SRC_DIR}/googletest/include")
|
|
|
|
|
2017-01-19 17:40:31 +01:00
|
|
|
add_executable(mkvmuxer_tests ${mkvmuxer_tests_sources})
|
2016-08-23 19:29:30 +02:00
|
|
|
target_link_libraries(mkvmuxer_tests LINK_PUBLIC gtest webm)
|
2016-01-12 03:46:55 +01:00
|
|
|
|
2017-01-19 17:40:31 +01:00
|
|
|
add_executable(mkvparser_tests ${mkvparser_tests_sources})
|
2016-08-23 19:29:30 +02:00
|
|
|
target_link_libraries(mkvparser_tests LINK_PUBLIC gtest webm)
|
2016-01-21 20:50:37 +01:00
|
|
|
|
2017-01-19 17:40:31 +01:00
|
|
|
add_executable(vp9_header_parser_tests ${vp9_header_parser_tests_sources})
|
2016-04-15 21:40:41 +02:00
|
|
|
target_link_libraries(vp9_header_parser_tests LINK_PUBLIC gtest webm)
|
|
|
|
|
2017-01-19 17:40:31 +01:00
|
|
|
add_executable(vp9_level_stats_tests ${vp9_level_stats_tests_sources})
|
2016-04-16 03:15:09 +02:00
|
|
|
target_link_libraries(vp9_level_stats_tests LINK_PUBLIC gtest webm)
|
|
|
|
|
2016-02-24 19:03:37 +01:00
|
|
|
if (ENABLE_WEBMTS)
|
2017-01-19 17:40:31 +01:00
|
|
|
add_executable(webm2pes_tests ${webm2pes_tests_sources}
|
|
|
|
$<TARGET_OBJECTS:webmts>)
|
|
|
|
target_link_libraries(webm2pes_tests LINK_PUBLIC gtest webm)
|
2016-02-24 19:03:37 +01:00
|
|
|
endif ()
|
2016-06-16 22:51:59 +02:00
|
|
|
|
|
|
|
if (ENABLE_WEBM_PARSER)
|
|
|
|
include_directories("${GTEST_SRC_DIR}/googlemock/include")
|
2017-01-19 17:40:31 +01:00
|
|
|
add_executable(webm_parser_tests ${webm_parser_tests_sources})
|
2016-06-16 22:51:59 +02:00
|
|
|
target_link_libraries(webm_parser_tests LINK_PUBLIC gmock gtest webm)
|
|
|
|
endif ()
|
2016-02-24 19:03:37 +01:00
|
|
|
endif ()
|
2016-01-22 20:24:55 +01:00
|
|
|
|
2017-01-19 17:40:31 +01:00
|
|
|
# Include-what-you-use.
|
2016-03-10 22:22:51 +01:00
|
|
|
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 ()
|