summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md132
1 files changed, 132 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..0498792
--- /dev/null
+++ b/README.md
@@ -0,0 +1,132 @@
+/*! \mainpage
+
+qlibs - C library and headers based on "djb's libs" and libowfat
+================================================================
+
+Initially, these libs were excluded from *qmail and forseen to use with eQmail.
+As the packages of djb (D.J. Bernstein) uses these libs in different versions,
+there comes up the need to have a consistent state.
+As time was going on, there was also a need to include additional functionality
+and up-to-date best practices.
+Short - this was the point where some parts from libowfat were included.
+
+The current fehQlibs rather accustom to the needs of different OS.
+
+In theorie - these libs can be used with any djb software.
+
+Achievements
+------------
+
+- IPv4/IPv6 unification:
+
+The current package supports unified IPv4/IPv6 socket calls, while IPv6 is the default.
+
+- DNS stub-resolver:
+
+The provided DNS stub-resolver is IPv4 and IPv6 aware.
+See the README in the ./dnsstub directory for details.
+
+
+Installation
+------------
+
+Some build options can be configured through 'conf-build'.
+Read the comments in this file for more information.
+
+* Building:
+
+a) Static libs:
+
+Execute
+
+ $ make
+
+which does the steps of './configure && make'.
+Don't forget to make sure that libs and headers will be found by the compiler/linker.
+For convenience, link the current version of fehQlibs to qlibs
+
+ $ ln -s fehQlibs-XY qlibs
+
+b) Shared objects libs:
+
+You can also build dynamic libaries for qlibs and dnsresolv. After
+
+ $ make
+
+call
+
+ $ make shared
+
+* Deployment:
+
+In case conf-build has been customized to include the location of
+
+- HDRDIR
+- LIBDIR
+
+issue
+
+ $ make install
+
+to deploy the include files and libs at the given location.
+By default, for the libs the parent directory is used.
+
+* Verification:
+
+Check the ELFCLASS of the generated binaries in the source directory while calling
+
+ $ file open.o
+
+They need to comply with your OS. See 'conf-build' for options.
+
+* Resulting libraries:
+
+The following libraries are generated:
+
+- qlibs.a - static basic [w/o DNS] lib (linked to libqlibs.a)
+- dnsresolv.a - static DNS resolver lib (linked to libdnsresolv.a)
+
+and perhaps
+
+- libqlibs.so - dynamic, position independent (PIC) 'shared object' lib
+- libdnsresolv.so - dynamic, position independent (PIC) 'shared object' lib
+
+These libs are of type ELF64 or ELF32 depending on the system.
+
+Use 'ar -t' to get the included members of the static libs.
+Use 'nm' to view the members and symbols of the libs.
+
+The shared object libs are known NOT not work on MacOS.
+
+
+Man pages
+---------
+
+In the ./man directory the current man pages for the basic qlibs routines are included.
+Determine the current $mandir and (as root) install the man pages:
+
+ $ cp *.3 $mandir/man3/
+
+
+Packaging
+---------
+
+The fehQlibs are incompatible with Gentoo's parallel compilation flag '-jN' for N > 1.
+
+
+Compilation
+-----------
+
+Starting with version fehQlibs-15b, GCC 10 and Clang compatibility is provided,
+which means ISO C conformance.
+Since fehQlibs-17 strong coupling of application routines previously introduced
+by the global (external) 'ipv4socket' variable are avoided.
+stralloc.h is decoupled from genalloc.h (to be included separately).
+This respects the GCC 10 compilation unit behavior.
+
+
+-----
+
+Updated: 20170329, Kai Peter
+
+Updated: 20220706, Erwin Hoffmann