config_host.mk.in                             |    1 
 configure.ac                                  |   31 ++++++---
 distro-configs/Jenkins/macosx_clang_dbgutil   |    1 
 distro-configs/Jenkins/windows_msc_dbgutil_32 |    1 
 distro-configs/LibreOfficeMacOSX.conf         |    1 
 distro-configs/LibreOfficeWin32.conf          |    1 
 distro-configs/LibreOfficeWin64.conf          |    1 
 distro-configs/LibreOfficeWinArm64.conf       |    1 
 external/graphite/StaticLibrary_graphite.mk   |    2 
 external/graphite/UnpackedTarball_graphite.mk |    5 +
 external/harfbuzz/ExternalProject_harfbuzz.mk |   70 +++++++++++---------
 external/harfbuzz/UnpackedTarball_harfbuzz.mk |    1 
 external/harfbuzz/icu_75.patch.0              |   88 --------------------------
 external/icu/ExternalProject_icu.mk           |    2 
 external/icu/UnpackedTarball_icu.mk           |    5 +
 solenv/gbuild/Helper.mk                       |   10 ++
 solenv/gbuild/platform/com_MSC_class.mk       |    2 
 17 files changed, 94 insertions(+), 129 deletions(-)

New commits:
commit ae24fc8c639b230284f94e837497cd7919f79d21
Author:     Christian Lohmaier <lohmaier+libreoff...@googlemail.com>
AuthorDate: Tue Apr 8 12:19:31 2025 +0200
Commit:     Khaled Hosny <kha...@libreoffice.org>
CommitDate: Mon Apr 14 18:35:42 2025 +0200

    harfbuzz: migrate to meson
    
    Change-Id: I33aa7ca814409b39b9adb7da1d168c5ebb11b14d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183345
    Reviewed-by: Khaled Hosny <kha...@libreoffice.org>
    Tested-by: Jenkins

diff --git a/config_host.mk.in b/config_host.mk.in
index 089571174a82..bd987486ec5f 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -503,6 +503,7 @@ export MDDS_CFLAGS=$(gb_SPACE)@MDDS_CFLAGS@
 export MDDS_LIBS=$(gb_SPACE)@MDDS_LIBS@
 export MERGELIBS=@MERGELIBS@
 export MERGELIBS_MORE=@MERGELIBS_MORE@
+MESON=@MESON@
 export ML_EXE=@ML_EXE@
 export MOC5=@MOC5@
 export MOC6=@MOC6@
diff --git a/configure.ac b/configure.ac
index e6c208e4cd50..d75f26a4d0a9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -999,6 +999,8 @@ cygwin*|wsl*)
 
     DLLPOST=".dll"
     LINKFLAGSNOUNDEFS=
+    # bypass check for ninja, it is not in default path, but it can be used 
nevertheless by default
+    NINJA="assumed to be available from Visual Studio"
 
     if test "$host_cpu" = "aarch64"; then
         build_skia=yes
@@ -4102,7 +4104,7 @@ cygwin*|wsl*)
     COM=MSC
     OS=WNT
     RTL_OS=Windows
-    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
+    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" -o -n "$WSL_ONLY_AS_HELPER" ; then
         P_SEP=";"
     else
         P_SEP=:
@@ -6935,9 +6937,10 @@ fi
 dnl ===================================================================
 dnl Check for pkg-config
 dnl ===================================================================
-if test "$_os" != "WINNT"; then
-    PKG_PROG_PKG_CONFIG
-fi
+# pkgconf/pkg-config detection is already triggered by the configure switches 
way above
+# (more specifically PKG_CHECK_MODULES), so only do some cleanup of the vars 
here
+PathFormat "$(command -v $PKG_CONFIG)"
+PKG_CONFIG="$formatted_path"
 AC_SUBST(PKG_CONFIG)
 AC_SUBST(PKG_CONFIG_PATH)
 AC_SUBST(PKG_CONFIG_LIBDIR)
@@ -6979,7 +6982,11 @@ if test $_os = Darwin; then
             if test "$enable_bogus_pkg_config" = "yes"; then
                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
             else
-                AC_MSG_ERROR([yes, from unknown origin. This *will* break the 
build. Please modify your PATH variable so that $PKG_CONFIG is no longer found 
by configure scripts.])
+                if test -z "$($PKG_CONFIG --list-all |grep -v '^libpkgconf')" 
; then
+                    AC_MSG_RESULT([yes, accepted since no packages available 
in default searchpath])
+                else
+                    AC_MSG_ERROR([yes, from unknown origin. This *will* break 
the build. Please modify your PATH variable so that $PKG_CONFIG is no longer 
found by configure scripts.])
+                fi
             fi
         fi
     else
@@ -11417,11 +11424,11 @@ 
HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
 case "$_os" in
     Linux)
         GRAPHITE_LIBS_internal='$(gb_StaticLibrary_WORKDIR)/libgraphite.a'
-        
HARFBUZZ_LIBS_internal="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.a"
+        
HARFBUZZ_LIBS_internal="${WORKDIR}/UnpackedTarball/harfbuzz/builddir/src/libharfbuzz.a"
         ;;
     *)
         GRAPHITE_LIBS_internal='-L$(gb_StaticLibrary_WORKDIR) -lgraphite'
-        
HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs 
-lharfbuzz"
+        
HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/builddir/src/ 
-lharfbuzz"
         ;;
 esac
 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
@@ -11429,7 +11436,7 @@ 
libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= $harfbuzz_requir
 
 if test "$COM" = "MSC"; then # override the above
     GRAPHITE_LIBS='$(gb_StaticLibrary_WORKDIR)/graphite.lib'
-    
HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
+    
HARFBUZZ_LIBS='$(gb_UnpackedTarball_workdir)/harfbuzz/builddir/src/libharfbuzz.a
 $(GRAPHITE_LIBS)'
 fi
 
 if test "$with_system_harfbuzz" = "yes"; then
@@ -11448,6 +11455,14 @@ else
     if test "$with_system_graphite" = "yes"; then
         AC_MSG_ERROR([--without-system-graphite must be used when 
--without-system-harfbuzz is used])
     fi
+    # harfbuzz is now built using meson
+    AC_PATH_PROGS(MESON,[meson.py 
meson],,[$LODE_HOME/packages/meson-1.7.2:$PATH])
+    PathFormat "$MESON"
+    MESON="$formatted_path"
+    AC_CHECK_PROG(NINJA,ninja,ninja)
+    if test -z "$MESON" -o -z "$NINJA"; then
+        AC_MSG_ERROR([you need to have meson and ninja in order to build 
harfbuzz])
+    fi
 fi
 
 if test "$USING_X11" = TRUE; then
diff --git a/distro-configs/Jenkins/macosx_clang_dbgutil 
b/distro-configs/Jenkins/macosx_clang_dbgutil
index ebb715a75960..c1618b91a0aa 100644
--- a/distro-configs/Jenkins/macosx_clang_dbgutil
+++ b/distro-configs/Jenkins/macosx_clang_dbgutil
@@ -4,3 +4,4 @@
 --enable-optimized
 --enable-odk
 --disable-online-update
+PKG_CONFIG=pkgconf
diff --git a/distro-configs/Jenkins/windows_msc_dbgutil_32 
b/distro-configs/Jenkins/windows_msc_dbgutil_32
index b7827644df9f..cf85e27bfb02 100644
--- a/distro-configs/Jenkins/windows_msc_dbgutil_32
+++ b/distro-configs/Jenkins/windows_msc_dbgutil_32
@@ -3,3 +3,4 @@
 --disable-dependency-tracking
 --enable-odk
 --disable-online-update
+PKG_CONFIG=pkgconf-2.4.3.exe
diff --git a/distro-configs/LibreOfficeMacOSX.conf 
b/distro-configs/LibreOfficeMacOSX.conf
index 68df63a63922..20ac164cd831 100644
--- a/distro-configs/LibreOfficeMacOSX.conf
+++ b/distro-configs/LibreOfficeMacOSX.conf
@@ -10,3 +10,4 @@
 --with-package-format=dmg
 --enable-odk
 --enable-mergelibs=more
+PKG_CONFIG=pkgconf
diff --git a/distro-configs/LibreOfficeWin32.conf 
b/distro-configs/LibreOfficeWin32.conf
index 2a9145b7c260..5e5014c57f9b 100644
--- a/distro-configs/LibreOfficeWin32.conf
+++ b/distro-configs/LibreOfficeWin32.conf
@@ -14,3 +14,4 @@
 --enable-mergelibs
 --enable-lto
 --enable-odk
+PKG_CONFIG=pkgconf-2.4.3.exe
diff --git a/distro-configs/LibreOfficeWin64.conf 
b/distro-configs/LibreOfficeWin64.conf
index 6fbe87776c2b..95f44a072e12 100644
--- a/distro-configs/LibreOfficeWin64.conf
+++ b/distro-configs/LibreOfficeWin64.conf
@@ -15,3 +15,4 @@
 --enable-mergelibs=more
 --enable-lto
 --enable-odk
+PKG_CONFIG=pkgconf-2.4.3.exe
diff --git a/distro-configs/LibreOfficeWinArm64.conf 
b/distro-configs/LibreOfficeWinArm64.conf
index a052e9bcfc4c..3996d6ad03db 100644
--- a/distro-configs/LibreOfficeWinArm64.conf
+++ b/distro-configs/LibreOfficeWinArm64.conf
@@ -13,3 +13,4 @@
 --enable-mergelibs
 --enable-lto
 --enable-odk
+PKG_CONFIG=pkgconf-2.4.3.exe
diff --git a/external/graphite/StaticLibrary_graphite.mk 
b/external/graphite/StaticLibrary_graphite.mk
index a44066cc841e..49ac7d29f199 100644
--- a/external/graphite/StaticLibrary_graphite.mk
+++ b/external/graphite/StaticLibrary_graphite.mk
@@ -76,4 +76,6 @@ $(eval $(call 
gb_StaticLibrary_add_generated_exception_objects,graphite,\
        UnpackedTarball/graphite/src/UtfCodec \
 ))
 
+$(call gb_StaticLibrary_get_target,graphite): 
$(gb_UnpackedTarball_workdir)/graphite/graphite2-uninstalled.pc
+
 # vim: set noet sw=4 ts=4:
diff --git a/external/graphite/UnpackedTarball_graphite.mk 
b/external/graphite/UnpackedTarball_graphite.mk
index 0f678542e80f..640368833144 100644
--- a/external/graphite/UnpackedTarball_graphite.mk
+++ b/external/graphite/UnpackedTarball_graphite.mk
@@ -18,4 +18,9 @@ $(eval $(call gb_UnpackedTarball_add_patches,graphite, \
     external/graphite/enumarith.patch \
 ))
 
+# cannot use post_action since $(file ..) would be run when the recipe is 
parsed, i.e. would always
+# happen before the tarball is unpacked
+$(gb_UnpackedTarball_workdir)/graphite/graphite2-uninstalled.pc: $(call 
gb_UnpackedTarball_get_target,graphite)
+       $(file >$@,$(call 
gb_pkgconfig_file,graphite2,1.3.14,$(GRAPHITE_CFLAGS),$(GRAPHITE_LIBS)))
+
 # vim: set noet sw=4 ts=4:
diff --git a/external/harfbuzz/ExternalProject_harfbuzz.mk 
b/external/harfbuzz/ExternalProject_harfbuzz.mk
index 633d3658ce86..ee02b95753ec 100644
--- a/external/harfbuzz/ExternalProject_harfbuzz.mk
+++ b/external/harfbuzz/ExternalProject_harfbuzz.mk
@@ -9,8 +9,6 @@
 
 $(eval $(call gb_ExternalProject_ExternalProject,harfbuzz))
 
-$(eval $(call gb_ExternalProject_use_autoconf,harfbuzz,build))
-
 $(eval $(call gb_ExternalProject_register_targets,harfbuzz,\
        build \
 ))
@@ -20,37 +18,47 @@ $(eval $(call gb_ExternalProject_use_externals,harfbuzz,\
        graphite \
 ))
 
-$(call gb_ExternalProject_get_state_target,harfbuzz,build) :
+# We cannot use environment vars inside the meson cross-build file,
+# so we're going to have to generate one on-the-fly.
+# mungle variables into python list format
+cross_c   = '$(subst $(WHITESPACE),'$(COMMA)',$(strip $(gb_CC)))'
+cross_cxx = '$(subst $(WHITESPACE),'$(COMMA)',$(strip $(gb_CXX)))'
+define gb_harfbuzz_cross_compile
+[binaries]
+c = [$(cross_c)]
+cpp = [$(cross_cxx)]
+c_ld = [$(subst cl.exe,link.exe,$(cross_c))]
+cpp_ld = [$(subst cl.exe,link.exe,$(cross_c))]
+ar = '$(AR)'
+strip = '$(STRIP)'
+# TODO: this is pretty ugly...
+[host_machine]
+system = '$(if $(filter WNT,$(OS)),windows,$(if $(filter 
MACOSX,$(OS)),darwin,$(if $(filter ANDROID,$(OS)),android,linux)))'
+cpu_family = '$(RTL_ARCH)'
+cpu = '$(if $(filter x86,$(RTL_ARCH)),i686,$(if $(filter 
X86_64,$(RTL_ARCH)),x86_64,$(if $(filter AARCH64,$(RTL_ARCH)),aarch64,armv7)))'
+endian = '$(ENDIANNESS)'
+endef
+
+# cannot use CROSS_COMPILING as condition since we have cross-compilation 
"light" for cases where
+# the builder can run the host binaries, like for example when compiling for 
win 32bit on win 64bit
+$(call gb_ExternalProject_get_state_target,harfbuzz,build) : | $(call 
gb_ExternalExecutable_get_dependencies,python)
        $(call gb_Trace_StartRange,harfbuzz,EXTERNAL)
+       $(file 
>$(gb_UnpackedTarball_workdir)/harfbuzz/cross-file.txt,$(gb_harfbuzz_cross_compile))
        $(call gb_ExternalProject_run,build,\
-               $(if 
$(CROSS_COMPILING),ICU_CONFIG=$(SRCDIR)/external/icu/cross-bin/icu-config) \
-               $(if 
$(SYSTEM_ICU),,ICU_CONFIG=$(SRCDIR)/external/icu/cross-bin/icu-config) \
-               GRAPHITE2_CFLAGS="$(GRAPHITE_CFLAGS)" \
-               GRAPHITE2_LIBS="$(GRAPHITE_LIBS)" \
-               $(gb_RUN_CONFIGURE) ./configure \
-                       --enable-static \
-                       --disable-shared \
-                       --disable-gtk-doc \
-                       --with-pic \
-                       --with-icu=builtin \
-                       --with-freetype=no \
-                       --with-fontconfig=no \
-                       --with-cairo=no \
-                       --with-glib=no \
-                       --with-graphite2=yes \
-                       $(if 
$(verbose),--disable-silent-rules,--enable-silent-rules) \
-                       $(if $(gb_FULLDEPS),,--disable-dependency-tracking) \
-                       
--libdir=$(gb_UnpackedTarball_workdir)/harfbuzz/src/.libs \
-                       $(gb_CONFIGURE_PLATFORMS) \
-                       CXXFLAGS=' \
-                               $(if $(filter ANDROID,$(OS)),-DHB_NO_MMAP=1,) \
-                               $(call 
gb_ExternalProject_get_build_flags,harfbuzz) \
-                               $(if $(ENABLE_RUNTIME_OPTIMIZATIONS),,-frtti) \
-                               $(CXXFLAGS) $(CXXFLAGS_CXX11) \
-                               $(if $(filter 
LINUX,$(OS)),-fvisibility=hidden)' \
-                       LDFLAGS="$(call 
gb_ExternalProject_get_link_flags,harfbuzz)" \
-                       MAKE=$(MAKE) \
-               && (cd $(EXTERNAL_WORKDIR)/src && $(MAKE) lib) \
+               
PKG_CONFIG_PATH="${PKG_CONFIG_PATH}$(LIBO_PATH_SEPARATOR)$(gb_UnpackedTarball_workdir)/graphite$(if
 $(SYSTEM_ICU),,$(LIBO_PATH_SEPARATOR)$(gb_UnpackedTarball_workdir)/icu)" \
+               PYTHONWARNINGS= \
+               $(call gb_ExternalExecutable_get_command,python) $(MESON) setup 
builddir \
+                       -Ddefault_library=static -Dbuildtype=$(if 
$(ENABLE_DEBUG),debug,release) \
+                       -Dauto_features=disabled \
+                       -Dcpp_std=$(subst -std:,,$(subst -std=,,$(filter 
-std%,$(CXXFLAGS_CXX11)))) \
+                       -Dtests=disabled \
+                       -Dutilities=disabled \
+                       -Dicu=enabled \
+                       -Dicu_builtin=true \
+                       -Dgraphite2=enabled \
+                       $(if $(filter-out 
$(BUILD_PLATFORM),$(HOST_PLATFORM))$(WSL),--cross-file cross-file.txt) && \
+               $(call gb_ExternalExecutable_get_command,python) $(MESON) 
compile -C builddir lib \
+                       $(if $(verbose),--verbose) \
        )
        $(call gb_Trace_EndRange,harfbuzz,EXTERNAL)
 
