[Bf-blender-cvs] [bd460290bc6] tmp_libupdate_34: deps: add fribidi 1.0.12 and harfbuzz 5.1.0

Ray Molenkamp noreply at git.blender.org
Sat Aug 13 23:41:41 CEST 2022


Commit: bd460290bc6e16f6f2d6dcb0dc844a28ff5c3eb2
Author: Ray Molenkamp
Date:   Sat Aug 13 15:41:32 2022 -0600
Branches: tmp_libupdate_34
https://developer.blender.org/rBbd460290bc6e16f6f2d6dcb0dc844a28ff5c3eb2

deps: add fribidi 1.0.12 and harfbuzz 5.1.0

Also adds buildtime dep meson

tested on windows only at this point

===================================================================

M	build_files/build_environment/CMakeLists.txt
M	build_files/build_environment/cmake/download.cmake
A	build_files/build_environment/cmake/fribidi.cmake
A	build_files/build_environment/cmake/harfbuzz.cmake
M	build_files/build_environment/cmake/options.cmake
M	build_files/build_environment/cmake/python_site_packages.cmake
M	build_files/build_environment/cmake/versions.cmake

===================================================================

diff --git a/build_files/build_environment/CMakeLists.txt b/build_files/build_environment/CMakeLists.txt
index 20130fb1c5f..ec22e32d132 100644
--- a/build_files/build_environment/CMakeLists.txt
+++ b/build_files/build_environment/CMakeLists.txt
@@ -96,6 +96,8 @@ include(cmake/openimagedenoise.cmake)
 include(cmake/embree.cmake)
 include(cmake/fmt.cmake)
 include(cmake/robinmap.cmake)
+include(cmake/fribidi.cmake)
+include(cmake/harfbuzz.cmake)
 if(NOT APPLE)
   include(cmake/xr_openxr.cmake)
   if(NOT WIN32 OR BUILD_MODE STREQUAL Release)
diff --git a/build_files/build_environment/cmake/download.cmake b/build_files/build_environment/cmake/download.cmake
index 547bf77f8dd..ecae09307bd 100644
--- a/build_files/build_environment/cmake/download.cmake
+++ b/build_files/build_environment/cmake/download.cmake
@@ -117,3 +117,5 @@ download_source(IGC_SPIRV_TRANSLATOR)
 download_source(GMMLIB)
 download_source(OCLOC)
 download_source(AOM)
+download_source(FRIBIDI)
+download_source(HARFBUZZ)
diff --git a/build_files/build_environment/cmake/fribidi.cmake b/build_files/build_environment/cmake/fribidi.cmake
new file mode 100644
index 00000000000..e836fbb751d
--- /dev/null
+++ b/build_files/build_environment/cmake/fribidi.cmake
@@ -0,0 +1,30 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+if(WIN32)
+  set(CONFIGURE_ENV ${CONFIGURE_ENV_MSVC})
+endif()
+
+ExternalProject_Add(external_fribidi
+  URL file://${PACKAGE_DIR}/${FRIBIDI_FILE}
+  URL_HASH ${FRIBIDI_HASH_TYPE}=${FRIBIDI_HASH}
+  DOWNLOAD_DIR ${DOWNLOAD_DIR}
+  PREFIX ${BUILD_DIR}/fribidi
+  CONFIGURE_COMMAND ${LIBDIR}/python/Scripts/meson setup --prefix ${LIBDIR}/fribidi -Ddocs=false --default-library static --libdir lib ${BUILD_DIR}/fribidi/src/external_fribidi-build ${BUILD_DIR}/fribidi/src/external_fribidi
+  BUILD_COMMAND ninja
+  INSTALL_COMMAND ninja install
+  INSTALL_DIR ${LIBDIR}/fribidi
+)
+
+add_dependencies(
+  external_fribidi
+  external_python
+  external_python_site_packages
+)
+
+if(BUILD_MODE STREQUAL Release AND WIN32)
+  ExternalProject_Add_Step(external_fribidi after_install
+    COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/fribidi/include ${HARVEST_TARGET}/fribidi/include
+    COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/fribidi/lib/libfribidi.a ${HARVEST_TARGET}/fribidi/lib/libfribidi.lib
+    DEPENDEES install
+  )
+endif()
diff --git a/build_files/build_environment/cmake/harfbuzz.cmake b/build_files/build_environment/cmake/harfbuzz.cmake
new file mode 100644
index 00000000000..db6c096fc8b
--- /dev/null
+++ b/build_files/build_environment/cmake/harfbuzz.cmake
@@ -0,0 +1,39 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+if(WIN32)
+  set(CONFIGURE_ENV ${CONFIGURE_ENV_MSVC})
+  set(FREETYPE_EXPORT set FREETYPE_DIR=${LIBDIR}/freetype)
+else()
+  set(FREETYPE_EXPORT export FREETYPE_DIR=${LIBDIR}/freetype)
+endif()
+
+set(HARFBUZZ_EXTRA_OPTIONS
+  -Dtests=disabled
+  -Dfreetype=enabled
+)
+
+ExternalProject_Add(external_harfbuzz
+  URL file://${PACKAGE_DIR}/${HARFBUZZ_FILE}
+  URL_HASH ${HARFBUZZ_HASH_TYPE}=${HARFBUZZ_HASH}
+  DOWNLOAD_DIR ${DOWNLOAD_DIR}
+  PREFIX ${BUILD_DIR}/harfbuzz
+  CONFIGURE_COMMAND ${CONFIGURE_ENV} && ${FREETYPE_EXPORT} && ${LIBDIR}/python/Scripts/meson setup --prefix ${LIBDIR}/harfbuzz ${HARFBUZZ_EXTRA_OPTIONS} --default-library static --libdir lib ${BUILD_DIR}/harfbuzz/src/external_harfbuzz-build ${BUILD_DIR}/harfbuzz/src/external_harfbuzz
+  BUILD_COMMAND ninja
+  INSTALL_COMMAND ninja install
+  INSTALL_DIR ${LIBDIR}/harfbuzz
+)
+
+add_dependencies(
+  external_harfbuzz
+  external_python
+  external_python_site_packages
+)
+if(BUILD_MODE STREQUAL Release AND WIN32)
+  ExternalProject_Add_Step(external_harfbuzz after_install
+    COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/harfbuzz/include ${HARVEST_TARGET}/harfbuzz/include
+    # We do not use the subset API currently, so copying only the main library will suffice for now
+    COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/harfbuzz/lib/libharfbuzz.a ${HARVEST_TARGET}/harfbuzz/lib/libharfbuzz.lib
+    DEPENDEES install
+  )
+endif()
+
diff --git a/build_files/build_environment/cmake/options.cmake b/build_files/build_environment/cmake/options.cmake
index c1865b30afa..05d1cc84222 100644
--- a/build_files/build_environment/cmake/options.cmake
+++ b/build_files/build_environment/cmake/options.cmake
@@ -79,6 +79,18 @@ if(WIN32)
   set(PERL_SHELL ${DOWNLOAD_DIR}/perl/portableshell.bat)
   set(MINGW_HOST x86_64-w64-mingw32)
 
+  # some build systems like meson will respect the *nix like environment vars
+  # like CFLAGS and LDFlags but will still build with the MSVC compiler, so for
+  # those we need to empty out the gcc style flags that are normally in there. 
+  set(CONFIGURE_ENV_MSVC
+    cd ${MINGW_PATH} &&
+    call ${PERL_SHELL} &&
+    call ${MINGW_SHELL} &&
+    set path &&
+    set CFLAGS= &&
+    set LDFLAGS=
+  )
+
   set(CONFIGURE_ENV
     cd ${MINGW_PATH} &&
     call ${PERL_SHELL} &&
diff --git a/build_files/build_environment/cmake/python_site_packages.cmake b/build_files/build_environment/cmake/python_site_packages.cmake
index 55d0d6c7400..91baaa4df0f 100644
--- a/build_files/build_environment/cmake/python_site_packages.cmake
+++ b/build_files/build_environment/cmake/python_site_packages.cmake
@@ -15,7 +15,7 @@ ExternalProject_Add(external_python_site_packages
   CONFIGURE_COMMAND ${PIP_CONFIGURE_COMMAND}
   BUILD_COMMAND ""
   PREFIX ${BUILD_DIR}/site_packages
-  INSTALL_COMMAND ${PYTHON_BINARY} -m pip install --no-cache-dir ${SITE_PACKAGES_EXTRA} cython==${CYTHON_VERSION} idna==${IDNA_VERSION} charset-normalizer==${CHARSET_NORMALIZER_VERSION} urllib3==${URLLIB3_VERSION} certifi==${CERTIFI_VERSION} requests==${REQUESTS_VERSION} zstandard==${ZSTANDARD_VERSION} autopep8==${AUTOPEP8_VERSION} pycodestyle==${PYCODESTYLE_VERSION} toml==${TOML_VERSION} --no-binary :all:
+  INSTALL_COMMAND ${PYTHON_BINARY} -m pip install --no-cache-dir ${SITE_PACKAGES_EXTRA} cython==${CYTHON_VERSION} idna==${IDNA_VERSION} charset-normalizer==${CHARSET_NORMALIZER_VERSION} urllib3==${URLLIB3_VERSION} certifi==${CERTIFI_VERSION} requests==${REQUESTS_VERSION} zstandard==${ZSTANDARD_VERSION} autopep8==${AUTOPEP8_VERSION} pycodestyle==${PYCODESTYLE_VERSION} toml==${TOML_VERSION} meson==${MESON_VERSION} --no-binary :all:
 )
 
 if(USE_PIP_NUMPY)
diff --git a/build_files/build_environment/cmake/versions.cmake b/build_files/build_environment/cmake/versions.cmake
index a236e8869ac..47000923111 100644
--- a/build_files/build_environment/cmake/versions.cmake
+++ b/build_files/build_environment/cmake/versions.cmake
@@ -207,6 +207,7 @@ set(ZSTANDARD_VERSION 0.16.0)
 set(AUTOPEP8_VERSION 1.6.0)
 set(PYCODESTYLE_VERSION 2.8.0)
 set(TOML_VERSION 0.10.2)
+set(MESON_VERSION 0.63.0)
 
 set(NUMPY_VERSION 1.22.0)
 set(NUMPY_SHORT_VERSION 1.22)
@@ -639,3 +640,15 @@ set(AOM_URI https://storage.googleapis.com/aom-releases/libaom-${AOM_VERSION}.ta
 set(AOM_HASH bd754b58c3fa69f3ffd29da77de591bd9c26970e3b18537951336d6c0252e354)
 set(AOM_HASH_TYPE SHA256)
 set(AOM_FILE libaom-${AOM_VERSION}.tar.gz)
+
+set(FRIBIDI_VERSION v1.0.12)
+set(FRIBIDI_URI https://github.com/fribidi/fribidi/archive/refs/tags/${FRIBIDI_VERSION}.tar.gz)
+set(FRIBIDI_HASH 2e9e859876571f03567ac91e5ed3b5308791f31cda083408c2b60fa1fe00a39d)
+set(FRIBIDI_HASH_TYPE SHA256)
+set(FRIBIDI_FILE fribidi-${FRIBIDI_VERSION}.tar.gz)
+
+set(HARFBUZZ_VERSION 5.1.0)
+set(HARFBUZZ_URI https://github.com/harfbuzz/harfbuzz/archive/refs/tags/${HARFBUZZ_VERSION}.tar.gz)
+set(HARFBUZZ_HASH 5352ff2eec538ea9a63a485cf01ad8332a3f63aa79921c5a2e301cef185caea1)
+set(HARFBUZZ_HASH_TYPE SHA256)
+set(HARFBUZZ_FILE harfbuzz-${HARFBUZZ_VERSION}.tar.gz)



More information about the Bf-blender-cvs mailing list