From 474c929abd5807685e0864b2eb726feb84ea4723 Mon Sep 17 00:00:00 2001 From: Gerasim Troeglazov <3dEyes@gmail.com> Date: Tue, 17 Oct 2023 19:10:05 +1000 Subject: [PATCH] LibreOffice: bump version --- ....7.2.recipe => libreoffice-7.6.2.1.recipe} | 70 +- .../patches/libreoffice-7.3.7.2.patchset | 707 ------------------ .../patches/libreoffice-7.6.2.1.patchset | 462 ++++++++++++ 3 files changed, 508 insertions(+), 731 deletions(-) rename app-office/libreoffice/{libreoffice-7.3.7.2.recipe => libreoffice-7.6.2.1.recipe} (86%) delete mode 100644 app-office/libreoffice/patches/libreoffice-7.3.7.2.patchset create mode 100644 app-office/libreoffice/patches/libreoffice-7.6.2.1.patchset diff --git a/app-office/libreoffice/libreoffice-7.3.7.2.recipe b/app-office/libreoffice/libreoffice-7.6.2.1.recipe similarity index 86% rename from app-office/libreoffice/libreoffice-7.3.7.2.recipe rename to app-office/libreoffice/libreoffice-7.6.2.1.recipe index 37f463499..88533753e 100644 --- a/app-office/libreoffice/libreoffice-7.3.7.2.recipe +++ b/app-office/libreoffice/libreoffice-7.6.2.1.recipe @@ -17,14 +17,15 @@ and Open Source office suite on the market: HOMEPAGE="https://www.libreoffice.org/" COPYRIGHT="2000-2023 LibreOffice contributors" LICENSE="MPL v2.0" -REVISION="2" +REVISION="1" SOURCE_URI="https://github.com/LibreOffice/core/archive/libreoffice-$portVersion.tar.gz" +CHECKSUM_SHA256="46c8bf9538bbf9b5e7d23775b4a55a89e341b11ff5c605dbdad2d27374600a16" SOURCE_DIR="core-libreoffice-$portVersion" -CHECKSUM_SHA256="fa47398c89ff3fba92a21e2f8c681413b0a5b419b0088db43241d5e8249b883b" +SOURCE_FILENAME="core-libreoffice-$portVersion.tar.gz" SOURCE_URI_2="https://github.com/LibreOffice/translations/archive/libreoffice-$portVersion.tar.gz" -CHECKSUM_SHA256_2="f78ef6d348ee4c7f365f00419867b3f395e9525bfd71189f7c265c74b1307d1a" +CHECKSUM_SHA256_2="e45b7e546b6d6044d5a1735d709a08c25c76fb6cb2421aa701d8a7fdfc72b039" SOURCE_DIR_2="translations-libreoffice-$portVersion" SOURCE_FILENAME_2="translations-libreoffice-$portVersion.tar.gz" @@ -34,11 +35,17 @@ CHECKSUM_SHA256_3="0082d0684f7db6f62361b76c4b7faba19e0c7ce5cb8e36c4b65fea8281e71 SOURCE_URI_4="https://dev-www.libreoffice.org/src/libcuckoo-93217f8d391718380c508a722ab9acd5e9081233.tar.gz#noarchive" CHECKSUM_SHA256_4="471dd83a813ed2816c2246c373004470ad0f6612c7ce72038929dc5161cdd58e" -srcGitRevision5="cd5a5ee2cc0e3b3a62a5827d22035752ec7813a3" -SOURCE_URI_5="https://github.com/threedeyes/LibreOfficeLauncher/archive/$srcGitRevision5.tar.gz" -CHECKSUM_SHA256_5="5314962ca770369398599e175dc2c35c685d3fc968c9894390490c737036e528" -SOURCE_DIR_5="LibreOfficeLauncher-$srcGitRevision5" -SOURCE_FILENAME_5="LibreOfficeLauncher-$srcGitRevision5.tar.gz" +SOURCE_URI_5="https://dev-www.libreoffice.org/src/dragonbox-1.1.3.tar.gz#noarchive" +CHECKSUM_SHA256_5="09d63b05e9c594ec423778ab59b7a5aa1d76fdd71d25c7048b0258c4ec9c3384" + +SOURCE_URI_6="https://dev-www.libreoffice.org/src/frozen-1.1.1.tar.gz#noarchive" +CHECKSUM_SHA256_6="f7c7075750e8fceeac081e9ef01944f221b36d9725beac8681cbd2838d26be45" + +srcGitRevision7="cd5a5ee2cc0e3b3a62a5827d22035752ec7813a3" +SOURCE_URI_7="https://github.com/threedeyes/LibreOfficeLauncher/archive/$srcGitRevision7.tar.gz" +CHECKSUM_SHA256_7="5314962ca770369398599e175dc2c35c685d3fc968c9894390490c737036e528" +SOURCE_DIR_7="LibreOfficeLauncher-$srcGitRevision7" +SOURCE_FILENAME_7="LibreOfficeLauncher-$srcGitRevision7.tar.gz" PATCHES="libreoffice-$portVersion.patchset" ADDITIONAL_FILES=" @@ -51,7 +58,7 @@ POST_INSTALL_SCRIPTS="$relativePostInstallDir/create_buildid.sh" ARCHITECTURES="all !x86_gcc2" SECONDARY_ARCHITECTURES="!x86" -boostMinimumVersion=1.70.0 +boostMinimumVersion=1.83.0 libreofficeLanguages="af ar be bg bn br brx bs ca ca-valencia cs cy da de dsb el en-GB en-ZA eo es et eu fa fi fr fy ga gd gl he hi hr hu id is it ja ka kk kmr-Latn ko lb lt lv mk mn nb ne nl nn pl pt pt-BR ro ru sa-IN sd sk sl sq sr sr-Latn sv szl tg th tr tt ug uk uz vi zh-CN zh-TW" PROVIDES=" @@ -66,7 +73,6 @@ REQUIRES=" lib:libboost_iostreams$secondaryArchSuffix lib:libboost_locale$secondaryArchSuffix lib:libBox2D$secondaryArchSuffix - lib:libcairo$secondaryArchSuffix lib:libcdr_0.1$secondaryArchSuffix lib:libclucene_core$secondaryArchSuffix lib:libcmis_0.5$secondaryArchSuffix @@ -107,19 +113,19 @@ REQUIRES=" lib:libnssutil3$secondaryArchSuffix lib:libnumbertext_1.0$secondaryArchSuffix lib:libodfgen_0.1$secondaryArchSuffix - lib:liborcus_0.17$secondaryArchSuffix + lib:liborcus_0.18$secondaryArchSuffix lib:libpagemaker_0.0$secondaryArchSuffix lib:libplc4$secondaryArchSuffix lib:libplds4$secondaryArchSuffix lib:libpng16$secondaryArchSuffix - lib:libpoppler$secondaryArchSuffix + lib:libpoppler_qt6$secondaryArchSuffix lib:libQt6Core$secondaryArchSuffix lib:libQt6Gui$secondaryArchSuffix lib:libQt6Widgets$secondaryArchSuffix lib:libqxp_0.0$secondaryArchSuffix lib:libraptor2$secondaryArchSuffix lib:librdf$secondaryArchSuffix - lib:libreadline$secondaryArchSuffix >= 7 + lib:libreadline$secondaryArchSuffix lib:librevenge_0.0$secondaryArchSuffix lib:librevenge_stream_0.0$secondaryArchSuffix lib:libsmime3$secondaryArchSuffix @@ -128,6 +134,7 @@ REQUIRES=" lib:libstaroffice_0.0$secondaryArchSuffix lib:libuuid$secondaryArchSuffix lib:libvisio_0.1$secondaryArchSuffix + lib:libwebp$secondaryArchSuffix lib:libwpd_0.10$secondaryArchSuffix lib:libwpg_0.3$secondaryArchSuffix lib:libwps_0.4$secondaryArchSuffix @@ -170,7 +177,6 @@ BUILD_REQUIRES=" devel:libboost_iostreams$secondaryArchSuffix >= $boostMinimumVersion devel:libboost_locale$secondaryArchSuffix >= $boostMinimumVersion devel:libBox2D$secondaryArchSuffix - devel:libcairo$secondaryArchSuffix devel:libcdr_0.1$secondaryArchSuffix devel:libclucene_contribs_lib$secondaryArchSuffix devel:libclucene_core$secondaryArchSuffix @@ -204,9 +210,9 @@ BUILD_REQUIRES=" devel:libnss3$secondaryArchSuffix devel:libnumbertext_1.0$secondaryArchSuffix devel:libodfgen_0.1$secondaryArchSuffix - devel:liborcus_0.17$secondaryArchSuffix + devel:liborcus_0.18$secondaryArchSuffix devel:libpagemaker_0.0$secondaryArchSuffix - devel:libpoppler$secondaryArchSuffix + devel:libpoppler_qt6$secondaryArchSuffix devel:libQt6Core$secondaryArchSuffix devel:libqrcodegen$secondaryArchSuffix devel:libqxp_0.0$secondaryArchSuffix @@ -218,6 +224,7 @@ BUILD_REQUIRES=" devel:libssl$secondaryArchSuffix devel:libstaroffice_0.0$secondaryArchSuffix devel:libvisio_0.1$secondaryArchSuffix + devel:libwebp$secondaryArchSuffix devel:libwpd_0.10$secondaryArchSuffix devel:libwpg_0.3$secondaryArchSuffix devel:libwps_0.4$secondaryArchSuffix @@ -226,7 +233,7 @@ BUILD_REQUIRES=" devel:libxslt$secondaryArchSuffix devel:libz$secondaryArchSuffix devel:libzmf_0.0$secondaryArchSuffix - devel:mdds >= 2 + devel:mdds >= 2.1 " BUILD_PREREQUIRES=" cmd:aclocal @@ -242,13 +249,13 @@ BUILD_PREREQUIRES=" cmd:git cmd:gperf cmd:grep - cmd:kf5_config$secondaryArchSuffix cmd:ld$secondaryArchSuffix cmd:libtool$secondaryArchSuffix cmd:make cmd:patch cmd:perl cmd:pkg_config$secondaryArchSuffix + cmd:python3.9 cmd:ucpp cmd:which cmd:xz @@ -257,9 +264,16 @@ BUILD_PREREQUIRES=" BUILD() { + export DISABLE_ASLR=1 + export CFLAGS="-fPIC" + export CXXFLAGS=$CFLAGS + export LDFLAGS=$CFLAGS + mkdir -p external/tarballs cp $sourceDir3/dtoa-20180411.tgz external/tarballs cp $sourceDir4/libcuckoo-93217f8d391718380c508a722ab9acd5e9081233.tar.gz external/tarballs + cp $sourceDir5/dragonbox-1.1.3.tar.gz external/tarballs + cp $sourceDir6/frozen-1.1.1.tar.gz external/tarballs rm -rf translations ln -s $sourceDir2 translations @@ -275,9 +289,12 @@ BUILD() --enable-readonly-installset \ --enable-python=no \ --enable-build-opensymbol \ + --enable-cairo-canvas=no \ --enable-sal-log \ \ --disable-ccache \ + --disable-firebird-sdbc \ + --disable-postgresql-sdbc \ --disable-fetch-external \ --disable-dependency-tracking \ --disable-zxing \ @@ -286,17 +303,22 @@ BUILD() --with-vendor="HaikuPorts" \ --with-system-libs \ --with-tls="openssl" \ - --with-system-nss \ --with-boost-libdir=`finddir B_SYSTEM_DIRECTORY`/$relativeDevelopLibDir \ - --with-system-ucpp \ - --with-system-cairo \ + --with-system-nss \ + --with-system-openssl \ \ --without-doxygen \ + --without-system-dragonbox \ + --without-system-frozen \ + --without-system-libfixmath \ + --without-helppack-integration \ + --without-java \ + --without-system-jars \ --with-lang="$libreofficeLanguages" - make $jobArgs build-nocheck + make $jobArgs - pushd $sourceDir5/src + pushd $sourceDir7/src make popd } @@ -307,7 +329,7 @@ INSTALL() mkdir -p $appDir cp -r instdir/* $appDir mv $appDir/program/soffice.bin $appDir/program/LibreOffice - cp $sourceDir5/src/LibreOffice\ {Calc,Database,Draw,Impress,Math,Writer} $appDir + cp $sourceDir7/src/LibreOffice\ {Calc,Database,Draw,Impress,Math,Writer} $appDir # make sure we do not copy default profile rm -rf $appDir/user $appDir/share/xdg diff --git a/app-office/libreoffice/patches/libreoffice-7.3.7.2.patchset b/app-office/libreoffice/patches/libreoffice-7.3.7.2.patchset deleted file mode 100644 index 4a3f4bedd..000000000 --- a/app-office/libreoffice/patches/libreoffice-7.3.7.2.patchset +++ /dev/null @@ -1,707 +0,0 @@ -From 04a798df18355fb87edf035d42e5420e07c9c7d3 Mon Sep 17 00:00:00 2001 -From: Sergei Reznikov -Date: Sat, 15 Feb 2020 14:52:59 +0300 -Subject: Make Elementary the default on Haiku - - -diff --git a/vcl/source/app/IconThemeSelector.cxx b/vcl/source/app/IconThemeSelector.cxx -index 5abb7b2..478a781 100644 ---- a/vcl/source/app/IconThemeSelector.cxx -+++ b/vcl/source/app/IconThemeSelector.cxx -@@ -56,6 +56,9 @@ IconThemeSelector::GetIconThemeForDesktopEnvironment(const OUString& desktopEnvi - #ifdef _WIN32 - (void)desktopEnvironment; - return "colibre"; -+#elif defined(__HAIKU__) -+ (void)desktopEnvironment; -+ return "elementary"; - #else - OUString r; - if ( desktopEnvironment.equalsIgnoreAsciiCase("plasma5") || --- -2.37.3 - - -From 57e7112c55054ab1ab9b482daa873f11c07f5913 Mon Sep 17 00:00:00 2001 -From: Sergei Reznikov -Date: Fri, 7 Aug 2020 12:14:40 +0300 -Subject: Show used vcl backend in About window on Haiku - - -diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx -index 66c030d..6ba2c53 100644 ---- a/vcl/source/app/svapp.cxx -+++ b/vcl/source/app/svapp.cxx -@@ -1198,7 +1198,7 @@ OUString Application::GetHWOSConfInfo(const int bSelection, const bool bLocalize - #endif - appendDetails(u"", Localize(SV_APP_DEFAULT, bLocalize)); - --#if (defined LINUX || defined _WIN32 || defined MACOSX || defined __FreeBSD__) -+#if (defined LINUX || defined _WIN32 || defined MACOSX || defined __FreeBSD__ || defined __HAIKU__) - appendDetails(u"; ", SV_APP_VCLBACKEND + GetToolkitName()); - #endif - } --- -2.37.3 - - -From bab5c7c19f76e34bc625110e4c6267de6ddb4633 Mon Sep 17 00:00:00 2001 -From: Sergei Reznikov -Date: Wed, 24 Oct 2018 17:01:34 +0300 -Subject: Identify Haiku in about window - - -diff --git a/vcl/unx/generic/app/geninst.cxx b/vcl/unx/generic/app/geninst.cxx -index 0093f64..04042bd 100644 ---- a/vcl/unx/generic/app/geninst.cxx -+++ b/vcl/unx/generic/app/geninst.cxx -@@ -26,6 +26,11 @@ - # include - #endif - -+#if defined(__HAIKU__) -+# include -+# include -+#endif -+ - #include - #if HAVE_FEATURE_OPENGL - #include -@@ -89,6 +94,16 @@ OUString SalGenericInstance::getOSVersion() - } - return OUString::createFromAscii( stName.sysname ) + " " + - aKernelVer.copy( 0, nIndex ); -+#elif defined(__HAIKU__) -+ struct utsname stName; -+ if ( uname( &stName ) != 0 ) -+ return aKernelVer; -+ -+ const char *haikuRevision = __get_haiku_revision(); -+ if (haikuRevision[0] != '\0') -+ return OUString::createFromAscii( stName.sysname ) + " " + OUString::createFromAscii(haikuRevision); -+ -+ return OUString::createFromAscii( stName.sysname ); - #else - return aKernelVer; - #endif --- -2.37.3 - - -From a730a4ba26d3194a2664e5ad5772e84a87331297 Mon Sep 17 00:00:00 2001 -From: Sergei Reznikov -Date: Sat, 15 Feb 2020 15:04:53 +0300 -Subject: Implement ShellExec on Haiku - - -diff --git a/shell/source/unix/exec/shellexec.cxx b/shell/source/unix/exec/shellexec.cxx -index ddfb2e6..24ce539 100644 ---- a/shell/source/unix/exec/shellexec.cxx -+++ b/shell/source/unix/exec/shellexec.cxx -@@ -174,6 +174,9 @@ void SAL_CALL ShellExec::execute( const OUString& aCommand, const OUString& aPar - aBuffer.append(" -R"); - } - aBuffer.append(" --"); -+ -+#elif __HAIKU__ -+ aBuffer.append("open"); - #else - // Just use xdg-open on non-Mac - aBuffer.append("xdg-open"); --- -2.37.3 - - -From 6784899788feb85ff2a4b3ed87166d5f2d9a1048 Mon Sep 17 00:00:00 2001 -From: Sergei Reznikov -Date: Sat, 20 Jul 2019 01:18:50 +0300 -Subject: Comment out linking with pthread - - -diff --git a/solenv/gbuild/platform/unxgcc.mk b/solenv/gbuild/platform/unxgcc.mk -index 0cec2ec..f7cc49d 100644 ---- a/solenv/gbuild/platform/unxgcc.mk -+++ b/solenv/gbuild/platform/unxgcc.mk -@@ -45,9 +45,9 @@ gb_CFLAGS := \ - # At least libstdc++ needs -pthread when including various C++ headers like , see - # : --ifneq ($(HAVE_LIBSTDCPP),) --gb_CXX_LINKFLAGS := -pthread --endif -+#ifneq ($(HAVE_LIBSTDCPP),) -+#gb_CXX_LINKFLAGS := -pthread -+#endif - - gb_CXXFLAGS := \ - $(gb_CXXFLAGS_COMMON) \ --- -2.37.3 - - -From 1475d275cb3dacecf81accfda565ca7aee11aa88 Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Sun, 11 Aug 2019 11:47:40 +1000 -Subject: Add XP_HAIKU defs for xmlsec - - -diff --git a/svl/Library_svl.mk b/svl/Library_svl.mk -index 6e79be4..3dfa25d 100644 ---- a/svl/Library_svl.mk -+++ b/svl/Library_svl.mk -@@ -183,6 +183,12 @@ $(eval $(call gb_Library_add_exception_objects,svl,\ - svl/source/uno/pathservice \ - )) - -+ifeq ($(OS),HAIKU) -+$(eval $(call gb_Library_add_defs,svl,\ -+ -DXP_HAIKU=1 \ -+)) -+endif -+ - ifeq ($(OS),WNT) - $(eval $(call gb_Library_add_exception_objects,svl,\ - svl/source/svdde/ddecli \ -diff --git a/xmlsecurity/Library_xsec_xmlsec.mk b/xmlsecurity/Library_xsec_xmlsec.mk -index 450e19b..568ff83 100644 ---- a/xmlsecurity/Library_xsec_xmlsec.mk -+++ b/xmlsecurity/Library_xsec_xmlsec.mk -@@ -124,6 +124,12 @@ endif - - else # !$(OS),WNT - -+ifeq ($(OS),HAIKU) -+$(eval $(call gb_Library_add_defs,xsec_xmlsec,\ -+ -DXP_HAIKU=1 \ -+)) -+endif -+ - ifeq ($(SYSTEM_XMLSEC),) - $(eval $(call gb_Library_add_libs,xsec_xmlsec,\ - $(call gb_UnpackedTarball_get_dir,xmlsec)/src/nss/.libs/libxmlsec1-nss.a \ --- -2.37.3 - - -From 0805f660b0304e7a9b6edbdec358babf6d646ab7 Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Fri, 7 Aug 2020 12:37:45 +0300 -Subject: Cast to boolean - - -diff --git a/vcl/source/filter/jpeg/jpegc.cxx b/vcl/source/filter/jpeg/jpegc.cxx -index 8807927..c570173 100644 ---- a/vcl/source/filter/jpeg/jpegc.cxx -+++ b/vcl/source/filter/jpeg/jpegc.cxx -@@ -172,13 +172,13 @@ static void ReadJPEG(JpegStuff& rContext, JPEGReader* pJPEGReader, void* pInputS - rContext.aOwner.set(&rContext.cinfo); - jpeg_svstream_src(&rContext.cinfo, pInputStream); - SourceManagerStruct *source = reinterpret_cast(rContext.cinfo.src); -- jpeg_read_header(&rContext.cinfo, TRUE); -+ jpeg_read_header(&rContext.cinfo, static_cast(TRUE)); - - rContext.cinfo.scale_num = 1; - rContext.cinfo.scale_denom = 1; - rContext.cinfo.output_gamma = 1.0; -- rContext.cinfo.raw_data_out = FALSE; -- rContext.cinfo.quantize_colors = FALSE; -+ rContext.cinfo.raw_data_out = static_cast(FALSE); -+ rContext.cinfo.quantize_colors = static_cast(FALSE); - - jpeg_calc_output_dimensions(&rContext.cinfo); - -@@ -372,7 +372,7 @@ bool WriteJPEG( JPEGWriter* pJPEGWriter, void* pOutputStream, - } - - jpeg_set_defaults( &cinfo ); -- jpeg_set_quality( &cinfo, static_cast(nQualityPercent), FALSE ); -+ jpeg_set_quality( &cinfo, static_cast(nQualityPercent), static_cast(FALSE) ); - - if (o3tl::convertsToAtMost(rPPI.getX(), 65535) && o3tl::convertsToAtMost(rPPI.getY(), 65535)) - { -@@ -404,7 +404,7 @@ bool WriteJPEG( JPEGWriter* pJPEGWriter, void* pOutputStream, - cinfo.comp_info[0].v_samp_factor = 2; - } - -- jpeg_start_compress( &cinfo, TRUE ); -+ jpeg_start_compress( &cinfo, static_cast(TRUE) ); - - for( nY = 0; nY < nHeight; nY++ ) - { -@@ -439,10 +439,10 @@ void Transform(void* pInputStream, void* pOutputStream, Degree10 nAngle) - jvirt_barray_ptr* aSourceCoefArrays = nullptr; - jvirt_barray_ptr* aDestinationCoefArrays = nullptr; - -- aTransformOption.force_grayscale = FALSE; -- aTransformOption.trim = FALSE; -- aTransformOption.perfect = FALSE; -- aTransformOption.crop = FALSE; -+ aTransformOption.force_grayscale = static_cast(FALSE); -+ aTransformOption.trim = static_cast(FALSE); -+ aTransformOption.perfect = static_cast(FALSE); -+ aTransformOption.crop = static_cast(FALSE); - - // Angle to transform option - // 90 Clockwise = 270 Counterclockwise -@@ -471,7 +471,7 @@ void Transform(void* pInputStream, void* pOutputStream, Degree10 nAngle) - aDestinationInfo.err->error_exit = errorExit; - aDestinationInfo.err->output_message = outputMessage; - -- aDestinationInfo.optimize_coding = TRUE; -+ aDestinationInfo.optimize_coding = static_cast(TRUE); - - JpegDecompressOwner aDecompressOwner; - JpegCompressOwner aCompressOwner; -@@ -497,7 +497,7 @@ void Transform(void* pInputStream, void* pOutputStream, Degree10 nAngle) - jpeg_svstream_src (&aSourceInfo, pInputStream); - - jcopy_markers_setup(&aSourceInfo, aCopyOption); -- jpeg_read_header(&aSourceInfo, TRUE); -+ jpeg_read_header(&aSourceInfo, static_cast(TRUE)); - jtransform_request_workspace(&aSourceInfo, &aTransformOption); - - aSourceCoefArrays = jpeg_read_coefficients(&aSourceInfo); -@@ -507,7 +507,7 @@ void Transform(void* pInputStream, void* pOutputStream, Degree10 nAngle) - jpeg_svstream_dest (&aDestinationInfo, pOutputStream); - - // Compute optimal Huffman coding tables instead of precomputed tables -- aDestinationInfo.optimize_coding = TRUE; -+ aDestinationInfo.optimize_coding = static_cast(TRUE); - jpeg_write_coefficients(&aDestinationInfo, aDestinationCoefArrays); - jcopy_markers_execute(&aSourceInfo, &aDestinationInfo, aCopyOption); - jtransform_execute_transformation(&aSourceInfo, &aDestinationInfo, aSourceCoefArrays, &aTransformOption); --- -2.37.3 - - -From 84c98e91fffb3ece96a1d30fb10c3f26ca7c691a Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Mon, 8 Feb 2021 15:50:11 +1000 -Subject: Use dpi=100 for qt5 backend - - -diff --git a/vcl/qt5/QtGraphics_GDI.cxx b/vcl/qt5/QtGraphics_GDI.cxx -index 6849a3b..b457e81 100644 ---- a/vcl/qt5/QtGraphics_GDI.cxx -+++ b/vcl/qt5/QtGraphics_GDI.cxx -@@ -711,6 +711,10 @@ void QtGraphics::GetResolution(sal_Int32& rDPIX, sal_Int32& rDPIY) - rDPIX = rDPIY = sForceDPI.toInt32(); - return; - } -+#ifdef __HAIKU__ -+ rDPIX = rDPIY = 100; -+ return; -+#endif - - if (!m_pFrame) - return; --- -2.37.3 - - -From a5e842fbbedc068397b2e49cc1e94e3ba638bfae Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Mon, 8 Feb 2021 15:52:13 +1000 -Subject: Disable hidpi for Haiku - - -diff --git a/vcl/qt5/QtInstance.cxx b/vcl/qt5/QtInstance.cxx -index 2470014..dbbe3b6 100644 ---- a/vcl/qt5/QtInstance.cxx -+++ b/vcl/qt5/QtInstance.cxx -@@ -696,7 +696,7 @@ void QtInstance::MoveFakeCmdlineArgs(std::unique_ptr& rFakeArgv, - - std::unique_ptr QtInstance::CreateQApplication(int& nArgc, char** pArgv) - { --#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) -+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) && !defined(__HAIKU__) - // for Qt 6, setting Qt::AA_EnableHighDpiScaling and Qt::AA_UseHighDpiPixmaps - // is deprecated, they're always enabled - QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); --- -2.37.3 - - -From e354fc5ace0a3271fa12e73fe3470e2231e83953 Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Mon, 8 Feb 2021 21:47:12 +1000 -Subject: Don't use fontconfig - - -diff --git a/vcl/qt5/QtGraphics_Text.cxx b/vcl/qt5/QtGraphics_Text.cxx -index b509c2a..6668fb6 100644 ---- a/vcl/qt5/QtGraphics_Text.cxx -+++ b/vcl/qt5/QtGraphics_Text.cxx -@@ -113,10 +113,10 @@ void QtGraphics::GetDevFontList(vcl::font::PhysicalFontCollection* pPFC) - const OString& rFileName = rMgr.getFontFileSysPath(aInfo.m_nID); - rFontManager.AddFontFile(rFileName, nFaceNum, nVariantNum, aInfo.m_nID, aDFA); - } -- -+#ifndef __HAIKU__ - if (bUseFontconfig) - SalGenericInstance::RegisterFontSubstitutors(pPFC); -- -+#endif - for (auto& family : aFDB.families()) - for (auto& style : aFDB.styles(family)) - pPFC->Add(QtFontFace::fromQFontDatabase(family, style)); --- -2.37.3 - - -From 56edbe8cab1d4fd9d5c607d0c8365ccc855b7b2e Mon Sep 17 00:00:00 2001 -From: Sergei Reznikov -Date: Fri, 7 Aug 2020 12:47:56 +0300 -Subject: Revert fstack-protector check removal in - 9db11a8ab648f4d04e59e6bb94cd640f64835447 - - -diff --git a/config_host.mk.in b/config_host.mk.in -index df934f4..65056ea 100644 ---- a/config_host.mk.in -+++ b/config_host.mk.in -@@ -275,6 +275,7 @@ export HAVE_CXX20_ATOMIC_REF=@HAVE_CXX20_ATOMIC_REF@ - export HAVE_DLLEXPORTINLINES=@HAVE_DLLEXPORTINLINES@ - export HAVE_LO_CLANG_DLLEXPORTINLINES=@HAVE_LO_CLANG_DLLEXPORTINLINES@ - export HAVE_GCC_AVX=@HAVE_GCC_AVX@ -+export HAVE_GCC_STACK_PROTECTOR_STRONG=@HAVE_GCC_STACK_PROTECTOR_STRONG@ - export HAVE_GCC_BUILTIN_ATOMIC=@HAVE_GCC_BUILTIN_ATOMIC@ - export HAVE_GCC_FNO_ENFORCE_EH_SPECS=@HAVE_GCC_FNO_ENFORCE_EH_SPECS@ - export HAVE_GCC_FNO_SIZED_DEALLOCATION=@HAVE_GCC_FNO_SIZED_DEALLOCATION@ -diff --git a/configure.ac b/configure.ac -index 5430110..e57f0ec 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1093,6 +1093,7 @@ haiku*) - using_x11=no - test_gtk3_kde5=no - test_kf5=yes -+ test_qt6=yes - enable_odk=no - enable_coinmp=no - enable_pdfium=no -@@ -7119,6 +7120,17 @@ if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then - AC_MSG_RESULT([no]) - fi - -+ AC_MSG_CHECKING([whether $CC_BASE supports -fstack-protector-strong]) -+ save_CFLAGS=$CFLAGS -+ CFLAGS="$CFLAGS -O0 -Werror -fstack-protector-strong" -+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ char a[8]; a[7] = 0; ]])],[ HAVE_GCC_STACK_PROTECTOR_STRONG=TRUE ],[]) -+ CFLAGS=$save_CFLAGS -+ if test "$HAVE_GCC_STACK_PROTECTOR_STRONG" = "TRUE"; then -+ AC_MSG_RESULT([yes]) -+ else -+ AC_MSG_RESULT([no]) -+ fi -+ - AC_MSG_CHECKING([whether $CC_BASE supports atomic functions]) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ - int v = 0; -@@ -7256,6 +7268,7 @@ if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then - fi - - AC_SUBST(HAVE_GCC_AVX) -+AC_SUBST(HAVE_GCC_STACK_PROTECTOR_STRONG) - AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC) - AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION) - -@@ -12993,16 +13006,16 @@ dnl =================================================================== - - QT6_CFLAGS="" - QT6_LIBS="" --QMAKE6="qmake" -+QMAKE6="qmake6" - MOC6="moc" - QT6_PLATFORMS_SRCDIR="" - if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \) - then - qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes" -- qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries" -+ qt6_libdirs="$QT6LIB /system/lib /usr/lib/qt6 /usr/lib $x_libraries" - - if test -n "$supports_multilib"; then -- qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64" -+ qt6_libdirs="$qt6_libdirs /system/lib /usr/lib64/qt6 /usr/lib64/qt /usr/lib64" - fi - - qt6_test_include="QtWidgets/qapplication.h" -@@ -13016,7 +13029,7 @@ then - if test -n "$QT6DIR"; then - AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin]) - else -- AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake], no) -+ AC_PATH_PROGS(QMAKE6, [qmake6], no) - fi - if test "$QMAKE6" = "no"; then - AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".]) -@@ -13093,7 +13106,7 @@ then - - dnl Check for Meta Object Compiler - -- AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$PATH]) -+ AC_PATH_PROGS( MOC6, [moc], no, [`dirname $qt6_libdir`/libexec:/system/lib/Qt6:$QT6DIR/libexec:$PATH]) - if test "$MOC6" = "no"; then - AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify - the root of your Qt installation by exporting QT6DIR before running "configure".]) -diff --git a/solenv/gbuild/platform/com_GCC_defs.mk b/solenv/gbuild/platform/com_GCC_defs.mk -index 589c9ee..0cf6a91 100644 ---- a/solenv/gbuild/platform/com_GCC_defs.mk -+++ b/solenv/gbuild/platform/com_GCC_defs.mk -@@ -70,7 +70,7 @@ gb_CFLAGS_COMMON := \ - -fmessage-length=0 \ - -fno-common \ - -pipe \ -- $(if $(filter EMSCRIPTEN,$(OS)),-fno-stack-protector,-fstack-protector-strong) \ -+ $(if $(or $(filter EMSCRIPTEN,$(OS)),$(filter HAIKU,$(OS))),-fno-stack-protector,-fstack-protector-strong) \ - $(if $(gb_COLOR),-fdiagnostics-color=always) \ - - gb_CXXFLAGS_COMMON := \ -@@ -88,7 +88,7 @@ gb_CXXFLAGS_COMMON := \ - -fmessage-length=0 \ - -fno-common \ - -pipe \ -- $(if $(filter EMSCRIPTEN,$(OS)),-fno-stack-protector,-fstack-protector-strong) \ -+ $(if $(or $(filter EMSCRIPTEN,$(OS)),$(filter HAIKU,$(OS))),-fno-stack-protector,-fstack-protector-strong) \ - $(if $(gb_COLOR),-fdiagnostics-color=always) \ - - ifeq ($(HAVE_WDEPRECATED_COPY_DTOR),TRUE) -@@ -153,7 +153,7 @@ endif - gb_VISIBILITY_FLAGS_CXX := -fvisibility-inlines-hidden - gb_CXXFLAGS_COMMON += $(gb_VISIBILITY_FLAGS_CXX) - --gb_LinkTarget_LDFLAGS += $(if $(filter EMSCRIPTEN,$(OS)),-fno-stack-protector,-fstack-protector-strong) -+gb_LinkTarget_LDFLAGS += $(if $(or $(filter EMSCRIPTEN,$(OS)),$(filter HAIKU,$(OS))),-fno-stack-protector,-fstack-protector-strong) - - ifneq ($(gb_ENABLE_PCH),) - ifeq ($(COM_IS_CLANG),TRUE) --- -2.37.3 - - -From 13c58262d4b09eb56eb39f7647664f066c9fa1ad Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Fri, 20 Aug 2021 23:33:13 +1000 -Subject: Revert Qt::Popup window handling - - -diff --git a/vcl/qt5/QtFrame.cxx b/vcl/qt5/QtFrame.cxx -index 6c5f3b7..05feec3 100644 ---- a/vcl/qt5/QtFrame.cxx -+++ b/vcl/qt5/QtFrame.cxx -@@ -117,10 +117,7 @@ QtFrame::QtFrame(QtFrame* pParent, SalFrameStyleFlags nStyle, bool bUseCairo) - , m_bDefaultPos(true) - , m_bFullScreen(false) - , m_bFullScreenSpanAll(false) --#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0) && QT5_USING_X11) \ -- || (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) && QT6_USING_X11) - , m_nKeyModifiers(ModKeyFlags::NONE) --#endif - , m_nInputLanguage(LANGUAGE_DONTKNOW) - { - QtInstance* pInst = static_cast(GetSalData()->m_pInstance); -@@ -149,7 +146,7 @@ QtFrame::QtFrame(QtFrame* pParent, SalFrameStyleFlags nStyle, bool bUseCairo) - else if ((nStyle & SalFrameStyleFlags::FLOAT) - && (nStyle & SalFrameStyleFlags::OWNERDRAWDECORATION)) - aWinFlags = Qt::Tool | Qt::FramelessWindowHint; -- else if (nStyle & SalFrameStyleFlags::TOOLTIP) -+ else if (nStyle & (nStyle & SalFrameStyleFlags::FLOAT | SalFrameStyleFlags::TOOLTIP)) - aWinFlags = Qt::ToolTip; - // Can't use Qt::Popup, because it grabs the input focus and generates a focus-out event, - // instantly auto-closing the LO's editable ComboBox popup. -@@ -206,6 +203,7 @@ void QtFrame::screenChanged(QScreen*) { m_pQWidget->fakeResize(); } - - void QtFrame::FillSystemEnvData(SystemEnvData& rData, sal_IntPtr pWindow, QWidget* pWidget) - { -+#ifndef __HAIKU__ - if (QGuiApplication::platformName() == "wayland") - rData.platform = SystemEnvData::Platform::Wayland; - else if (QGuiApplication::platformName() == "xcb") -@@ -217,7 +215,7 @@ void QtFrame::FillSystemEnvData(SystemEnvData& rData, sal_IntPtr pWindow, QWidge - "Unsupported qt VCL platform: " << toOUString(QGuiApplication::platformName())); - std::abort(); - } -- -+#endif - rData.toolkit = SystemEnvData::Toolkit::Qt; - rData.aShellWindow = pWindow; - rData.pWidget = pWidget; -diff --git a/vcl/qt5/QtWidget.cxx b/vcl/qt5/QtWidget.cxx -index 8c545fd..a7d5e89 100644 ---- a/vcl/qt5/QtWidget.cxx -+++ b/vcl/qt5/QtWidget.cxx -@@ -187,13 +187,7 @@ void QtWidget::handleMouseButtonEvent(const QtFrame& rFrame, const QMouseEvent* - rFrame.CallCallback(nEventType, &aEvent); - } - --void QtWidget::mousePressEvent(QMouseEvent* pEvent) --{ -- handleMousePressEvent(m_rFrame, pEvent); -- if (m_rFrame.isPopup() -- && !geometry().translated(geometry().topLeft() * -1).contains(pEvent->pos())) -- closePopup(); --} -+void QtWidget::mousePressEvent(QMouseEvent* pEvent) { handleMousePressEvent(m_rFrame, pEvent); } - - void QtWidget::mouseReleaseEvent(QMouseEvent* pEvent) { handleMouseReleaseEvent(m_rFrame, pEvent); } - --- -2.37.3 - - -From f7138ae9f0712337a4eca5727b47ebe25814b6b5 Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Wed, 4 May 2022 21:46:48 +1000 -Subject: Use Noto Sans as default font - - -diff --git a/unotools/source/config/fontcfg.cxx b/unotools/source/config/fontcfg.cxx -index ef94981..1747a8e 100644 ---- a/unotools/source/config/fontcfg.cxx -+++ b/unotools/source/config/fontcfg.cxx -@@ -225,6 +225,11 @@ OUString DefaultFontConfiguration::getUserInterfaceFont( const LanguageTag& rLan - if( aLanguageTag.isSystemLocale() ) - aLanguageTag = SvtSysLocale().GetUILanguageTag(); - -+#ifdef __HAIKU__ -+ static constexpr OUStringLiteral HAIKU_UI_SANS = u"Noto Sans Display"; -+ return HAIKU_UI_SANS; -+#endif -+ - OUString aUIFont = getDefaultFont( aLanguageTag, DefaultFontType::UI_SANS ); - - if( !aUIFont.isEmpty() ) --- -2.37.3 - - -From dd049b9136fb5bec2195a76378656bbddb612891 Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Wed, 4 May 2022 21:48:43 +1000 -Subject: Style tune - - -diff --git a/vcl/qt5/QtGraphics_Controls.cxx b/vcl/qt5/QtGraphics_Controls.cxx -index e6e3d82..9a05d5a 100644 ---- a/vcl/qt5/QtGraphics_Controls.cxx -+++ b/vcl/qt5/QtGraphics_Controls.cxx -@@ -1010,6 +1010,8 @@ bool QtGraphics_Controls::getNativeControlRegion(ControlType type, ControlPart p - QSize aMinSize = upscale(sizeFromContents(QStyle::CT_TabBarTab, &sot, - downscale(contentRect.size(), Round::Ceil)), - Round::Ceil); -+ aMinSize.rwidth() += 12; -+ aMinSize.rheight() += 2; - contentRect.setSize(aMinSize); - boundingRect = contentRect; - retVal = true; --- -2.37.3 - - -From cd831b40068b77dd798bb80db87f7d43a94ac8f2 Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Wed, 4 May 2022 21:49:34 +1000 -Subject: Reorder vcl plugins for Haiku - - -diff --git a/vcl/source/app/salplug.cxx b/vcl/source/app/salplug.cxx -index 7c2a91c..a3b2726 100644 ---- a/vcl/source/app/salplug.cxx -+++ b/vcl/source/app/salplug.cxx -@@ -282,9 +282,13 @@ SalInstance *CreateSalInstance() - #else - #ifdef MACOSX - "osx" -+#else -+#ifdef __HAIKU__ -+ "qt6", "kf5", "qt5" - #else - "gtk3", "kf5", "gen" - #endif -+#endif - #endif - }; - --- -2.37.3 - - -From 7e5b719fe7823a94771d07f8bc1fe94ec964e951 Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Wed, 4 May 2022 21:50:08 +1000 -Subject: FIx build for Qt6 - - -diff --git a/vcl/inc/qt5/QtFrame.hxx b/vcl/inc/qt5/QtFrame.hxx -index 23a4fd9..f9c71e5 100644 ---- a/vcl/inc/qt5/QtFrame.hxx -+++ b/vcl/inc/qt5/QtFrame.hxx -@@ -104,10 +104,7 @@ class VCLPLUG_QT_PUBLIC QtFrame : public QObject, public SalFrame - #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) && QT5_USING_X11 - ScreenSaverInhibitor m_ScreenSaverInhibitor; - #endif --#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0) && QT5_USING_X11) \ -- || (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) && QT6_USING_X11) - ModKeyFlags m_nKeyModifiers; --#endif - - LanguageType m_nInputLanguage; - --- -2.37.3 - - -From 56e125b0f82ad78fc9eb2ffed6e10655a6bb7377 Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Fri, 6 May 2022 10:55:46 +1000 -Subject: Use system font - - -diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx -index 186013e..5c6cba4 100644 ---- a/vcl/source/app/settings.cxx -+++ b/vcl/source/app/settings.cxx -@@ -25,6 +25,12 @@ - #include - #endif - -+#ifdef __HAIKU__ -+#include -+#include -+#include -+#endif -+ - #include - #include - -@@ -622,13 +628,26 @@ ImplStyleData::ImplStyleData( const ImplStyleData& rData ) : - - void ImplStyleData::SetStandardStyles() - { -- vcl::Font aStdFont( FAMILY_SWISS, Size( 0, 8 ) ); -+ vcl::Font aStdFont( FAMILY_SWISS, Size( 0, 9 ) ); - aStdFont.SetCharSet( osl_getThreadTextEncoding() ); - aStdFont.SetWeight( WEIGHT_NORMAL ); -+#ifdef __HAIKU__ -+ if (be_app) { -+ font_family plainFontFamily; -+ font_style plainFontStyle; -+ BFont haikuPlainFont = *be_plain_font; -+ haikuPlainFont.GetFamilyAndStyle(&plainFontFamily, &plainFontStyle); -+ aStdFont.SetFamilyName(OStringToOUString(std::string_view(plainFontFamily), osl_getThreadTextEncoding())); -+ aStdFont.SetStyleName(OStringToOUString(std::string_view(plainFontStyle), osl_getThreadTextEncoding())); -+ } else { -+ aStdFont.SetFamilyName("Noto Sans Display"); -+ } -+#else - if (!utl::ConfigManager::IsFuzzing()) - aStdFont.SetFamilyName(utl::DefaultFontConfiguration::get().getUserInterfaceFont(LanguageTag("en"))); - else - aStdFont.SetFamilyName("Liberation Sans"); -+#endif - maAppFont = aStdFont; - maHelpFont = aStdFont; - maMenuFont = aStdFont; --- -2.37.3 - diff --git a/app-office/libreoffice/patches/libreoffice-7.6.2.1.patchset b/app-office/libreoffice/patches/libreoffice-7.6.2.1.patchset new file mode 100644 index 000000000..ebd9b7888 --- /dev/null +++ b/app-office/libreoffice/patches/libreoffice-7.6.2.1.patchset @@ -0,0 +1,462 @@ +From 80f2f59e1d6945023d70277087db3aed1bccaf1b Mon Sep 17 00:00:00 2001 +From: Sergei Reznikov +Date: Sat, 15 Feb 2020 14:52:59 +0300 +Subject: Make Elementary the default on Haiku + + +diff --git a/vcl/source/app/IconThemeSelector.cxx b/vcl/source/app/IconThemeSelector.cxx +index 6b8dfc0..3d557ad 100644 +--- a/vcl/source/app/IconThemeSelector.cxx ++++ b/vcl/source/app/IconThemeSelector.cxx +@@ -67,6 +67,9 @@ IconThemeSelector::GetIconThemeForDesktopEnvironment(const OUString& desktopEnvi + return "colibre"; + else + return "colibre_dark"; ++#elif defined(__HAIKU__) ++ (void)desktopEnvironment; ++ return "elementary"; + #else + OUString r; + if ( desktopEnvironment.equalsIgnoreAsciiCase("plasma5") || +-- +2.42.0 + + +From c8c1e803eda7036f2330bcd724dbd5b1ef56c3b4 Mon Sep 17 00:00:00 2001 +From: Sergei Reznikov +Date: Fri, 7 Aug 2020 12:14:40 +0300 +Subject: Show used vcl backend in About window on Haiku + + +diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx +index 6ee03f1..3c1653e 100644 +--- a/vcl/source/app/svapp.cxx ++++ b/vcl/source/app/svapp.cxx +@@ -1208,7 +1208,7 @@ OUString Application::GetHWOSConfInfo(const int bSelection, const bool bLocalize + #endif + appendDetails(u"", Localize(SV_APP_DEFAULT, bLocalize)); + +-#if (defined LINUX || defined _WIN32 || defined MACOSX || defined __FreeBSD__ || defined EMSCRIPTEN) ++#if (defined LINUX || defined _WIN32 || defined MACOSX || defined __FreeBSD__ || defined EMSCRIPTEN || defined __HAIKU__) + appendDetails(u"; ", SV_APP_VCLBACKEND + GetToolkitName()); + #endif + } +-- +2.42.0 + + +From f9391b7dcd11f833851db3b20982a6705e80c1d6 Mon Sep 17 00:00:00 2001 +From: Sergei Reznikov +Date: Wed, 24 Oct 2018 17:01:34 +0300 +Subject: Identify Haiku in about window + + +diff --git a/vcl/unx/generic/app/geninst.cxx b/vcl/unx/generic/app/geninst.cxx +index 191d87c..949155f 100644 +--- a/vcl/unx/generic/app/geninst.cxx ++++ b/vcl/unx/generic/app/geninst.cxx +@@ -26,6 +26,11 @@ + # include + #endif + ++#if defined(__HAIKU__) ++# include ++# include ++#endif ++ + #include + #if HAVE_FEATURE_OPENGL + #include +@@ -92,6 +97,16 @@ OUString SalGenericInstance::getOSVersion() + #define xstr(s) str(s) + aKernelVer = "Emscripten " xstr(__EMSCRIPTEN_major__) + "." xstr(__EMSCRIPTEN_minor__) "." xstr(__EMSCRIPTEN_tiny__); ++#elif defined(__HAIKU__) ++ struct utsname stName; ++ if ( uname( &stName ) != 0 ) ++ return aKernelVer; ++ ++ const char *haikuRevision = __get_haiku_revision(); ++ if (haikuRevision[0] != '\0') ++ return OUString::createFromAscii( stName.sysname ) + " " + OUString::createFromAscii(haikuRevision); ++ ++ return OUString::createFromAscii( stName.sysname ); + #endif + return aKernelVer; + } +-- +2.42.0 + + +From defb4cca11b9b148add1fbae739c5ef707a1369b Mon Sep 17 00:00:00 2001 +From: Sergei Reznikov +Date: Sat, 15 Feb 2020 15:04:53 +0300 +Subject: Implement ShellExec on Haiku + + +diff --git a/shell/source/unix/exec/shellexec.cxx b/shell/source/unix/exec/shellexec.cxx +index 71137c7..a5fcd27 100644 +--- a/shell/source/unix/exec/shellexec.cxx ++++ b/shell/source/unix/exec/shellexec.cxx +@@ -187,6 +187,9 @@ void SAL_CALL ShellExec::execute( const OUString& aCommand, const OUString& aPar + aBuffer.append(" -R"); + } + aBuffer.append(" --"); ++ ++#elif __HAIKU__ ++ aBuffer.append("open"); + #else + // Just use xdg-open on non-Mac + aBuffer.append("xdg-open"); +-- +2.42.0 + + +From 56e2681a95e2b01e29b4256788efe24904905455 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Sun, 11 Aug 2019 11:47:40 +1000 +Subject: Add XP_HAIKU defs for xmlsec + + +diff --git a/svl/Library_svl.mk b/svl/Library_svl.mk +index a67184b..4cadd7f 100644 +--- a/svl/Library_svl.mk ++++ b/svl/Library_svl.mk +@@ -182,6 +182,12 @@ $(eval $(call gb_Library_add_exception_objects,svl,\ + svl/source/uno/pathservice \ + )) + ++ifeq ($(OS),HAIKU) ++$(eval $(call gb_Library_add_defs,svl,\ ++ -DXP_HAIKU=1 \ ++)) ++endif ++ + ifeq ($(OS),WNT) + $(eval $(call gb_Library_add_exception_objects,svl,\ + svl/source/svdde/ddecli \ +diff --git a/xmlsecurity/Library_xsec_xmlsec.mk b/xmlsecurity/Library_xsec_xmlsec.mk +index 615c3eb..5e10e08 100644 +--- a/xmlsecurity/Library_xsec_xmlsec.mk ++++ b/xmlsecurity/Library_xsec_xmlsec.mk +@@ -130,6 +130,12 @@ endif + + else # !$(OS),WNT + ++ifeq ($(OS),HAIKU) ++$(eval $(call gb_Library_add_defs,xsec_xmlsec,\ ++ -DXP_HAIKU=1 \ ++)) ++endif ++ + ifeq ($(SYSTEM_XMLSEC),) + $(eval $(call gb_Library_add_libs,xsec_xmlsec,\ + $(call gb_UnpackedTarball_get_dir,xmlsec)/src/.libs/libxmlsec1.a \ +-- +2.42.0 + + +From 8f0768fc0e9e14daab895e5878cbcb1afaabdfd5 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Mon, 8 Feb 2021 21:47:12 +1000 +Subject: Don't use fontconfig + + +diff --git a/vcl/qt5/QtGraphics_Text.cxx b/vcl/qt5/QtGraphics_Text.cxx +index 1879008..e5b1e9d 100644 +--- a/vcl/qt5/QtGraphics_Text.cxx ++++ b/vcl/qt5/QtGraphics_Text.cxx +@@ -86,7 +86,11 @@ bool QtGraphics::GetFontCapabilities(vcl::FontCapabilities& rFontCapabilities) c + + void QtGraphics::GetDevFontList(vcl::font::PhysicalFontCollection* pPFC) + { ++#ifdef __HAIKU__ ++ static const bool bUseFontconfig = false; ++#else + static const bool bUseFontconfig = (nullptr == getenv("SAL_VCL_QT5_NO_FONTCONFIG")); ++#endif + + if (pPFC->Count()) + return; +-- +2.42.0 + + +From 06717fcdd172ac5ca478656e69e28e6d6811a791 Mon Sep 17 00:00:00 2001 +From: Sergei Reznikov +Date: Fri, 7 Aug 2020 12:47:56 +0300 +Subject: Revert fstack-protector check removal in + 9db11a8ab648f4d04e59e6bb94cd640f64835447 + + +diff --git a/config_host.mk.in b/config_host.mk.in +index eb5e751..5510ebd 100644 +--- a/config_host.mk.in ++++ b/config_host.mk.in +@@ -305,6 +305,7 @@ export HAVE_DLLEXPORTINLINES=@HAVE_DLLEXPORTINLINES@ + export HAVE_EXTERNAL_DWARF=@HAVE_EXTERNAL_DWARF@ + export HAVE_LO_CLANG_DLLEXPORTINLINES=@HAVE_LO_CLANG_DLLEXPORTINLINES@ + export HAVE_GCC_AVX=@HAVE_GCC_AVX@ ++export HAVE_GCC_STACK_PROTECTOR_STRONG=@HAVE_GCC_STACK_PROTECTOR_STRONG@ + export HAVE_GCC_BUILTIN_ATOMIC=@HAVE_GCC_BUILTIN_ATOMIC@ + export HAVE_GCC_FNO_ENFORCE_EH_SPECS=@HAVE_GCC_FNO_ENFORCE_EH_SPECS@ + export HAVE_GCC_FNO_SIZED_DEALLOCATION=@HAVE_GCC_FNO_SIZED_DEALLOCATION@ +diff --git a/configure.ac b/configure.ac +index 19c2ebf..64e1fd9 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1140,6 +1140,7 @@ haiku*) + test_gtk3=no + test_gtk3_kde5=no + test_kf5=yes ++ test_qt6=yes + enable_odk=no + enable_coinmp=no + enable_pdfium=no +@@ -7261,6 +7262,17 @@ if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then + AC_MSG_RESULT([no]) + fi + ++ AC_MSG_CHECKING([whether $CC_BASE supports -fstack-protector-strong]) ++ save_CFLAGS=$CFLAGS ++ CFLAGS="$CFLAGS -O0 -Werror -fstack-protector-strong" ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ char a[8]; a[7] = 0; ]])],[ HAVE_GCC_STACK_PROTECTOR_STRONG=TRUE ],[]) ++ CFLAGS=$save_CFLAGS ++ if test "$HAVE_GCC_STACK_PROTECTOR_STRONG" = "TRUE"; then ++ AC_MSG_RESULT([yes]) ++ else ++ AC_MSG_RESULT([no]) ++ fi ++ + AC_MSG_CHECKING([whether $CC_BASE supports atomic functions]) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ + int v = 0; +@@ -7398,6 +7410,7 @@ if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then + fi + + AC_SUBST(HAVE_GCC_AVX) ++AC_SUBST(HAVE_GCC_STACK_PROTECTOR_STRONG) + AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC) + AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION) + +@@ -13057,16 +13070,16 @@ dnl =================================================================== + + QT6_CFLAGS="" + QT6_LIBS="" +-QMAKE6="qmake" ++QMAKE6="qmake6" + MOC6="moc" + QT6_PLATFORMS_SRCDIR="" + if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \) + then + qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes" +- qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries" ++ qt6_libdirs="$QT6LIB /system/lib /usr/lib/qt6 /usr/lib $x_libraries" + + if test -n "$supports_multilib"; then +- qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64" ++ qt6_libdirs="$qt6_libdirs /system/lib /usr/lib64/qt6 /usr/lib64/qt /usr/lib64" + fi + + qt6_test_include="QtWidgets/qapplication.h" +@@ -13159,12 +13172,12 @@ then + + for lib_dir in $qt6_libdirs; do + if test -z "$qt6_libexec_dirs"; then +- qt6_libexec_dirs="$lib_dir/libexec" ++ qt6_libexec_dirs="$lib_dir/Qt6" + else +- qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec" ++ qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/Qt6" + fi + done +- AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$qt6_libexec_dirs:`echo $qt6_libdirs | $SED -e 's/ /:/g'`:$PATH]) ++ AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/Qt6:$QT6DIR/libexec:$qt6_libexec_dirs:`echo $qt6_libdirs | $SED -e 's/ /:/g'`:$PATH]) + if test "$MOC6" = "no"; then + AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify + the root of your Qt installation by exporting QT6DIR before running "configure".]) +diff --git a/solenv/gbuild/platform/com_GCC_defs.mk b/solenv/gbuild/platform/com_GCC_defs.mk +index 8f99e91..cbcc408 100644 +--- a/solenv/gbuild/platform/com_GCC_defs.mk ++++ b/solenv/gbuild/platform/com_GCC_defs.mk +@@ -75,7 +75,7 @@ gb_CFLAGS_COMMON := \ + -fmessage-length=0 \ + -fno-common \ + -pipe \ +- $(if $(filter EMSCRIPTEN,$(OS)),-fno-stack-protector,-fstack-protector-strong) \ ++ $(if $(or $(filter EMSCRIPTEN,$(OS)),$(filter HAIKU,$(OS))),-fno-stack-protector,-fstack-protector-strong) \ + + gb_CXXFLAGS_COMMON := \ + -Wall \ +@@ -91,7 +91,7 @@ gb_CXXFLAGS_COMMON := \ + -fmessage-length=0 \ + -fno-common \ + -pipe \ +- $(if $(filter EMSCRIPTEN,$(OS)),-fno-stack-protector,-fstack-protector-strong) \ ++ $(if $(or $(filter EMSCRIPTEN,$(OS)),$(filter HAIKU,$(OS))),-fno-stack-protector,-fstack-protector-strong) \ + + ifeq ($(HAVE_WDEPRECATED_COPY_DTOR),TRUE) + gb_CXXFLAGS_COMMON += -Wdeprecated-copy-dtor +@@ -157,7 +157,7 @@ endif + gb_VISIBILITY_FLAGS_CXX := -fvisibility-inlines-hidden + gb_CXXFLAGS_COMMON += $(gb_VISIBILITY_FLAGS_CXX) + +-gb_LinkTarget_LDFLAGS += $(if $(filter EMSCRIPTEN,$(OS)),-fno-stack-protector,-fstack-protector-strong) ++gb_LinkTarget_LDFLAGS += $(if $(or $(filter EMSCRIPTEN,$(OS)),$(filter HAIKU,$(OS))),-fno-stack-protector,-fstack-protector-strong) + + ifneq ($(gb_ENABLE_PCH),) + ifeq ($(COM_IS_CLANG),TRUE) +-- +2.42.0 + + +From 3d987e447e8fadd67a1ff753d49c18de13fcac54 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Fri, 20 Aug 2021 23:33:13 +1000 +Subject: Qt::Popup window handling + + +diff --git a/vcl/qt5/QtFrame.cxx b/vcl/qt5/QtFrame.cxx +index 08d2062..beef21f 100644 +--- a/vcl/qt5/QtFrame.cxx ++++ b/vcl/qt5/QtFrame.cxx +@@ -143,7 +143,7 @@ QtFrame::QtFrame(QtFrame* pParent, SalFrameStyleFlags nStyle, bool bUseCairo) + else if ((nStyle & SalFrameStyleFlags::FLOAT) + && (nStyle & SalFrameStyleFlags::OWNERDRAWDECORATION)) + aWinFlags = Qt::Tool | Qt::FramelessWindowHint; +- else if (nStyle & SalFrameStyleFlags::TOOLTIP) ++ else if (nStyle & (nStyle & SalFrameStyleFlags::FLOAT | SalFrameStyleFlags::TOOLTIP)) + aWinFlags = Qt::ToolTip; + // Can't use Qt::Popup, because it grabs the input focus and generates a focus-out event, + // instantly auto-closing the LO's editable ComboBox popup. +@@ -206,7 +206,7 @@ void QtFrame::FillSystemEnvData(SystemEnvData& rData, sal_IntPtr pWindow, QWidge + rData.platform = SystemEnvData::Platform::Wayland; + else if (QGuiApplication::platformName() == "xcb") + rData.platform = SystemEnvData::Platform::Xcb; +- else if (QGuiApplication::platformName() == "wasm") ++ else if (QGuiApplication::platformName() == "wasm" || QGuiApplication::platformName() == "haiku") + rData.platform = SystemEnvData::Platform::WASM; + else + { +diff --git a/vcl/qt5/QtWidget.cxx b/vcl/qt5/QtWidget.cxx +index 83ada78..340c357 100644 +--- a/vcl/qt5/QtWidget.cxx ++++ b/vcl/qt5/QtWidget.cxx +@@ -184,9 +184,11 @@ void QtWidget::handleMouseButtonEvent(const QtFrame& rFrame, const QMouseEvent* + void QtWidget::mousePressEvent(QMouseEvent* pEvent) + { + handleMouseButtonEvent(m_rFrame, pEvent); ++#ifndef __HAIKU__ + if (m_rFrame.isPopup() + && !geometry().translated(geometry().topLeft() * -1).contains(pEvent->pos())) + closePopup(); ++#endif + } + + void QtWidget::mouseReleaseEvent(QMouseEvent* pEvent) { handleMouseButtonEvent(m_rFrame, pEvent); } +-- +2.42.0 + + +From 08b5964034965c4f253c47e5e8df743380984ba2 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Wed, 4 May 2022 21:46:48 +1000 +Subject: Use Noto Sans as default font + + +diff --git a/unotools/source/config/fontcfg.cxx b/unotools/source/config/fontcfg.cxx +index beeba82..526249d 100644 +--- a/unotools/source/config/fontcfg.cxx ++++ b/unotools/source/config/fontcfg.cxx +@@ -229,6 +229,11 @@ OUString DefaultFontConfiguration::getUserInterfaceFont( const LanguageTag& rLan + if( !aUIFont.isEmpty() ) + return aUIFont; + ++#ifdef __HAIKU__ ++ static constexpr OUStringLiteral HAIKU_UI_SANS = u"Noto Sans Display"; ++ return HAIKU_UI_SANS; ++#endif ++ + // fallback mechanism (either no configuration or no entry in configuration + + static constexpr OUStringLiteral FALLBACKFONT_UI_SANS = u"Andale Sans UI;Albany;Albany AMT;Tahoma;Arial Unicode MS;Arial;Nimbus Sans L;Bitstream Vera Sans;gnu-unifont;Interface User;Geneva;WarpSans;Dialog;Swiss;Lucida;Helvetica;Charcoal;Chicago;MS Sans Serif;Helv;Times;Times New Roman;Interface System"; +-- +2.42.0 + + +From 5fab52bb11c8f00f6ab08f703d721e16230f02dc Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Fri, 6 May 2022 10:55:46 +1000 +Subject: Use system font + + +diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx +index a0385c4..36deeab 100644 +--- a/vcl/source/app/settings.cxx ++++ b/vcl/source/app/settings.cxx +@@ -25,6 +25,12 @@ + #include + #endif + ++#ifdef __HAIKU__ ++#include ++#include ++#include ++#endif ++ + #include + #include + +@@ -636,10 +642,23 @@ void ImplStyleData::SetStandardStyles() + vcl::Font aStdFont( FAMILY_SWISS, Size( 0, 8 ) ); + aStdFont.SetCharSet( osl_getThreadTextEncoding() ); + aStdFont.SetWeight( WEIGHT_NORMAL ); ++#ifdef __HAIKU__ ++ if (be_app) { ++ font_family plainFontFamily; ++ font_style plainFontStyle; ++ be_plain_font->GetFamilyAndStyle(&plainFontFamily, &plainFontStyle); ++ aStdFont.SetFamilyName(OStringToOUString(std::string_view(plainFontFamily), osl_getThreadTextEncoding())); ++ aStdFont.SetStyleName(OStringToOUString(std::string_view(plainFontStyle), osl_getThreadTextEncoding())); ++ } else { ++ aStdFont.SetFamilyName("Noto Sans Display"); ++ } ++#else + if (!utl::ConfigManager::IsFuzzing()) + aStdFont.SetFamilyName(utl::DefaultFontConfiguration::get().getUserInterfaceFont(LanguageTag("en"))); + else + aStdFont.SetFamilyName("Liberation Sans"); ++#endif ++ + maAppFont = aStdFont; + maHelpFont = aStdFont; + maMenuFont = aStdFont; +-- +2.42.0 + + +From 19ce4c24d457d1700bab69bc2fd1a9fe6ca4d3f4 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Tue, 17 Oct 2023 13:36:15 +1000 +Subject: Don't use Cairo + + +diff --git a/vcl/qt5/QtInstance.cxx b/vcl/qt5/QtInstance.cxx +index df3df5d..25faac0 100644 +--- a/vcl/qt5/QtInstance.cxx ++++ b/vcl/qt5/QtInstance.cxx +@@ -751,7 +751,11 @@ void QtInstance::setActivePopup(QtFrame* pFrame) + extern "C" { + VCLPLUG_QT_PUBLIC SalInstance* create_SalInstance() + { ++#ifdef __HAIKU__ ++ static const bool bUseCairo = false; ++#else + static const bool bUseCairo = (nullptr == getenv("SAL_VCL_QT_USE_QFONT")); ++#endif + + std::unique_ptr pFakeArgv; + std::unique_ptr pFakeArgc; +-- +2.42.0 +