Commit Graph
1020 Commits
Author SHA1 Message Date
Samuel Mehrbrodt 7efd22c912 Add UNO API for custom Jump Lists
Allows adding custom jump list categories to Windows Task Bar

Change-Id: I13b6c3ad5de386cf74e2b346f10889bc46a8ad4e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131540
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
2022-03-30 12:14:28 +02:00
Stephan Bergmann 40f2aee658 Provide unoidl-write also for the SDK
...after the new types.rdb format that unoidl-write generates has been used
internally since LibreOffice 4.1 in 2013; following up on
6db34b6b33 "Directly build UNOIDL .rdb files from
.idl files" and its "The legacy tools idlc, regcompare, regmerge, and regview
are still contained in the URE or SDK for now."

The tools idlc and regmerge are deprecated but still shipped in the SDK for now.
The plan is to drop them completely for LO 7.5.

odk/examples/ and ure/source/uretest/ are adapted to use unoidl-write instead of
idlc and regmerge:

* unoidl-write does not use a C preprocessor and the # directives in .idl files,
  it supports reading a single .idl file (containing an arbitrary number of
  declarations) or a directory tree where each directory corresponds to a UNOIDL
  module of the same name and each .idl file contains the declaration of the
  (non-module) UNOIDL entity of the same name.  For some of the odk/examples/,
  that required moving individual .idl files into sub-directories named after
  the respective modules.  In odk/settings/std.mk, definitinos of IDL and
  REGMERGE have been replaced with a new UNOIDLWRITE.

* unoidl-write always enforces reserved UNOIDL identifier restrictions (see
  04af4e4f55 "[API CHANGE] Fix all bad UNOIDL
  identifiers across offapi" and 6201792406
  "Enforce the UNOIDL identifier scheme") (which idlc only enforced optionally
  with -cid -we).  That required renaming "my_module" in
  odk/examples/DevelopersGuide/Components/CppComponent/.

* The new types.rdb format is not compatibly with LibreOffice < 4.1.  Clients
  generating extensions containing such files are advised to use appropriate
  LibreOffice-minimal-version elements.

Change-Id: I1a248fd96e86ecbf407f829bc100d44bfe7f4e7d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130533
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-02-25 16:46:26 +01:00
Caolán McNamara d0a527ec09 first cut at using Gtk4 built in video playback
Change-Id: Ib996cd3f5ddbf20a81cdbe4b1c6546d6df478fde
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129783
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-02-18 20:40:01 +01:00
Samuel Mehrbrodt 82f8a96065 Add LibreOffice Crash extension
This extension crashes LibreOffice.
It is to be used to test the crashreporter setup.

Change-Id: I494cdcd746dd49a4f566507712c601494a0bbfac
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128906
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
2022-02-14 21:39:35 +01:00
Caolán McNamara eb22360b0f ofz: fix build, webpfuzzer missing from Repository.mk
Change-Id: I8cd33d24b3289b00471aa10404dbb77343365d7c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129245
Tested-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-01-31 22:28:31 +01:00
Jan-Marek Glogowski 496ab92841 The Emscripten FS image isn't installed anymore
... it's just symlinked by the unxgcc.mk link target to binary
locations.

Change-Id: Idce067d82de6751cf422d924e00537d93fd716bc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128730
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2022-01-21 15:24:25 +01:00
Armin Le Grand (Allotropia) 02140554ee WASM --enable-wasm-strip now skips lots of LO code
... resulting in a stripped-down, Writer-only build to decrease
the resulting WASM bytecode size.

It removes the following code from the build:
* All other major modules: Base, Calc, Chart, Draw, Impress and
  Math and related writerperfect filters
* The premultiply tables
* The (auto-)recovery functionality
* All accessibility (but not the accessibility document checker)
* The LanguageGuess component
* EPUB support
* The start center / BackingWindow
* The TipOfTheDay functionality
* The splash screen communication

