package dune-configurator

  1. Overview
  2. Docs
Helper library for gathering system configuration

Install

Dune Dependency

Authors

Maintainers

Sources

dune-3.16.0.tbz
sha256=5481dde7918ca3121e02c34d74339f734b32d5883efb8c1b8056471e74f9bda6
sha512=529f937c61bc9ea7b135c2425f2d730478b48e6ab6b6455c354138d27b76bd43afce40d4784a6f183d6308d3cf0f5d5cea5bea070f83442949762ed818fb44bc

doc/index.html

dune-configurator - Helper library for gathering system configuration

dune-configurator is a small library that helps writing OCaml scripts that test features available on the system, in order to generate config.h files for instance.

Among other things, dune-configurator allows one to:

  • test if a C program compiles
  • query pkg-config
  • import #define from OCaml header files
  • generate a config.h file

API Documentation

The entry point for this library is Configurator.V1.

Example

The following happens in a dune project that contains some C code that needs to link against libpng.

The following program (discover/discover.ml) uses dune-configurator to query pkg-config and create cflags.sexp and libs.sexp:

let () =
  Configurator.V1.main ~name:"libpng"
    (fun c ->
       let pkg_config =
         match Configurator.V1.Pkg_config.get c with
         | Some p -> p
         | None -> failwith "Cannot find pkg-config"
       in
       let conf = Configurator.V1.Pkg_config.query ~package:"libpng" in
       Configurator.V1.Flags.write_sexp "cflags.sexp" conf.cflags;
       Configurator.V1.Flags.write_sexp "libs.sexp" conf.libs)

It can be built using the following discover/dune file:

(executable
 (name discover)
 (libraries dune-configurator))

(rule
 (targets cflags.sexp libs.sexp)
 (action
  (run ./discover.exe)))

And used when building the C code in the following dune file:

(library
 (name png)
 (foreign_stubs
  (language c)
  (names bindings)
  (flags :standard (:include discover/cflags.sexp)))
 (c_library_flags :standard (:include discover/libs.sexp)))
OCaml

Innovation. Community. Security.