libtio - General I/O library
============================
This library is my general, cross-platform, I/O library. It reimplements
basic I/O with types such as streams, in, I believe, a better fashion than
the standard library.
Prerequisites
-------------
Build-only dependencies
^^^^^^^^^^^^^^^^^^^^^^^
- `make `_ (>= 4.0).
- `gcc `_ (>= 4.9).
- `binutils `_ (>= 2.25).
- `asciidoc `_ (>= 8.6.9).
- `gzip `_ (1.6).
- `pkg-config `_.
Runtime dependencies
^^^^^^^^^^^^^^^^^^^^
- `libusb `_ (>= 1.0).
Configuring
-----------
First of all, the configure script has a help message where all of the
options are listed. The defaults should be appropriate for a native build,
just ``./configure`` if that's what you want to do, but you should read at
least the next paragraph.
Building for the MS-Windows platform is supported, just use a ``-mingw32``
BFD target for GCC and Binutils.
Also, building a static library, for both PC and embedded systems, is
supported : just use the ``--static`` option. If you want to build a static
library so that a cross-compiler that uses Microsoft Windows static library
formats, add the ``--windows`` option (notice that for a ``-mingw32`` target
and a dynamic library generation, this option is automatically added).
Building and installing
-----------------------
Once configuring is done (necessary step), just ``make``.
To install, use ``make install``.
To build and install only the lib, use ``all-lib`` then ``install-lib``.
To build and install only the docs, use ``all-doc`` and ``install-doc``.
If you ought to package this library, use the ``DESTDIR`` Makefile variable,
e.g. ``make install DESTDIR=./package-root``. Do **not** use the ``--root``
configure options for this, as configure tools (``libtio-config`` and the
``pkg-config`` configuration file) will add what's in the `--root` option
value but not in the ``DESTDIR`` option.
Other useful targets:
- ``clean``: remove built files;
- ``re``: regenerate built files (clean and build) -- useful when
configuration is changed.
To do in libtio
---------------
- Use contexts within callbacks to get cookie, parent etc.
- Implement ``fallocate()``/``fadvise()`` equivalents.
- Integrate filesystem utilities.
- Try to integrate some async utilities?