Test repository to check push and ssh key
Find a file
Stephan Bergmann 63a320d9b4 Adapt to renamed libcairo-lo.so.2
...following up on d552b4a549 "Enable opening of
downloaded fonts only in ForKit in Online" and
9eaa1325a0 "Only package the external/cairo
library that is named the same as the SONAME"

Change-Id: Ifec89813140dcca5eea13943a12883febb6c5cd1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146934
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-02-13 17:41:06 +00:00
.git-hooks
.github
.vscode
accessibility Use ImplInheritanceHelper in VCLXAccessibleToolBoxItem 2023-01-27 11:48:19 +00:00
android android: Update Android Gradle Plugin to 7.4.1 2023-02-09 10:50:15 +00:00
animations Remove duplicated include 2023-02-01 05:46:46 +00:00
apple_remote
avmedia
basctl Use startsWithIgnoreAsciiCase with last argument to simplify 2023-02-13 06:51:34 +00:00
basegfx basegfx: restructure B1DRange and B2DRange tests and add use cases 2023-02-08 02:44:02 +00:00
basic no need to lock SolarMutex over the whole method here 2023-01-29 18:03:48 +00:00
bean
bin Adapt to renamed libcairo-lo.so.2 2023-02-13 17:41:06 +00:00
binaryurp
bridges osl::Mutex->std::mutex in JniUnoEnvironmentData 2023-02-02 06:59:36 +00:00
canvas improve readability of VirtualDevice constructor 2023-02-07 10:19:32 +00:00
chart2 svx: Refactor (sdr) views to access the SdrModel by reference 2023-01-31 07:21:39 +00:00
cli_ure
codemaker
comphelper enforce proper locking when calling OInterfaceContainerHelper4 2023-02-13 17:01:04 +00:00
compilerplugins Fix misuse of TagDecl::hasDefinition 2023-02-03 15:38:03 +00:00
config_host improve comment about SKIA_DEBUG 2023-01-26 11:09:12 +00:00
configmgr osl::Mutex->std::mutex in configmgr::read_write_access::Service 2023-02-02 07:00:23 +00:00
connectivity
cppcanvas improve readability of VirtualDevice constructor 2023-02-07 10:19:32 +00:00
cppu Remove support for AIX 2023-01-27 07:28:16 +00:00
cppuhelper
cpputools Remove support for AIX 2023-01-27 07:28:16 +00:00
cui set the image in the .ui instead of the .cxx 2023-02-11 07:44:36 +00:00
dbaccess Use ImplInheritanceHelper in OTableWindowAccess 2023-01-28 17:43:06 +00:00
desktop Rename: Extension Manager -> Extensions 2023-02-13 13:17:12 +00:00
dictionaries@bcf7f04931 Update git submodules 2023-02-13 07:08:50 +00:00
distro-configs
docmodel sd: use XTheme to transport the theme to xmloff import/export 2023-01-31 08:59:09 +00:00
drawinglayer Fix typos 2023-02-12 21:27:13 +00:00
editeng editeng: remove SvxLRSpaceItem::nTxtLeft 2023-02-08 11:03:36 +00:00
embeddedobj
embedserv
emfio tdf#142018 Properly create Pen width if style is COSMETIC 2023-02-11 21:24:18 +00:00
eventattacher
extensions
external ofz#55872 fix oss-fuzz build wrt fontconfig not getting built static 2023-02-13 17:12:43 +00:00
extras
filter Assume that only vnd.sun.star.expand URLs shall be macro-expanded here 2023-02-13 17:40:55 +00:00
forms
formula
fpicker
framework tdf#95936: Tooltip not updated in Toolbars after change Shortcut 2023-02-09 15:26:48 +00:00
helpcompiler Remove support for AIX 2023-01-27 07:28:16 +00:00
helpcontent2@a295ef1fa2 Update git submodules 2023-02-13 09:58:56 +00:00
hwpfilter ofz: Use-of-uninitialized-value 2023-02-11 00:10:51 +00:00
i18nlangtag
i18npool tdf#147021 Use std::size() instead of SAL_N_ELEMENTS() macro 2023-01-31 13:30:53 +00:00
i18nutil
icon-themes Resolves tdf#152947 - Accessibility for save status icon 2023-01-25 16:42:17 +00:00
idl Fix bogus uses of OUString::createFromAscii 2023-02-08 16:03:33 +00:00
idlc/test/parser
include enforce proper locking when calling OInterfaceContainerHelper4 2023-02-13 17:01:04 +00:00
instsetoo_native Remove support for AIX 2023-01-27 07:28:16 +00:00
io
ios
javaunohelper
jurt
jvmaccess
jvmfwk Remove support for 32-bit S390 2023-01-27 07:29:14 +00:00
l10ntools
librelogo
libreofficekit
lingucomponent tdf#153436: Improve handling of Arabic system spell dictionary on macOS 2023-02-07 22:01:07 +00:00
linguistic Remove redundant attributes that were added to published XLinguProperties 2023-02-02 18:31:34 +00:00
lotuswordpro
m4
nlpsolver
o3tl
odk Remove support for AIX 2023-01-27 07:28:16 +00:00
offapi Rename: Extension Manager -> Extensions 2023-02-13 13:17:12 +00:00
officecfg Rename: Extension Manager -> Extensions 2023-02-13 13:17:12 +00:00
onlineupdate NSS initialization guard 2023-01-25 12:24:34 +00:00
oovbaapi
oox tdf#153246 VML export write adj attribute for Fontwork 2023-02-03 01:17:48 +00:00
opencl Use raw string literal in opencl to keep PMD static analyser happy 2023-02-03 07:13:52 +00:00
osx
package
pch
postprocess Remove support for 32-bit S390 2023-01-27 07:29:14 +00:00
pyuno tdf#143148 Use pragma once instead of include guards 2023-02-13 11:26:27 +00:00
qadevOOo
readlicense_oo update credits 2023-01-23 14:32:22 +01:00
registry tdf#143148 Use pragma once instead of include guards 2023-02-13 11:26:27 +00:00
remotebridges
reportbuilder
reportdesign editeng: remove SvxLRSpaceItem::nTxtLeft 2023-02-08 11:03:36 +00:00
ridljar
sal Finally drop undocumented rtl_[u]String_newFromStr null argument support 2023-02-01 09:51:15 +00:00
salhelper
sax
sc sc: use try/finally to reset the changes in OptionsTreeDialog 2023-02-13 11:39:50 +00:00
scaddins
sccomp
schema schema: properly extend office-styles instead of style-style "hack" 2023-02-01 14:53:37 +00:00
scp2 Remove support for AIX 2023-01-27 07:28:16 +00:00
scripting Fix/simplify some vnd.sun.star.expand: handling 2023-02-13 11:29:34 +00:00
sd tdf#45705 Make SID_ZOOM_IN and SID_ZOOM_OUT smoother in Impress 2023-02-11 21:07:31 +00:00
sdext cid#1520592 Logically dead code 2023-01-26 14:58:46 +00:00
setup_native
sfx2 enforce proper locking when calling OInterfaceContainerHelper4 2023-02-13 17:01:04 +00:00
shell Remove support for AIX 2023-01-27 07:28:16 +00:00
slideshow improve readability of VirtualDevice constructor 2023-02-07 10:19:32 +00:00
smoketest
solenv Avoid LOKClipboard harder on iOS 2023-02-12 18:35:44 +00:00
soltools Remove support for AIX 2023-01-27 07:28:16 +00:00
sot
starmath Resolves: tdf#152845 AutoText preview not readable in high contrast mode 2023-02-01 19:31:49 +00:00
static Fix typo 2023-02-13 11:27:46 +00:00
stoc osl::Mutex->std::mutex in JavaComponentLoader::getJavaLoader 2023-02-02 07:00:41 +00:00
store
svgio
svl tdf#153023 Disable Thousand separator for NatNum12 2023-02-03 17:57:01 +00:00
svtools ofz#55798 Timeout 2023-02-09 12:30:04 +00:00
svx MCGR: Add/Provide GradientSteps to FillGradientAttribute 2023-02-12 10:54:06 +00:00
sw tdf#153499 Add missing colons to labels with buddy controls 2023-02-13 16:57:49 +00:00
swext
sysui Rename: Extension Manager -> Extensions 2023-02-13 13:17:12 +00:00
test improve readability of VirtualDevice constructor 2023-02-07 10:19:32 +00:00
testtools
toolkit improve readability of VirtualDevice constructor 2023-02-07 10:19:32 +00:00
tools tools: rearrange Rectangle test, add construction test case 2023-01-29 14:23:48 +00:00
translations@579a868ba9 Update git submodules 2023-02-09 11:37:05 +00:00
ucb osl::Mutex->std::mutex in DynamicResultSetWrapperListener 2023-02-13 16:07:51 +00:00
ucbhelper enforce proper locking when calling OInterfaceContainerHelper4 2023-02-13 17:01:04 +00:00
udkapi Update the reference rdbs to libreoffice-7.5.0.3 2023-02-02 20:06:18 +00:00
uitest uitest: reset value when changing the measurement unit 2023-02-07 09:33:40 +00:00
UnoControls
unodevtools Fix typo 2023-01-25 14:45:00 +00:00
unoidl
unoil
unotest
unotools fix ZipPackageHelper::addFile 2023-01-21 18:06:50 +00:00
unoxml
ure
uui
vbahelper
vcl Preserve nullptr between gtk_assistant_get/set_page_title 2023-02-13 15:54:51 +00:00
winaccessibility
wizards Fix/simplify some vnd.sun.star.expand: handling 2023-02-13 11:29:34 +00:00
writerfilter writerfilter: prefix members of DomainMapper, GraphicZOrderHelper, ... 2023-02-13 08:20:15 +00:00
writerperfect
xmerge
xmlhelp
xmloff xmloff: import of theme structure + import/export/round-trip tests 2023-02-01 08:41:30 +00:00
xmlreader
xmlscript
xmlsecurity
.buckconfig
.buckversion
.clang-format
.editorconfig
.git-blame-ignore-revs
.gitattributes
.gitignore .gitignore: /.vscode* 2023-02-12 21:37:18 +00:00
.gitmodules
.gitpod.dockerfile
.gitpod.yml
.gitreview
antivirusDetection.vbs
autogen.sh Remove support for AIX 2023-01-27 07:28:16 +00:00
BUCK
config.guess
config.sub
config_host.mk.in
config_host_lang.mk.in
configure.ac qt6 configure: Search for Qt 6 moc in more locations 2023-02-10 21:17:38 +00:00
COPYING
COPYING.LGPL
COPYING.MPL
cpp.hint
download.lst Update liborcus to 0.18.1 2023-02-11 23:04:29 +00:00
g
hardened_runtime.xcent.in
install-sh
install_deps.sh
leak-suppress.txt
Library_merged.mk
lo.xcent.in
logerrit
Makefile.fetch
Makefile.gbuild
Makefile.in
README.cross
README.help.md
README.md
README.Solaris
Repository.mk Make minvcl and svdemo VCL examples build on Windows 2023-01-28 13:08:27 +00:00
RepositoryExternal.mk Get the shared object of a bundled fontconfig into rpm and deb packages 2023-02-10 11:54:16 +00:00
RepositoryFixes.mk
RepositoryModule_build.mk
RepositoryModule_host.mk
sanitize-ubsan-excludelist
setup.cfg
TEMPLATE.SOURCECODE.HEADER
tsan-suppress.txt update TSAN suppressions 2023-01-30 13:53:45 +00:00

