summaryrefslogtreecommitdiffstats
path: root/third_party/jpeg-xl/lib/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/jpeg-xl/lib/CMakeLists.txt')
-rw-r--r--third_party/jpeg-xl/lib/CMakeLists.txt168
1 files changed, 168 insertions, 0 deletions
diff --git a/third_party/jpeg-xl/lib/CMakeLists.txt b/third_party/jpeg-xl/lib/CMakeLists.txt
new file mode 100644
index 0000000000..a340288726
--- /dev/null
+++ b/third_party/jpeg-xl/lib/CMakeLists.txt
@@ -0,0 +1,168 @@
+# 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 9)
+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 9)
+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
+endif() #!MSVC
+
+# strips the -static suffix from all the elements in LIST
+function(strip_static OUTPUT_VAR LIB_LIST)
+ foreach(lib IN LISTS ${LIB_LIST})
+ string(REGEX REPLACE "-static$" "" lib "${lib}")
+ list(APPEND out_list "${lib}")
+ endforeach()
+ set(${OUTPUT_VAR} ${out_list} PARENT_SCOPE)
+endfunction()
+
+# The jxl library definition.
+include(jxl.cmake)
+
+# Other libraries outside the core jxl library.
+if(JPEGXL_ENABLE_TOOLS)
+ include(jxl_extras.cmake)
+endif()
+include(jxl_threads.cmake)
+find_package(JPEG)
+if (JPEG_FOUND AND JPEGXL_ENABLE_JPEGLI)
+ include(jpegli.cmake)
+endif()
+
+# 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}")
+
+if(BUILD_TESTING)
+ cmake_policy(SET CMP0057 NEW) # https://gitlab.kitware.com/cmake/cmake/issues/18198
+ include(GoogleTest)
+endif()
+
+# Tests for the jxl library.
+include(jxl_tests.cmake)
+
+if(BUILD_TESTING)
+ # Google benchmark for the jxl library
+ include(jxl_benchmark.cmake)
+endif()