| /* API for GNU Make dynamic objects. |
| Copyright (C) 2013 Free Software Foundation, Inc. |
| This file is part of GNU Make. |
| |
| GNU Make is free software; you can redistribute it and/or modify it under the |
| terms of the GNU General Public License as published by the Free Software |
| Foundation; either version 3 of the License, or (at your option) any later |
| version. |
| |
| GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY |
| WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR |
| A PARTICULAR PURPOSE. See the GNU General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License along with |
| this program. If not, see <http://www.gnu.org/licenses/>. */ |
| |
| #include "makeint.h" |
| |
| #include "filedef.h" |
| #include "variable.h" |
| #include "dep.h" |
| |
| /* Allocate a buffer in our context, so we can free it. */ |
| char * |
| gmk_alloc (unsigned int len) |
| { |
| return xmalloc (len); |
| } |
| |
| /* Free a buffer returned by gmk_expand(). */ |
| void |
| gmk_free (char *s) |
| { |
| free (s); |
| } |
| |
| /* Evaluate a buffer as make syntax. |
| Ideally eval_buffer() will take const char *, but not yet. */ |
| void |
| gmk_eval (const char *buffer, const gmk_floc *floc) |
| { |
| char *s = xstrdup (buffer); |
| eval_buffer (s, floc); |
| free (s); |
| } |
| |
| /* Expand a string and return an allocated buffer. |
| Caller must call gmk_free() with this buffer. */ |
| char * |
| gmk_expand (const char *ref) |
| { |
| return allocated_variable_expand (ref); |
| } |
| |
| /* Register a function to be called from makefiles. */ |
| void |
| gmk_add_function (const char *name, |
| char *(*func)(const char *nm, int argc, char **argv), |
| int min, int max, int expand) |
| { |
| define_new_function (reading_file, name, min, max, expand, func); |
| } |