75 Commits

Author SHA1 Message Date
iphydf
1451029613 chore: Add strict-abi support for macOS/iOS.
Also enable it for all binary deployment builds. This avoids exporting
sodium/vpx/opus symbols through the toxcore library, which way conflict
with other exported symbols if client code links to e.g. libsodium
itself for its own purposes.
2025-02-09 13:18:46 +00:00
iphydf
d408c98209 refactor: Move Tox_Options to tox_options.h.
For backwards compatibility, we also `#include "tox_options.h"` in
`tox.h`, but in 0.3.0 we can break that so most toxcore client code
doesn't need the options, only the part that creates the instance.
2025-01-24 18:18:31 +00:00
iphydf
14d823165d chore: Migrate to conan 2. 2024-11-20 23:48:57 +00:00
Maxim Biro
c4fa8f7fb1 feat: Generate .def, .exp and .lib files when building for Windows 2024-03-04 15:11:48 -05:00
iphydf
50f1b30fa9 test: Add fuzz tests to the coverage run.
So we don't need to write so many edge case tests ourselves for things
like parsers, which really don't need those manual tests, as long as we
can check for some properties like "can output the parsed data and it'll
be the same as the input".
2024-01-12 12:33:41 +00:00
iphydf
b148a2afff chore: Simplify msvc build using vcpkg. 2024-01-06 12:27:31 +00:00
iphydf
766e62bc89 chore: Use pkg_search_module directly in cmake.
The `pkg_use_module` was doing magic we used to use, but no longer need.
2023-12-26 01:14:50 +00:00
iphydf
00ff078f91 cleanup: Use target_link_libraries directly in cmake.
Instead of using `target_link_modules`, which does magic that we no
longer need, because we only have 1 library we install, and all binaries
we build link statically because they need access to internal symbols.
2023-12-26 00:24:08 +00:00
iphydf
c58928cc89 chore: Add IMPORTED_TARGET to pkg-config packages.
Also use `PRIVATE` for `target_link_libraries`. This helps avoid
implicit transitive dependencies.
2023-12-26 00:04:07 +00:00
iphydf
425216d9ec fix: Correct a use-after-free and fix some memory leaks.
Also: use `find_package` to find gtest. This fixes the coverage build to
include unit tests.
2023-12-21 17:17:51 +00:00
iphydf
7155f7f60e test: Add an s390x build (on alpine) for CI.
It doesn't work at all, because we're missing something in the net code
to do with endian conversions. I haven't investigated, yet, but at least
now we have a failing test that can be investigated.

Also moved to cmake 3.5 at minimum. CMake will stop supporting lower
versions than that, soon.

Also moved to C11 from C99 to get `static_assert`.

Also made a network ERROR into a WARNING. It triggers on FreeBSD.
2023-11-22 18:29:26 +00:00
iphydf
ee154da4a9 refactor: Use cmp instead of msgpack-c for events packing.
This library is better in every way.
2022-03-26 23:57:15 +00:00
iphydf
0a2190f28c feat: Add binary packing functions for tox events. 2022-02-07 02:43:24 +00:00
iphydf
4746a8b3af cleanup: Remove apidsl; remove crypto_memcmp.
* `crypto_memcmp` was replaced by more specific functions. We never want
  to compare arbitrary amounts of data this way. We use these functions
  to compare key material.
* apidsl has been bothering people, so now we un-bother them. You're
  welcome.
