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?