Currently crashs with anything different then soffice --writer.
Closing the document also still crashes.

FYI: many of these features are now behind ENABLE_WASM_STRIP_*
defines, but they normally don't work on their own, globally!
That's because we started with stripping the main components.

Change-Id: Ib9c0f9452815910c0a2aceaf142ba1ad4a9cb0d7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126182
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2022-01-20 12:28:54 +01:00
Jan-Marek Glogowski 49ebfdd9b7 WASM merge wasm-qt into static module
Change-Id: I1ed26685561fd79d26cc0844faa3dfe4c00d439a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128625
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2022-01-19 20:18:29 +01:00
Jan-Marek Glogowski b7313bc131 WASM add fontconfig data to FS image
We probably want to pre-create the fontconfig cache in the image.
Startup time still is not really worse for me, but YMMV.

Change-Id: I419682339dd6d943753de9043ff82f2fb877b168
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128624
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2022-01-19 19:28:12 +01:00
Jan-Marek Glogowski 88b94aafc2 WASM create and link the Emscripten FS image
There are three posibilites to add files to the image:
- gb_emscripten_fs_image_files to add individual files
- gb_emscripten_fs_image_autoinstall to add files from AutoInstall
- gb_emscripten_fs_image_filelists to add files from a .filelist

Change-Id: If6804e282a37a37ffae1d291d2af8430e60b59d1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128598
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2022-01-19 14:26:44 +01:00
Thorsten Behrens c367a2781f WASM UNO: add a minimal dummy bridge
... and use the same fake exception rethrowing code then the
mobile platforms.

Change-Id: Ic90de1cfd1e0092d6064d041a613d60d9f5f76b5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128596
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2022-01-19 14:26:09 +01:00
Jan-Marek Glogowski 599cbdb9c2 WASM more initial bits and pieces
All the small stuff, which is needed for the WASM build, but is
not really worth an extra patch.

* No soffice.sh script needed for WASM
* WASM soffice.bin executable extension is html
* Some small additional SAL_LOG output
* Default to colibre icon theme
* Test for qt5 even without X11
* Remove emconfigure artefacts at the end of the configure run
* No oosplash for WASM
* Disable the Office IPC thread
* Suppress -Wno-enum-conversion for Cairo builds
* Fix libnumbertext by using gb_EMSCRIPTEN_CPPFLAGS
* Map EMSCRIPTEN to LINUX nls
* No extra newlines for missing icon theme images
* Print the missing dependency in some gbuild error messages
* Copy Qt WASM loader, HTML template and SVG logo for binaries
* Especially build the vcldemo for Emscripten

Change-Id: I356370c72cc09357411e14d0c00762152877a800
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128584
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2022-01-19 10:49:40 +01:00
Jan-Marek Glogowski dc9ccf3d8f gbuild: build static LO / link static executables
This allows to build a complete static LibreOffice on Linux,
except for linked externals. Since LO's static build implies
disabled dynamic loading, one must select one VCL backend to
be compiled in.

See the (large) comment in solenv/gbuild/static.mk trying to
explain, why this implementation was chosen (spoiler: seems
there is no other way) and what is actually implemented.

This will collect all libraries, statics and externals of
executables. If the executable uses components, it will get
linked to all static components. While it works with any
Executable, it just makes sense for soffice.bin, because the
static component map sucks every dependency in, bloating most
other binaries.

In theory on could generate the dependencies based on the list
of used components (see gb_CppunitTest_use_components), then
generate a specific static constructor map, directly include it
in the exe's cxx code and then link the minimal dependencies.

The static LO should build on Linux with:
--enable-customtarget-components
--disable-dynamic-loading

Tested VCL plugin config is:
--disable-gtk3
--disable-gen
--enable-qt5

The partial build support is split into a 2nd patch.

Change-Id: Iafc95752fae9e88095f54a21f1e30a4f080815e2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126790
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2022-01-12 11:12:46 +01:00
Jan-Marek Glogowski c906ac8e8a Don't install the uno script when uno is not build
... move it into cpputools and rename ure/Package_install.mk to
ure/Package_ure_install.mk, to match the module name.

