Test repository to check push and ssh key
Find a file
Stephan Bergmann c379ba47a7 No need to explicitly create Conents/Resources/*.lproj/ directories
At least since 7a08bfeabe "tdf#122244 Put
InfoPlist.strings files at correct places on macOS" those directories that have
actual content are created on demand.  (That is, empty such directories are no
longer created, but I assume that's a feature rather than a bug.)

Change-Id: If753483c78fbf39e76c9565a407e7ff27ca32efb
Reviewed-on: https://gerrit.libreoffice.org/71300
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-04-25 20:10:39 +02:00
.git-hooks
accessibility Exit from search loop when condition is satisfied 2019-04-21 16:24:31 +02:00
android
animations
apple_remote
avmedia
basctl tdf#123043 make type character detection unicode-aware 2019-04-23 12:51:51 +02:00
basegfx
basic Fix typo 2019-04-25 07:05:13 +02:00
bean Fix typo 2019-04-20 07:54:23 +02:00
bin node.firstChild seen as None 2019-04-19 14:50:55 +02:00
binaryurp
bridges optimise find/insert pattern 2019-04-19 13:19:31 +02:00
canvas
chart2 WIP: Further preparations for deeper Item changes 2019-04-25 19:59:04 +02:00
cli_ure
codemaker
comphelper Fix typo 2019-04-21 08:22:01 +02:00
compilerplugins tdf#89522 PERF FILEOPEN xlsx, part 1 2019-04-24 16:09:08 +02:00
config_host
configmgr optimise find/insert pattern 2019-04-19 13:19:31 +02:00
connectivity mysqlc: Allow conversions between different types 2019-04-25 15:47:38 +02:00
cppcanvas Fix typo 2019-04-20 07:04:06 +02:00
cppu Fix typo 2019-04-22 09:03:20 +02:00
cppuhelper Fix typo 2019-04-20 07:54:46 +02:00
cpputools Fix typo 2019-04-20 07:53:38 +02:00
cui WIP: Further preparations for deeper Item changes 2019-04-25 19:59:04 +02:00
dbaccess WIP: Further preparations for deeper Item changes 2019-04-25 19:59:04 +02:00
desktop tdf#124923: Need to call InitVCL() on iOS before using SolarMutexGuard 2019-04-24 14:19:04 +03:00
dictionaries@5fe575dbcf Update git submodules 2019-04-20 11:24:57 +02:00
distro-configs
drawinglayer Fix typo 2019-04-23 09:20:54 +02:00
dtrans
editeng WIP: Further preparations for deeper Item changes 2019-04-25 19:59:04 +02:00
embeddedobj
embedserv
emfio
eventattacher
extensions
external workdir/UnpackedTarball/languagetool/build.xml uses ${source}, ${target} 2019-04-24 13:04:52 +02:00
extras
filter Fix typo 2019-04-25 18:41:38 +02:00
forms Fix typo 2019-04-21 08:54:48 +02:00
formula drop some unneeded includes 2019-04-19 13:57:37 +02:00
fpicker
framework tdf#45904 Move TableColumn Java tests to C++ 2019-04-25 01:21:49 +02:00
helpcompiler
helpcontent2@f52790876d Update git submodules 2019-04-23 13:03:02 +02:00
hwpfilter
i18nlangtag
i18npool
i18nutil
icon-themes tdf#117891 base table icons in main window tables 2019-04-25 19:02:47 +02:00
idl
idlc
include WIP: Further preparations for deeper Item changes 2019-04-25 19:59:04 +02:00
instsetoo_native
io tdf#42949 Fix IWYU warnings in io/ 2019-04-25 11:28:15 +02:00
ios
javaunohelper
jurt
jvmaccess
jvmfwk
l10ntools tdf#124791: Fix Gaelic (Scotland) (gd-GB) LCID in MSI installer 2019-04-24 16:45:28 +02:00
librelogo
libreofficekit
lingucomponent The iOS sv_SE dictionary surely works for sv_FI, too 2019-04-24 16:37:54 +03:00
linguistic
lotuswordpro
m4
nlpsolver
o3tl
odk
offapi Fix typo in code 2019-04-20 12:41:55 +02:00
officecfg
onlineupdate
oovbaapi Add XWordBasic.FileSaveAs() and implement 2019-04-19 16:06:40 +02:00
oox ofz#14422 null deref 2019-04-25 16:08:12 +02:00
opencl
osx
package optimise find/insert pattern 2019-04-19 13:19:31 +02:00
postprocess
pyuno
qadevOOo tdf#45904 Move TableColumn Java tests to C++ 2019-04-25 01:21:49 +02:00
readlicense_oo update credits 2019-04-25 15:09:06 +02:00
registry optimise find/insert pattern 2019-04-19 13:19:31 +02:00
remotebridges
reportbuilder
reportdesign tdf#113266 slow opening XLS with 45 MB drawing 2019-04-23 14:10:38 +02:00
ridljar
sal
salhelper
sax Further cleanup of FastSerializerHelper's startElement/singleElement[NS] 2019-04-19 21:20:46 +02:00
sc tdf#50916: XLS: make sure to set default widths to all columns 2019-04-25 20:09:39 +02:00
scaddins
sccomp
schema
scp2
scripting loplugin:sequentialassign in sd 2019-04-19 13:19:45 +02:00
sd WIP: Further preparations for deeper Item changes 2019-04-25 19:59:04 +02:00
sdext loplugin:sequentialassign in sd 2019-04-19 13:19:45 +02:00
setup_native tdf#124794: Wait for WU service stopped before launching wusa.exe 2019-04-22 04:22:57 +02:00
sfx2 WIP: Further preparations for deeper Item changes 2019-04-25 19:59:04 +02:00
shell
slideshow
smoketest
solenv No need to explicitly create Conents/Resources/*.lproj/ directories 2019-04-25 20:10:39 +02:00
soltools
sot
starmath Further cleanup of FastSerializerHelper's startElement/singleElement[NS] 2019-04-19 21:20:46 +02:00
stoc
store
svgio
svl WIP: Further preparations for deeper Item changes 2019-04-25 19:59:04 +02:00
svtools tdf#124572 TabBar new look, protected icon, width and height 2019-04-25 08:39:38 +02:00
svx WIP: Further preparations for deeper Item changes 2019-04-25 19:59:04 +02:00
sw WIP: Further preparations for deeper Item changes 2019-04-25 19:59:04 +02:00
swext
sysui tdf#122244 Put InfoPlist.strings files at correct places on macOS 2019-04-25 13:27:14 +02:00
test assertXPath: disallow passing rAttribute without rExpectedValue 2019-04-25 14:42:13 +02:00
testtools
toolkit
tools cleanup and rename COLORDATA_RGB to color::extractRGB 2019-04-22 05:51:44 +02:00
translations@926f46dde8 Update git submodules 2019-04-25 14:26:46 +02:00
ucb tdf#124635 MountOperation::Mount can be called with SolarMutex unlocked 2019-04-23 20:08:56 +02:00
ucbhelper
udkapi
uitest
UnoControls
unodevtools optimise find/insert pattern 2019-04-19 13:19:31 +02:00
unoidl
unoil
unotest
unotools optimise find/insert pattern 2019-04-19 13:19:31 +02:00
unoxml optimise find/insert pattern 2019-04-19 13:19:31 +02:00
ure
uui
vbahelper Fix typo 2019-04-23 09:20:15 +02:00
vcl test unreliable under windows 2019-04-25 16:07:17 +02:00
winaccessibility
wizards tdf#124197 Improve "Unexpected error" user-visible error message wording 2019-04-24 10:30:37 +02:00
writerfilter related tdf#123636 writerfilter: split newline also if PAGE_BREAK 2019-04-25 06:55:18 +02:00
writerperfect fix filename of a test file in writerperfect 2019-04-24 09:52:21 +02:00
xmerge
xmlhelp
xmloff xmloff: create XMLImpressMetaExportOasis instances with an uno constructor 2019-04-25 09:04:43 +02:00
xmlreader
xmlscript
xmlsecurity Properly initialize gpgme-w32spawn.exe path on Windows 2019-04-21 08:17:14 +02:00
.buckconfig
.buckversion
.clang-format
.editorconfig
.gitattributes
.gitignore
.gitmodules
.gitreview
autogen.sh
BUCK
config.guess
config.sub
config_host.mk.in
config_host_lang.mk.in
configure.ac Allow to pass JAVA_SOURCE/TARGET_VER into configure 2019-04-24 11:09:57 +02:00
COPYING
COPYING.LGPL
COPYING.MPL
download.lst extern: update xmlsec to 1.2.28 2019-04-24 08:58:39 +02:00
g
install-sh
leak-suppress.txt
Library_merged.mk
lo.xcent
logerrit
Makefile.fetch
Makefile.gbuild
Makefile.in That bin directory should no longer be there 2019-04-25 17:02:41 +02:00
README.cross
README.md
README.Solaris
Repository.mk
RepositoryExternal.mk
RepositoryFixes.mk
RepositoryModule_build.mk
RepositoryModule_host.mk
sanitize-ubsan-blacklist
setup.cfg
TEMPLATE.SOURCECODE.HEADER

LibreOffice

Coverity Scan Build Status CII Best Practices

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
  • macOS:
    • Runtime: 10.10
    • Build: 10.13.2 + Xcode 9.3
  • Linux:
    • Runtime: RHEL 6 or CentOS 6
    • 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

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.