# SPDX-License-Identifier: BSD-3-Clause
# Copyright 2012 Blender Foundation.

# - Find static icu libraries
# Find the native static icu libraries (needed for static boost_locale :/ ).
# This module defines
#  ICU_LIBRARIES, libraries to link against to use icu.
#  ICU_ROOT_DIR, The base directory to search for icu.
#                    This can also be an environment variable.
#  ICU_FOUND, If false, do not try to use icu.
#
# also defined, but not for general use are
#  ICU_LIBRARY_xxx, where to find the icu libraries.

# If ICU_ROOT_DIR was defined in the environment, use it.
IF(NOT ICU_ROOT_DIR AND NOT $ENV{ICU_ROOT_DIR} STREQUAL "")
  SET(ICU_ROOT_DIR $ENV{ICU_ROOT_DIR})
ENDIF()

if(Boost_USE_STATIC_LIBS)
  set(_icu_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
  set(CMAKE_FIND_LIBRARY_SUFFIXES .a)
endif()

SET(_icu_SEARCH_DIRS
  ${ICU_ROOT_DIR}
)

# We don't need includes, only libs to link against...
# FIND_PATH(ICU_INCLUDE_DIR
#   NAMES
#     utf.h
#   HINTS
#     ${_icu_SEARCH_DIRS}
#   PATH_SUFFIXES
#     include/unicode
# )

FIND_LIBRARY(ICU_LIBRARY_DATA
  NAMES
    icudata
  HINTS
    ${_icu_SEARCH_DIRS}
  PATH_SUFFIXES
    lib64 lib
  )

FIND_LIBRARY(ICU_LIBRARY_I18N
  NAMES
    icui18n
  HINTS
    ${_icu_SEARCH_DIRS}
  PATH_SUFFIXES
    lib64 lib
  )

FIND_LIBRARY(ICU_LIBRARY_IO
  NAMES
    icuio
  HINTS
    ${_icu_SEARCH_DIRS}
  PATH_SUFFIXES
    lib64 lib
  )

FIND_LIBRARY(ICU_LIBRARY_LE
  NAMES
    icule
  HINTS
    ${_icu_SEARCH_DIRS}
  PATH_SUFFIXES
    lib64 lib
  )

FIND_LIBRARY(ICU_LIBRARY_LX
  NAMES
    iculx
  HINTS
    ${_icu_SEARCH_DIRS}
  PATH_SUFFIXES
    lib64 lib
  )

FIND_LIBRARY(ICU_LIBRARY_TU
  NAMES
    icutu
  HINTS
    ${_icu_SEARCH_DIRS}
  PATH_SUFFIXES
    lib64 lib
  )

FIND_LIBRARY(ICU_LIBRARY_UC
  NAMES
    icuuc
  HINTS
    ${_icu_SEARCH_DIRS}
  PATH_SUFFIXES
    lib64 lib
  )

# Restore the original find library ordering
if(Boost_USE_STATIC_LIBS)
  set(CMAKE_FIND_LIBRARY_SUFFIXES ${_icu_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
endif()

# handle the QUIETLY and REQUIRED arguments and set ICU_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Icu DEFAULT_MSG
    ICU_LIBRARY_DATA
    ICU_LIBRARY_I18N
    ICU_LIBRARY_IO
    ICU_LIBRARY_LE
    ICU_LIBRARY_LX
    ICU_LIBRARY_TU
    ICU_LIBRARY_UC
)

IF(ICU_FOUND)
  SET(ICU_LIBRARIES ${ICU_LIBRARY_DATA} ${ICU_LIBRARY_I18N} ${ICU_LIBRARY_IO} ${ICU_LIBRARY_LE} ${ICU_LIBRARY_LX} ${ICU_LIBRARY_TU} ${ICU_LIBRARY_UC})
  SET(ICU_INCLUDE_DIRS ${ICU_INCLUDE_DIR})
ENDIF()

MARK_AS_ADVANCED(
  ICU_INCLUDE_DIR
  ICU_LIBRARY_DATA
  ICU_LIBRARY_I18N
  ICU_LIBRARY_IO
  ICU_LIBRARY_LE
  ICU_LIBRARY_LX
  ICU_LIBRARY_TU
  ICU_LIBRARY_UC
)
