libjxl

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

FindHWY.cmake (2137B)


      1 # Copyright (c) the JPEG XL Project Authors. All rights reserved.
      2 #
      3 # Use of this source code is governed by a BSD-style
      4 # license that can be found in the LICENSE file.
      5 
      6 find_package(PkgConfig QUIET)
      7 if (PkgConfig_FOUND)
      8   pkg_check_modules(PC_HWY QUIET libhwy)
      9   set(HWY_VERSION ${PC_HWY_VERSION})
     10 endif ()
     11 
     12 find_path(HWY_INCLUDE_DIR
     13   NAMES hwy/highway.h
     14   HINTS ${PC_HWY_INCLUDEDIR} ${PC_HWY_INCLUDE_DIRS}
     15 )
     16 
     17 find_library(HWY_LIBRARY
     18   NAMES ${HWY_NAMES} hwy
     19   HINTS ${PC_HWY_LIBDIR} ${PC_HWY_LIBRARY_DIRS}
     20 )
     21 
     22 if (HWY_INCLUDE_DIR AND NOT HWY_VERSION)
     23   if (EXISTS "${HWY_INCLUDE_DIR}/hwy/highway.h")
     24     file(READ "${HWY_INCLUDE_DIR}/hwy/highway.h" HWY_VERSION_CONTENT)
     25 
     26     string(REGEX MATCH "#define HWY_MAJOR +([0-9]+)" _sink "${HWY_VERSION_CONTENT}")
     27     set(HWY_VERSION_MAJOR "${CMAKE_MATCH_1}")
     28 
     29     string(REGEX MATCH "#define +HWY_MINOR +([0-9]+)" _sink "${HWY_VERSION_CONTENT}")
     30     set(HWY_VERSION_MINOR "${CMAKE_MATCH_1}")
     31 
     32     string(REGEX MATCH "#define +HWY_PATCH +([0-9]+)" _sink "${HWY_VERSION_CONTENT}")
     33     set(HWY_VERSION_PATCH "${CMAKE_MATCH_1}")
     34 
     35     set(HWY_VERSION "${HWY_VERSION_MAJOR}.${HWY_VERSION_MINOR}.${HWY_VERSION_PATCH}")
     36   endif ()
     37 endif ()
     38 
     39 include(FindPackageHandleStandardArgs)
     40 find_package_handle_standard_args(HWY
     41   FOUND_VAR HWY_FOUND
     42   REQUIRED_VARS HWY_LIBRARY HWY_INCLUDE_DIR
     43   VERSION_VAR HWY_VERSION
     44 )
     45 
     46 if (HWY_LIBRARY AND NOT TARGET hwy)
     47   add_library(hwy INTERFACE IMPORTED GLOBAL)
     48 
     49   if(CMAKE_VERSION VERSION_LESS "3.13.5")
     50     set_property(TARGET hwy PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${HWY_INCLUDE_DIR})
     51     target_link_libraries(hwy INTERFACE ${HWY_LIBRARY})
     52     set_property(TARGET hwy PROPERTY INTERFACE_COMPILE_OPTIONS ${PC_HWY_CFLAGS_OTHER})
     53   else()
     54     target_include_directories(hwy INTERFACE ${HWY_INCLUDE_DIR})
     55     target_link_libraries(hwy INTERFACE ${HWY_LIBRARY})
     56     target_link_options(hwy INTERFACE ${PC_HWY_LDFLAGS_OTHER})
     57     target_compile_options(hwy INTERFACE ${PC_HWY_CFLAGS_OTHER})
     58   endif()
     59 endif()
     60 
     61 mark_as_advanced(HWY_INCLUDE_DIR HWY_LIBRARY)
     62 
     63 if (HWY_FOUND)
     64     set(HWY_LIBRARIES ${HWY_LIBRARY})
     65     set(HWY_INCLUDE_DIRS ${HWY_INCLUDE_DIR})
     66 endif ()