Skip to content
Read-only LibreOffice core repo - no pull request (use gerrit instead https://gerrit.libreoffice.org/) - don't download zip, use https://dev-www.libreoffice.org/bundles/ instead
Branch: master
Clone or download
Pull request Compare This branch is 50 commits ahead, 652 commits behind LibreOffice:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.git-hooks
.github
UnoControls
accessibility make update_pch also consider files in <module>/src/**/inc Feb 1, 2020
android Fix German typo Jan 23, 2020
animations Build animations. Feb 14, 2020
apple_remote Fix typo Apr 11, 2019
avmedia Build avmedia. Feb 16, 2020
basctl make update_pch also consider files in <module>/src/**/inc Feb 1, 2020
basegfx Build basegfx. Feb 14, 2020
basic Compile oovbaapi and basic. Feb 16, 2020
bean
bin move some headers inside ucbhelper Feb 4, 2020
binaryurp Build binaryurp. Feb 14, 2020
bridges remove some unused local vars Jan 26, 2020
canvas Build canvas(es). Feb 16, 2020
chart2 tdf#130389: Data ranges dialog, data series tab, move up/down reversed Feb 4, 2020
cli_ure Fix typos Sep 10, 2019
codemaker Build udkapi headers and use them in targets. Feb 8, 2020
comphelper
compilerplugins Silence loplugin:unnecessaryoverride in WinSalInstance::GetBackendCap… Feb 3, 2020
config_host Compile oox. Feb 16, 2020
configmgr std::set<T*> -> o3tl::sorted_vector Feb 4, 2020
connectivity Build connectivity and svx. Feb 16, 2020
cppcanvas Build cppcanvas. Feb 16, 2020
cppu Build udkapi headers and use them in targets. Feb 8, 2020
cppuhelper Build basegfx. Feb 14, 2020
cpputools sal_Char->char in cppcanvas..cui Dec 18, 2019
cui tdf#130428 SfxItemState::UNKNOWN replacements Feb 4, 2020
dbaccess loplugin:unusedfields Feb 3, 2020
desktop Build the main soffice binary. Feb 17, 2020
dictionaries @ 3097066 Update git submodules Jan 12, 2020
distro-configs ofz#19296 disable skia for oss-fuzz Dec 9, 2019
drawinglayer
dtrans loplugin:nullptr (clang-cl) Feb 4, 2020
editeng Build editeng with a hack, using a prebuilt token file. Feb 16, 2020
embeddedobj remove some unused local vars Jan 26, 2020
embedserv
emfio make update_pch also consider files in <module>/src/**/inc Feb 1, 2020
eventattacher Build eventattacher. Feb 14, 2020
extensions
external
extras SvxRelativeField is newly unused Feb 2, 2020
filter
forms make update_pch also consider files in <module>/src/**/inc Feb 1, 2020
formula tdf#124176: Use pragma once instead of include guards Jan 25, 2020
fpicker
framework Build framework libs. Feb 16, 2020
helpcompiler
helpcontent2 @ 34b0364 Update git submodules Feb 4, 2020
hwpfilter loplugin:duplicatedefines (clang-cl) Feb 3, 2020
i18nlangtag Generate offapi headers and build i18nlangtag library. Feb 8, 2020
i18npool
i18nutil Build jvmfwk and i18nutil. Feb 14, 2020
icon-themes
idl Build drawinglayer and sfx2. Feb 16, 2020
idlc Build unoidl. Feb 8, 2020
include deb#949754: unotools,officecfg: don't ODF export using ODFVER_UNKNOWN Feb 4, 2020
instsetoo_native Set INSTALLLOCATION in one single place Feb 3, 2020
io Build io. Feb 14, 2020
ios
javaunohelper sal_Char->char in idlc..linguistic Dec 19, 2019
jurt cid#1448367 Explicit null dereferenced Nov 17, 2019
jvmaccess tdf#42949 Fix IWYU warnings in jvmfwk/ & jvmaccess/ Apr 26, 2019
jvmfwk Build jvmfwk and i18nutil. Feb 14, 2020
l10ntools avoid flex-caused warnings about unused functions Feb 3, 2020
librelogo sanitize LibreLogo calls Jun 7, 2019
libreofficekit Prefer O3TL_UNREACHABLE over assert(false) Dec 9, 2019
lingucomponent
linguistic Build linguistic. Feb 16, 2020
lotuswordpro ofz#20507 infinite table conversion Feb 4, 2020
m4 add -latomic configure check... Sep 2, 2019
nlpsolver Fixing '....' Sep 6, 2019
o3tl Adapt o3tl::span to P1872R0 Dec 7, 2019
odk Remove misleading comment Jan 28, 2020
offapi Build VCL except for getBestMSEncodingByChar. Feb 15, 2020
officecfg Build the main soffice binary. Feb 17, 2020
onlineupdate
oovbaapi Compile oovbaapi and basic. Feb 16, 2020
oox Compile oox. Feb 16, 2020
opencl Build clew and opencl. Feb 14, 2020
osx Add some more source files for breakpointing convenience Nov 20, 2019
package Build package. Feb 16, 2020
pch Removed duplicated includes Dec 4, 2019
postprocess remove unused GSOC 2005 "Tabbed Document Windows for OOo" Jan 21, 2020
pyuno sys.version is for displaying; use sys.version_info for version check Jan 28, 2020
qadevOOo Fix typo Dec 19, 2019
readlicense_oo python3: bundle libffi for GNU/Linux builds Jan 9, 2020
registry Build registry. Feb 8, 2020
remotebridges Build remotebridges. Feb 14, 2020
reportbuilder Fix '..' Sep 1, 2019
reportdesign make update_pch also consider files in <module>/src/**/inc Feb 1, 2020
ridljar Fix typos Aug 12, 2019
sal Build some tests. Feb 4, 2020
salhelper
sax Compile oox. Feb 16, 2020
sc tdf#129789 bitmap in comment lost on load Feb 4, 2020
scaddins clang-tidy modernize-concat-nested-namespace Jan 31, 2020
sccomp remove some unused local vars Jan 28, 2020
schema
scp2 Merge both x64 and x86 CRT merge modules into x64 MSI Jan 13, 2020
scripting new loplugin:namespaceindentation Jan 31, 2020
sd Fix typo Feb 4, 2020
sdext replace boost::bimap in sdext pdfimport Feb 4, 2020
setup_native Set INSTALLLOCATION in one single place Feb 3, 2020
sfx2 Build drawinglayer and sfx2. Feb 16, 2020
shell loplugin:stringadd (clang-cl) Feb 3, 2020
slideshow make update_pch also consider files in <module>/src/**/inc Feb 1, 2020
smoketest Fix typos Aug 12, 2019
solenv Build xo with a hack. Feb 16, 2020
soltools tdf#130137 Replace remaining uses of WNT define checks with _WIN32 Jan 25, 2020
sot Build sot. Feb 14, 2020
starmath make update_pch also consider files in <module>/src/**/inc Feb 1, 2020
stoc
store Build store. Feb 8, 2020
svgio make update_pch also consider files in <module>/src/**/inc Feb 1, 2020
svl Build svl. Feb 14, 2020
svtools Build svtools. Feb 16, 2020
svx Build connectivity and svx. Feb 16, 2020
sw
swext Fix typos Aug 12, 2019
sysui sysui: Add C header to libreofficekitgtk introspection Nov 19, 2019
test make some headers private Feb 3, 2020
testtools clang-tidy modernize-concat-nested-namespace Jan 31, 2020
toolkit Build toolkit. Feb 16, 2020
tools
translations @ 37a6f52 Update git submodules Jan 22, 2020
ucb clang-tidy modernize-concat-nested-namespace Jan 31, 2020
ucbhelper Build ucbhelper. Feb 14, 2020
udkapi Build basegfx. Feb 14, 2020
uitest tdf#129568 Rename Default Style to Default Paragraph/Page/Table Style Feb 2, 2020
unodevtools clang-tidy modernize-concat-nested-namespace Jan 31, 2020
unoidl Build udkapi headers and use them in targets. Feb 8, 2020
unoil Use https instead of http Apr 16, 2018
unotest tdf#42949 Fix IWYU warnings in unotest/ Feb 3, 2020
unotools Build svl. Feb 14, 2020
unoxml make update_pch also consider files in <module>/src/**/inc Feb 1, 2020
ure remove more rtl::OUString and OString prefixes Oct 24, 2018
uui tdf#42949 Fix IWYU warnings in uui/ Feb 4, 2020
vbahelper Build vbahelper. Feb 17, 2020
vcl Build the main soffice binary. Feb 17, 2020
winaccessibility loplugin:redundantpointerops (clang-cl) Feb 3, 2020
wizards Fix typo Dec 11, 2019
writerfilter
writerperfect clang-tidy modernize-concat-nested-namespace Jan 31, 2020
xmerge Fix typo Dec 5, 2019
xmlhelp New loplugin:unsignedcompare Jan 28, 2020
xmloff Build xo with a hack. Feb 16, 2020
xmlreader Build cppuhelper. Feb 8, 2020
xmlscript
xmlsecurity tdf:#54938Adapt supportsService implementations to cppu::supportsService Feb 3, 2020
.buckconfig
.buckversion
.clang-format clang-format: don't fix up namespace comments Nov 14, 2019
.editorconfig We have some Objective-C source files, too Dec 1, 2017
.git-blame-ignore-revs Add commit to ignore list Dec 11, 2019
.gitattributes Ignore schema files for src tarball generation Aug 30, 2016
.gitignore Add QtCreator-specific file to .gitignore Jun 8, 2019
.gitmodules
.gitreview git-review: Use the hostname instead of alias. May 15, 2019
BUCK Add build toolchain to upload LibreOffice API to Maven Central Dec 3, 2015
COPYING Licencing files Jan 11, 2011
COPYING.LGPL
COPYING.MPL Targetted text updates, with seasonable changes before l10n freeze. Dec 13, 2013
Library_merged.mk gbuild: Remove MSVC 2013 legacy code Apr 21, 2017
Makefile.fetch python3: bundle libffi for GNU/Linux builds Jan 9, 2020
Makefile.gbuild updater: workaround cygwin python bug around command line arguments Aug 5, 2017
Makefile.in allow root under podman Jan 4, 2020
README.Solaris remove use of Archive::Zip Jun 4, 2016
README.cross
README.md README: Add Weblate badge for core l10n Nov 1, 2019
Repository.mk add support for Clang's -building-pch-with-obj Jan 18, 2020
RepositoryExternal.mk pdfium: don't patch out the COMPONENT_BUILD check, define it Jan 23, 2020
RepositoryFixes.mk
RepositoryModule_build.mk
RepositoryModule_host.mk tdf#129375: Avoid crash when inserting bibliography entry on iOS Dec 31, 2019
TEMPLATE.SOURCECODE.HEADER
autogen.sh Remove "--clean" option from autogen.sh Dec 18, 2019
config.guess Fixing '....' Sep 6, 2019
config.sub Update config.{guess,sub} May 13, 2019
config_host.mk.in use -Wl,-dead_strip on Mac, its linker doesn't know -Wl,--gc-sections Jan 18, 2020
config_host_lang.mk.in gbuild: allow to react on change in configured langs Mar 25, 2015
configure.ac Fix typo Jan 29, 2020
download.lst update Skia to chrome/m81 Jan 31, 2020
g
hardened_runtime.xcent macOS: enable hardened runtime when signing May 31, 2019
install-sh Fix typos Aug 12, 2019
leak-suppress.txt fix doc Nov 13, 2019
lo.xcent No more need to generate lo.xcent from lo.xcent.in Dec 18, 2018
logerrit logerrit: Upgrade URIs to https:// Jan 16, 2020
meson.build Build the main soffice binary. Feb 17, 2020
sanitize-ubsan-blacklist file for ci-based ubsan build Oct 31, 2015
setup.cfg pep8 -> pycodestyle Oct 16, 2018

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.13.2 + Xcode 9.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.

You can’t perform that action at this time.