xref: /freebsd/crypto/krb5/src/util/verto/README (revision 7f2fe78b9dd5f51c821d771b63d2e096f6fd49e9)
1*7f2fe78bSCy SchubertThis directory builds a verto library with only a private built-in
2*7f2fe78bSCy Schubertmodule, for use when the system has no installed verto library.  The
3*7f2fe78bSCy Schubertbundled verto cannot dynamically load modules.  From the upstream
4*7f2fe78bSCy Schubertlibverto, we take only verto.c and verto-libev.c, and we only build
5*7f2fe78bSCy Schubertthe former; the latter is stored here for comparison purposes.  We use
6*7f2fe78bSCy Schuberta stub implementation of module.c to disable dynamic loading support.
7*7f2fe78bSCy Schubert
8*7f2fe78bSCy SchubertThis private module uses an embedded libev with renamed symbols (so we
9*7f2fe78bSCy Schubertdon't leak libev symbols into the namespace on platforms where we
10*7f2fe78bSCy Schubertcan't control the export list).  libev has built-in support for this
11*7f2fe78bSCy Schubertkind of embedding, so we don't have to modify the libev sources.
12*7f2fe78bSCy SchubertFollowing libev's documentation, the following files have been copied
13*7f2fe78bSCy Schubertfrom the ev sources:
14*7f2fe78bSCy Schubert
15*7f2fe78bSCy Schubert  ev.h
16*7f2fe78bSCy Schubert  ev_vars.h
17*7f2fe78bSCy Schubert  ev_wrap.h
18*7f2fe78bSCy Schubert  ev.c
19*7f2fe78bSCy Schubert  ev_select.c
20*7f2fe78bSCy Schubert  ev_poll.c
21*7f2fe78bSCy Schubert  ev_win32.c
22*7f2fe78bSCy Schubert  Symbols.ev
23*7f2fe78bSCy Schubert
24*7f2fe78bSCy Schubert(Symbols.ev wasn't included in the 4.04 tar file due to an oversight,
25*7f2fe78bSCy Schubertso it is taken from the appropriate tag in libev's source repository.)
26*7f2fe78bSCy Schubert
27*7f2fe78bSCy SchubertTo rename the exported symbols, we create rename.h from Symbols.ev.
28*7f2fe78bSCy SchubertWe also use Symbols.ev to construct the library export list.
29*7f2fe78bSCy Schubert(Renaming libev's symbols would be unnecessary if libev's embedding
30*7f2fe78bSCy Schuberthad support for making its API symbols static, but it currently does
31*7f2fe78bSCy Schubertnot.)  The source file verto-k5ev.c wraps ev.c with appropriate
32*7f2fe78bSCy Schubertembedding defines, and then defines the libverto module functions
33*7f2fe78bSCy Schubertusing the slightly modified contents of libverto's verto-libev.c.  The
34*7f2fe78bSCy Schubertresulting module table is embedded into verto.c using the
35*7f2fe78bSCy SchubertBUILTIN_MODULE define.
36*7f2fe78bSCy Schubert
37*7f2fe78bSCy SchubertThe libverto and libev upstream project pages are at:
38*7f2fe78bSCy Schubert
39*7f2fe78bSCy Schubert  https://github.com/latchset/libverto/
40*7f2fe78bSCy Schubert  http://software.schmorp.de/pkg/libev.html
41