diff options
author | Paul Smith <psmith@gnu.org> | 2013-02-25 01:38:36 -0500 |
---|---|---|
committer | Paul Smith <psmith@gnu.org> | 2013-02-25 01:38:36 -0500 |
commit | 5058a94ee717d96285da20423324af3478df175d (patch) | |
tree | fa24d78c8f51c77371464d6c03b3aaf886c8f86a /gnumake.h | |
parent | 4baf9ab4564447355b5748d1375959e817771d17 (diff) | |
download | gunmake-5058a94ee717d96285da20423324af3478df175d.tar.gz |
Expand the loadable object support.
Provide a simple API for loaded objects to interact with GNU make. I still
won't guarantee that this API won't change but it's much closer to something
that's supported and provides easy-to-use interfaces with a public header
file.
Diffstat (limited to 'gnumake.h')
-rw-r--r-- | gnumake.h | 29 |
1 files changed, 29 insertions, 0 deletions
@@ -1,4 +1,6 @@ /* External interfaces usable by dynamic objects loaded into GNU Make. + --THIS API IS A "TECHNOLOGY PREVIEW" ONLY. IT IS NOT A STABLE INTERFACE-- + Copyright (C) 2013 Free Software Foundation, Inc. This file is part of GNU Make. @@ -24,4 +26,31 @@ typedef struct unsigned long lineno; } gmk_floc; + +/* Run $(eval ...) on the provided string BUFFER. */ +void gmk_eval (const char *buffer, const gmk_floc *floc); + +/* Run GNU make expansion on the provided string STR. + Returns an allocated buffer that the caller must free. */ +char *gmk_expand (const char *str); + +/* Register a new GNU make function NAME (maximum of 255 chars long). + When the function is expanded in the makefile, FUNC will be invoked with + the appropriate arguments. + + The return value of FUNC must be either NULL, in which case it expands to + the empty string, or a pointer to the result of the expansion in a string + created by malloc(). GNU make will free() the memory when it's done. + + MIN_ARGS is the minimum number of arguments the function requires. + MAX_ARGS is the maximum number of arguments (or 0 if there's no maximum). + MIN_ARGS and MAX_ARGS must be >= 0 and <= 255. + + If EXPAND_ARGS is 0, the arguments to the function will not be expanded + before FUNC is called. If EXPAND_ARGS is non-0, they will be expanded. +*/ +void gmk_add_function (const char *name, + char *(*func)(const char *nm, int argc, char **argv), + int min_args, int max_args, int expand_args); + #endif /* _GNUMAKE_H_ */ |