You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Jens Carl f32a59a52e Fix typo 8 hours ago
.git-hooks git hooks: update commit-msg to Gerrit 2.16.15 3 weeks ago
.github Add donation info for GitHub 6 months ago
UnoControls tdf#42982 add detail exception reason for UnoControls 5 days ago
accessibility Drop o3tl::optional wrapper 3 days ago
android GBUILD_TRACE, support for finding out where the build time is spent 1 week ago
animations Extend loplugin:external to warn about classes 3 months ago
apple_remote Blind fix of -Werror,-Wpointer-to-int-cast in apple_remote 2 days ago
avmedia tdf#124176: Use pragma once instead of include guards 1 week ago
basctl Drop o3tl::optional wrapper 3 days ago
basegfx tdf#130655 callback interface for 3D and secure dash 1 week ago
basic LibO Basic Property Get/Set 2 days ago
bean tdf#117331 Merge jurt and unoil into ridl 2 weeks ago
bin Drop o3tl::optional wrapper 3 days ago
binaryurp tdf#42949 Add back includes to binaryurp/ 3 weeks ago
bridges .eh_frame section should probably have type @unwind 20 hours ago
canvas Drop o3tl::optional wrapper 3 days ago
chart2 Related tdf#130681: use "Standard" page style if nothing else found 19 hours ago
cli_ure Fix typos 5 months ago
codemaker clang-tidy modernize-concat-nested-namespace in codemaker..configmgr 1 month ago
comphelper Drop o3tl::optional wrapper 3 days ago
compilerplugins Revert "loplugin:sequenceloop improve rvalue detection" 1 day ago
config_host HAVE_GCC_ATTRIBUTE_WARN_UNUSED should always be true now for Clang/GCC 3 weeks ago
configmgr GenericCommands: fix Fontwork tooltips 2 weeks ago
connectivity Postgresql native, fix readLogLevelFromConfiguration 21 hours ago
cppcanvas Drop o3tl::optional wrapper 3 days ago
cppu clang-tidy modernize-concat-nested-namespace in cppcanvas..cppuhelper 1 month ago
cppuhelper android: Actually let's avoid the exceptions via bridges only on aarch4. 1 week ago
cpputools sal_Char->char in cppcanvas..cui 2 months ago
cui Drop o3tl::optional wrapper 3 days ago
dbaccess Drop o3tl::optional wrapper 3 days ago
desktop tdf#127205 split Desktop::terminate process 2 days ago
dictionaries @ 6e60b3ca21 Update git submodules 1 week ago
distro-configs Revert "make Linux Clang Jenkins builds use -Og" 3 days ago
drawinglayer tdf#129675: This should be EmfPlusPenDataDashedLine 6 days ago
dtrans loplugin:nullptr (clang-cl) 2 weeks ago
editeng Drop o3tl::optional wrapper 3 days ago
embeddedobj Remove some unused includes 4 days ago
embedserv sal_Char->char in editeng..eventattacher 2 months ago
emfio Drop o3tl::optional wrapper 3 days ago
eventattacher sal_Char->char in editeng..eventattacher 2 months ago
extensions drop unneeded include 6 days ago
external external/firebird: Remove dead conditionals 3 days ago
extras [en_US] Added 13 autocorrect words 4 days ago
filter Drop o3tl::optional wrapper 3 days ago
forms Drop o3tl::optional wrapper 3 days ago
formula clang-format f*,h* with under 5-percent lines of change 1 week ago
fpicker clang-format f*,h* with under 5-percent lines of change 1 week ago
framework tdf#130163 Show undock or dock menu item in toolbar menu 7 hours ago
helpcompiler Avoid -Werror,-Wdeprecated-enum-enum-conversion 1 month ago
helpcontent2 @ 41887a9d5c Update git submodules 22 hours ago
hwpfilter clang-format f*,h* with under 5-percent lines of change 1 week ago
i18nlangtag Resolves: tdf#130757 Add Minangkabau [min-ID] to language list 5 days ago
i18npool Resolves: tdf#130563 Add predefined 4-digit year date+time format 1 day ago
i18nutil Add case table for Adlam 1 week ago
icon-themes Sifr: fix for tdf#130885: missing Slide Layout icons 16 hours ago
idl loplugin:finalclasses in i18npool..linguistic 1 month ago
idlc Drop o3tl::optional wrapper 3 days ago
include Factor out FillEListWithOneFormat_Impl() 1 day ago
instsetoo_native add macOS malloc debugging env vars 4 days ago
io remove some unused local vars 4 weeks ago
ios Move the "registry" directory to be under "share" on iOS, too 1 week ago
javaunohelper tdf#117331 Merge jurt and unoil into ridl 2 weeks ago
jurt Cleanup: Move unit tests to ridljar 2 weeks ago
jvmaccess tdf#42949 Fix IWYU warnings in jvmfwk/ & jvmaccess/ 10 months ago
jvmfwk Drop o3tl::optional wrapper 3 days ago
l10ntools avoid flex-caused warnings about unused functions 2 weeks ago
librelogo GBUILD_TRACE, support for finding out where the build time is spent 1 week ago
libreofficekit Drop o3tl::optional wrapper 3 days ago
lingucomponent tdf#130137 Replace remaining uses of WNT define checks with _WIN32 4 weeks ago
linguistic tdf#117331 Merge jurt and unoil into ridl 2 weeks ago
lotuswordpro use color instead of int 2 weeks ago
m4 add -latomic configure check... 5 months ago
nlpsolver tdf#117331 Merge jurt and unoil into ridl 2 weeks ago
o3tl Adapt o3tl::span to removal of std::span::cbegin et al 1 day ago
odk GBUILD_TRACE, support for finding out where the build time is spent 1 week ago
offapi tdf#127205 split Desktop::terminate process 2 days ago
officecfg Make shortcut of .uno:TraceChangeMode preferred 1 day ago
onlineupdate Proper error check for fwrite in updater.cxx 1 week ago
oovbaapi Fix typo 2 months ago
oox tdf130839: Corrects second level left margin in Smartart 8 hours ago
opencl merge OpenGLZone and OpenCLZone into one generic code 2 weeks ago
osx Add some more source files for breakpointing convenience 3 months ago
package make update_pch also consider files in <module>/src/**/inc 3 weeks ago
pch Drop o3tl::optional wrapper 3 days ago
postprocess GBUILD_TRACE, support for finding out where the build time is spent 1 week ago
pyuno python 3.8.2 compile: add tp_print to PyTypeObject 2 days ago
qadevOOo Fix typo 1 week ago
readlicense_oo update credits 3 days ago
registry clang-tidy modernize-concat-nested-namespace 3 weeks ago
remotebridges tdf#88205: Adapt uses of css::uno::Sequence to use initializer_list ctor 3 weeks ago
reportbuilder tdf#117331 Merge jurt and unoil into ridl 2 weeks ago
reportdesign Drop o3tl::optional wrapper 3 days ago
ridljar GBUILD_TRACE, support for finding out where the build time is spent 1 week ago
sal clang-analyzer-deadcode.DeadStores 1 week ago
salhelper tdf#130137 Replace remaining uses of WNT define checks with _WIN32 4 weeks ago
sax Drop o3tl::optional wrapper 3 days ago
sc Fix typo 6 hours ago
scaddins clang-tidy modernize-concat-nested-namespace 3 weeks ago
sccomp remove some unused local vars 3 weeks ago
schema tdf#121658 Add option to not hyphenate words in CAPS 2 months ago
scp2 tdf#117331 Merge jurt and unoil into ridl 2 weeks ago
scripting tdf#117331 Merge jurt and unoil into ridl 2 weeks ago
sd tdf130839: Corrects second level left margin in Smartart 8 hours ago
sdext Move Boost.Spirit usage away from legacy namespace 3 days ago
setup_native Set INSTALLLOCATION in one single place 2 weeks ago
sfx2 Make undo/redo shortcuts work from sidebar docking window 7 hours ago
shell GBUILD_TRACE, support for finding out where the build time is spent 1 week ago
slideshow Drop o3tl::optional wrapper 3 days ago
smoketest tdf#117331 Merge jurt and unoil into ridl 2 weeks ago
solenv xmloff: create SchXMLImport_Meta instances with an uno constructor 3 days ago
soltools tdf#130137 Replace remaining uses of WNT define checks with _WIN32 4 weeks ago
sot New loplugin:unsignedcompare 3 weeks ago
starmath Drop o3tl::optional wrapper 3 days ago
stoc Be more verbose about JNI errors at least with --enable-dbgutil 2 weeks ago
store cppcheck: shadowFunction in store/storbase 4 weeks ago
svgio Drop o3tl::optional wrapper 3 days ago
svl Resolves: tdf#130563 Add predefined 4-digit year date+time format 1 day ago
svtools Drop o3tl::optional wrapper 3 days ago
svx Factor out FillEListWithOneFormat_Impl() 1 day ago
sw tdf#108766 Add outline tracking to all content navigation view 7 hours ago
swext tdf#117331 Merge jurt and unoil into ridl 2 weeks ago
sysui GBUILD_TRACE, support for finding out where the build time is spent 1 week ago
test cppcheck: redundantInitialization in XSheetCondition::testGetSetOperator() 2 weeks ago
testtools Remove never-executed else-block 1 week ago
toolkit Drop o3tl::optional wrapper 3 days ago
tools tdf#75280: Convert inappropriate use of sal_uIntPtr to better integer types 3 days ago
translations @ 614eb34296 Update git submodules 1 week ago
ucb Drop o3tl::optional wrapper 3 days ago
ucbhelper inline some acquire/release calls 1 week ago
udkapi Update the reference rdbs to libreoffice-6.4.0.3-buildfix1 4 days ago
uitest uitest: make sure UITEST_TEST_NAME matches exactly one test function 5 days ago
unodevtools clang-tidy modernize-concat-nested-namespace 3 weeks ago
unoidl avoid flex-caused warnings about unused functions 2 weeks ago
unoil GBUILD_TRACE, support for finding out where the build time is spent 1 week ago
unotest Fix mis-merge 2 weeks ago
unotools Drop o3tl::optional wrapper 3 days ago
unoxml Drop o3tl::optional wrapper 3 days ago
ure tdf#117331 Merge jurt and unoil into ridl 2 weeks ago
uui tdf#42949 Fix IWYU warnings in uui/ 2 weeks ago
vbahelper Drop o3tl::optional wrapper 3 days ago
vcl gtk3: allow handling of ctrl key accelerators 7 hours ago
winaccessibility GBUILD_TRACE, support for finding out where the build time is spent 1 week ago
wizards GBUILD_TRACE, support for finding out where the build time is spent 1 week ago
writerfilter tdf#130817 RTF doesn't set custom footnote state 2 days ago
writerperfect Fix typo 1 week ago
xmerge tdf#117331 Merge jurt and unoil into ridl 2 weeks ago
xmlhelp New loplugin:unsignedcompare 3 weeks ago
xmloff Resolves: tdf#130563 Add predefined 4-digit year date+time format 1 day ago
xmlreader Revert "Optimize getNamespaceId (xmlreader)" 4 months ago
xmlscript Fix typo 1 week ago
xmlsecurity clang-analyzer-deadcode.DeadStores 1 week ago
.buckconfig Add build toolchain to upload LibreOffice API to Maven Central 4 years ago
.buckversion Add build toolchain to upload LibreOffice API to Maven Central 4 years ago
.clang-format clang-format: don't fix up namespace comments 3 months ago
.editorconfig We have some Objective-C source files, too 2 years ago
.git-blame-ignore-revs put clang-format commits to .git-blame-ignore-revs 2 weeks ago
.gitattributes Ignore schema files for src tarball generation 3 years ago
.gitignore Add QtCreator-specific file to .gitignore 8 months ago
.gitmodules uset https:// instead of git:// for submodules 1 year ago
.gitreview git-review: Use the hostname instead of alias. 9 months ago
BUCK Add build toolchain to upload LibreOffice API to Maven Central 4 years ago
COPYING Licencing files 9 years ago
COPYING.LGPL Licencing files 9 years ago
COPYING.MPL Targetted text updates, with seasonable changes before l10n freeze. 6 years ago
Library_merged.mk gbuild: Remove MSVC 2013 legacy code 2 years ago
Makefile.fetch python3: bundle libffi for GNU/Linux builds 1 month ago
Makefile.gbuild updater: workaround cygwin python bug around command line arguments 2 years ago
Makefile.in allow root under podman 1 month ago
README.Solaris remove use of Archive::Zip 3 years ago
README.cross Rename Mac OS X to official name macOS in comments and documentation 1 year ago
README.md Bump macOS build baseline to Xcode 11.3 and macOS 10.14.4 3 days ago
Repository.mk drop workben outdevgrind 1 week ago
RepositoryExternal.mk always define GLM_FORCE_CTOR_INIT when using glm 2 weeks ago
RepositoryFixes.mk Rename Mac OS X to official name macOS in comments and documentation 1 year ago
RepositoryModule_build.mk migrate to boost::gettext 2 years ago
RepositoryModule_host.mk tdf#129375: Avoid crash when inserting bibliography entry on iOS 1 month ago
TEMPLATE.SOURCECODE.HEADER Add fill-column: 100 to the Emacs mode line 3 years ago
antivirusDetection.vbs tdf#84553 Correctly handle failures while getting a WMI Object. 1 week ago
autogen.sh Introduce INCLUDE: in the distro-configs... 1 week ago
config.guess Fixing '....' 5 months ago
config.sub Update config.{guess,sub} 9 months ago
config_host.mk.in macOS Xcode ld is known to always support -platform_version now 3 days ago
config_host_lang.mk.in gbuild: allow to react on change in configured langs 4 years ago
configure.ac tdf#128849 -- Add Sifr (Dark + SVG) to the icon theme list 2 days ago
download.lst Update mdds to 1.6.0. 2 weeks ago
g ./g: don't exit early on ./g checkout -f 1 year ago
hardened_runtime.xcent macOS: enable hardened runtime when signing 8 months ago
install-sh Fix typos 6 months ago
leak-suppress.txt fix doc 3 months ago
lo.xcent No more need to generate lo.xcent from lo.xcent.in 1 year ago
logerrit logerrit: Upgrade URIs to https:// 1 month ago
sanitize-ubsan-blacklist file for ci-based ubsan build 4 years ago
setup.cfg pep8 -> pycodestyle 1 year ago

README.md

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 here and here. 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 2017 version 15.7
  • macOS:
    • Runtime: 10.10
    • Build: 10.14.4 + Xcode 11.3
  • Linux:
    • Runtime: RHEL 7 or CentOS 7
    • Build: either GCC 7.0.0; or Clang 5.0.2 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

If you want to use Clang with the LibreOffice compiler plugins, the minimal version of Clang is 5.0.2. 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 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 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.freenode.net - 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.