Installed Files

Header Files and Libs

NOTE: Here:

  • ${M} means “package major version”

  • ${m} means “package minor version”

  • * is a wildcard (don’t try to include ymo_*.h)

  • ${dext} is your platform lib extension (e.g. .so or .dylib, etc)

${prefix}
├── bin                     ───┐
│   ├── yimmo-example-http     ├─────  Binaries Installed Here
│   ├── yimmo-example-mqtt     │
│   ├── yimmo-example-ws       │
│   └── yimmo-wsgi          ───┘
│
├── include
│   │
│   └── yimmo-${M}.${m}
│       ├── yimmo.h  ───┬─────  Core Public API
│       ├── ymo_*.h  ───┘
│       │
│       ├── core        ───┬─────  Core Internal API
│       │   └── ymo_*.h ───┘       (#include <core/ymo_*.h>)
│       │
│       │
│       ├── ymo_http.h  ─────────  HTTP Public API
│       │
│       ├── http              ───┬─────  HTTP Internal API
│       │   └── ymo_http_*.h  ───┘       (#include <http/ymo_http_*.h>)
│       │
│       │
│       ├── ymo_ws.h  ─────────  WebSocket Public API
│       │
│       ├── ws              ───┬─────  WebSocket Internal API
│       │   └── ymo_ws_*.h  ───┘       (#include <ws/ymo_ws_*.h>)
│       │
│       │
│       ├── ymo_mqtt.h  ─────────  MQTT Public API
│       │
│       └── mqtt              ───┬─────  MQTT Internal API
│           └── ymo_mqtt_*.h  ───┘       (#include <mqtt/ymo_mqtt_*.h>)
│
└── lib
    │                                    Core libs:
    ├── libyimmo.${M}.${dext}  ───────── dynamic
    ├── libyimmo.a             ───────── static
    ├── libyimmo.la            ───────── libtool archive
    │
    ├── libyimmo_http.${M}.${dext}  ───────── (Ditto http)
    ├── libyimmo_http.a
    ├── libyimmo_http.la
    │
    ├── ... (ditto "ws" and "mqtt")
    │
    └── pkgconfig
        └── ...

Pkg-Config

Pkg-Config files are provided and installed into ${prefix}/lib/pkgconfig for each major/minor version pair (with a symlink which points to the latest major installed), e.g.:

${prefix}
│
├── include
│   │
│   └── ...
│
└── lib
    │
    │
    ├── ...
    │
    └── pkgconfig                         ───┐
        │                                    │
        ├── libyimmo-${M}.${m}.pc            ├── pkg-config data
        ├── libyimmo-${M}.${m}_http.pc       │   (one per lib)
        ├── libyimmo-${M}.${m}_mqtt.pc       │
        └── libyimmo-${M}.${m}_ws.pc      ───┘

These can be used to determine the CFLAGS and LDFLAGS to use when building against libyimmo, e.g.:

# CFLAGS
$ pkg-config libyimmo-0 libyimmo_http-0 --cflags
-I/usr/local/include/yimmo-0.0

# LDFLAGS
$ pkg-config libyimmo-0 libyimmo_http-0 --libs
-L/usr/local/lib -lyimmo -lyimmo_http

Autotools

If your project uses autotools, we can do one better, using PKG_CHECK_MODULES. To build a project which uses yimmo core and HTTP, for example, you might do:

configure.ac
PKG_CHECK_MODULES([YIMMO], [libyimmo])
PKG_CHECK_MODULES([YIMMO_HTTP], [libyimmo_http])
Makefile.am
AM_CFLAGS=\
     @YIMMO_CFLAGS@ \
     @YIMMO_HTTP_CFLAGS@

AM_LDFLAGS=\
     @YIMMO_LIBS@ \
     @YIMMO_HTTP_LIBS@

bin_PROGRAMS=\
     my-program

my_program_SOURCES=\
     main.c