LibreOffice

Coverity Scan Build Status CII Best Practices Translation status

LibreOffice is an integrated office suite based on copyleft licenses and compatible with most document formats and standards. Libreoffice is backed by The Document Foundation, which represents a large independent community of enterprises, developers and other volunteers moved by the common goal of bringing to the market the best software for personal productivity. LibreOffice is open source, and free to download, use and distribute.

A quick overview of the LibreOffice code structure.

Overview

You can develop for LibreOffice in one of two ways, one recommended and one much less so. First the somewhat less recommended way: it is possible to use the SDK to develop an extension, for which you can read the API docs and Developers Guide. This re-uses the (extremely generic) UNO APIs that are also used by macro scripting in StarBasic.

The best way to add a generally useful feature to LibreOffice is to work on the code base however. Overall this way makes it easier to compile and build your code, it avoids any arbitrary limitations of our scripting APIs, and in general is far more simple and intuitive - if you are a reasonably able C++ programmer.

The Build Chain and Runtime Baselines

These are the current minimal operating system and compiler versions to run and compile LibreOffice, also used by the TDF builds:

  • Windows:
    • Runtime: Windows 7
    • Build: Cygwin + Visual Studio 2019 version 16.10
  • macOS:
    • Runtime: 10.15
    • Build: 12 (13 for aarch64) + Xcode 14
  • Linux:
    • Runtime: RHEL 7 or CentOS 7
    • Build: either GCC 7.0.0; or Clang 8.0.1 with libstdc++ 7.3.0
  • iOS (only for LibreOfficeKit):
    • Runtime: 11.4 (only support for newer i devices == 64 bit)
    • Build: Xcode 9.3 and iPhone SDK 11.4
  • Android:
    • Build: NDK r19c and SDK 22.6.2
  • Emscripten / WASM:
    • Runtime: a browser with SharedMemory support (threads + atomics)
    • Build: Qt 5.15 with Qt supported Emscripten 1.39.8
    • See README.wasm

