Core: Allow Optional Use of Harfbuzz and FriBiDi
Harfbuzz and FriBiDi are included in our external libraries for all platforms. This PR adds the glue to make them available as optional build components (off by default). Pull Request: https://projects.blender.org/blender/blender/pulls/114947
This commit is contained in:
parent
694104f8aa
commit
6ae5e1ade8
@ -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)
|
||||
|
54
build_files/cmake/Modules/FindFribidi.cmake
Normal file
54
build_files/cmake/Modules/FindFribidi.cmake
Normal file
@ -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
|
||||
)
|
54
build_files/cmake/Modules/FindHarfbuzz.cmake
Normal file
54
build_files/cmake/Modules/FindHarfbuzz.cmake
Normal file
@ -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
Block a user