* Added the memlock/unlock functions from the New Group Chats branch.
* Remove some system dependencies in crypto_core_mem.c.
* Renamed UPPERCASE_NAMES to Snake_Camel_Case names.
2021-12-19 19:22:38 +00:00
Robin Linden
56992b099e Add support for the conan C/C++ package manager
* Don't overwrite the CMAKE_MODULE_PATH
* Allow linking libsodium statically with MSVC
* Allow finding libsodium the normal way on MSVC
* Allow using pthreads4w for pthreads on MSVC
* Fall back to find_package if pkg_find_module fails
* Don't pass incompatible compile flags to MSVC
* Also try to find Opus and libvpx using their canonical names
* Support building using conan
* Allow pkg_use_module to take a list of libraries to look for
* Build for Windows on Appveyor using conan
2020-05-29 15:36:26 +02:00
iphydf
a2d586b782 Rework the toxchat/bootstrap-node Docker image.
* Use fully static build for the bootstrap daemon.
* Store a sha256sum of the binary in the repo.
* Updated documentation for it.
* Add support for fully static build in cmake.
* Enable the docker build on every PR, so we catch changes to the
  checksum. I realise this is adding toil, but having the checksum is
  valuable for security of released binaries.
2020-04-26 16:13:24 +00:00
iphydf
28baf9632f Remove testing/av_test.c.
It's a maintenance burden. Nobody uses this. It depends on an ancient
version of opencv that less and less systems actually have.
2020-03-02 21:07:55 +00:00
iphydf
e08f631547 Enable auto tests under STRICT_ABI if static libs are available.
STRICT_ABI only breaks linkage if static libraries are not available,
because then we try to link against shared libraries with hidden symbols.
2019-01-06 19:28:40 +00:00
zugz (tox)
0f8f82a3cf Add cmake option for building additional tests
Closes #1262
2018-12-11 21:49:34 +01:00
iphydf
bfd288c196 Revert "Improve cmake build for MSVC."
This reverts commit f87f8719d0.
2018-09-24 22:25:49 +00:00
Mick Sayson
f87f8719d0 Improve cmake build for MSVC. 2018-09-22 11:14:45 +00:00
iphydf
bf79fdbb43 Link -lsocket and -lnsl for socket functions on Solaris.
Also, added some #defines to make symbols visible that are in BSD but not
in UNIX. Solaris needs these, since it's fairly strict with its symbol
visibility in system headers.
2018-07-19 15:05:26 +00:00
iphydf
1a54be06cd Simplify Travis CI builds.
Have one script per build. This means more duplication between the
scripts, but it's much easier to understand and to run locally.
2018-07-01 08:35:44 +00:00
iphydf
29b2dd6315 Use clang-format for C++ code.
`clang-format -style='{BasedOnStyle: Google, ColumnLimit: 100}'`
2018-06-24 20:17:53 +00:00
iphydf
90e1d969ac Fix linking with address sanitizer.
`-fsanitize=address` also needs to be passed to the linker.
2018-06-18 19:19:31 +00:00
iphydf
ea7ecd6d32 Add COVERAGE cmake flag for clang.
This only works with clang/llvm. Coveralls support needs to be added later.
2018-03-17 14:32:57 +00:00
iphydf
c8359c843b Fix toxcore.pc generation.
It's missing vpx and opus at the moment.
2018-02-22 17:34:39 +00:00
iphydf
13706de14b Don't build all the small sub-libraries.
This caused us to build everything 2-4 times, now we only build it 1-2
times (depending on selection of static/shared builds). The disadvantage
is that now it's more up to the reviewer to ensure modularity (we still
catch it in the bazel build, though).
2018-02-18 14:11:03 +00:00
Robin Lindén
0647c2c5bc Look for dependencies in third_party/ 2018-02-11 13:45:52 +01:00
iphydf
2e74db5447 Improve gtest finding, support local checkout.
Also fix library dependency order for monolith test.
2018-02-11 12:20:36 +00:00
iphydf
95029f412c Build toxcore with libsodium.dll instead of libsodium.lib.
The .lib doesn't have debugging information. The .dll has a .pdb file
next to it.
2018-02-09 20:51:39 +00:00
iphydf
6cd4fcdec4 Remove libcheck from the dependencies.
We're not gaining much from this library, and it's a burden, especially
for windows development.
2018-02-09 20:51:39 +00:00
iphydf
dcd439a5c3 Make cmake script more forgiving.
Instead of hard-erroring when we don't find dependencies, we just don't
build the things requested and print a warning. This is less annoying to
users because we enable a bunch of things by default. This way, we can at
least build something with the default "cmake" invocation.
2018-02-06 20:22:33 +00:00
iphydf
52f6e4e7c5 Move tox_shell program to the toxins repository.
https://github.com/TokTok/toxins/tree/master/tox_shell
2018-02-06 13:06:22 +00:00
Maxim Biro
54a1ccf8ce Install runtime modules into bin directory
Runtime modules, such as executables and shared libraries should be
installed into "bin" instead of "lib".
2018-01-25 15:57:50 -05:00
iphydf
8f1bbcf83e Use <stdlib.h> for alloca on FreeBSD.
https://www.freebsd.org/cgi/man.cgi?alloca

If stdlib.h does not define alloca, and we're using GCC (or Clang), we
define the macro ourselves in terms of a GCC builtin.
2018-01-22 21:05:30 +00:00
iphydf
033965b8cc Make the monolith test a C++ binary.
This way, developers compile toxcore, toxav, and toxencryptsave as C++ at
least once at home, reducing the likelyhood of running into travis
failures where we compile as C++ in the windows build.
2018-01-21 20:56:30 +00:00
iphydf
d7583a719a Remove nTox from the repo.
It's a maintenance burden nobody uses. Let's make toxic the official
console client, instead.
2018-01-20 19:05:53 +00:00
iphydf
bc58c6ea2f Make libcheck optional for windows builds. 2018-01-16 14:41:52 +00:00
Smoked Cheese
402664f58d update rpm spec and use variables in cmake instead of hardcoded paths (#624) 2018-01-15 14:23:33 +03:00
yangfl
449c3f12cc Fix some typos in code and cmake comments 2018-01-12 21:22:44 +08:00
iphydf
f2b6090eca Generate only one large library "libtoxcore".
This library contains all the code for the old libtoxcore, libtoxav,
libtoxdns, and libtoxencryptsave. The build for toxav is still optional,
and disabling it causes libtoxcore to simply not contain those symbols
and the pkg-config file to not include opus and vpx as dependencies.
2017-12-28 23:01:41 +00:00
iphydf
cb69b8a986 Build tests on appveyor, the MSVC build.
Tests are not actually ran on appveyor for now, since they all fault for
some reason. For now, we just build them. Also, some tests are disabled
on msvc entirely, because they don't even compile. We'll need to look
into those, later. They are disabled using `MSVC_DONT_BUILD`.
2017-06-05 13:45:20 +00:00
iphydf
41850deb43 Factor out strict_abi cmake code into a separate module. 2017-06-04 12:20:35 +00:00
iphydf
cda770cfe1 Forbid undefined symbols in shared libraries.
Also a little bit of refactoring:
- Moved add_cflag and friends from CMakeLists.txt to a separate
  AddCompilerFlag module.
- Build the spectest SUT if msgpack is found, even if spectest itself is
  not found, so once it exists, users can run it themselves or
  reconfigure cmake.
2017-06-04 10:08:51 +00:00
Maxim Biro
c7f63737eb Revert "Implement tox_loop"
This reverts commit 5ff099763b.
2017-04-22 15:31:25 -04:00
Ansa89
5ff099763b Implement tox_loop 2017-04-01 17:47:34 +02:00
Maxim Biro
1cc119c7a3 Fix libsodium unresolved external symbol errors 2017-02-20 06:55:36 -05:00
Maxim Biro
227b436339 Fix pthreads in AppVeyor build 2017-02-20 06:55:36 -05:00
iphydf
ce0bf232d1 Add appveyor build for native windows tests.
It doesn't compile, yet. A few changes (like VLA support) need to be made
before we can enable appveyor as a required PR check.
2017-01-22 11:56:02 +00:00