| ## 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 2.8) |
| project(LIBWEBM) |
| include("${CMAKE_CURRENT_SOURCE_DIR}/build/msvc_runtime.cmake") |
| |
| set(LIBWEBM_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}") |
| |
| # Enable C++11 support. |
| set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}" CACHE STRING "" FORCE) |
| |
| # Turn up the warning levels. |
| if(MSVC) |
| set(CMAKE_CXX_FLAGS "/W4 ${CMAKE_CXX_FLAGS}" CACHE STRING "" FORCE) |
| else () |
| set(CMAKE_CXX_FLAGS "-Wall -Wextra ${CMAKE_CXX_FLAGS}" CACHE STRING "" FORCE) |
| endif() |
| |
| # Test configuration flags. Defined here for visibility. |
| option(ENABLE_TESTS "Enables tests." 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") |
| |
| # Libwebm section. |
| add_library(webm STATIC |
| "${LIBWEBM_SRC_DIR}/mkvmuxer.cpp" |
| "${LIBWEBM_SRC_DIR}/mkvmuxer.hpp" |
| "${LIBWEBM_SRC_DIR}/mkvmuxertypes.hpp" |
| "${LIBWEBM_SRC_DIR}/mkvmuxerutil.cpp" |
| "${LIBWEBM_SRC_DIR}/mkvmuxerutil.hpp" |
| "${LIBWEBM_SRC_DIR}/mkvparser.cpp" |
| "${LIBWEBM_SRC_DIR}/mkvparser.hpp" |
| "${LIBWEBM_SRC_DIR}/mkvreader.cpp" |
| "${LIBWEBM_SRC_DIR}/mkvreader.hpp" |
| "${LIBWEBM_SRC_DIR}/mkvwriter.cpp" |
| "${LIBWEBM_SRC_DIR}/mkvwriter.hpp" |
| "${LIBWEBM_SRC_DIR}/webmids.hpp") |
| 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(WIN32) |
| |
| include_directories("${LIBWEBM_SRC_DIR}") |
| |
| # Sample section. |
| add_executable(sample |
| "${LIBWEBM_SRC_DIR}/sample.cpp") |
| target_link_libraries(sample LINK_PUBLIC webm) |
| |
| # Sample muxer section. |
| add_executable(sample_muxer |
| "${LIBWEBM_SRC_DIR}/sample_muxer.cpp" |
| "${LIBWEBM_SRC_DIR}/sample_muxer_metadata.cc" |
| "${LIBWEBM_SRC_DIR}/sample_muxer_metadata.h" |
| "${LIBWEBM_SRC_DIR}/vttreader.cc" |
| "${LIBWEBM_SRC_DIR}/vttreader.h" |
| "${LIBWEBM_SRC_DIR}/webvttparser.cc" |
| "${LIBWEBM_SRC_DIR}/webvttparser.h") |
| target_link_libraries(sample_muxer LINK_PUBLIC webm) |
| |
| # Vttdemux section. |
| add_executable(vttdemux |
| "${LIBWEBM_SRC_DIR}/vttdemux.cc" |
| "${LIBWEBM_SRC_DIR}/webvttparser.cc" |
| "${LIBWEBM_SRC_DIR}/webvttparser.h") |
| target_link_libraries(vttdemux LINK_PUBLIC webm) |
| |
| # webm2pes section. |
| add_executable(webm2pes |
| "${LIBWEBM_SRC_DIR}/common/libwebm_utils.cc" |
| "${LIBWEBM_SRC_DIR}/common/libwebm_utils.h" |
| "${LIBWEBM_SRC_DIR}/webm2pes.cc" |
| "${LIBWEBM_SRC_DIR}/webm2pes.h" |
| "${LIBWEBM_SRC_DIR}/webm2pes_main.cc") |
| target_link_libraries(webm2pes LINK_PUBLIC webm) |
| |
| # webm2ts section. |
| add_executable(webm2ts |
| "${LIBWEBM_SRC_DIR}/common/libwebm_utils.cc" |
| "${LIBWEBM_SRC_DIR}/common/libwebm_utils.h" |
| "${LIBWEBM_SRC_DIR}/vpxpes2ts.cc" |
| "${LIBWEBM_SRC_DIR}/vpxpes2ts.h" |
| "${LIBWEBM_SRC_DIR}/webm2pes.cc" |
| "${LIBWEBM_SRC_DIR}/webm2pes.h" |
| "${LIBWEBM_SRC_DIR}/vpxpes2ts_main.cc") |
| target_link_libraries(webm2ts LINK_PUBLIC webm) |
| |
| if (ENABLE_TESTS) |
| add_subdirectory("${GTEST_SRC_DIR}" "${GTEST_BUILD_DIR}") |
| include_directories("${GTEST_SRC_DIR}/googletest/include") |
| |
| add_executable(muxer_tests |
| "${LIBWEBM_SRC_DIR}/testing/muxer_tests.cc" |
| "${LIBWEBM_SRC_DIR}/testing/test_util.cc" |
| "${LIBWEBM_SRC_DIR}/testing/test_util.h") |
| target_link_libraries(muxer_tests LINK_PUBLIC webm gtest) |
| |
| add_executable(parser_tests |
| "${LIBWEBM_SRC_DIR}/testing/parser_tests.cc" |
| "${LIBWEBM_SRC_DIR}/testing/test_util.cc" |
| "${LIBWEBM_SRC_DIR}/testing/test_util.h") |
| target_link_libraries(parser_tests LINK_PUBLIC webm gtest) |
| |
| add_executable(webm2pes_tests |
| "${LIBWEBM_SRC_DIR}/common/libwebm_utils.cc" |
| "${LIBWEBM_SRC_DIR}/common/libwebm_utils.h" |
| "${LIBWEBM_SRC_DIR}/testing/test_util.cc" |
| "${LIBWEBM_SRC_DIR}/testing/test_util.h" |
| "${LIBWEBM_SRC_DIR}/webm2pes.cc" |
| "${LIBWEBM_SRC_DIR}/webm2pes.h" |
| "${LIBWEBM_SRC_DIR}/testing/webm2pes_tests.cc") |
| target_link_libraries(webm2pes_tests LINK_PUBLIC webm gtest) |
| endif (ENABLE_TESTS) |
| |