Follow up from commit 92a90cf5cc
("Don't build the static uno binary"). I missed that hunk in a
larger patch, because the script was in a different module, then
the binary.

Change-Id: If7f3152be9567cf84be176d3fedefbcd5ad8d387
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128138
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2022-01-08 15:33:30 +01:00
Chris Sherlock dabeab27da vcl: Create listfonts utility
The listfonts utility gets the details of all available fonts on the
system. It prints out the information, or stores it in a text file,
if a file name is passed to it as an argument.

An example invocation to store the information in a file named
fonts.txt is:

    ./bin/run listfonts fonts.txt

To get the correct font metrics, you actually have to get the font
metric from the system, and then set it as the current font of
OutputDevice, then get the font metric (which corrects a variety of
things like the orientation, line, height, slant, etc. - including
converting from logical coords to device coords).

The information is reported for each font family. On the top is the
family name, and then comes other details. Here is a report for an
example font:

FreeSans
    Family type: swiss
    Style name: Regular
    Weight: normal
    Italic: none
    Pitch: variable
    Width type: normal
    Alignment: top
    Charset: UCS2 (aka Unicode)
    Symbol font? no
    Ascent: 13
    Descent: 3
    Internal leading: 0
    External leading: 2
    Line height: 16
    Slant: 0
    Bullet offset: 0
    Fullstop centered? yes
    Orientation: 0 degrees
    Quality: 18477

There is a -v (or --verbose) option that output font features.

Change-Id: Icfc4da96459bea47c4233a5509496566c04d460c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127365
Tested-by: Jenkins
Reviewed-by: Hossein <hossein@libreoffice.org>
2022-01-08 12:58:14 +01:00
Jan-Marek Glogowski ed1aa172f8 Unify condition names and fix "else" paths
Drop Build prefix and settle on Lib and Exe prefixes. Also add a
note about the "else" part of the condition and fix offenders.
While at it, define COND_LIB_SAL_TEXTENC to be used by sal to
prevent diverting coditions in build and cxx code.

Change-Id: I944587ca1ccbe46b765d1a631a7214c8126fe951
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128136
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2022-01-08 12:26:30 +01:00
Jan-Marek Glogowski 92a90cf5cc Don't build the static uno binary
Change-Id: If6d5384d4692fba94070bb11bb5a47a66b813f58
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128135
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2022-01-08 12:26:15 +01:00
Jan-Marek Glogowski 692838e958 sp2bv is just used by the ODK on Windows
And I should have tested gb_Helper_optionals_and. Inspecting the
generated token for comparison doesn't result in gb_[T1]_[T2],
as I expected. So first filter the token from BUILD_TYPE, then
filter-out the result from the input token. If true, then both
sets are equal == and.

Change-Id: I74a324f766331b30a0af9c9bfd7c927c1d21df53
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128115
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2022-01-08 12:04:09 +01:00
Jan-Marek Glogowski 4cb6f75b39 Don't build a static unopkg
Currently we don't destinguish between between extensions without
code, which couldn't be executed with DISABLE_DYNLOADING, and all
other extensions, like translations, dictionaries, etc., so there
is no need for a static unopkg.

Change-Id: I427a51b3174d074e467a582e808490a85e98e8eb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128114
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2022-01-07 19:34:40 +01:00
Jan-Marek Glogowski df37e6e980 Drop / merge some Haiku special build cases
Just don't test gtk3, so it's also not enabled. This way we can
also rename the kde install module to haiku on demand.

The kf5be1 is kept kde-only; no idea if that is intentional.

Change-Id: Id93b15fc6057a50da59efd655e1fc7d5f416c6de
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127894
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2022-01-03 22:48:28 +01:00
Hossein dd1b0471b7 Minimal vcl application
Created a minimal vcl application inside vcl/workben in ~55 loc
in which creates a window and paints a simple text inside it.

One can run the application by invoking:

    ./bin/run minvcl

Change-Id: If648666ff25c4b66089a37c8d8164752663fa225
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125124
Tested-by: Jenkins
Reviewed-by: Hossein <hossein@libreoffice.org>
2021-12-30 13:36:23 +01:00
Jan-Marek Glogowski af4c5d3ea1 Enforce cross-compilation for static builds
... AKA DISABLE_DYNLOADING, except for oss-fuzz, which will be
converted to a cross build in a follow-up patch.

This includes skipping the static registry and help tooling and
aborts configure when the ODK is selected to be build.

Change-Id: Ifae32e91acf5e9ffa234d8f915ee459b197091fe
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127287
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2021-12-24 02:15:03 +01:00
Tomaž Vajngerl 7bd62c00c5 Separate core drawinglayer func. into drawinglayercore library
This separates the drawinglayer core functionallity into a
separate library, to keep a strict separation what is backend
dependent and what is not. More strict separation can be done
at a later date.

This will make it possible to push part of drawinglayer
(part of processor2d) directly into VCL.

Change-Id: Ibc26580067e50bf20d7cdd37fa0e44eb10200878
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127286
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-12-22 12:10:10 +01:00
Caolán McNamara c26ce14c2b drop ui-previewer
the need for this is gone now the transition from src to ui
is completed. I certainly don't use this anymore.

Change-Id: I5bf9c8bc4f00152977091f466c2e808b824acb44
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126925
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-12-16 17:51:14 +01:00
Caolán McNamara ede7be0c3c drop ui-previewer from install set
this is intended for use for bootstrapping the process
of conversion of the .src to .ui and isn't useful
to have in a normal install

Change-Id: I88066bb086ca58a56c2adc7ef5a96b03b670f086
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126924
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-12-16 17:50:51 +01:00
Jan-Marek Glogowski bd1868c105 Refactor Library_sal_textenc build condition
... by adding and using gb_CondSalTextEncodingLibrary.

Change-Id: I04e8f56bde6296477d449f1c447e8133cdf86e6e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126788
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2021-12-16 11:17:08 +01:00
Jan-Marek Glogowski 8a008416c7 lockfile: use a single build condition
... and introduce solenv/gbuild/Conditions.mk

The Conditions.mk is included just after the Helpers.mk, which
should make its content available basically everywhere.

Change-Id: Ie4498e12b3d0f676ed0c9abf4b3bb4899d6a1c03
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126787
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2021-12-15 21:19:49 +01:00
Jan-Marek Glogowski b2882faf43 desktop_detector is also a vcl plugin
Change-Id: I71445c16744674f75fed190911749f38226169e0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126715
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2021-12-13 09:58:26 +01:00
Jan-Marek Glogowski d0efe32523 Remove merged gie library from install set
Removed in commit 2270a58d7b
("Move GIF writer from filter module into VCL"), but accidently
re-added (at least to the install set in commit
ed583bf8d5 ("gbuild: introduce
plugin + loader concepts").

Change-Id: I6ed9ab5aeab6a2ecc8dd169f0d8ddfb42b334b47
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126347
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2021-12-04 17:37:33 +01:00
Jan-Marek Glogowski fb308c193b Fix --disable-scripting for DESKTOP build
Unfortunatly we cannot add --disable-scripting to
sub_conf_defaults, because Java currently has no
equivalent to the PYTHON_FOR_BUILD setting.

Change-Id: I89938a17307a363f5de808200914940503312829
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126186
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2021-12-03 06:46:24 +01:00
Jan-Marek Glogowski ed583bf8d5 gbuild: introduce plugin + loader concepts
This introduces two concepts: a plugin and its loader (library)

LO currrently has dependency cycles for some libraries. There is
scui, which depends on sc, while sc dlopen's scui. There are the
various vclplug_*, i18npool plugins, filters/gie, acc, etc.

Usually these plugins link to their loader library, because they
use its symbols. But as a result there is no sensible way to
express the runtime dependency of loaders on the plugins.

In GNU libtool plugins are called modules and they are implemented
in an IMHO more sensible way by allowing missing symbols at link
time. This way you can have a dependency from the loader library
to its plugins, as the plugins don't depend on the loader, but you
lose the link time detection of missing symbols.

While this is in theory possible in LO too, LO currently has
plugins, like acc (accessibility), loaded by tk (toolkit), which
depends on svt (svtools), which itself depends on tk, so dropping
the tk dependency for acc on its own doesn't help :-(

And while the dependency of the plugins on their loader is fine
for the shared / DYNLOADING build, for the "static" builds you
must (somehow) link the plugins into the executables.

I also codeified a few rules into the build system along with it:
* just plugins are allowed to depend / link other plugins
* plugins aren't allowed to be linked into the merge lib
* plugin loaders are "limited" to libraries

At the high level, this is implemented via new gbuild calls:
* gb_Library_set_plugin_for,lib,loader: declare a library to be a
  plugin of a loader library and add a dependeny from the plugin
  library to the loader library
* gb_Library_set_plugin_for_nodep,lib,loader: ^^^^ without adding
  the library dependeny
* gb_Helper_register_plugins_for_install: "plugin" replacement for
  gb_Helper_register_libraries_for_install to implement some
  additional checks in the build system

In the end this patch just adds a bit syntactic sugar and nothing
changes for any build.

Change-Id: I7b01d9c384cbc5838bd2cc93aff18e4868939d6e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126163
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2021-12-01 18:37:23 +01:00
Jan-Marek Glogowski f9e79a91f1 Fix --disable-avmedia for DESKTOP build
Probably additional bits can be removed, but this now passes.

Change-Id: I366bec43cfd6fb02e914c85c711b3b19586d534d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126161
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2021-12-01 16:50:23 +01:00
Jan-Marek Glogowski e050b09c7e gbuild: serialize dynamic link for static builds
This is a hack, because make has no way to serialize processing
of a target (just .NOTPARALLEL for the whole Makefile).
It uses the lockfile tool / liblockfile 1.17. Since that polls
the file, I adjusted the poll timeout to 5s max, because I found
the 60s wait much too long. Guess even 1s would be ok...

Since it's just a small build tool, I simply copied and patched
its source, instead of creating an external project. And there
is --with-system-lockfile=... to use an external binary instead.

Change-Id: I16bc4579a273dcf1aac811ae4723ca325a0b9eba
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126152
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2021-12-01 13:06:55 +01:00
Jean-Pierre Ledure 78db0dcfb6 ScriptForge - new SFWidgets library, new PopupMenu service
The SFWidgets library is intended to host the Toolbar,
ToolbarControl (both future) and PopupMenu services.

A popup menu is usually triggered by a mouse action
(typically a right-click) on a dialog, a form, or one of their controls.
In these cases the menu will be displayed below the clicked area.

When triggered by other events, including in the normal flow
of a user script, the script should provide the coordinates
of the topleft edge of the menu versus the actual component.

The menu is described from top to bottom with next methods:
   AddItem()
   AddCheckBox()
   AddRadioButton()
Example:
   .AddCheckBox("View>Toolbars>Dialog")
   .AddCheckBox("View>Toolbars>Find", Status := True)
   .AddCheckBox("View>Status Bar", Status := True)
   .AddItem("View>Full Screen", Name := "FULLSCREEN")
The SubmenuCharacter (Default = ">") is modifiable.

Each menu item receives a numeric and a string identifier.
The execute() method returns the item selected by the user.

The service is available both from Basic and Python user scripts.

The commit includes the review of build files to include
the new library and the new modules.

Change-Id: I2940be25313cc8fff7b337766edd348b04a20584
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123654
Tested-by: Jean-Pierre Ledure <jp@ledure.be>
Tested-by: Jenkins
Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
2021-10-15 16:39:48 +02:00
Michael Weghorn 88d57cf241 qt6: Add a qt6 VCL plugin
This adds a new "qt6" VCL plugin based on Qt 6.

Building the plugin is enabled by autogen option '--enable-qt6'
(and optionally setting 'QT6DIR' as needed).

Use the 'SAL_USE_VCLPLUGIN=qt6' environment variable
before running LO to select this VCL plugin.

Taking qt6 into account at all relevant places certainly
still requires follow-up changes, but
this builds and runs with a self-compiled
qtbase from the 'dev' git branch as of commit
3ce0672143d2eb3c3809f82998a4d71c5800d77a.
I didn't see anything obviously broken
in a quick run, but didn't test much.

This reuses and shares the qt5 VCL plugin code;
the qt6 headers and sources for now just
'#include' the qt5 ones.

Version checks are used for the code places that
need different handling to be built against Qt 6.

The build system parts in this commit were mostly done by
copying the qt5 equivalents, then adapting as needed.

Some notes on things I came across while porting
to qt6:

1) At least in my self-compiled Qt versions,
'moc' (the meta-object compiler) is located
in the 'libexec' subdirectory in 'QT6DIR', while the
Qt 5 equivalent is located in the "bin" subdirectory
of 'QT5DIR', so the configure.ac check uses the former.

2) moc does not process classes from the included headers.
Since the headers in 'vcl/inc/qt6' just '#include' the ones
from 'vcl/inc/qt5', running moc on the qt6 headers doesn't work,
so moc is currently run on the qt5 headers for qt6 as well
(s. 'vcl/CustomTarget_qt6_moc.mk').
That will have to be adapted in case the qt6 VCL plugin
uses "own" headers instead of just including the qt5 ones
at some point.

3) QX11Extras has been removed from Qt 6.
[1] says:

> Changes to Qt X11 Extras
>
> The QX11Info class has been removed.
>
> Clients that still rely on the functionality can include the private
> header <QtGui/private/qtx11extras_p.h> as a stopgap solution. To enable
> private headers use QT += core-private with qmake, or add a project
> dependency to Qt::CorePrivate with CMake.

I didn't take any closer look, just dropped the use of
QtX11Extras for qt6 for now.

4) XCB_ICCCM is no longer needed.
It is only used in qt5 to workaround a Qt bug fixed in Qt 5.12, s.

    commit fe2baf9e84
    Author: Jan-Marek Glogowski <jan-marek.glogowski@extern.cib.de>
    Date:   Tue Dec 3 08:32:58 2019 +0100

        Qt5 fix missing XCB_ICCCM_WM_HINT_WINDOW_GROUP

5) X11-specific code is still used for key modifier handling.
Therefore, still check for the XCB headers when 'USING_X11'
is set in configure.ac, and use a 'QT6_USING_X11' define
(as qt5 uses 'QT5_USING_X11').

6) There's currently no Qt 6 video sink for GStreamer.
As of today, qt-gstreamer is unmaintained and there is no Qt 6 version.
The project's README [2] says:

> 0. Maintenance Notice
> ---------------------
>
> This code is unmaintained. You can use it at your own risk.
>
> If you want to integrate video display in your QML-based UI,
> you should consider using 'qmlglsink', from gst-plugins-good.
> This is a well supported video sink that uses the generic
> gstreamer-gl stack and is in many ways superior to 'qtquick2videosink'
> that is provided by qt-gstreamer. You can use this code as an example:
> https://cgit.freedesktop.org/gstreamer/gst-plugins-good/tree/tests/examples/qt/qmlsink
>
> If you are not interested in using QML in your UI, then you
> may use one of the other elements provided by this module
> (see below). If you do that, it would be helpful to let us
> know that this code is still useful to you. We may consider
> adding these elements in one of the core gstreamer modules.
>
> If you are here for the Qt-style bindings, I'm sorry to disappoint you.
> The alternative is to use the C API, or the GStreamermm C++ API.
> Qt-style bindings are cool, but unfortunately they are very hard
> to maintain because they are written by hand. If you are interested
> in continuing this project, you are welcome to implement a
> generator for them, probably based on GObject-Introspection.
> I am happy to provide directions if you want to pursue such a thing.

Therefore, the Qt video sink handling is qt5-only and the
corresponding handling for GOBJECT (used for the GStreamer
video sink handling) was not taken over for qt6.

This presumably means that video playback in Impress presentations
does not work when using qt6 with they Qt Wayland plugin,
s. tdf#125219 for the corresponding bug for qt5/kf5.
(I did not build the qtwayland module to actually test this, though.
Video playback with the Qt xcb plugin in a Wayland session works.)

[1] https://doc-snapshots.qt.io/qt6-dev/extras-changes-qt6.html
[2] https://cgit.freedesktop.org/gstreamer/qt-gstreamer/tree/README

Change-Id: Ib105ccfb2c3630ec5d5403793a3cd9ba31d85bdf
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122808
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2021-09-29 13:50:58 +02:00
Caolán McNamara eb5de6c362 add dbffuzzer
which requires dropping ---disable-database-connectivity

Change-Id: I5b3a2027916a3cf844cefd90629c3fe918ead31e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122591
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-09-25 20:25:30 +02:00
Rene Engelhard 299b72e4c9 fix install with --disable-cmis
Change-Id: I51430a860a0b5047b566ed8184f0f563ec54f288
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119661
Tested-by: Jenkins
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
2021-07-31 20:05:01 +02:00
Jan-Marek Glogowski 14069d8417 configure: Improve help-options handling
This patch includes:

* A README.help.md as a general documentation for the different
  help types, the LO code and help-related build options.
* Adds --disable-xmlhelp for removing the xmlhelp support from the
  build. Disable for iOS, Android and Emscripten. This was partly
  included in HAVE_FEATURE_DESKTOP before.
* Rename WITH_HELP define to WITH_HELPPACKS, which reflects the
  actual usage AFAIK.
* Depend --with-omindex on --with-help=online and don't override
  the --with-help setting. Error out on conflicting options.
* Depend --with-helppack-integration on build help variants, which
  actually result in help packs.

Kind of reverts commit 2c38ea6d16
("Building without --with-help is not supposed to disable help
functionality").

Change-Id: Ie4cb73905b3ed94e991d9f1bd75cfbd6de9da385
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116222
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2021-06-22 14:25:51 +02:00
Stephan Bergmann ef88aa5e74 Resurrect io testconnection executable
...which appears to be the only code that exercises osl's socket (rather than
named pipe) connections, so lets have that available at least for manual
execution.

Addresses various compiler and loplugin warnings, and extends a wait time to
more reliably have the MyThread instance already accept when the second accept
(on the main thread) is done.

Change-Id: I761d747b08ab45f1ac03dad8b4197fae63228e16
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116103
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2021-05-25 16:13:08 +02:00
Caolán McNamara 4c8e2b47cb bodge a gtk4 starting point into existence
this is not supposed to work or anything even close to that

Change-Id: I46b4fed6a1e6cfc885cb4f7c24660bb6438d5101
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115293
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-05-10 10:57:57 +02:00
Jan-Marek Glogowski 8a4173987e WASM: add initial support for Emscripten cross build
- configure with:
- --host=wasm64-local-emscripten
- had to make a few externals optional, so adding:
  - --disable-nss
  - --disable-cmis
  - --disable-curl

Change-Id: I48d1c73d2675ad2e2beaf2c341578199efbd24ee
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111130
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2021-05-05 21:14:54 +02:00
Jan-Marek Glogowski 013ddc4f53 Switch OPENSSL config var from negative to positive
- align with most of the rest of config_host
- rename DISABLE_OPENSSL to ENABLE_OPENSSL
- make this configurable

