tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

FindBrotli.cmake (2259B)


      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 set(brlibs brotlicommon brotlienc brotlidec)
      7 
      8 find_package(PkgConfig QUIET)
      9 if (PkgConfig_FOUND)
     10  foreach(brlib IN ITEMS ${brlibs})
     11    string(TOUPPER "${brlib}" BRPREFIX)
     12    pkg_check_modules("PC_${BRPREFIX}" lib${brlib})
     13  endforeach()
     14 endif()
     15 
     16 find_path(BROTLI_INCLUDE_DIR
     17  NAMES brotli/decode.h
     18  HINTS ${PC_BROTLICOMMON_INCLUDEDIR} ${PC_BROTLICOMMON_INCLUDE_DIRS}
     19 )
     20 
     21 foreach(brlib IN ITEMS ${brlibs})
     22  string(TOUPPER "${brlib}" BRPREFIX)
     23  find_library(${BRPREFIX}_LIBRARY
     24    NAMES ${${BRPREFIX}_NAMES} ${brlib}
     25    HINTS ${PC_${BRPREFIX}_LIBDIR} ${PC_${BRPREFIX}_LIBRARY_DIRS}
     26  )
     27 
     28  if (${BRPREFIX}_LIBRARY AND NOT TARGET ${brlib})
     29    if(CMAKE_VERSION VERSION_LESS "3.13.5")
     30    add_library(${brlib} INTERFACE IMPORTED GLOBAL)
     31      set_property(TARGET ${brlib} PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${BROTLI_INCLUDE_DIR})
     32      target_link_libraries(${brlib} INTERFACE ${${BRPREFIX}_LIBRARY})
     33      set_property(TARGET ${brlib} PROPERTY INTERFACE_COMPILE_OPTIONS ${PC_${BRPREFIX}_CFLAGS_OTHER})
     34    else()
     35    add_library(${brlib} INTERFACE IMPORTED GLOBAL)
     36      target_include_directories(${brlib}
     37        INTERFACE ${BROTLI_INCLUDE_DIR})
     38      target_link_libraries(${brlib}
     39        INTERFACE ${${BRPREFIX}_LIBRARY})
     40      target_link_options(${brlib}
     41        INTERFACE ${PC_${BRPREFIX}_LDFLAGS_OTHER})
     42      target_compile_options(${brlib}
     43        INTERFACE ${PC_${BRPREFIX}_CFLAGS_OTHER})
     44    endif()
     45  endif()
     46 endforeach()
     47 
     48 if (BROTLICOMMON_FOUND AND BROTLIENC_FOUND AND BROTLIDEC_FOUND)
     49  set(Brotli_FOUND ON)
     50 else ()
     51  set(Brotli_FOUND OFF)
     52 endif()
     53 
     54 include(FindPackageHandleStandardArgs)
     55 find_package_handle_standard_args(Brotli
     56  FOUND_VAR Brotli_FOUND
     57  REQUIRED_VARS
     58    BROTLI_INCLUDE_DIR
     59    BROTLICOMMON_LIBRARY
     60    BROTLIENC_LIBRARY
     61    BROTLIDEC_LIBRARY
     62  VERSION_VAR Brotli_VERSION
     63 )
     64 
     65 mark_as_advanced(
     66  BROTLI_INCLUDE_DIR
     67  BROTLICOMMON_LIBRARY
     68  BROTLIENC_LIBRARY
     69  BROTLIDEC_LIBRARY
     70 )
     71 
     72 if (Brotli_FOUND)
     73  set(Brotli_LIBRARIES ${BROTLICOMMON_LIBRARY} ${BROTLIENC_LIBRARY} ${BROTLIDEC_LIBRARY})
     74  set(Brotli_INCLUDE_DIRS ${BROTLI_INCLUDE_DIR})
     75 endif()