From aad732825e85a9ff527744c9f9810d3ccbec26cf Mon Sep 17 00:00:00 2001 From: Jan Holesovsky Date: Mon, 18 Nov 2024 13:56:59 +0100 Subject: [PATCH] Make it possible to build cairo even on macOS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Iea337f2fdd0f90e2b0612cd2cda9c1ea1f4739a0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194792 Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- Repository.mk | 2 +- RepositoryExternal.mk | 2 +- external/cairo/ExternalPackage_cairo.mk | 4 ++++ external/cairo/ExternalPackage_pixman.mk | 4 ++++ external/cairo/ExternalProject_cairo.mk | 2 +- external/cairo/ExternalProject_pixman.mk | 2 ++ external/cairo/UnpackedTarball_cairo.mk | 7 ++++++- external/fontconfig/ExternalPackage_fontconfig.mk | 4 ++++ external/fontconfig/ExternalProject_fontconfig.mk | 3 ++- external/fontconfig/Module_fontconfig.mk | 2 +- external/fontconfig/UnpackedTarball_fontconfig.mk | 7 ++++++- 11 files changed, 32 insertions(+), 7 deletions(-) diff --git a/Repository.mk b/Repository.mk index 0a8fc3727ddd..e0b5bc337f00 100644 --- a/Repository.mk +++ b/Repository.mk @@ -1047,7 +1047,7 @@ $(eval $(call gb_Helper_register_packages_for_install,ooo,\ $(eval $(call gb_Helper_register_packages_for_install,ooo_fonts,\ extras_fonts \ - $(if $(USING_X11)$(DISABLE_GUI)$(filter ANDROID EMSCRIPTEN,$(OS)), \ + $(if $(USING_X11)$(DISABLE_GUI)$(ENABLE_FONTCONFIG)$(filter ANDROID EMSCRIPTEN,$(OS)), \ postprocess_fontconfig) \ $(call gb_Helper_optional,MORE_FONTS,\ fonts_alef \ diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk index 963e230685b7..419ebfee1ec5 100644 --- a/RepositoryExternal.mk +++ b/RepositoryExternal.mk @@ -1371,7 +1371,7 @@ gb_ExternalProject__use_fontconfig := else # SYSTEM_FONTCONFIG -ifneq ($(filter-out MACOSX WNT,$(OS)),) +ifeq ($(ENABLE_FONTCONFIG),TRUE) $(eval $(call gb_Helper_register_packages_for_install,ooo,\ fontconfig \ diff --git a/external/cairo/ExternalPackage_cairo.mk b/external/cairo/ExternalPackage_cairo.mk index 3867e21aa6fd..588f2689fe42 100644 --- a/external/cairo/ExternalPackage_cairo.mk +++ b/external/cairo/ExternalPackage_cairo.mk @@ -12,7 +12,11 @@ $(eval $(call gb_ExternalPackage_ExternalPackage,cairo,cairo)) $(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)) +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 +endif # vim: set noet sw=4 ts=4: diff --git a/external/cairo/ExternalPackage_pixman.mk b/external/cairo/ExternalPackage_pixman.mk index 7f2261b6e405..c2f2dd549e33 100644 --- a/external/cairo/ExternalPackage_pixman.mk +++ b/external/cairo/ExternalPackage_pixman.mk @@ -12,7 +12,11 @@ $(eval $(call gb_ExternalPackage_ExternalPackage,pixman,pixman)) $(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)) +else $(eval $(call gb_ExternalPackage_add_file,pixman,$(LIBO_LIB_FOLDER)/libpixman-1.so.0,builddir/pixman/libpixman-1.so.0.46.4)) endif +endif # vim: set noet sw=4 ts=4: diff --git a/external/cairo/ExternalProject_cairo.mk b/external/cairo/ExternalProject_cairo.mk index bc39387aad7a..be54cd53eced 100644 --- a/external/cairo/ExternalProject_cairo.mk +++ b/external/cairo/ExternalProject_cairo.mk @@ -99,7 +99,7 @@ $(call gb_ExternalProject_get_state_target,cairo,build) : $(if $(debug),-Dstrip=false,-Dstrip=true) \ $(if $(filter -fsanitize=%,$(CC)),-Db_lundef=false) \ $(if $(filter TRUE,$(DISABLE_DYNLOADING)),-Ddefault_library=static,-Ddefault_library=shared) \ - $(if $(filter EMSCRIPTEN ANDROID iOS,$(OS)),-Dxlib=disabled -Dxcb=disabled,$(if $(filter TRUE,$(DISABLE_GUI)),-Dxlib=disabled -Dxcb=disabled,-Dxlib=enabled -Dxcb=enabled)) \ + $(if $(filter EMSCRIPTEN ANDROID iOS MACOSX,$(OS)),-Dxlib=disabled -Dxcb=disabled,$(if $(filter TRUE,$(DISABLE_GUI)),-Dxlib=disabled -Dxcb=disabled,-Dxlib=enabled -Dxcb=enabled)) \ $(if $(filter iOS,$(OS)),-Dquartz=enabled) \ $(if $(filter iOS,$(OS)),-Dfreetype=disabled,-Dfreetype=enabled -Dfontconfig=enabled) \ -Dgtk_doc=false -Dtests=disabled \ diff --git a/external/cairo/ExternalProject_pixman.mk b/external/cairo/ExternalProject_pixman.mk index 67105d2befa1..e74865b91719 100644 --- a/external/cairo/ExternalProject_pixman.mk +++ b/external/cairo/ExternalProject_pixman.mk @@ -54,9 +54,11 @@ $(call gb_ExternalProject_get_state_target,pixman,build) : -Ddefault_library=$(if $(filter TRUE,$(DISABLE_DYNLOADING)),static,shared) \ $(if $(call gb_Module__symbols_enabled,pixman),-Dc_args="$$PIXMAP_CFLAGS") \ $(if $(filter ANDROID,$(OS)),-Darm-simd=disabled -Dneon=disabled -Da64-neon=disabled) \ + $(if $(filter MACOSX,$(OS)),-Da64-neon=disabled) \ -Dbuildtype=$(if $(ENABLE_DBGUTIL),debug,$(if $(ENABLE_DEBUG),debugoptimized,release)) \ -Dauto_features=disabled \ -Dtests=disabled \ + $(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \ $(if $(filter-out $(BUILD_PLATFORM),$(HOST_PLATFORM))$(WSL),--cross-file cross-file.txt) && \ $(MESON) compile -C builddir \ $(if $(verbose),--verbose) \ diff --git a/external/cairo/UnpackedTarball_cairo.mk b/external/cairo/UnpackedTarball_cairo.mk index 9bf5bd6b9b92..c3300586100d 100644 --- a/external/cairo/UnpackedTarball_cairo.mk +++ b/external/cairo/UnpackedTarball_cairo.mk @@ -20,7 +20,6 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,cairo,2)) $(eval $(call gb_UnpackedTarball_add_patches,cairo,\ external/cairo/cairo/cairo.RGB24_888.patch \ external/cairo/cairo/san.patch.0 \ - external/cairo/cairo/libcairo-bundled-soname.patch.1 \ external/cairo/cairo/cairo-fd-hack.patch.0 \ external/cairo/cairo/cairo.ofz57493-Timeout.patch.1 \ external/cairo/cairo/shm-null-deref.patch.1 \ @@ -31,6 +30,12 @@ $(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,\ external/cairo/cairo/cairo.GL_RGBA.patch \ diff --git a/external/fontconfig/ExternalPackage_fontconfig.mk b/external/fontconfig/ExternalPackage_fontconfig.mk index 8f6e5f1e629a..9520de88d4de 100644 --- a/external/fontconfig/ExternalPackage_fontconfig.mk +++ b/external/fontconfig/ExternalPackage_fontconfig.mk @@ -12,7 +12,11 @@ $(eval $(call gb_ExternalPackage_ExternalPackage,fontconfig,fontconfig)) $(eval $(call gb_ExternalPackage_use_external_project,fontconfig,fontconfig)) ifeq ($(DISABLE_DYNLOADING),) +ifeq ($(OS),MACOSX) +$(eval $(call gb_ExternalPackage_add_file,fontconfig,$(LIBO_LIB_FOLDER)/libfontconfig.1.dylib,src/.libs/libfontconfig.1.dylib)) +else $(eval $(call gb_ExternalPackage_add_file,fontconfig,$(LIBO_LIB_FOLDER)/libfontconfig-lo.so.1.16.1,src/.libs/libfontconfig-lo.so.1.16.1)) endif +endif # vim: set noet sw=4 ts=4: diff --git a/external/fontconfig/ExternalProject_fontconfig.mk b/external/fontconfig/ExternalProject_fontconfig.mk index b59e2c2f48c5..547f69881e6b 100644 --- a/external/fontconfig/ExternalProject_fontconfig.mk +++ b/external/fontconfig/ExternalProject_fontconfig.mk @@ -27,7 +27,7 @@ $(call gb_ExternalProject_get_state_target,fontconfig,build) : $(if $(filter -fsanitize=undefined,$(CC)),CC='$(CC) -fno-sanitize=function') \ CFLAGS="$(CFLAGS) \ $(call gb_ExternalProject_get_build_flags,fontconfig) \ - $(gb_VISIBILITY_FLAGS) \ + $(if $(filter-out MACOSX,$(OS)),$(gb_VISIBILITY_FLAGS)) \ $(if $(filter EMSCRIPTEN,$(OS)),-pthread)" \ $(if $(filter ANDROID,$(OS)),LIBS="-lm") \ $(if $(filter EMSCRIPTEN,$(OS)),LIBXML2_CFLAGS="$(LIBXML_CFLAGS)" LIBXML2_LIBS="$(LIBXML_LIBS)") \ @@ -60,6 +60,7 @@ $(call gb_ExternalProject_get_state_target,fontconfig,build) : --with-cache-dir=/usr/lib/fontconfig/cache \ ) \ ) \ + $(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \ && $(MAKE) -C src && $(MAKE) fonts.conf \ ) $(call gb_Trace_EndRange,fontconfig,EXTERNAL) diff --git a/external/fontconfig/Module_fontconfig.mk b/external/fontconfig/Module_fontconfig.mk index 61f201d415b6..21dea02acd43 100644 --- a/external/fontconfig/Module_fontconfig.mk +++ b/external/fontconfig/Module_fontconfig.mk @@ -12,7 +12,7 @@ $(eval $(call gb_Module_Module,fontconfig)) $(eval $(call gb_Module_add_targets,fontconfig,\ ExternalProject_fontconfig \ $(if $(filter EMSCRIPTEN,$(OS)),ExternalPackage_fontconfig_data) \ - $(if $(filter LINUX,$(OS)),ExternalPackage_fontconfig) \ + $(if $(filter TRUE,$(ENABLE_FONTCONFIG)),ExternalPackage_fontconfig) \ UnpackedTarball_fontconfig \ )) diff --git a/external/fontconfig/UnpackedTarball_fontconfig.mk b/external/fontconfig/UnpackedTarball_fontconfig.mk index e37e8f6cb3e5..0636de8655ac 100644 --- a/external/fontconfig/UnpackedTarball_fontconfig.mk +++ b/external/fontconfig/UnpackedTarball_fontconfig.mk @@ -15,7 +15,12 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,fontconfig,0)) $(eval $(call gb_UnpackedTarball_add_patches,fontconfig,\ external/fontconfig/fontconfig-2.12.1.patch.1 \ - external/fontconfig/libfontconfig-bundled-soname.patch.0 \ )) +ifneq ($(OS),MACOSX) +$(eval $(call gb_UnpackedTarball_add_patches,fontconfig,\ + external/fontconfig/libfontconfig-bundled-soname.patch.0 \ +)) +endif + # vim: set noet sw=4 ts=4: