diff options
author | qinxialei <xialeiqin@gmail.com> | 2020-10-29 11:26:59 +0800 |
---|---|---|
committer | qinxialei <xialeiqin@gmail.com> | 2020-10-29 11:26:59 +0800 |
commit | e8d277081293b6fb2a5d469616baaa7a06f52496 (patch) | |
tree | 1179bb07d3927d1837d4a90bd81b2034c4c696a9 /CMakeLists.txt | |
download | libgav1-e8d277081293b6fb2a5d469616baaa7a06f52496.tar.gz libgav1-e8d277081293b6fb2a5d469616baaa7a06f52496.tar.bz2 libgav1-e8d277081293b6fb2a5d469616baaa7a06f52496.zip |
Import Upstream version 0.16.0
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..5d00ae6 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,126 @@ +# Copyright 2019 The libgav1 Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# libgav1 requires modern CMake. +cmake_minimum_required(VERSION 3.7.1 FATAL_ERROR) + +# libgav1 requires C++11. +set(CMAKE_CXX_STANDARD 11) +set(ABSL_CXX_STANDARD 11) + +project(libgav1 CXX) + +set(libgav1_root "${CMAKE_CURRENT_SOURCE_DIR}") +set(libgav1_build "${CMAKE_BINARY_DIR}") + +if("${libgav1_root}" STREQUAL "${libgav1_build}") + message( + FATAL_ERROR + "Building from within the libgav1 source tree is not supported.\n" + "Hint: Run these commands\n" "$ rm -rf CMakeCache.txt CMakeFiles\n" + "$ mkdir -p ../libgav1_build\n" "$ cd ../libgav1_build\n" + "And re-run CMake from the libgav1_build directory.") +endif() + +set(libgav1_examples "${libgav1_root}/examples") +set(libgav1_source "${libgav1_root}/src") + +include(FindThreads) + +include("${libgav1_examples}/libgav1_examples.cmake") +include("${libgav1_root}/cmake/libgav1_build_definitions.cmake") +include("${libgav1_root}/cmake/libgav1_cpu_detection.cmake") +include("${libgav1_root}/cmake/libgav1_flags.cmake") +include("${libgav1_root}/cmake/libgav1_helpers.cmake") +include("${libgav1_root}/cmake/libgav1_install.cmake") +include("${libgav1_root}/cmake/libgav1_intrinsics.cmake") +include("${libgav1_root}/cmake/libgav1_options.cmake") +include("${libgav1_root}/cmake/libgav1_sanitizer.cmake") +include("${libgav1_root}/cmake/libgav1_targets.cmake") +include("${libgav1_root}/cmake/libgav1_variables.cmake") +include("${libgav1_source}/dsp/libgav1_dsp.cmake") +include("${libgav1_source}/libgav1_decoder.cmake") +include("${libgav1_source}/utils/libgav1_utils.cmake") + +libgav1_option(NAME LIBGAV1_ENABLE_OPTIMIZATIONS HELPSTRING + "Enables optimized code." VALUE ON) +libgav1_option(NAME LIBGAV1_ENABLE_AVX2 HELPSTRING + "Enables avx2 optimizations." VALUE ON) +libgav1_option(NAME LIBGAV1_ENABLE_NEON HELPSTRING "Enables neon optimizations." + VALUE ON) +libgav1_option(NAME LIBGAV1_ENABLE_SSE4_1 HELPSTRING + "Enables sse4.1 optimizations." VALUE ON) +libgav1_option( + NAME LIBGAV1_VERBOSE HELPSTRING + "Enables verbose build system output. Higher numbers are more verbose." VALUE + OFF) + +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release) +endif() + +libgav1_optimization_detect() +libgav1_set_build_definitions() +libgav1_set_cxx_flags() +libgav1_configure_sanitizer() + +# Supported bit depth. +libgav1_track_configuration_variable(LIBGAV1_MAX_BITDEPTH) + +# C++ and linker flags. +libgav1_track_configuration_variable(LIBGAV1_CXX_FLAGS) +libgav1_track_configuration_variable(LIBGAV1_EXE_LINKER_FLAGS) + +# Sanitizer integration. +libgav1_track_configuration_variable(LIBGAV1_SANITIZE) + +# Generated source file directory. +libgav1_track_configuration_variable(LIBGAV1_GENERATED_SOURCES_DIRECTORY) + +# Controls use of std::mutex and absl::Mutex in ThreadPool. +libgav1_track_configuration_variable(LIBGAV1_THREADPOOL_USE_STD_MUTEX) + +if(LIBGAV1_VERBOSE) + libgav1_dump_cmake_flag_variables() + libgav1_dump_tracked_configuration_variables() + libgav1_dump_options() +endif() + +set(libgav1_abseil_build "${libgav1_build}/abseil") +set(libgav1_gtest_build "${libgav1_build}/gtest") + +# Compiler/linker flags must be lists, but come in from the environment as +# strings. Break them up: +if(NOT "${LIBGAV1_CXX_FLAGS}" STREQUAL "") + separate_arguments(LIBGAV1_CXX_FLAGS) +endif() +if(NOT "${LIBGAV1_EXE_LINKER_FLAGS}" STREQUAL "") + separate_arguments(LIBGAV1_EXE_LINKER_FLAGS) +endif() + +add_subdirectory("${libgav1_root}/third_party/abseil-cpp" + "${libgav1_abseil_build}" EXCLUDE_FROM_ALL) + +libgav1_reset_target_lists() +libgav1_add_dsp_targets() +libgav1_add_decoder_targets() +libgav1_add_examples_targets() +libgav1_add_utils_targets() +libgav1_setup_install_target() + +if(LIBGAV1_VERBOSE) + libgav1_dump_cmake_flag_variables() + libgav1_dump_tracked_configuration_variables() + libgav1_dump_options() +endif() |