Edit

kc3-lang/harfbuzz/src/harfbuzz-config.cmake.in

Branch :

  • Show log

    Commit

  • Author : Volker Krause
    Date : 2018-09-27 16:33:49
    Hash : 9e9a36ee
    Message : Fix infinite loop when walking up the directory hierarchy (#1183) A single find_package(harfbuzz) line in user code resulted in this loop getting stuck when _harfbuzz_libdir_iter became "/".

  • src/harfbuzz-config.cmake.in
  • # Set these variables so that the `${prefix}/lib` expands to something we can
    # remove.
    set(_harfbuzz_remove_string "REMOVE_ME")
    set(exec_prefix "${_harfbuzz_remove_string}")
    set(prefix "${_harfbuzz_remove_string}")
    
    # Compute the installation prefix by stripping components from our current
    # location.
    get_filename_component(_harfbuzz_prefix "${CMAKE_CURRENT_LIST_DIR}" DIRECTORY)
    get_filename_component(_harfbuzz_prefix "${_harfbuzz_prefix}" DIRECTORY)
    set(_harfbuzz_libdir "@libdir@")
    string(REPLACE "${_harfbuzz_remove_string}/" "" _harfbuzz_libdir "${_harfbuzz_libdir}")
    set(_harfbuzz_libdir_iter "${_harfbuzz_libdir}")
    while (_harfbuzz_libdir_iter)
      set(_harfbuzz_libdir_prev_iter "${_harfbuzz_libdir_iter}")
      get_filename_component(_harfbuzz_libdir_iter "${_harfbuzz_libdir_iter}" DIRECTORY)
      if (_harfbuzz_libdir_prev_iter STREQUAL _harfbuzz_libdir_iter)
        break()
      endif ()
      get_filename_component(_harfbuzz_prefix "${_harfbuzz_prefix}" DIRECTORY)
    endwhile ()
    unset(_harfbuzz_libdir_iter)
    
    # Get the include subdir.
    set(_harfbuzz_includedir "@includedir@")
    string(REPLACE "${_harfbuzz_remove_string}/" "" _harfbuzz_includedir "${_harfbuzz_includedir}")
    
    # Extract version information from libtool.
    set(_harfbuzz_version_info "@HB_LIBTOOL_VERSION_INFO@")
    string(REPLACE ":" ";" _harfbuzz_version_info "${_harfbuzz_version_info}")
    list(GET _harfbuzz_version_info 0
      _harfbuzz_current)
    list(GET _harfbuzz_version_info 1
      _harfbuzz_revision)
    list(GET _harfbuzz_version_info 2
      _harfbuzz_age)
    unset(_harfbuzz_version_info)
    
    if (APPLE)
      set(_harfbuzz_lib_suffix ".0${CMAKE_SHARED_LIBRARY_SUFFIX}")
    elseif (UNIX)
      set(_harfbuzz_lib_suffix "${CMAKE_SHARED_LIBRARY_SUFFIX}.0.${_harfbuzz_current}.${_harfbuzz_revision}")
    else ()
      # Unsupported.
      set(harfbuzz_FOUND 0)
    endif ()
    
    # Add the libraries.
    add_library(harfbuzz::harfbuzz SHARED IMPORTED)
    set_target_properties(harfbuzz::harfbuzz PROPERTIES
      INTERFACE_INCLUDE_DIRECTORIES "${_harfbuzz_prefix}/${_harfbuzz_includedir}/harfbuzz"
      IMPORTED_LOCATION "${_harfbuzz_prefix}/${_harfbuzz_libdir}/libharfbuzz${_harfbuzz_lib_suffix}")
    
    add_library(harfbuzz::icu SHARED IMPORTED)
    set_target_properties(harfbuzz::icu PROPERTIES
      INTERFACE_INCLUDE_DIRECTORIES "${_harfbuzz_prefix}/${_harfbuzz_includedir}/harfbuzz"
      INTERFACE_LINK_LIBRARIES "harfbuzz::harfbuzz"
      IMPORTED_LOCATION "${_harfbuzz_prefix}/${_harfbuzz_libdir}/libharfbuzz-icu${_harfbuzz_lib_suffix}")
    
    add_library(harfbuzz::subset SHARED IMPORTED)
    set_target_properties(harfbuzz::subset PROPERTIES
      INTERFACE_INCLUDE_DIRECTORIES "${_harfbuzz_prefix}/${_harfbuzz_includedir}/harfbuzz"
      INTERFACE_LINK_LIBRARIES "harfbuzz::harfbuzz"
      IMPORTED_LOCATION "${_harfbuzz_prefix}/${_harfbuzz_libdir}/libharfbuzz-subset${_harfbuzz_lib_suffix}")
    
    # Only add the gobject library if it was built.
    set(_harfbuzz_have_gobject "@have_gobject@")
    if (_harfbuzz_have_gobject)
      add_library(harfbuzz::gobject SHARED IMPORTED)
      set_target_properties(harfbuzz::gobject PROPERTIES
        INTERFACE_INCLUDE_DIRECTORIES "${_harfbuzz_prefix}/${_harfbuzz_includedir}/harfbuzz"
        INTERFACE_LINK_LIBRARIES "harfbuzz::harfbuzz"
        IMPORTED_LOCATION "${_harfbuzz_prefix}/${_harfbuzz_libdir}/libharfbuzz-gobject${_harfbuzz_lib_suffix}")
    endif ()
    
    # Clean out variables we used in our scope.
    unset(_harfbuzz_lib_suffix)
    unset(_harfbuzz_current)
    unset(_harfbuzz_revision)
    unset(_harfbuzz_age)
    unset(_harfbuzz_includedir)
    unset(_harfbuzz_libdir)
    unset(_harfbuzz_prefix)
    unset(exec_prefix)
    unset(prefix)
    unset(_harfbuzz_remove_string)