106 Commits

Author SHA1 Message Date
33400db731 build: add option to ignore system libs detection
Change-Id: Ib2ee7c69a9105ae33a816bd19c7fcbdb0b58fd32
2025-08-01 15:47:14 -04:00
86475591d4 cmake: support building multi-arch contrib on macOS
Change-Id: I29f135bb43c2b06cdb57f073e77872d923716f7a
2025-08-01 15:10:32 -04:00
dcbaf46973 portaudio: bump to latest version
Bump to 9abe5fe7db729280080a0bbc1397a528cd3ce658, this adds numerous
fix, mainly to wasapi.

GitLab: #1962
Change-Id: I0112e391e378b3273bfb5e168bfbe55be3272277
2025-07-31 13:19:53 -04:00
631373f0b8 cmake: add coverage support
Change-Id: I10808a63a315173ac063117c4857d47e2ae44be3
2025-07-29 17:07:15 -04:00
bae238e6f9 tests: add contrib lib dir
Change-Id: I3323d86c4b80993e9cd0b3f3bbb9440bb65ba0bd
2025-07-08 15:53:21 -04:00
66bad93487 cmake/tests: add restinio dependency for ut_namedirectory
Namedirectory unit tests uses restinio directly which itself depends on llhttp.
So while restinio itself is header only, we need to declare the dependency
for appropriate linking of llhttp.

Change-Id: I113257613c660e5e73c52c14fb6691cd6c85f693
2025-06-23 19:36:21 -04:00
72363e1083 cmake: depend explicitly on nettle
Nettle is used directly for sha3 computation

Change-Id: I9ad71746f78e433e5df65938d477cc6c93dc6a31
2025-06-23 19:36:19 -04:00
6402af906d cmake: copy files used by ut_plugins
GitLab: #1124
Change-Id: I427816d21f1f7177a305bec37fa71eef42b1755e
2025-04-25 15:37:49 -04:00
dc300e1c9c cmake: copy files used by ut_media_player
GitLab: #1124
Change-Id: Iaeac4b3cec40edb5633b2db346c3bcc167cc054a
2025-04-25 14:46:09 -04:00
8bdfb7715b cmake: add missing compile definition
The RING_ACCEL macro was not defined when compiling the unit tests with
the JAMI_VIDEO_ACCEL option enabled, which caused a heap buffer overflow
when running ut_media_decoder and resulted in the test failing in CI
with a "free(): invalid pointer" error.

GitLab: #1124
Change-Id: I333502a570224d9dd52a2b4e5e8ebe86d96e41a6
2025-04-25 14:04:12 -04:00
6a77844911 cmake: copy file used by ut_conversation
GitLab: #1124
Change-Id: Ib28ece652a3fb849a126fc28f04cb35a87c47fee
2025-04-17 15:09:46 -04:00
1b2d8ba592 cmake: add missing tests
GitLab: #1124
Change-Id: I010607a95603caec89710fe2bcb587fd2c602ed6
2025-04-17 14:25:28 -04:00
3f45561abf build: use _FILE_OFFSET_BITS=64
Allows to use 64 bits file APIs on 32 bits POSIX systems.

Gitlab: #1122
Change-Id: Ie9ec07c7027b09ada8daf49c5bf3663dd9ff939d
2025-04-09 10:02:14 -04:00
fe20fea2ef cmake: fix inconsistent test names
Some of the unit test executables had different names depending on
whether they were built via CMake or Autotools.

Change-Id: Ie09ba448e0101035e69d95fc639a8bce0251759b
2025-04-03 11:47:45 -04:00
49b4d63f43 build: fix incorrect use of LIBJAMI_TESTABLE macro
The LIBJAMI_TESTABLE macro was always defined, so using it in ifdef
directives had no effect.

Change-Id: I0f7ac906c70a90230cf224f9dc001712e1d5ca86
2025-03-25 15:32:43 -04:00
86d3bb6644 ArchiveAccountManager: add support for p2p account import
Gitlab: #930
Change-Id: I76f07a81c4887d0dc127d74bc6c4de2e9f4f2ee8
2025-03-06 12:19:47 -05:00
66b320adae namedirectory: add test to CMake and fix build
Change-Id: I65c99d62848b2d18e5c54e7b8ec28219320fb363
2025-02-04 14:57:29 -05:00
2fd25c2948 cmake/nodejs: build for node 22, arm64
Change-Id: I8b2d628acfdcad83983e12409b5c033a318a6bf4
2025-01-15 16:21:54 -05:00
4b8946fbd6 cmake/nodejs: improve dependency lookup
Change-Id: Iaa92e035fe4ac6a09e1586e7f4d681ecf1b053f4
2025-01-15 16:07:45 -05:00
57e91daefe build: Windows: update contribs (llhttp-migration)
Change-Id: I58292280dcd9451f59033976897aae5af023241c
2024-11-26 14:44:33 -05:00
bb34a6b803 build/cmake: lock contrib directory
Prevents concurrent build of the same contrib
causing build failures.