Change-Id: Ic3b41fcdda38db66134939f12265e0da24833d60
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114564
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2021-05-05 21:14:30 +02:00
Tor Lillqvist 89af24074e tdf#124173: Enable thesauruses in the iOS app
Build our lnth library and the external mythes library. Install
thesauruses for the app's Xcode project to pick up and include in the
app bundle. Look for them in the place where they will end up.

To get thesauruses you need to configure with --with-myspell-dicts.

Change-Id: I2d850ca3c821c5c764cb061340a265440d04e41b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113066
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113073
Tested-by: Tor Lillqvist <tml@collabora.com>
2021-03-25 09:06:39 +01:00
Jan-Marek Glogowski 5e1b3e924a Rename LO Windows arm64 ID to aarch64
The Windows platform is called Arm64. But now that the ID for Mac
is also going to be renamed from arm64 to aarch64, this get's rid
of the arm64 as the UNO identifier and user in gbuild, just like
on all other Arm64 platforms.

Change-Id: I60a7eafd04b426f17b6e41ad9a09e6405c0d4173
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112973
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2021-03-23 23:46:12 +01:00
Tor Lillqvist cb6ba06d28 tdf#124909: Use the myspell dictionary for Swiss German on iOS
The iOS system German dictionary is not good for Swiss German. (And it
doesn't even claim to be, it says it is for de_DE.) The system German
dictionary accepts 'ß' but that is not used in Swiss German, 'ss' is
always used instead.

Build the spell library for iOS, too, and don't assume that the system
de_DE dictionary would be usable for de_CH and de_LI. Copy those
dictionaries for inclusion in the iOS app bundle.

Change-Id: I0f8020812221024756c792bddc16a707de35b827
Signed-off-by: Tor Lillqvist <tml@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112603
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112635
2021-03-17 13:56:50 +01:00
Tomaž Vajngerl 2270a58d7b Move GIF writer from filter module into VCL
Change-Id: I8db3ca0f7953b44791bda47534220902931fab8d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111023
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2021-02-18 04:12:27 +01:00
Caolán McNamara 47448aaff9 restore com.sun.star.mozilla.MozillaBootstrap
its used to find mozilla profile dirs for cert-related reasons

removed overzealously with...

commit ee9ed2192b
Date:   Thu Dec 10 18:39:26 2020 +0100

    tdf#138715 remove mork driver

Change-Id: I52f1ace5d4aac100c7652dc499ffe9c8312c9474
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110413
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-02-05 10:11:28 +01:00
Michael Stahl c18d3f8823 add --disable-librelogo to disable LibreLogo at build time
Annoyingly the packinfo_*.txt don't support conditionals but we can
work-around that with a little duplication.

Change-Id: Id00a6831effcc63a917fc21d2cd201474fdb559d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109569
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2021-01-19 13:55:08 +01:00
Julien Nabet 747856aa3d Remove vlc part since experimental since 5 years
However considering git history about vlc part (see
https://cgit.freedesktop.org/libreoffice/core/log/?qt=grep&q=vlc) it seems
there's no real patch since 2013 + it's been explicitely indicated as
experimental since 2015
See http://document-foundation-mail-archive.969070.n3.nabble.com/About-vcl-status-in-avmedia-keep-or-removed-unmaintained-code-since-7-years-tt4293282.html

Of course if someone wants to keep on the work on it, it's always possible to revert the patch.

Change-Id: Ia1602ea61b7ffa577148a80f974ebdcb71495fbb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108283
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2020-12-25 14:18:24 +01:00
Jan-Marek Glogowski 5de0f4e7b5 Don't lock galleries build into DESKTOP
And add the missing dependency of Executable_gengal on
Package_svx_gengal, so the actual executable script is
created in instdir_for_build for the cross-toolset.

Change-Id: I98ea1d58273c871f0a3b804a93970eedfb7f8908
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108108
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2020-12-23 01:52:11 +01:00