All Projects → atheme → Atheme

atheme / Atheme

Licence: other
Atheme IRC Services

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Atheme

Serverlessbydesign
A visual approach to serverless development. Think. Build. Repeat.
Stars: ✭ 254 (-14.48%)
Mutual labels:  development
Takeoff
A rapid development environment using docker for convenience.
Stars: ✭ 271 (-8.75%)
Mutual labels:  development
Psycopg3
New generation PostgreSQL database adapter for the Python programming language
Stars: ✭ 278 (-6.4%)
Mutual labels:  development
Lando
A development tool for all your projects that is fast, easy, powerful and liberating
Stars: ✭ 3,142 (+957.91%)
Mutual labels:  development
Awesome Algorithms Education
A curated list to learning and practicing about algorithm.
Stars: ✭ 267 (-10.1%)
Mutual labels:  development
Guides
A set of rules we use at @icalialabs to build better software
Stars: ✭ 280 (-5.72%)
Mutual labels:  development
Birch
An IRC client written in bash
Stars: ✭ 256 (-13.8%)
Mutual labels:  irc
Ngircd
Free, portable and lightweight Internet Relay Chat server
Stars: ✭ 292 (-1.68%)
Mutual labels:  irc
Putaindecode.io
Blog participatif de la communauté dev
Stars: ✭ 270 (-9.09%)
Mutual labels:  development
Unrealircd
Official UnrealIRCd repository. Downloads are available from our site
Stars: ✭ 280 (-5.72%)
Mutual labels:  irc
Spring Boot Enterprise Application Development
Spring Boot Enterprise Application Development.《Spring Boot 企业级应用开发实战》
Stars: ✭ 261 (-12.12%)
Mutual labels:  development
Visualplus
🎨 The VisualPlus Framework (VPF) for WinForms allows you to rapidly deploy professional .NET applications with customizable components and controls.
Stars: ✭ 268 (-9.76%)
Mutual labels:  development
Devstack
Get up and running quickly to develop or extend Open edX services
Stars: ✭ 279 (-6.06%)
Mutual labels:  development
Laravel Demo Mode
A package to protect your work in progress from prying eyes
Stars: ✭ 259 (-12.79%)
Mutual labels:  development
Streamsheets
An open-source tool for processing stream data using a spreadsheet-like interface.
Stars: ✭ 281 (-5.39%)
Mutual labels:  development
Maildev
📫 SMTP Server + Web Interface for viewing and testing emails during development.
Stars: ✭ 3,102 (+944.44%)
Mutual labels:  development
Daily Featured
每天给你推荐一个新奇,好玩,高品质的内容,每一个都有自己的温度,不是冷冰冰的链接哦。
Stars: ✭ 276 (-7.07%)
Mutual labels:  development
Yarneditor
A tool for writing interactive dialogue in games!
Stars: ✭ 292 (-1.68%)
Mutual labels:  development
Irc
Full-featured Python IRC library for Python.
Stars: ✭ 284 (-4.38%)
Mutual labels:  irc
Multistreamer
[discontinued] A webapp for publishing video to multiple streaming services at once.
Stars: ✭ 281 (-5.39%)
Mutual labels:  irc

Atheme IRC Services

Atheme is a set of IRC services designed for large IRC networks with high scalability requirements. It is relatively mature software, with some code and design derived from another package called Shrike.

Atheme's behavior is tunable using modules and a highly detailed configuration file. Almost all behavior can be changed at deployment time just by editing the configuration.

Obtaining Atheme

If you have a modern version of Git (1.6.5 or newer), you can recursively clone the repository:

$ git clone --recursive 'https://github.com/atheme/atheme/' atheme-devel
$ cd atheme-devel

If you have an older version of Git, you must clone the repository, and then fetch its submodules:

$ git clone 'https://github.com/atheme/atheme/' atheme-devel
$ cd atheme-devel
$ git submodule init
$ git submodule update

If you don't have Git, you can download a package archive from our website at https://atheme.github.io/.

If you are browsing our GitHub repository, please do NOT click the "Download ZIP" button or the "Source code" links there, as they will give you an archive that lacks the required submodules. There are proper .tar.bz2 or .tar.xz archives attached to each release under "Assets", which is what the "Download" button on our website will take you to.

Basic build instructions for the impatient

Obtain the source code repository and change into its directory (using the commands given above).

If you are building Atheme on a GNU/Linux system, or something which can sufficiently emulate that (like WSL 2 on Windows 10), execute the following commands:

$ ./configure
$ make
$ make install

If you are building Atheme on an OpenBSD (or similar) system, execute the following commands instead:

# pkg_add gmake
$ ./configure --disable-linker-defs
$ gmake
$ gmake install

Library Detection

If your user-installed libraries that you want Atheme to use are installed by your package manager to a directory such as /usr/local/, you may need to supplement the default compiler and linker search paths so that Atheme can detect those libraries (e.g. cracklib from FreeBSD Ports):

$ ./configure CPPFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

The following libraries generally require pkg-config to be installed:

  • PHC Argon2 Reference Implementation (libargon2.pc)
  • OpenSSL (libcrypto.pc)
  • GNU libidn (libidn.pc)
  • GNU Nettle (nettle.pc)
  • PCRE (libpcre.pc)
  • libqrencode (libqrencode.pc)
  • Sodium (libsodium.pc)

If you do not have pkg-config installed and want to use one or more of these libraries, please see ./configure --help for the options to set to override pkg-config discovery for those libraries. For example, if you wish to use GNU libidn, and it is installed into a default search path for your compiler and linker, and you do not have pkg-config installed, execute:

$ ./configure LIBIDN_CFLAGS="" LIBIDN_LIBS="-lidn"

If a library relies on populating LIBFOO_CFLAGS with some preprocessor definitions, or populating LIBFOO_LIBS with some library linking flags, this will generally fail. Install pkg-config for the best results.

Choice of compiler and its features

If you wish to compile Atheme with the LLVM project's C compiler (clang), you may also wish to use LLVM's linker (lld). You can accomplish this as follows:

$ ./configure CC="clang" LDFLAGS="-fuse-ld=lld"

If you want to use compiler sanitizers, and you want to build with Clang, you MUST also use LLD, as most of the sanitizers in Clang require LTO to function properly, and Clang in LTO mode emits LLVM bitcode, not machine code. The linker is ultimately responsible for performing most of the LTO heavy lifting, and translating the result into machine code, and most other linkers do not know how to do this.

To use compiler sanitizers with GCC (supported):

$ ./configure --disable-heap-allocator --disable-linker-defs \
    --enable-compiler-sanitizers CC="gcc"

To use compiler sanitizers with Clang (recommended):

$ ./configure --disable-heap-allocator --disable-linker-defs \
    --enable-compiler-sanitizers CC="clang" LDFLAGS="-fuse-ld=lld"

If you do enable the sanitizers, it is recommended to enable the configuration option general::db_save_blocking; see the example configuration file for more details.

The sanitizers are not recommended for production usage, but they are recommended for developers, including third parties writing new features and/or modifying the source code.

Getting More Help

If you're still lost, read the INSTALL file or check out our wiki for more hints.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].