Java is required for building many parts of LibreOffice. In TDF Wiki article Development/Java, the exact modules that depend on Java are listed.

The baseline for Java is Java Development Kit (JDK) Version 11 or later. It is possible to build LibreOffice with JDK version 9, but it is no longer supported by the JDK vendors, thus it should be avoided.

If you want to use Clang with the LibreOffice compiler plugins, the minimal version of Clang is 12.0.1. Since Xcode doesn't provide the compiler plugin headers, you have to compile your own Clang to use them on macOS.

You can find the TDF configure switches in the distro-configs/ directory.

To setup your initial build environment on Windows and macOS, we provide the LibreOffice Development Environment (LODE) scripts.

For more information see the build instructions for your platform in the TDF wiki.

The Important Bits of Code

Each module should have a README.md file inside it which has some degree of documentation for that module; patches are most welcome to improve those. We have those turned into a web page here:

https://docs.libreoffice.org/

However, there are two hundred modules, many of them of only peripheral interest for a specialist audience. So - where is the good stuff, the code that is most useful. Here is a quick overview of the most important ones:

Module Description
sal/ this provides a simple System Abstraction Layer
tools/ this provides basic internal types: Rectangle, Color etc.
vcl/ this is the widget toolkit library and one rendering abstraction
framework/ UNO framework, responsible for building toolbars, menus, status bars, and the chrome around the document using widgets from VCL, and XML descriptions from /uiconfig/ files
sfx2/ legacy core framework used by Writer/Calc/Draw: document model / load/save / signals for actions etc.
svx/ drawing model related helper code, including much of Draw/Impress

Then applications

Module Description
desktop/ this is where the main() for the application lives, init / bootstrap. the name dates back to an ancient StarOffice that also drew a desktop
sw/ Writer
sc/ Calc
sd/ Draw / Impress

There are several other libraries that are helpful from a graphical perspective:

Module Description
basegfx/ algorithms and data-types for graphics as used in the canvas
canvas/ new (UNO) canvas rendering model with various backends
cppcanvas/ C++ helper classes for using the UNO canvas
drawinglayer/ View code to render drawable objects and break them down into primitives we can render more easily.

Rules for #include Directives (C/C++)

Use the "..." form if and only if the included file is found next to the including file. Otherwise, use the <...> form. (For further details, see the mail Re: C[++]: Normalizing include syntax ("" vs <>).)

The UNO API include files should consistently use double quotes, for the benefit of external users of this API.

loplugin:includeform (compilerplugins/clang/includeform.cxx) enforces these rules.

Finding Out More

Beyond this, you can read the README.md files, send us patches, ask on the mailing list libreoffice@lists.freedesktop.org (no subscription required) or poke people on IRC #libreoffice-dev on irc.libera.chat - we're a friendly and generally helpful mob. We know the code can be hard to get into at first, and so there are no silly questions.