diff --git a/src/read.c b/src/read.c index e94e75bc..79315503 100644 --- a/src/read.c +++ b/src/read.c @@ -984,6 +984,7 @@ eval (struct ebuffer *ebuf, int set_default) /* Otherwise add it to the list to be rebuilt. */ deps = alloc_goaldep (); deps->next = read_files; + deps->floc = ebuf->floc; read_files = deps; deps->file = f; } diff --git a/tests/scripts/features/loadapi b/tests/scripts/features/loadapi index f4d335a7..640ac745 100644 --- a/tests/scripts/features/loadapi +++ b/tests/scripts/features/loadapi @@ -24,7 +24,7 @@ print $F <<'EOF' ; #include "gnumake.h" -char* getenv (const char*); +char *getenv (const char*); int plugin_is_GPL_compatible; @@ -71,15 +71,22 @@ func_test (const char *funcname, unsigned int argc, char **argv) } int -testapi_gmk_setup () +testapi_gmk_setup (const gmk_floc *floc) { + const char *verbose = getenv ("TESTAPI_VERBOSE"); + gmk_add_function ("test-expand", func_test, 1, 1, GMK_FUNC_DEFAULT); gmk_add_function ("test-noexpand", func_test, 1, 1, GMK_FUNC_NOEXPAND); gmk_add_function ("test-eval", func_test, 1, 1, GMK_FUNC_DEFAULT); gmk_add_function ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.", func_test, 0, 0, 0); - if (getenv ("TESTAPI_VERBOSE")) - printf("testapi_gmk_setup\n"); + if (verbose) + { + printf ("testapi_gmk_setup\n"); + + if (verbose[0] == '2') + printf ("%s:%lu\n", floc->filenm, floc->lineno); + } if (getenv ("TESTAPI_KEEP")) return -1; @@ -201,6 +208,18 @@ force:; .PHONY: force ", '', "testapi_gmk_setup\nhello\n#MAKE#: 'all' is up to date.\n"); +# sv 63100. +# Test that make supplies the correct floc when the shared object is loaded +# again. +$ENV{TESTAPI_VERBOSE} = 2; +run_make_test(" +load testapi.so +$extra_loads +all:; \$(info \$(test-expand hello)) +testapi.so: force; \$(info \$@) +force:; +.PHONY: force +", '', "testapi_gmk_setup\n#MAKEFILE#:2\ntestapi.so\ntestapi_gmk_setup\n#MAKEFILE#:2\nhello\n#MAKE#: 'all' is up to date.\n"); } unlink(qw(testapi.c testapi.so)) unless $keep;