Skip to content

Latest commit

 

History

History
 
 

bindgen

This directory contains the output of bindgen-generated ICU bindings.

run_bindgen.sh

This script is used to run bindgen manually, or out of band of the normal build cycle of rust_icu_sys. This is useful for building rust_icu without the bindgen feature on; which means that bindgen is not run during build, but a pre-existing bindings file is used instead.

Of course, for that to work, there has to be something that generates the one-off files. run_bindgen.sh is that something.

I/O behavior

The input to the script are the headers from the Unicode directory. The list of headers to examine is listed in the script itself, and you will find things like ucal, udat, and others. The directory is auto-detected based on the data that the program icu-config gives about the installation.

The output of the script is a rust library file containing the auto-generated low-level bindings for the ICU library. The name of the output file depends on the

Dependencies

The script attempts to auto-detect its dependencies and will fail early if one is not detected. The dependencies known so far are:

  • bash
  • icu-config (from ICU installations)
  • bindgen (from rust tools)
  • llvm-config (from the "llvm-dev" package)
  • tr (from coreutils)

Running the script.

The script is intended to be auto-piloted. Ideally it is invoked from a Makefile target. For the time being two things are important here:

  1. The list of headers and identifiers that need processing is set separately from build.rs but shoudl be maintained to keep in sync.

  2. Output directory is by default the current directory. It can be modified by setting the environment variable $OUTPUT_DIR when starting the program.