From 5058a94ee717d96285da20423324af3478df175d Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Mon, 25 Feb 2013 01:38:36 -0500 Subject: 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. --- gnumake.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'gnumake.h') 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_ */ -- cgit v1.2.3