]> git.ipfire.org Git - thirdparty/make.git/commit
[SV 63219] Support an "unload" function for loaded objects
authorPaul Smith <psmith@gnu.org>
Sun, 7 May 2023 20:51:12 +0000 (16:51 -0400)
committerPaul Smith <psmith@gnu.org>
Sun, 14 May 2023 22:26:35 +0000 (18:26 -0400)
commit1748e6641419e8a48f830caad072ed5b298577af
treea0650a8ee54b5ec4020a5b1277bd70cd903d4ac2
parent8e0e6c678f3cf1199751e3b097745531ceed34ed
[SV 63219] Support an "unload" function for loaded objects

If a loaded object defines a symbol <object>_gmk_unload, assume it's
a function and invoke it whenever the loaded object is unloaded.
Original implementation by Dmitry Goncharov <dgoncharov@users.sf.net>

* NEWS: Announce the change.
* doc/make.texi: Describe the behavior.
* src/gnumake.h: Add information to the comments.
* src/makeint.h (unload_all): Declare a new function.
* src/main.c (die): Invoke unload_all().
* src/load.c (unload_func_t): Declare a new type for unload.
(struct load_list): Remember the unload symbol if it exists.
(load_object): Move the parsing of the object name from load_file.
Check for the _gmk_unload symbol and if found, remember it.
(load_file): Allow load_object to do object filename parsing.
(unload_file): Remove the load_list entry when unloading the object.
(unload_all): Unload all the loaded objects.
* tests/scripts/features/loadapi: Test the unload function.
NEWS
doc/make.texi
src/gnumake.h
src/load.c
src/main.c
src/makeint.h
tests/scripts/features/loadapi