diff --git a/external/harfbuzz/UnpackedTarball_harfbuzz.mk 
b/external/harfbuzz/UnpackedTarball_harfbuzz.mk
index 6de80f0ea415..71627725fae7 100644
--- a/external/harfbuzz/UnpackedTarball_harfbuzz.mk
+++ b/external/harfbuzz/UnpackedTarball_harfbuzz.mk
@@ -17,7 +17,6 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,harfbuzz,0))
 
 $(eval $(call gb_UnpackedTarball_add_patches,harfbuzz, \
     external/harfbuzz/tdf159529.patch.0 \
-    external/harfbuzz/icu_75.patch.0 \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/external/harfbuzz/icu_75.patch.0 b/external/harfbuzz/icu_75.patch.0
deleted file mode 100644
index 9b14433211b0..000000000000
--- a/external/harfbuzz/icu_75.patch.0
+++ /dev/null
@@ -1,88 +0,0 @@
---- configure  2024-06-12 16:35:18.736933604 +0200
-+++ configure  2024-06-12 16:57:39.544214075 +0200
-@@ -22533,7 +22362,83 @@
- fi
-
- if $have_icu; then
--      CXXFLAGS="$CXXFLAGS `$PKG_CONFIG --variable=CXXFLAGS icu-uc`"
-+      is_icu75=false
-+
-+pkg_failed=no
-+{ printf "%s
" "$as_me:${as_lineno-$LINENO}: checking for icu-uc >= 75.1" >&5
-+printf %s "checking for icu-uc >= 75.1... " >&6; }
-+
-+if test -n "$ICU_CFLAGS"; then
-+    pkg_cv_ICU_CFLAGS="$ICU_CFLAGS"
-+ elif test -n "$PKG_CONFIG"; then
-+    if test -n "$PKG_CONFIG" && \
-+    { { printf "%s
" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"icu-uc 
>= 75.1\""; } >&5
-+  ($PKG_CONFIG --exists --print-errors "icu-uc >= 75.1") 2>&5
-+  ac_status=$?
-+  printf "%s
" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+  test $ac_status = 0; }; then
-+  pkg_cv_ICU_CFLAGS=`$PKG_CONFIG --cflags "icu-uc >= 75.1" 2>/dev/null`
-+                    test "x$?" != "x0" && pkg_failed=yes
-+else
-+  pkg_failed=yes
-+fi
-+ else
-+    pkg_failed=untried
-+fi
-+if test -n "$ICU_LIBS"; then
-+    pkg_cv_ICU_LIBS="$ICU_LIBS"
-+ elif test -n "$PKG_CONFIG"; then
-+    if test -n "$PKG_CONFIG" && \
-+    { { printf "%s
" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"icu-uc 
>= 75.1\""; } >&5
-+  ($PKG_CONFIG --exists --print-errors "icu-uc >= 75.1") 2>&5
-+  ac_status=$?
-+  printf "%s
" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+  test $ac_status = 0; }; then
-+  pkg_cv_ICU_LIBS=`$PKG_CONFIG --libs "icu-uc >= 75.1" 2>/dev/null`
-+                    test "x$?" != "x0" && pkg_failed=yes
-+else
-+  pkg_failed=yes
-+fi
-+ else
-+    pkg_failed=untried
-+fi
-+
-+
-+
-+if test $pkg_failed = yes; then
-+        { printf "%s
" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+printf "%s
" "no" >&6; }
-+
-+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-+        _pkg_short_errors_supported=yes
-+else
-+        _pkg_short_errors_supported=no
-+fi
-+        if test $_pkg_short_errors_supported = yes; then
-+                ICU_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors 
--cflags --libs "icu-uc >= 75.1" 2>&1`
-+        else
-+                ICU_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs 
"icu-uc >= 75.1" 2>&1`
-+        fi
-+        # Put the nasty error message in config.log where it belongs
-+        echo "$ICU_PKG_ERRORS" >&5
-+
-+        :
-+elif test $pkg_failed = untried; then
-+        { printf "%s
" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+printf "%s
" "no" >&6; }
-+        :
-+else
-+        ICU_CFLAGS=$pkg_cv_ICU_CFLAGS
-+        ICU_LIBS=$pkg_cv_ICU_LIBS
-+        { printf "%s
" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-+printf "%s
" "yes" >&6; }
-+        is_icu75=true
-+fi
-+      if $is_icu75; then
-+              CXXFLAGS="$CXXFLAGS `$PKG_CONFIG --variable=CXXFLAGS -std=c++17 
icu-uc`"
-+      else
-+              CXXFLAGS="$CXXFLAGS `$PKG_CONFIG --variable=CXXFLAGS icu-uc`"
-+      fi
-
- printf "%s
" "#define HAVE_ICU 1" >>confdefs.h
-
-
diff --git a/external/icu/ExternalProject_icu.mk 
b/external/icu/ExternalProject_icu.mk
index 3510e8cd95f2..5abacf423039 100644
--- a/external/icu/ExternalProject_icu.mk
+++ b/external/icu/ExternalProject_icu.mk
@@ -15,6 +15,8 @@ $(eval $(call gb_ExternalProject_register_targets,icu,\
 
 icu_CPPFLAGS:="-DHAVE_GCC_ATOMICS=$(if $(filter 
TRUE,$(GCC_HAVE_BUILTIN_ATOMIC)),1,0)"
 
+$(call gb_ExternalProject_get_state_target,icu,build) : 
$(gb_UnpackedTarball_workdir)/icu/icu-uc-uninstalled.pc
+
 ifeq ($(OS),WNT)
 
 $(call gb_ExternalProject_get_state_target,icu,build) :
diff --git a/external/icu/UnpackedTarball_icu.mk 
b/external/icu/UnpackedTarball_icu.mk
index a5f87d47fdd2..92777dd331cb 100644
--- a/external/icu/UnpackedTarball_icu.mk
+++ b/external/icu/UnpackedTarball_icu.mk
@@ -44,4 +44,9 @@ $(eval $(call gb_UnpackedTarball_add_patches,icu,\
 
 $(eval $(call 
gb_UnpackedTarball_add_file,icu,source/data/brkitr/khmerdict.dict,external/icu/khmerdict.dict))
 
+# cannot use post_action since $(file ..) would be run when the recipe is 
parsed, i.e. would always
+# happen before the tarball is unpacked
+$(gb_UnpackedTarball_workdir)/icu/icu-uc-uninstalled.pc: $(call 
gb_UnpackedTarball_get_target,icu)
+       $(file >$@,$(call 
gb_pkgconfig_file,icu-uc,$(ICU_MAJOR).$(ICU_MINOR),$(ICU_CFLAGS),$(ICU_LIBS)))
+
 # vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/Helper.mk b/solenv/gbuild/Helper.mk
index 0f54a81d2cb5..25bc378e3783 100644
--- a/solenv/gbuild/Helper.mk
+++ b/solenv/gbuild/Helper.mk
@@ -387,4 +387,14 @@ $(if $(gb_QUIET_EXTERNAL), \
     ( $(1) ))
 endef
 
+# call gb_pkgconfig_file,name,version,cflags,libs[,additional-lines]
+define gb_pkgconfig_file
+Name: $(1)
+Description: dummy pkg-config file for $(1)
+Version: $(2)
+Cflags: $(3)
+Libs: $(4)
+$(5)
+endef
+
 # vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/platform/com_MSC_class.mk 
b/solenv/gbuild/platform/com_MSC_class.mk
index b1a825a54dd2..af458fed98f8 100644
--- a/solenv/gbuild/platform/com_MSC_class.mk
+++ b/solenv/gbuild/platform/com_MSC_class.mk
@@ -739,7 +739,7 @@ gb_UIMenubarTarget_UIMenubarTarget_platform :=
 
 # Python
 gb_Python_HOME := $(INSTDIR_FOR_BUILD)/program/python-core-$(PYTHON_VERSION)
-gb_Python_PRECOMMAND := PATH="$(shell cygpath -w 
$(INSTDIR_FOR_BUILD)/program)" PYTHONHOME="$(gb_Python_HOME)" 
PYTHONPATH="$${PYPATH:+$$PYPATH;}$(gb_Python_HOME)/lib;$(gb_Python_HOME)/lib/lib-dynload:$(INSTDIR_FOR_BUILD)/program"
+gb_Python_PRECOMMAND := PATH="$(shell cygpath -u 
$(INSTDIR_FOR_BUILD)/program):$(shell cygpath.exe -uS)" 
PYTHONHOME="$(gb_Python_HOME)" 
PYTHONPATH="$${PYPATH:+$$PYPATH;}$(gb_Python_HOME)/lib;$(gb_Python_HOME)/lib/lib-dynload:$(INSTDIR_FOR_BUILD)/program"
 gb_Python_INSTALLED_EXECUTABLE := 
$(INSTROOT_FOR_BUILD)/$(LIBO_BIN_FOLDER)/python.exe
 
 gb_ICU_PRECOMMAND := PATH="$(shell cygpath -w 
$(WORKDIR_FOR_BUILD)/UnpackedTarball/icu/source/lib)"

Reply via email to