0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-05-19 19:33:45 +02:00

ircd: Update stale README information. [ci skip]

This commit is contained in:
Jason Volk 2019-10-05 16:18:09 -07:00
parent 1980fd5e73
commit b5b4f9b4a5
2 changed files with 12 additions and 30 deletions

View file

@ -1,6 +1,6 @@
# IRCd Library Definitions # Library Definitions
This directory contains definitions and linkage for `libircd` This directory contains definitions for `libircd`
The purpose of `libircd` is to facilitate the execution of a server which The purpose of `libircd` is to facilitate the execution of a server which
handles requests from end-users. The library hosts a set of pluggable modules handles requests from end-users. The library hosts a set of pluggable modules
@ -26,8 +26,8 @@ header or third-party dependency which is not involved in the
[ircd.h include group](../include/ircd#what-to-include). Second to that, units [ircd.h include group](../include/ircd#what-to-include). Second to that, units
tend to be divided by namespace and the subsystem they're implementing. Units tend to be divided by namespace and the subsystem they're implementing. Units
can further be divided if they become unwieldy, but we bias toward large aggregate can further be divided if they become unwieldy, but we bias toward large aggregate
units. Within these large units, there are divisions which group the definitions units in this library. Within these large units, there are divisions which group
by the `include/ircd/` header which declares them. the definitions by the `include/ircd/` header which declares them.
We do not included third-party headers in our own [headers](../include/ircd) We do not included third-party headers in our own [headers](../include/ircd)
which are included by others. A developer of an `ircd::` interface can choose which are included by others. A developer of an `ircd::` interface can choose

View file

@ -1,30 +1,17 @@
# IRCd Module Tree # Module Tree
This directory contains dynamically loadable functionality to libircd. Many of This directory contains dynamically loadable functionality to libircd.
these modules provide essential application functionality, but are not always
required to be directly linked and loaded into libircd proper. Most application-
specific functionality (i.e "business logic") is contained in modules within this
tree.
#### Layout #### Layout
The `modules/` directory tree is primarily shaped the same as the HTTP resource
tree in which most of its modules register themselves in.
Note that the installation layout is not the same as the development source
layout (i.e in git). Upon installation, the module tree is collapsed into a
single directory and installed into
`$prefix/lib/modules/construct/$directory_$module.so`; where directories are
replaced by underscores in the final `SONAME`. this may be subject to
improvement.
#### Approach #### Approach
Unlike most of the module systems found in traditional free software projects, Unlike most of the module systems found in traditional C free software
our approach is oriented around *global symbol* availability to the address projects, our approach is oriented around *global symbol* availability to the
space rather than explicit imports from self-contained modules. This direction address space rather than explicit imports from self-contained modules. This
is made viable by C++ and advances in the compiler and linker toolchains. The direction is made viable by C++ and advances in the compiler and linker
result is significantly simpler and more convenient for developers to work with. toolchains. The result is significantly simpler and more convenient for
developers to work with.
- Modules are loaded with `RTLD_GLOBAL` on both posix and windows platforms. - Modules are loaded with `RTLD_GLOBAL` on both posix and windows platforms.
Use of C++ namespaces, visibility attributes, `STB_GNU_UNIQUE`, etc are Use of C++ namespaces, visibility attributes, `STB_GNU_UNIQUE`, etc are
@ -68,8 +55,3 @@ Makefile.am.
3. Add the module `.la` name to the appropriate LTLIBRARIES list 3. Add the module `.la` name to the appropriate LTLIBRARIES list
in Makefile.am. in Makefile.am.
4. At this time, most modules are listed explicitly in `ircd/m.cc` to
provide a strict load and unload ordering based on dependency. Note that
if the module is not `m::` related there may be similar lists for other
subsystems.