Core: Allow Optional Use of Harfbuzz and FriBiDi #114947
|
@ -419,6 +419,10 @@ option(WITH_MATERIALX "Enable MaterialX Support" ON)
|
|||
# Hydra render engine
|
||||
option(WITH_HYDRA "Enable Hydra render engine" ON)
|
||||
|
||||
# RTL Languages, Complex Shaping, OpenType Features
|
||||
option(WITH_FRIBIDI "Enable features relying on fribidi" OFF)
|
||||
option(WITH_HARFBUZZ "Enable features relying on harfbuzz" OFF)
|
||||
|
||||
# 3D format support
|
||||
# Disable opencollada when we don't have precompiled libs
|
||||
option(WITH_OPENCOLLADA "Enable OpenCollada Support (http://www.opencollada.org)" ON)
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# - Find Fribidi library
|
||||
# Find the native fribidi includes and library
|
||||
# This module defines
|
||||
# LIBFRIBIDI_INCLUDE_DIRS, where to find hb.h, Set when
|
||||
# LIBFRIBIDI_INCLUDE_DIR is found.
|
||||
# LIBFRIBIDI_LIBRARIES, libraries to link against to use fribidi.
|
||||
# LIBFRIBIDI_ROOT_DIR, The base directory to search for Fribidi.
|
||||
# This can also be an environment variable.
|
||||
# FRIBIDI_FOUND, If false, do not try to use Fribidi.
|
||||
#
|
||||
# also defined, but not for general use are
|
||||
# LIBFRIBIDI_LIBRARY, where to find the Fribidi library.
|
||||
|
||||
# If LIBFRIBIDI_ROOT_DIR was defined in the environment, use it.
|
||||
IF(NOT LIBFRIBIDI_ROOT_DIR AND NOT $ENV{LIBFRIBIDI_ROOT_DIR} STREQUAL "")
|
||||
SET(LIBFRIBIDI_ROOT_DIR $ENV{LIBFRIBIDI_ROOT_DIR})
|
||||
ENDIF()
|
||||
|
||||
SET(_fribidi_SEARCH_DIRS
|
||||
${LIBFRIBIDI_ROOT_DIR}
|
||||
)
|
||||
|
||||
FIND_PATH(LIBFRIBIDI_INCLUDE_DIR fribidi/fribidi.h
|
||||
HINTS
|
||||
${_fribidi_SEARCH_DIRS}
|
||||
PATH_SUFFIXES
|
||||
include
|
||||
)
|
||||
|
||||
FIND_LIBRARY(LIBFRIBIDI_LIBRARY
|
||||
NAMES
|
||||
fribidi
|
||||
HINTS
|
||||
${_fribidi_SEARCH_DIRS}
|
||||
PATH_SUFFIXES
|
||||
lib64 lib
|
||||
)
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments and set FRIBIDI_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Fribidi DEFAULT_MSG
|
||||
LIBFRIBIDI_LIBRARY LIBFRIBIDI_INCLUDE_DIR)
|
||||
|
||||
IF(FRIBIDI_FOUND)
|
||||
SET(LIBFRIBIDI_LIBRARIES ${LIBFRIBIDI_LIBRARY})
|
||||
SET(LIBFRIBIDI_INCLUDE_DIRS ${LIBFRIBIDI_INCLUDE_DIR})
|
||||
ENDIF()
|
||||
|
||||
MARK_AS_ADVANCED(
|
||||
LIBFRIBIDI_INCLUDE_DIR
|
||||
LIBFRIBIDI_LIBRARY
|
||||
)
|
|
@ -0,0 +1,54 @@
|
|||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# - Find Harfbuzz library
|
||||
# Find the native harfbuzz includes and library
|
||||
# This module defines
|
||||
# LIBHARFBUZZ_INCLUDE_DIRS, where to find hb.h, Set when
|
||||
# LIBHARFBUZZ_INCLUDE_DIR is found.
|
||||
# LIBHARFBUZZ_LIBRARIES, libraries to link against to use harfbuzz.
|
||||
# LIBHARFBUZZ_ROOT_DIR, The base directory to search for Harfbuzz.
|
||||
# This can also be an environment variable.
|
||||
# HARFBUZZ_FOUND, If false, do not try to use Harfbuzz.
|
||||
#
|
||||
# also defined, but not for general use are
|
||||
# LIBHARFBUZZ_LIBRARY, where to find the Harfbuzz library.
|
||||
|
||||
# If LIBHARFBUZZ_ROOT_DIR was defined in the environment, use it.
|
||||
IF(NOT LIBHARFBUZZ_ROOT_DIR AND NOT $ENV{LIBHARFBUZZ_ROOT_DIR} STREQUAL "")
|
||||
SET(LIBHARFBUZZ_ROOT_DIR $ENV{LIBHARFBUZZ_ROOT_DIR})
|
||||
ENDIF()
|
||||
|
||||
SET(_harfbuzz_SEARCH_DIRS
|
||||
${LIBHARFBUZZ_ROOT_DIR}
|
||||
)
|
||||
|
||||
FIND_PATH(LIBHARFBUZZ_INCLUDE_DIR harfbuzz/hb.h
|
||||
HINTS
|
||||
${_harfbuzz_SEARCH_DIRS}
|
||||
PATH_SUFFIXES
|
||||
include
|
||||
)
|
||||
|
||||
FIND_LIBRARY(LIBHARFBUZZ_LIBRARY
|
||||
NAMES
|
||||
harfbuzz
|
||||
HINTS
|
||||
${_harfbuzz_SEARCH_DIRS}
|
||||
PATH_SUFFIXES
|
||||
lib64 lib
|
||||
)
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments and set HARFBUZZ_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Harfbuzz DEFAULT_MSG
|
||||
LIBHARFBUZZ_LIBRARY LIBHARFBUZZ_INCLUDE_DIR)
|
||||
|
||||
IF(HARFBUZZ_FOUND)
|
||||
SET(LIBHARFBUZZ_LIBRARIES ${LIBHARFBUZZ_LIBRARY})
|
||||
SET(LIBHARFBUZZ_INCLUDE_DIRS ${LIBHARFBUZZ_INCLUDE_DIR})
|
||||
ENDIF()
|
||||
|
||||
MARK_AS_ADVANCED(
|
||||
LIBHARFBUZZ_INCLUDE_DIR
|
||||
LIBHARFBUZZ_LIBRARY
|
||||
)
|
|
@ -146,6 +146,14 @@ set(BROTLI_LIBRARIES
|
|||
${LIBDIR}/brotli/lib/libbrotlidec-static.a
|
||||
)
|
||||
|
||||
if(WITH_HARFBUZZ)
|
||||
find_package(Harfbuzz)
|
||||
endif()
|
||||
|
||||
if(WITH_FRIBIDI)
|
||||
find_package(Fribidi)
|
||||
endif()
|
||||
|
||||
if(WITH_IMAGE_OPENEXR)
|
||||
find_package(OpenEXR)
|
||||
endif()
|
||||
|
|
|
@ -173,6 +173,14 @@ if(NOT WITH_SYSTEM_FREETYPE)
|
|||
check_freetype_for_brotli()
|
||||
endif()
|
||||
|
||||
if(WITH_HARFBUZZ)
|
||||
find_package(Harfbuzz)
|
||||
endif()
|
||||
|
||||
if(WITH_FRIBIDI)
|
||||
find_package(Fribidi)
|
||||
endif()
|
||||
|
||||
if(WITH_PYTHON)
|
||||
# This could be used, see: D14954 for details.
|
||||
# `find_package(PythonLibs)`
|
||||
|
|
|
@ -374,6 +374,24 @@ set(BROTLI_LIBRARIES
|
|||
|
||||
windows_find_package(Freetype REQUIRED)
|
||||
|
||||
if(WITH_HARFBUZZ)
|
||||
windows_find_package(Harfbuzz)
|
||||
if(NOT Harfbuzz_FOUND)
|
||||
set(LIBHARFBUZZ_INCLUDE_DIRS ${LIBDIR}/harfbuzz/include)
|
||||
set(LIBHARFBUZZ_LIBRARIES optimized ${LIBDIR}/harfbuzz/lib/libharfbuzz.lib debug ${LIBDIR}/harfbuzz/lib/libharfbuzz_d.lib)
|
||||
set(Harfbuzz_FOUND ON)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WITH_FRIBIDI)
|
||||
windows_find_package(Fribidi)
|
||||
if(NOT Fribidi_FOUND)
|
||||
set(LIBFRIBIDI_INCLUDE_DIRS ${LIBDIR}/fribidi/include)
|
||||
set(LIBFRIBIDI_LIBRARIES ${LIBDIR}/fribidi/lib/libfribidi.lib)
|
||||
set(Fribidi_FOUND ON)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WITH_FFTW3)
|
||||
set(FFTW3 ${LIBDIR}/fftw3)
|
||||
if(EXISTS ${FFTW3}/lib/libfftw3-3.lib) # 3.6 libraries
|
||||
|
|
Loading…
Reference in New Issue