Bug 1864652 - Expose settings for Global Privacy Control. r=geckoview-reviewers,ohall...
[gecko.git] / third_party / jpeg-xl / cmake / FindHWY.cmake
blobc1deb9b8516b4bc2068227fdf7c96623a0ddcfa4
1 # Copyright (c) the JPEG XL Project Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style
4 # license that can be found in the LICENSE file.
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 ()
12 find_path(HWY_INCLUDE_DIR
13   NAMES hwy/highway.h
14   HINTS ${PC_HWY_INCLUDEDIR} ${PC_HWY_INCLUDE_DIRS}
17 find_library(HWY_LIBRARY
18   NAMES ${HWY_NAMES} hwy
19   HINTS ${PC_HWY_LIBDIR} ${PC_HWY_LIBRARY_DIRS}
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)
26     string(REGEX MATCH "#define HWY_MAJOR +([0-9]+)" _dummy "${HWY_VERSION_CONTENT}")
27     set(HWY_VERSION_MAJOR "${CMAKE_MATCH_1}")
29     string(REGEX MATCH "#define +HWY_MINOR +([0-9]+)" _dummy "${HWY_VERSION_CONTENT}")
30     set(HWY_VERSION_MINOR "${CMAKE_MATCH_1}")
32     string(REGEX MATCH "#define +HWY_PATCH +([0-9]+)" _dummy "${HWY_VERSION_CONTENT}")
33     set(HWY_VERSION_PATCH "${CMAKE_MATCH_1}")
35     set(HWY_VERSION "${HWY_VERSION_MAJOR}.${HWY_VERSION_MINOR}.${HWY_VERSION_PATCH}")
36   endif ()
37 endif ()
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
46 if (HWY_LIBRARY AND NOT TARGET hwy)
47   add_library(hwy INTERFACE IMPORTED GLOBAL)
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()
61 mark_as_advanced(HWY_INCLUDE_DIR HWY_LIBRARY)
63 if (HWY_FOUND)
64     set(HWY_LIBRARIES ${HWY_LIBRARY})
65     set(HWY_INCLUDE_DIRS ${HWY_INCLUDE_DIR})
66 endif ()