Change-Id: I11a3664340e8a16c5c76926638a5f29f6dc0137c
2024-10-28 11:32:35 -04:00
f5c560e867 tests: add conversationFetchSent to CMakeLists.txt
Now when compiling with tests conversationFetchSent are compiled aswell

Change-Id: Ic1ef7949a473d1dc5b1bf406bb4ae7d0c84191b1
2024-09-17 15:27:07 -04:00
8112b29761 contrib: remove pywinmake submodule
The submodule may need frequent bumps and should be managed
separately as a build tool by developers. This commit also adjusts
the CMakeLists.txt to restrict the generated build configurations
on Windows to only "Release" because as this is the only config
that is currently used and functional (PDBs are generated and other
debug mechanisms can be activated as needed).

Build instructions are added to the README.

Gitlab: #1027
Change-Id: I367a6ded1a53056bc862c37d8e64417415cc339f
2024-07-08 16:35:36 -04:00
96684fb5de CMake: unify build definitions with Meson and Autotools
* Use 0 or 1 for HAVE_RINGNS
* Add DEBUG when tests are enabled

GitLab: #544
Change-Id: I2e6a1ae12b3658a8b7d3ebfc160c3e4dbcbeadb0
2024-06-17 16:40:44 -04:00
e9826ae4c4 cmake: add support for nodejs
Change-Id: Ia6e13fd3bd27077dac41b210a8dfac8d78ae6d2c
2024-06-06 15:09:29 -04:00
544f35eb0d macos: link with Compression framework
Change-Id: I2f1e5fdaf7d24d6109c10447cf9a03b94148a6e0
2024-06-06 13:45:49 -05:00
59b5d0a28c yaml-cpp: link to cmake module
Change-Id: I3fd92f387e8bc21a1d3109be9b5b5c90341b414d
2024-06-06 09:19:21 -05:00
dc66c7cbd2 macos: link with coreaudio
Change-Id: I830db186b4ff90a0ebdeeee3bf6ead34a56fdb2f
2024-06-05 16:28:46 -04:00
b0e223ff3c misc: add an API to set the client app's resource directory path
This approach allows client apps that install ringtones (and any other resources) in custom locations to specify that directory at runtime. This will take precedence over the build time data directory supplied for platforms which install to a fixed path.

https: //git.jami.net/savoirfairelinux/jami-client-qt/-/issues/1619
Change-Id: I81616f79196e645a5ad677d6956be6a2ffcd976a
2024-06-04 09:57:32 -04:00
90c9ae390e cmake: add coverage option
This allow to get coverage reports from ctest.
e.g.
    $ ctest -R typers -T test -T coverage

Change-Id: Ic7d1bf5d7d641f1e581e4855bbc923ee5d8994b5
2024-05-31 10:12:48 -04:00
cab0ba62a8 cmake: fix build with JAMI_VIDEO=OFF
Change-Id: I55a6c72a0abe0cdc55639064157884f383e25e7b
2024-05-31 09:37:51 -04:00
5d4acd317e build/cmake: add support for GNU/Linux audio layers
Change-Id: I5be4e160f6b6b594fdc26f3861151b56bd9c9bdf
2024-05-30 14:32:18 -04:00
9d9b77f12f cmake: consolidate audio flags
Change-Id: Ibeacb76fe3aeb8cef0b6997564ff7408e615b496
2024-05-15 08:00:33 -04:00
d15b4f7961 test: remove certstore test and ice test from the daemon
certstore test and ice test are moved to DHTnet project.

Change-Id: Iefba61c36d5790df5753fefd97b0eaa40f15ad0d
2024-04-29 13:38:18 -05:00
49b8639a7f cmake: build with HAVE_COREAUDIO on APPLE
Change-Id: I5b9076e309d7d614af6e30e8697328c81b6ff8e3
2024-04-02 22:31:12 -04:00
2720993a9f cmake: add ASAN option
Change-Id: I5ae4fe47e00172eda2e1b51d9dd31a6157540179
2024-04-02 10:09:27 -04:00
86d179b1c4 cmake: remove missing test
Change-Id: Ibd0aeef5fd4125bce672c1faaaa75b657a56e267
2024-03-28 10:40:48 -04:00
218ebf0fae tooling: Windows: propagate failure from the CMakeLists.txt
Also don't install pywinmake from the CMakeLists.txt.

Change-Id: Idf77fa95e1166561c809fba50b867a07d3358a83
2024-02-29 13:46:52 -05:00
fab9009a1c conversation: improve typers management
Now, a client should not do any logic and not store preferences
client side.
+ When a member is removed while banned, the typing indication
is updated
+ Timeout is computed both for sender and receiver
+ Sending and receiving a composing status is managed by the
account's config.

GitLab: #951
Change-Id: Iba9441736eec4f71695bfbd609d4b9e8b6adcb73
2024-02-28 09:04:27 -05:00
842128f09b jamiaccount: redo presence design
Green indicator is not understandable for the majority of users.
This patch introduces a new approach to this status. API doesn't
change, so this is 100% backward compatible but introduces new
possibilities:

1. The status sent to the client is now 0=offline (no device found
on the DHT), 1=dht_presence (at least a device is found on the DHT),
2=connected (with a TCP + SIP channel, so ready to exchange data).
2. Publish can now be used on a Jami Account. Status is ignored,
but custom note can be added. e.g. "Lunch time!"
This status is sent via a PIDF XML status as described in RFC3863
(and already supported by SIP account) to connected peers (or for
future connections).

Several scenarios are tested in ut_presence

Change-Id: I87d987bc69e97f92a0c9f4751069e52ad69ea0fc
2024-02-19 14:03:28 -05:00
09ec8e6f43 conversation: re-design sending/sent status
The goal of this patch is to allow the clients to get a better
sent/read status from the daemon.

API doesn't change much, but internal logic got some changes. For the
client:
+ SwarmMessage now contains a map<string,int> status where string is the
  uri of a member, int is the status (0 = sending, 1 = sent, 2 = read)
+ cancelMessage is removed as not used anymore (sendMessage with flag=1
  will edit a message)
+ getMessageStatus is removed as the status is sent in the SwarmMessage
+ accountMessageStatusChanged is now emitted for swarm messages when a
  fetch or setDisplay occurs. Client must handle this signal correctly.
+ Previous code to manage last displayed, fetched status is now merged
  with message status
+ Sync info is done when the sync is opened, else status are not updated
  correctly

GitLab: #948
Change-Id: I60763d4de8a995c6fc9f6df6434e266211f8dc2f
2024-02-15 13:52:39 -05:00
69304fd7df contrib: Windows: add speexdsp files
Speexdsp is hardcoded into the config currently, so until that's refactored, this will fix the build.

Change-Id: I5ebd80cc7ff57cbab96929fa11127ba2d0bbb068
2024-02-09 13:35:04 -05:00
def132d30d build/cmake: support building with speexdsp
Change-Id: I74dd3db0aeab65ea3708b3616b62faa742ffb879
2024-02-06 10:48:42 -05:00
ba09b11b42 conversation: add new loadConversationUntil and SwarmMessageVect type
GitLab: #831

Change-Id: I8e2aa205629735df043618a87e54ae6a43e6ca3f
2024-01-09 09:42:03 -05:00
8468f15927 conversation: move logic of message management in daemon
This heavily changes the API for the client. The goal here is
to move the logic to construct the history to show in the daemon
and not the client. This has several advantages:

1. Logic is common across every platforms, so bugs should not be
platform-specific
2. Client got less logic
3. Signal are simplified, if an edition comes, "MessageUpdated"
will be triggered instead MessageReceived.
4. Some tests are added for linearizing the history.
5. Search on edition is fixed.

Tests got heavily re-written, but the content didn't change (2 tests
are added, the rest is simplification).

GitLab: #831
Change-Id: Ie7c81077067e9e49db1dd396829c9225c0512c16
2023-12-28 16:05:40 -05:00
149f070cdd contrib: windows: revert yaml-cpp for now (CMake issues w/v0.8.0)
Change-Id: I3239576ea31264c695252beb8fb4e43b4ec8b594
2023-11-17 14:55:56 -05:00
671e3a77bc cmake: build contrib on Windows
Change-Id: I73d25b89c14d02e54d55d300c51d4a44243a2b87
2023-11-02 12:11:04 -04:00
f7baf66f3a misc: rename jami -> jami-core
This will allow us to use add_subdirectory in the client CMakeLists.txt.

Change-Id: Ibb0584f955c0047ac51c248342907d4e79f2b973
2023-11-02 12:10:15 -04:00
eab9863215 build: windows: add pywinmake and simplify winmake script
Building libjami should now be doable using:
- init   : git submodule update --init
- install: pip install extras/scripts/pywinmake
- contrib: python extras/scripts/winmake.py
- libjami: python extras/scripts/winmake.py --base-dir compat/msvc

NOTE: breaks libjami output location

TODO: fix plugin build

Change-Id: Ic6b25d00103f0ea68d8ab7954f8345f1648e0381
2023-11-02 11:51:44 -04:00
a5a46c0385 filesharings: integrate audio stream
GitLab: #485
Change-Id: I0ae7c23da2a1f2384699639cc0de58f8f05b33ec
2023-11-01 11:02:32 -04:00