summaryrefslogtreecommitdiff
path: root/media/libjxl/src/lib/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'media/libjxl/src/lib/CMakeLists.txt')
-rw-r--r--media/libjxl/src/lib/CMakeLists.txt164
1 files changed, 164 insertions, 0 deletions
diff --git a/media/libjxl/src/lib/CMakeLists.txt b/media/libjxl/src/lib/CMakeLists.txt
new file mode 100644
index 0000000000..4bb4ebd35e
--- /dev/null
+++ b/media/libjxl/src/lib/CMakeLists.txt
@@ -0,0 +1,164 @@
+# Copyright (c) the JPEG XL 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.
+
+set(JPEGXL_MAJOR_VERSION 0)
+set(JPEGXL_MINOR_VERSION 7)
+set(JPEGXL_PATCH_VERSION 0)
+set(JPEGXL_LIBRARY_VERSION
+ "${JPEGXL_MAJOR_VERSION}.${JPEGXL_MINOR_VERSION}.${JPEGXL_PATCH_VERSION}")
+
+# This is the library API/ABI compatibility version. Changing this value makes
+# the shared library incompatible with previous version. A program linked
+# against this shared library SOVERSION will not run with an older SOVERSION.
+# It is important to update this value when making incompatible API/ABI changes
+# so that programs that depend on libjxl can update their dependencies. Semantic
+# versioning allows 0.y.z to have incompatible changes in minor versions.
+set(JPEGXL_SO_MINOR_VERSION 7)
+if (JPEGXL_MAJOR_VERSION EQUAL 0)
+set(JPEGXL_LIBRARY_SOVERSION
+ "${JPEGXL_MAJOR_VERSION}.${JPEGXL_SO_MINOR_VERSION}")
+else()
+set(JPEGXL_LIBRARY_SOVERSION "${JPEGXL_MAJOR_VERSION}")
+endif()
+
+
+# List of warning and feature flags for our library and tests.
+if (MSVC)
+set(JPEGXL_INTERNAL_FLAGS
+ # TODO(janwas): add flags
+)
+else ()
+set(JPEGXL_INTERNAL_FLAGS
+ # F_FLAGS
+ -fmerge-all-constants
+ -fno-builtin-fwrite
+ -fno-builtin-fread
+
+ # WARN_FLAGS
+ -Wall
+ -Wextra
+ -Wc++11-compat
+ -Warray-bounds
+ -Wformat-security
+ -Wimplicit-fallthrough
+ -Wno-register # Needed by public headers in lcms
+ -Wno-unused-function
+ -Wno-unused-parameter
+ -Wnon-virtual-dtor
+ -Woverloaded-virtual
+ -Wvla
+)
+
+# Warning flags supported by clang.
+if (${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
+ list(APPEND JPEGXL_INTERNAL_FLAGS
+ -Wdeprecated-increment-bool
+ # TODO(deymo): Add -Wextra-semi once we update third_party/highway.
+ # -Wextra-semi
+ -Wfloat-overflow-conversion
+ -Wfloat-zero-conversion
+ -Wfor-loop-analysis
+ -Wgnu-redeclared-enum
+ -Winfinite-recursion
+ -Wliteral-conversion
+ -Wno-c++98-compat
+ -Wno-unused-command-line-argument
+ -Wprivate-header
+ -Wself-assign
+ -Wstring-conversion
+ -Wtautological-overlap-compare
+ -Wthread-safety-analysis
+ -Wundefined-func-template
+ -Wunreachable-code
+ -Wunused-comparison
+ )
+ if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.0)
+ list(APPEND HWY_FLAGS -Wc++2a-extensions)
+ endif()
+endif() # Clang
+
+if (WIN32)
+ list(APPEND JPEGXL_INTERNAL_FLAGS
+ -Wno-cast-align
+ -Wno-double-promotion
+ -Wno-float-equal
+ -Wno-format-nonliteral
+ -Wno-shadow
+ -Wno-sign-conversion
+ -Wno-zero-as-null-pointer-constant
+ )
+
+ if (${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
+ list(APPEND JPEGXL_INTERNAL_FLAGS
+ -Wno-used-but-marked-unused
+ -Wno-unused-template
+ -Wno-unused-member-function
+ -Wno-shadow-field-in-constructor
+ -Wno-language-extension-token
+ -Wno-global-constructors
+ -Wno-c++98-compat-pedantic
+ )
+ endif() # Clang
+else() # WIN32
+ list(APPEND JPEGXL_INTERNAL_FLAGS
+ -fsized-deallocation
+ -fno-exceptions
+
+ # Language flags
+ -fmath-errno
+ )
+
+ if (${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
+ list(APPEND JPEGXL_INTERNAL_FLAGS
+ -fnew-alignment=8
+ -fno-cxx-exceptions
+ -fno-slp-vectorize
+ -fno-vectorize
+
+ -disable-free
+ -disable-llvm-verifier
+ )
+ endif() # Clang
+endif() # WIN32
+
+# Internal flags for coverage builds:
+if(JPEGXL_ENABLE_COVERAGE)
+set(JPEGXL_COVERAGE_FLAGS
+ -g -O0 -fprofile-arcs -ftest-coverage
+ -DJXL_ENABLE_ASSERT=0 -DJXL_ENABLE_CHECK=0
+)
+endif() # JPEGXL_ENABLE_COVERAGE
+endif() #!MSVC
+
+# The jxl library definition.
+include(jxl.cmake)
+
+# Other libraries outside the core jxl library.
+include(jxl_extras.cmake)
+include(jxl_threads.cmake)
+
+# Install all the library headers from the source and the generated ones. There
+# is no distinction on which libraries use which header since it is expected
+# that all developer libraries are available together at build time.
+install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/jxl
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
+install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/jxl
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
+
+# Profiler for libjxl
+include(jxl_profiler.cmake)
+
+if(BUILD_TESTING)
+# Unittests
+cmake_policy(SET CMP0057 NEW) # https://gitlab.kitware.com/cmake/cmake/issues/18198
+include(GoogleTest)
+
+# Tests for the jxl library.
+include(jxl_tests.cmake)
+
+# Google benchmark for the jxl library
+include(jxl_benchmark.cmake)
+
+endif() # BUILD_TESTING