Commit Graph

62 Commits

Author SHA1 Message Date
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
Carsten Brandt 3520eee05d SO versions for cmake and libtool
this updates the version-sync script to generate proper SO versions
which will be used by cmake and libtool to create version symlinks
on the system when a library is installed as well as setting the SO
version in the binary.

To see what this does, you have to configure tox with a prefix:

    ./configure --prefix=/tmp/tox-with-libtool
    mkdir cbuild && cd cbuild && cmake -DCMAKE_INSTALL_PREFIX=/tmp/tox-with-cmake ..

Then run `make && make install`.

in both instances you should see the following installed in `lib/`:

    libtoxcore.so -> libtoxcore.so.1.4.0
    libtoxcore.so.1 -> libtoxcore.so.1.4.0
    libtoxcore.so.1.4.0

inside the binary the soname should be the one with .1 and it should not
contain the full version:

    $ objdump -p libtoxcore.so.1.4.0 | grep SONAME
      SONAME               libtoxcore.so.1
2017-01-18 11:20:07 +01:00
Carsten Brandt 6ec23c98bd Add soversion to library files to generate proper symlinks
As mentioned in https://github.com/TokTok/c-toxcore/issues/359#issuecomment-270710463
the current CMake build does not generate version symlinks for library .so files.
This is because the version is not specified for library targets.

See
- https://cmake.org/cmake/help/v3.0/prop_tgt/SOVERSION.html#prop_tgt:SOVERSION
- https://cmake.org/cmake/help/v3.0/prop_tgt/VERSION.html#prop_tgt:VERSION

Use PROJECT_VERSION_MAJOR and MINOR for SOVERSION because
api may break from 0.1 to 0.2 in the 0.x release cycle.
2017-01-08 19:18:06 +01:00
iphydf 0a61d11085 Test a few cmake option combinations before the build.
This takes a few seconds but allows us to cover cases that aren't checked
often.
2017-01-05 12:34:52 +00:00
iphydf cf94537266 Enable all possible C compiler warning flags.
We disable the ones that fire, so we can use -Werror. We can then
investigate each warning individually and see whether to fix it or to
keep silencing it.
2016-11-06 01:32:10 +00:00
iphydf 96c672aef5 Compile as C++ for windows builds.
Compiling as C++ changes nothing semantically, but ensures that we don't
break C++ compatibility while also retaining C compatibility.

C++ compatibility is useful for tooling and additional diagnostics and
analyses.
2016-11-02 18:50:41 +00:00
iphydf de966cdf90 Error if format_test can't be executed.
This ensures that on Travis, format_test will always be executed, or the
build fails.
2016-10-26 13:34:29 +01:00
iphydf 1ce4c3fe13 Install libraries with RPATH.
This makes deployment easier, as the install libpath is used to look up
dependent libraries.
2016-10-11 14:05:41 +02:00
iphydf b8b9789a69 Rebuild apidsl'd headers in cmake.
- Moved apidsl headers next to their generated versions. In the future,
  perhaps all (or most) headers will be apidsl-generated, so the sources
  should stay together.
- Try to find apidsl/apigen binary and astyle binary and use it for the
  format test. Don't run the format test if these can't be found.
2016-10-02 23:54:03 +01:00
iphydf 621c3fddb2 C++ the second round.
Group chats were changed and now need to be updated. This change got
lost in the merge.
2016-09-26 00:03:48 +01:00
iphydf 15cb426166 Make toxcore code C++ compatible.
It is still C code, so still compatible with C compilers as well. This
change lets us see more clearly where implicit conversions occur by
making them explicit.
2016-09-24 21:53:50 +01:00
iphydf d1f16e27b8 Add option to build static libraries. 2016-09-14 14:32:01 +01:00
jin-eld 1ec70337cf Remove cmake build system 2013-08-24 03:36:43 +03:00
Manuel Argüelles 33ee73fffa Add pkg-config file
Generate and install a toxcore.pc file to be used with pkg-config.
2013-08-23 15:31:24 -05:00