libjxl

FORK: libjxl patches used on blog
git clone https://git.neptards.moe/blog/libjxl.git
Log | Files | Refs | Submodules | README | LICENSE

CMakeLists.txt (7609B)


      1 # Copyright (c) the JPEG XL Project
      2 #
      3 # Licensed under the Apache License, Version 2.0 (the "License");
      4 # you may not use this file except in compliance with the License.
      5 # You may obtain a copy of the License at
      6 #
      7 #      http://www.apache.org/licenses/LICENSE-2.0
      8 #
      9 # Unless required by applicable law or agreed to in writing, software
     10 # distributed under the License is distributed on an "AS IS" BASIS,
     11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 # See the License for the specific language governing permissions and
     13 # limitations under the License.
     14 
     15 if((SANITIZER STREQUAL "asan") OR (SANITIZER STREQUAL "msan"))
     16   set(BUILD_TESTING OFF)
     17 endif()
     18 
     19 # Highway
     20 set(HWY_SYSTEM_GTEST ON CACHE INTERNAL "")
     21 set(HWY_FORCE_STATIC_LIBS ON CACHE INTERNAL "")
     22 set(HWY_ENABLE_CONTRIB OFF CACHE INTERNAL "")
     23 set(HWY_ENABLE_EXAMPLES OFF CACHE INTERNAL "")
     24 set(HWY_ENABLE_TESTS OFF CACHE INTERNAL "")
     25 if((SANITIZER STREQUAL "asan") OR (SANITIZER STREQUAL "msan"))
     26   set(HWY_ENABLE_INSTALL OFF CACHE INTERNAL "")
     27 endif()
     28 if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/highway/CMakeLists.txt" AND
     29     NOT JPEGXL_FORCE_SYSTEM_HWY)
     30   add_subdirectory(highway)
     31   configure_file("${CMAKE_CURRENT_SOURCE_DIR}/highway/LICENSE"
     32                  ${PROJECT_BINARY_DIR}/LICENSE.highway COPYONLY)
     33 else()
     34   find_package(HWY 1.0.7)
     35   if (NOT HWY_FOUND)
     36     message(FATAL_ERROR
     37         "Highway library (hwy) not found. Install libhwy-dev or download it "
     38         "to third_party/highway from https://github.com/google/highway . "
     39         "Highway is required to build JPEG XL. You can run "
     40         "${PROJECT_SOURCE_DIR}/deps.sh to download this dependency.")
     41   endif()
     42   if(JPEGXL_DEP_LICENSE_DIR)
     43     configure_file("${JPEGXL_DEP_LICENSE_DIR}/libhwy-dev/copyright"
     44                    ${PROJECT_BINARY_DIR}/LICENSE.highway COPYONLY)
     45   endif()  # JPEGXL_DEP_LICENSE_DIR
     46 endif()
     47 
     48 # brotli
     49 if (NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/brotli/c/include/brotli/decode.h" OR
     50     JPEGXL_FORCE_SYSTEM_BROTLI)
     51   find_package(Brotli)
     52   if (NOT Brotli_FOUND)
     53     message(FATAL_ERROR
     54         "Brotli not found, install brotli-dev or download brotli source code to"
     55         " third_party/brotli from https://github.com/google/brotli. You can use"
     56         " ${PROJECT_SOURCE_DIR}/deps.sh to download this dependency.")
     57   endif ()
     58   if(JPEGXL_DEP_LICENSE_DIR)
     59     configure_file("${JPEGXL_DEP_LICENSE_DIR}/libbrotli-dev/copyright"
     60                    ${PROJECT_BINARY_DIR}/LICENSE.brotli COPYONLY)
     61   endif()  # JPEGXL_DEP_LICENSE_DIR
     62 else()
     63   # Compile brotli from sources.
     64   set(BROTLI_DISABLE_TESTS ON CACHE STRING "Disable Brotli tests")
     65   # Override default "no-install" policy.
     66   if((NOT SANITIZER STREQUAL "asan") AND (NOT SANITIZER STREQUAL "msan"))
     67     set(BROTLI_BUNDLED_MODE OFF CACHE INTERNAL "")
     68   endif()
     69   add_subdirectory(brotli)
     70   configure_file("${CMAKE_CURRENT_SOURCE_DIR}/brotli/LICENSE"
     71                  ${PROJECT_BINARY_DIR}/LICENSE.brotli COPYONLY)
     72   if(APPLE)
     73     if(NOT DEFINED CMAKE_MACOSX_RPATH)
     74       # Use @rpath in install_name when CMAKE_MACOSX_RPATH is not set.
     75       set_property(TARGET brotlienc PROPERTY MACOSX_RPATH TRUE)
     76       set_property(TARGET brotlidec PROPERTY MACOSX_RPATH TRUE)
     77       set_property(TARGET brotlicommon PROPERTY MACOSX_RPATH TRUE)
     78     endif()
     79     if((NOT DEFINED CMAKE_MACOSX_RPATH) OR CMAKE_MACOSX_RPATH)
     80       # Set library search path when @rpath is used.
     81       if(NOT DEFINED CMAKE_INSTALL_RPATH)
     82         set_property(TARGET brotlienc PROPERTY INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
     83         set_property(TARGET brotlidec PROPERTY INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
     84         set_property(TARGET brotlicommon PROPERTY INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
     85       endif()
     86     else()
     87       # Set conventional install_name when @rpath is not used.
     88       if(NOT DEFINED CMAKE_INSTALL_NAME_DIR)
     89         set_property(TARGET brotlienc PROPERTY INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib")
     90         set_property(TARGET brotlidec PROPERTY INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib")
     91         set_property(TARGET brotlicommon PROPERTY INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib")
     92       endif()
     93     endif()
     94   endif()  # APPLE
     95 endif()
     96 
     97 # *cms
     98 if (JPEGXL_ENABLE_SKCMS)
     99   if( NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/skcms/skcms.h" )
    100     message(FATAL_ERROR "Please run ${PROJECT_SOURCE_DIR}/deps.sh to fetch the "
    101             "build dependencies.")
    102   endif()
    103   include(skcms.cmake)
    104   configure_file("${CMAKE_CURRENT_SOURCE_DIR}/skcms/LICENSE"
    105                  ${PROJECT_BINARY_DIR}/LICENSE.skcms COPYONLY)
    106 endif ()
    107 if (JPEGXL_ENABLE_VIEWERS OR NOT JPEGXL_ENABLE_SKCMS OR JPEGXL_ENABLE_PLUGINS)
    108   if( NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/lcms/.git" OR JPEGXL_FORCE_SYSTEM_LCMS2 )
    109     find_package(LCMS2 2.12)
    110     if ( NOT LCMS2_FOUND )
    111       message(FATAL_ERROR "Please install lcms2 or run git submodule update --init")
    112     endif ()
    113   else()
    114     include(lcms2.cmake)
    115     configure_file("${CMAKE_CURRENT_SOURCE_DIR}/lcms/COPYING"
    116                    ${PROJECT_BINARY_DIR}/LICENSE.lcms COPYONLY)
    117   endif()
    118 endif()
    119 
    120 # libpng
    121 if (JPEGXL_BUNDLE_LIBPNG AND EMSCRIPTEN)
    122   if (NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/libpng/CMakeLists.txt")
    123   message(FATAL_ERROR "Please run ${PROJECT_SOURCE_DIR}/deps.sh to fetch the "
    124           "build dependencies.")
    125   endif()
    126   file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/libpng/scripts/pnglibconf.h.prebuilt" DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/libpng")
    127   file(RENAME "${CMAKE_CURRENT_SOURCE_DIR}/libpng/pnglibconf.h.prebuilt" "${CMAKE_CURRENT_SOURCE_DIR}/libpng/pnglibconf.h")
    128   set(ZLIB_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/zlib/")
    129   set(ZLIB_LIBRARIES "")
    130   set(PNG_FOUND YES PARENT_SCOPE)
    131   set(PNG_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/libpng/" PARENT_SCOPE)
    132   set(PNG_LIBRARIES "" PARENT_SCOPE)
    133 elseif (JPEGXL_BUNDLE_LIBPNG)
    134   if (NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/libpng/CMakeLists.txt")
    135     message(FATAL_ERROR "Please run ${PROJECT_SOURCE_DIR}/deps.sh to fetch the "
    136             "build dependencies.")
    137   endif()
    138   add_subdirectory(zlib)
    139   set(PNG_STATIC ON CACHE BOOL "")
    140   set(PNG_EXECUTABLES OFF CACHE BOOL "")
    141   set(PNG_BUILD_ZLIB ON CACHE BOOL "")
    142   set(PNG_TESTS OFF CACHE BOOL "")
    143   set(SKIP_INSTALL_ALL ON CACHE BOOL "")
    144   set(ZLIB_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/zlib/")
    145   set(ZLIB_LIBRARIES zlibstatic)
    146   add_subdirectory(libpng EXCLUDE_FROM_ALL)
    147   set(PNG_FOUND YES PARENT_SCOPE)
    148   set(PNG_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/libpng/" PARENT_SCOPE)
    149   set(PNG_LIBRARIES png_static PARENT_SCOPE)
    150   set_property(TARGET png_static PROPERTY POSITION_INDEPENDENT_CODE ON)
    151   set_property(TARGET zlibstatic PROPERTY POSITION_INDEPENDENT_CODE ON)
    152   if(JPEGXL_DEP_LICENSE_DIR)
    153     configure_file("${CMAKE_CURRENT_SOURCE_DIR}/libpng/LICENSE"
    154                    ${PROJECT_BINARY_DIR}/LICENSE.libpng COPYONLY)
    155   endif()
    156 else()
    157   find_package(PNG)
    158   if(PNG_FOUND AND JPEGXL_DEP_LICENSE_DIR)
    159     configure_file("${JPEGXL_DEP_LICENSE_DIR}/zlib1g-dev/copyright"
    160                    ${PROJECT_BINARY_DIR}/LICENSE.zlib COPYONLY)
    161     configure_file("${JPEGXL_DEP_LICENSE_DIR}/libpng-dev/copyright"
    162                    ${PROJECT_BINARY_DIR}/LICENSE.libpng COPYONLY)
    163   endif()  # JPEGXL_DEP_LICENSE_DIR
    164 endif()
    165 
    166 # sjpeg
    167 if (JPEGXL_ENABLE_SJPEG)
    168   if (NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/sjpeg/CMakeLists.txt")
    169     message(FATAL_ERROR "Please run ${PROJECT_SOURCE_DIR}/deps.sh to fetch the "
    170             "build dependencies.")
    171   endif()
    172   include(sjpeg.cmake)
    173   configure_file("${CMAKE_CURRENT_SOURCE_DIR}/sjpeg/COPYING"
    174                  ${PROJECT_BINARY_DIR}/LICENSE.sjpeg COPYONLY)
    175 endif ()