On Sat, 2013-10-05 at 16:34 +0300, Eli Zaretskii wrote:
> > EXPORT int mk_test_gmk_setup (const gmk_floc *flocp)
> > {
> > gmk_add_function ("hello_world", hello_world, 0, 255, 0);
> ^^^^^^^^^^^
> Make functions cannot have the '_' character in their names, so it
> seems. Here's why:
> /* Look up a function by name. */
>
> static const struct function_table_entry *
> lookup_function (const char *s)
> {
> const char *e = s;
>
> while (*e && ( (*e >= 'a' && *e <= 'z') || *e == '-')) <<<<<<<<<<<<
> e++;
>
> So if you name your function hello-world instead, it will work.
>
> Paul, if this limitation is deliberate, I suggest to document it where
> we explain the arguments of gmk_add_function.
It's not so much a deliberate restriction, as it was a performance
improvement I added in 2002 along with the switch to hash table lookups,
and completely forgot about afterward :-). All the existing make
functions were lowercase and contained only '-', so we avoided the
lookup effort if we found a name which could not be a function.
Now that users can define their own functions, I don't think that
restriction is appropriate anymore. I'll fix this, thanks.
> (I can make these changes in documentation, if you agree.)
I have a vivid memory of adding documentation regarding this so let me
look around for it.
_______________________________________________
Bug-make mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-make