external/cairo/ExternalPackage_cairo.mk | 2 +- external/cairo/ExternalPackage_pixman.mk | 2 +- external/cairo/ExternalProject_cairo.mk | 6 ++++++ external/cairo/ExternalProject_pixman.mk | 6 ++++++ external/cairo/UnpackedTarball_cairo.mk | 4 +--- 5 files changed, 15 insertions(+), 5 deletions(-)
New commits: commit d6773eccb382c0c6b9d78f406c96230c5f40f44c Author: Hossein <[email protected]> AuthorDate: Tue Dec 2 15:12:36 2025 +0100 Commit: Hossein <[email protected]> CommitDate: Fri Dec 5 17:50:24 2025 +0100 Fix cairo / pixman build for headless macOS The library .dylib file path was not found when building cairo for macOS. Now it is possible to build cairo for macOS. Built library files for cario and pixman are adjusted using the tool install_name_tool, and also solenv/bin/macosx-change-install-names.pl perl script which also uses install_name_tool indirectly. From now on, macOS no longer uses the name 'libcairo' for built library file, and it will use 'libcairo-lo' like the other platforms. This removes the need for handling macOS differently from the other platforms. To use headless mode, these options should be added to autogen.input: --enable-headless --without-system-fontconfig --without-system-freetype Change-Id: I1895ba651a07b1dbd8488fa973ec1d90c24de63b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194931 Tested-by: Jenkins Reviewed-by: Dan Williams <[email protected]> Reviewed-by: Hossein <[email protected]> diff --git a/external/cairo/ExternalPackage_cairo.mk b/external/cairo/ExternalPackage_cairo.mk index 588f2689fe42..2110f4cdb556 100644 --- a/external/cairo/ExternalPackage_cairo.mk +++ b/external/cairo/ExternalPackage_cairo.mk @@ -13,7 +13,7 @@ $(eval $(call gb_ExternalPackage_use_external_project,cairo,cairo)) ifneq ($(DISABLE_DYNLOADING),TRUE) ifeq ($(OS),MACOSX) -$(eval $(call gb_ExternalPackage_add_file,cairo,$(LIBO_LIB_FOLDER)/libcairo.2.dylib,src/.libs/libcairo.2.dylib)) +$(eval $(call gb_ExternalPackage_add_file,cairo,$(LIBO_LIB_FOLDER)/libcairo-lo.2.dylib,builddir/src/libcairo-lo.2.dylib)) else $(eval $(call gb_ExternalPackage_add_file,cairo,$(LIBO_LIB_FOLDER)/libcairo-lo.so.2,builddir/src/libcairo-lo.so.2.1180$(CAIRO_VERSION_MICRO).$(CAIRO_VERSION_MICRO))) endif diff --git a/external/cairo/ExternalPackage_pixman.mk b/external/cairo/ExternalPackage_pixman.mk index c2f2dd549e33..75aa4f5c350b 100644 --- a/external/cairo/ExternalPackage_pixman.mk +++ b/external/cairo/ExternalPackage_pixman.mk @@ -13,7 +13,7 @@ $(eval $(call gb_ExternalPackage_use_external_project,pixman,pixman)) ifneq ($(DISABLE_DYNLOADING),TRUE) ifeq ($(OS),MACOSX) -$(eval $(call gb_ExternalPackage_add_file,pixman,$(LIBO_LIB_FOLDER)/libpixman-1.0.dylib,pixman/.libs/libpixman-1.0.46.4.dylib)) +$(eval $(call gb_ExternalPackage_add_file,pixman,$(LIBO_LIB_FOLDER)/libpixman-1.0.dylib,builddir/pixman/libpixman-1.0.dylib)) else $(eval $(call gb_ExternalPackage_add_file,pixman,$(LIBO_LIB_FOLDER)/libpixman-1.so.0,builddir/pixman/libpixman-1.so.0.46.4)) endif diff --git a/external/cairo/ExternalProject_cairo.mk b/external/cairo/ExternalProject_cairo.mk index be54cd53eced..681544068a9b 100644 --- a/external/cairo/ExternalProject_cairo.mk +++ b/external/cairo/ExternalProject_cairo.mk @@ -108,6 +108,12 @@ $(call gb_ExternalProject_get_state_target,cairo,build) : $(if $(filter-out $(BUILD_PLATFORM),$(HOST_PLATFORM))$(WSL),--cross-file cross-file.txt) && \ $(MESON) compile -C builddir \ $(if $(verbose),--verbose) \ + $(if $(filter MACOSX,$(OS)), \ + && install_name_tool -id @__________________________________________________OOO/libcairo-lo.2.dylib \ + $(gb_UnpackedTarball_workdir)/cairo/builddir/src/libcairo-lo.2.dylib \ + && $(PERL) $(SRCDIR)/solenv/bin/macosx-change-install-names.pl shl OOO \ + $(gb_UnpackedTarball_workdir)/cairo/builddir/src/libcairo-lo.2.dylib \ + ) \ ) $(call gb_Trace_EndRange,cairo,EXTERNAL) diff --git a/external/cairo/ExternalProject_pixman.mk b/external/cairo/ExternalProject_pixman.mk index e74865b91719..c925994782db 100644 --- a/external/cairo/ExternalProject_pixman.mk +++ b/external/cairo/ExternalProject_pixman.mk @@ -62,6 +62,12 @@ $(call gb_ExternalProject_get_state_target,pixman,build) : $(if $(filter-out $(BUILD_PLATFORM),$(HOST_PLATFORM))$(WSL),--cross-file cross-file.txt) && \ $(MESON) compile -C builddir \ $(if $(verbose),--verbose) \ + $(if $(filter MACOSX,$(OS)), \ + && install_name_tool -id @__________________________________________________OOO/libpixman-1.0.dylib \ + $(gb_UnpackedTarball_workdir)/pixman/builddir/pixman/libpixman-1.0.dylib \ + && $(PERL) $(SRCDIR)/solenv/bin/macosx-change-install-names.pl shl OOO \ + $(gb_UnpackedTarball_workdir)/pixman/builddir/pixman/libpixman-1.0.dylib \ + ) \ ) $(call gb_Trace_EndRange,pixman,EXTERNAL) diff --git a/external/cairo/UnpackedTarball_cairo.mk b/external/cairo/UnpackedTarball_cairo.mk index c3300586100d..215874761923 100644 --- a/external/cairo/UnpackedTarball_cairo.mk +++ b/external/cairo/UnpackedTarball_cairo.mk @@ -30,11 +30,9 @@ $(eval $(call gb_UnpackedTarball_add_patches,cairo,\ external/cairo/cairo/disable-cairo-utilities.patch.1 \ )) -ifneq ($(OS),MACOSX) $(eval $(call gb_UnpackedTarball_add_patches,cairo,\ external/cairo/cairo/libcairo-bundled-soname.patch.1 \ )) -endif ifeq ($(ENABLE_CAIRO_RGBA),TRUE) $(eval $(call gb_UnpackedTarball_add_patches,cairo,\ @@ -42,7 +40,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,cairo,\ )) endif -ifneq (,$(filter MACOSX ANDROID iOS,$(OS))) +ifneq (,$(filter ANDROID iOS,$(OS))) $(eval $(call gb_UnpackedTarball_add_file,cairo,.,external/cairo/cairo/dummy_pkg_config)) endif
