2.8 KiB

Oniguruma source subset

This directory contains the Oniguruma sources needed by sd.cpp's UTF-8 regex wrapper.

Upstream source

The 24 upstream files below were copied without local modifications. COPYING comes from the upstream repository root; all other files come from upstream src/ and retain their original filenames, flattened into this directory. This README is maintained by sd.cpp and is not part of the upstream copy.

File selection

The following 13 C files are compiled separately:

ascii.c
regcomp.c
regenc.c
regerror.c
regexec.c
regparse.c
st.c
unicode.c
unicode_fold1_key.c
unicode_fold2_key.c
unicode_fold3_key.c
unicode_unfold_key.c
utf8.c

Four Unicode data tables are included by unicode.c and must not be compiled as separate translation units. They were copied from upstream as supplied; sd.cpp does not regenerate them:

unicode_fold_data.c
unicode_property_data.c
unicode_egcb_data.c
unicode_wb_data.c

The remaining files are five headers, the platform configuration template, and the license:

oniguruma.h
regint.h
regenc.h
regparse.h
st.h
config.h.cmake.in
COPYING

The wrapper uses ONIG_ENCODING_UTF8 and ONIG_SYNTAX_ONIGURUMA. ASCII support is also retained because the engine requires it for initialization and error handling. Unicode property, case-folding, grapheme-cluster and word-boundary support remain enabled as in upstream.

Other encodings, GNU/POSIX compatibility APIs, unused API implementations, upstream tests, examples, build scripts and packaging files are omitted. This subset supports sd.cpp's internal wrapper; it does not provide the full Oniguruma API declared in oniguruma.h.

Build integration

The parent CMake file detects platform headers and type sizes, then generates config.h from config.h.cmake.in in the build directory. It builds the 13 C files as the onig OBJECT target with ONIG_STATIC and position-independent code enabled. The resulting objects are included directly in the sd.cpp static or shared library, with no separate Oniguruma library required by consumers.

Keep all 24 upstream files under version control, including the Unicode tables, configuration template and license. Generated config.h and build artifacts belong in the build directory.

When refreshing this subset, copy the listed files from the selected upstream revision, retain COPYING, and update the revision recorded here. Recheck source dependencies and the CMake configuration, then validate the regex wrapper and tokenizer output on supported platforms.