summaryrefslogtreecommitdiff
path: root/gnumake.h
diff options
context:
space:
mode:
authorPaul Smith <psmith@gnu.org>2013-02-25 01:38:36 -0500
committerPaul Smith <psmith@gnu.org>2013-02-25 01:38:36 -0500
commit5058a94ee717d96285da20423324af3478df175d (patch)
treefa24d78c8f51c77371464d6c03b3aaf886c8f86a /gnumake.h
parent4baf9ab4564447355b5748d1375959e817771d17 (diff)
downloadgunmake-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.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/gnumake.h b/gnumake.h
index 1648b33..c6f7bd8 100644
--- a/gnumake.h
+++ b/gnumake.h
@@ -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_ */