Detection of libatomic is broken since version 2.47.0 and
b7f0d87daf
because C language is not enabled anymore:
-- Looking for __atomic_fetch_add_4 in atomic
-- Looking for __atomic_fetch_add_4 in atomic - not found
CMake Error at cmake_modules/CheckAtomic.cmake:59 (message):
Host compiler appears to require libatomic, but cannot find it.
Call Stack (most recent call first):
CMakeLists.txt:54 (include)
Indeed if C language is not enabled, the test will be run with the C++
compiler resulting in the following error:
Building CXX object CMakeFiles/cmTC_03d01.dir/CheckFunctionExists.cxx.o
/home/fabrice/buildroot/output/host/bin/x86_64-linux-g++ --sysroot=/home/fabrice/buildroot/output/host/x86_64-buildroot-linux-gnu/sysroot -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O1 -g0 -D_FORTIFY_SOURCE=2 -DCHECK_FUNCTION_EXISTS=__atomic_fetch_add_4 -DNDEBUG -o CMakeFiles/cmTC_03d01.dir/CheckFunctionExists.cxx.o -c /home/fabrice/buildroot/output/build/i2pd-2.49.0/build/CMakeFiles/CMakeScratch/TryCompile-NApnv9/CheckFunctionExists.cxx
<command-line>: error: new declaration ‘char __atomic_fetch_add_4()’ ambiguates built-in declaration ‘unsigned int __atomic_fetch_add_4(volatile void*, unsigned int, int)’ [-fpermissive]
whereas with a C compiler, we'll get:
Building C object CMakeFiles/cmTC_7e47b.dir/CheckFunctionExists.c.o
/home/fabrice/buildroot/output/host/bin/x86_64-linux-gcc --sysroot=/home/fabrice/buildroot/output/host/x86_64-buildroot-linux-gnu/sysroot -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O1 -g0 -D_FORTIFY_SOURCE=2 -DCHECK_FUNCTION_EXISTS=__atomic_fetch_add_4 -DNDEBUG -o CMakeFiles/cmTC_7e47b.dir/CheckFunctionExists.c.o -c /home/fabrice/buildroot/output/build/i2pd-2.49.0/build/CMakeFiles/CMakeScratch/TryCompile-e0zFMG/CheckFunctionExists.c
<command-line>: warning: conflicting types for built-in function ‘__atomic_fetch_add_4’; expected ‘unsigned int(volatile void *, unsigned int, int)’ [-Wbuiltin-declaration-mismatch]
Fix #1908
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
note: i2pd for Android can be found in i2pd-android repository and with Qt GUI in i2pd-qt repository
i2pd
i2pd (I2P Daemon) is a full-featured C++ implementation of I2P client.
I2P (Invisible Internet Protocol) is a universal anonymous network layer.
All communications over I2P are anonymous and end-to-end encrypted, participants
don't reveal their real IP addresses.
I2P client is a software used for building and using anonymous I2P networks. Such networks are commonly used for anonymous peer-to-peer applications (filesharing, cryptocurrencies) and anonymous client-server applications (websites, instant messengers, chat-servers).
I2P allows people from all around the world to communicate and share information without restrictions.
Features
- Distributed anonymous networking framework
- End-to-end encrypted communications
- Small footprint, simple dependencies, fast performance
- Rich set of APIs for developers of secure applications
Resources
Installing
The easiest way to install i2pd is by using precompiled packages and binaries.
You can fetch most of them on release page.
Please see documentation for more info.
Building
See documentation for how to build i2pd from source on your OS.
note: i2pd with Qt GUI can be found in i2pd-qt repository and for android in i2pd-android repository.
Build instructions:
Supported systems:
- GNU/Linux (Debian, Ubuntu, etc) -
- CentOS, Fedora, Mageia -
- Alpine, ArchLinux, openSUSE, Gentoo, etc.
- Windows -
- Mac OS -
- Docker image -
- Snap -
- FreeBSD -
- Android -
- iOS
Using i2pd
See documentation and example config file.
Localization
You can help us with translation i2pd to your language using Crowdin platform! Translation project can be found here.
New languages can be requested on project's discussion page.
Donations
E-Mail: i2porignal at yandex.com
BTC: 3MDoGJW9TLMTCDGrR9bLgWXfm6sjmgy86f
LTC: LKQirrYrDeTuAPnpYq5y7LVKtywfkkHi59
ETH: 0x9e5bac70d20d1079ceaa111127f4fb3bccce379d
GST: GbD2JSQHBHCKLa9WTHmigJRpyFgmBj4woG
DASH: Xw8YUrQpYzP9tZBmbjqxS3M97Q7v3vJKUF
ZEC: t1cTckLuXsr1dwVrK4NDzfhehss4NvMadAJ
ANC: AQJYweYYUqM1nVfLqfoSMpUMfzxvS4Xd7z
XMR: 497pJc7X4xqKvcLBLpSUtRgWqMMyo24u4btCos3cak6gbMkpobgSU6492ztUcUBghyeHpYeczB55s38NpuHoH5WGNSPDRMH
License
This project is licensed under the BSD 3-clause license, which can be found in the file LICENSE in the root of the project source code.