Commit Graph
24 Commits
Author SHA1 Message Date
RMZeroFour c3c7b48fa9 .NET Bindings: Native bridge for .NET
This patch includes all marshalling and proxy handling code on the
.NET side as well as the native side needed for a fully functional
UNO bridge.

It also includes some changes and corrections to net_basetypes and
netmaker needed for the bridge to work properly.

It also includes the FirstUnoContact example in C# as demonstration.

Change-Id: I406932938a4415d24408fb41ddfa7d8eeb5d1f94
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170916
Tested-by: Jenkins
Reviewed-by: Hossein <hossein@libreoffice.org>
2024-09-18 08:10:36 +02:00
Stephan Bergmann eedbe966bb Embind: Fix C++ UNO exception catching
...with a new Module.catchUnoException JS function that can be used in a JS
catch block to provide the thrown UNO exception as an Any.  (For a non-C++
exception, it rethrows the exception, and for a non-UNO C++ exception it maps it
to css.uno.RuntimeException.)

The implementation reuses parts of bridges/source/cpp_uno/gcc3_wasm/, which have
been moved to a new StaticLibrary_emscriptencxxabi.

Change-Id: I708fe6121c43a1b9736de5dff449f6c4f32a45f3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/169325
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-06-21 11:29:59 +02:00
Stephan Bergmann a469aea9c0 Emscripten: Towards a working C++ UNO bridge
...by making the general UNO -> C++ function call case work (modulo handling
exceptions, which I'll look into later).

Wasm call_indirect unfortunately needs to statically know the call target's
signature, so we statically need to know all possible signatures.  So introduce
wasmcallgen helper to scan the existing UNOIDL API upfront and generate the
relevant callvirtualfunction-wrapper.cxx and callvirtualfunction-inst.s code.
(The good thing is that the number of different signatures is somewhat limited,
each parameter can only be one of i32, i64, f32, or f64.  So even if 3rd-party
extensions bring along new UNOIDL interface methods, chances are relatively high
that the signatures needed for them would already be covered by the existing
ones.)

Testing this can nicely be done in unotest/source/embindtest/embindtest.js via
css.script.Invocation (which internally exercises the relevant code).  (Instead
of adding individual org.libreoffice.embindtest.StructLong/String etc., it would
be nicer to introduce some polymorphic StructOne<T>, but the Emind UNO binding
does not support polymorphic structs, so the embindtest.js code would not work.)

Change-Id: If829c9e3772bfd27561f3ad743d38a71d11545b6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167308
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
Tested-by: Jenkins
2024-05-08 13:01:04 +02: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 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 Iversen e69ed74e34 iOS, make simulator config copy of macosx.
When compiling for the simulator it is like compiling
for macosx (64bit) but with other libraries, therefore
the bridge should be like the macosx.

Change-Id: I59f1442a5c77d09ad0bc4bf31c2432fc32ef725e
2017-09-22 17:29:29 +02:00
jan Iversen 7e1489bb4c iOS, remove support for 32bit (arm).
Supporting 32bit iOS, means a.o. adding several libraries to
the dependency list because macOSX does not install them by
default (e.g. zlib).

32bit is only used in old iPhones.

updated configure.ac
removed from solenv/gbuild/platform
bridges corrected

Change-Id: I415e744a9cb4acb3b5fbfca33c22940a1d56e390
2017-09-19 14:02:51 +02:00
Khaled Hosny 0e21f6619c Kill bitrot Emscripten experiment
Change-Id: I1cd5331157e684afb01e6555168ce646194c6ff2
Reviewed-on: https://gerrit.libreoffice.org/34493
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Khaled Hosny <khaledhosny@eglug.org>
2017-02-21 09:59:07 +00:00
Samuel Mehrbrodt 338f19a8ce Emscripten: First steps of porting to Emscripten
See https://wiki.documentfoundation.org/Development/Emscripten for details

Change-Id: I977a8b9e98b9be13c263fef48f567b92347d0492
Reviewed-on: https://gerrit.libreoffice.org/18643
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2015-10-05 10:24:35 +00:00
Michael Stahl eca3dec204 fdo#42783: remove CPU variable from environment
Replace uses with CPUNAME instead, and get rid of the horrible
postgresql patch that worked around environment leakage.

Change-Id: I38ccabfc438360524a272901bb9332ea708e274c
2013-11-07 01:34:43 +01:00
Stephan Bergmann 4e8491a7e7 Get Mac OS X libjava_uno.jnilib -> libjava_uno.dylib symlink into instdir
...not exactly a nice way to do it, though.  Plus, further missing instdir
.jnilibs are LibreOffice.app/Contents/MacOS/libhsqldb.jnilib -> libhsqldb.dylib
and LibreOffice.app/Contents/ure-link/lib/libjpipe.jnilib (which should not be
a symlink but should replace the corresponding libjpipe.dylib completely).

Change-Id: I5505704fc52da42e40c8b27185450d3fec8a864d
2013-09-11 16:16:57 +02:00
Tor Lillqvist 08452f1208 Rename SOLAR_JAVA to ENABLE_JAVA and HAVE_FEATURE_JAVA
Change-Id: Ib451bdb3c1c2ca42347abfde44651d5cf5eef4f3
2013-08-19 10:29:04 +03:00
Bjoern Michaelsen c7f09e4fd4 introduce gb_Module_SKIPTARGETS
- this speeds up the old SKIP_TESTS targets build-nocheck and
  dev-install-nocheck
- this allows e.g. tinderboxes, which know that they just completed a
  build, to only read the files for the tests (and exclude the build
  itself)
- since the dep file can be quite large this might help performance in
  such scenarios quite a bit
- also moving this to extensions as it is merely a performance
  optimization

Conflicts:
	Makefile.in
	solenv/gbuild/Module.mk

Change-Id: I1265dbacdd9f3731fe755a1b997c2fa5ac1f7421
Reviewed-on: https://gerrit.libreoffice.org/2742
Reviewed-by: Matúš Kukan <matus.kukan@gmail.com>
Reviewed-by: Björn Michaelsen <bjoern.michaelsen@canonical.com>
Tested-by: Björn Michaelsen <bjoern.michaelsen@canonical.com>
2013-03-21 20:32:17 +00:00
Peter Foley a1fbebff26 Cleanup bridges module
Reduce excessive copy-pasting
Remove bridges for C50 and C52 compilers which aren't in configure any
more
Prevent LTO from being used in the bridges module because it causes
crashes

Change-Id: I7ff85c2e8d6ff89c5acd48aea415e0960b3ef812
Reviewed-on: https://gerrit.libreoffice.org/2765
Reviewed-by: Tor Lillqvist <tml@iki.fi>
Tested-by: Tor Lillqvist <tml@iki.fi>
2013-03-18 07:53:21 +00:00
Matúš Kukan 26637fe8f2 optimize for build targets in one place
Change-Id: Ib886a323c1ade6dcd455a44d3dfc6702086416e3
2013-01-10 14:43:32 +01:00
Matúš Kukan a5838b19bc add rule for generating fresh pot (po template) files
Moved from translations' custom makefile.

Change-Id: Ife58bfa3ee607b06617d7db80408afb453b9a10c
Reviewed-on: https://gerrit.libreoffice.org/1622
Reviewed-by: Miklos Vajna <vmiklos@suse.cz>
Tested-by: Miklos Vajna <vmiklos@suse.cz>
2013-01-10 09:30:47 +00:00
Tor Lillqvist d83de4b1a9 First attempt at C++/UNO bridge for 64-bit OS X
Basically, a 1:1 copy of the Linux x86-64 one. The Apple docs say that
"The OS X x86-64 function calling conventions are the same as the
function calling conventions described in System V Application Binary
Interface AMD64 Architecture Processor Supplement," which should mean
that it's the same as on Linux.

Once this works, the very minor differences to the Linux one will be
merged as ifdefs into the Linux one, and no separate source files will
be needed.

Change-Id: I1ff58f303a7ab7f59ec2ff7a9e24465e89151ec5
2012-09-27 08:20:44 +03:00
David Tardon a1bd566a68 fix make module.all
Change-Id: I468c9b6e3381383665ee9c86a485831a176982eb
2012-09-23 15:05:56 +02:00
David Tardon 8f6b43052d (hopefully) fix build of bridges on linux ARM
Change-Id: I8d7a10e26858dbbcce9c7c47a1dd9668a35736bd
2012-09-23 12:03:10 +02:00
David Tardon c994ab6d92 there must always be a bridge built
Change-Id: Ie5bc8a27feed65126bd8bfceff2903029cd20059
2012-09-23 07:20:58 +02:00
David Tardon b944750a23 fix more copy&pasted conditions selecting bridge to build
Change-Id: Icffcd0733e030b565e3f78f6fff7467a10347f52
2012-09-23 07:17:29 +02:00
Norbert Thiebaud e98ec6f38a brides was not invoking the build of libggc2_uno on Macs
Change-Id: I3f3fe5904ce7cc257fb475b5a91227af7e540293
2012-09-22 23:09:44 -05:00
David Tardon 61c0a3a63d switch bridges to gbuild
Change-Id: Ia19ff61f1f7fb446298472acd6722b57ddaeddec
2012-09-22 08:15:30 +02:00
David Tardon f2668d319c gbuildize bridges
Change-Id: I66e76da71dd5d6ed1b899aba8d41dfb5bc36da1c
2012-09-22 08:15:30 +02:00