Crates.io | makers |
lib.rs | makers |
version | 0.8.0 |
source | src |
created_at | 2021-03-27 03:42:13.624691 |
updated_at | 2024-11-16 04:47:55.334103 |
description | a POSIX-compatible make implemented in Rust |
homepage | |
repository | https://code.boringcactus.com/makers/ |
max_upload_size | |
id | 374062 |
size | 224,772 |
A (mostly) POSIX-compatible make implemented in Rust. Not explicitly aiming for full support for every GNU make feature, but adding whichever features are strictly necessary to be compatible with existing GNUish makefiles.
You can get slightly more info by running with RUST_LOG=makers=warn
, much more info with RUST_LOG=makers=debug
, and an avalanche of info (probably only useful in small doses for debugging your makefile or makers itself) with RUST_LOG=makers=trace
.
For more specific configuration, see the documentation for the env_logger
Rust crate.
LANG
/LC_ALL
/LC_CTYPE
/LC_MESSAGES
) not implementedTODO
for a list)MAKE
is defined as the path to makers
.POSIX
special target doesn't opt out of extensions (but you can install with --no-default-features
to get only POSIX behavior)i haven't written unit tests for most of makers
, but there are integration tests that try to build various make-based projects with makers.
specific projects tested:
list of features that are needed for version 1.0:
-C
/--directory
flagMAKEFLAGS
environment variableexport EGG=bug
target: EGG=bug
.SECONDEXPANSION
(but not properly deferred like in GNU make)abspath
, firstword
export
/unexport
actually persist so they're available while executingfindstring
, realpath
, dir
, lastword
, words
, subst
, error
, word
, patsubst
, addsuffix
MAKECMDGOALS
, CURDIR
, MAKEFILE_LIST
export
/unexport
directives$<
(old: all dependencies, new: first dependency, spec: first dependency added by inference rule)$(MAKE)
built-in macro to the full path to makers
if it can be found%
-matching to reject partial pattern matches but allow all characters in %
and
, or
, strip
%
-matching inference rules.PHONY
special target are now always assumed out-of-date until rebuilt, regardless of filesystem status--no-default-features
for pure-POSIX compatibilityif
, origin
, shell
(doesn't set .SHELLSTATUS
), eval
define
blocksfilter
, filter-out
, sort
, notdir
, basename
, addprefix
, wildcard
, foreach
, call
Released under Big Bill Hell’s License.
Exceptions may be available on request.
Canonically pronounced /ˈmeɪ.kɹɪz/ (as though saying "make risotto" but giving up halfway through).