1
0
mirror of https://github.com/PurpleI2P/i2pd.git synced 2025-01-21 11:29:56 +00:00
Fabrice Fontaine 6b33250c59 build/CMakeLists.txt: enable C language
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>
2023-11-12 10:29:24 +00:00
2023-10-28 16:25:51 +00:00
2018-07-10 17:39:21 +08:00
2023-09-17 16:21:36 +00:00
2022-02-18 09:20:06 +03:00
2023-09-17 15:38:13 +00:00
2022-02-20 16:57:58 +03:00
2023-09-17 15:38:13 +00:00
2021-06-24 09:35:42 -04:00
2023-05-30 17:27:40 +03:00
2023-09-28 22:30:38 +03:00
2023-02-26 23:38:23 +03:00
2023-09-28 22:30:38 +03:00
2023-02-26 23:38:23 +03:00
2023-02-26 23:38:23 +03:00
2023-09-30 14:10:45 -04:00

GitHub release Snapcraft release License Packaging status Docker Pulls Crowdin

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) - Build on Ubuntu
  • CentOS, Fedora, Mageia - Build Status
  • Alpine, ArchLinux, openSUSE, Gentoo, etc.
  • Windows - Build on Windows
  • Mac OS - Build on OSX
  • Docker image - Build containers
  • Snap - i2pd i2pd
  • FreeBSD - Build on FreeBSD
  • Android - Android CI
  • 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.

Current status: Crowdin

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.

Languages
C++ 97%
CMake 1.8%
Makefile 0.4%
CSS 0.2%
Batchfile 0.2%
Other 0.2%