Skip to content

infinityabundance/autotools-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

autotools-rs

A GNU-free, clean-room Rust reimplementation of the GNU Autotools suitem4, autoconf, and automake (with aclocal, autoreconf, autoheader, and friends) — verified against the real GNU tools as an oracle, never derived from GPL source.

Most people know this set of tools collectively as "autotools." This crate is the single front door to the Rust reimplementation: it re-exports the core library of each tool, and points at the standalone repositories where each one lives and releases.

Why

The GNU Autotools are the most widely deployed build system in the C/C++ world, but they are a stack of Perl, shell, and GPL M4. autotools-rs is a from-scratch Rust reimplementation whose every behaviour is settled by an oracle court — the Rust output is diffed byte-for-byte / behaviour-for-behaviour against the genuine GNU tool across a large corpus of real projects, and only faithful results are accepted. The result is a fast, dependency-light, permissively-licensed toolchain that aims to build the same configure/Makefile.in the GNU tools would.

The suite

Tool Reimplements Crate Repository
m4 GNU M4 macro processor m4-rs-core infinityabundance/m4-rs
autoconf (+ autoheader, autom4te, autoreconf, autoscan, autoupdate, ifnames) GNU Autoconf autoconf-rs-core infinityabundance/autoconf-rs
automake (+ aclocal) GNU Automake automake-rs-core infinityabundance/automake-rs

Use as a library

[dependencies]
autotools-rs = "0.1"
use autotools_rs::{m4, autoconf, automake};
// One dependency reaches the whole suite:
let _engine = autoconf::M4Engine::new();

Use as a command line

cargo install autotools-rs

installs the full bundle: autoconf, autoheader, aclocal, automake, autoreconf, m4 — one command pulls the whole GNU-free toolchain from crates.io and drops the binaries in ~/.cargo/bin. Each is a thin wrapper over the corresponding published CLI crate's library entrypoint.

Design

autotools-rs is a thin facade by design — it contains no logic. Each tool is developed, tested, and released in its own repository against its own oracle-court corpus; the umbrella only bundles them under the name people actually search for. Version dependencies are deliberately loose (^0.1) so the umbrella does not need a release for every sub-crate patch.

License

Licensed under either of MIT or Apache-2.0 at your option — the same clean-room permissive terms as the sub-crates.

About

GNU-free, clean-room Rust reimplementation of the GNU Autotools suite (m4 / autoconf / automake) — umbrella facade.

Resources

License

Stars

2 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages