From 82ba818ff456bcd6d56a06226e3f27e98fbb55c3 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Thu, 14 Aug 2025 22:58:58 -0500 Subject: removing all downloaded devdocs files --- devdocs/gnu_make/loaded-object-example.html | 67 ----------------------------- 1 file changed, 67 deletions(-) delete mode 100644 devdocs/gnu_make/loaded-object-example.html (limited to 'devdocs/gnu_make/loaded-object-example.html') diff --git a/devdocs/gnu_make/loaded-object-example.html b/devdocs/gnu_make/loaded-object-example.html deleted file mode 100644 index bc4ca849..00000000 --- a/devdocs/gnu_make/loaded-object-example.html +++ /dev/null @@ -1,67 +0,0 @@ -

Example Loaded Object

Let’s suppose we wanted to write a new GNU make function that would create a temporary file and return its name. We would like our function to take a prefix as an argument. First we can write the function in a file mk_temp.c:

#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <errno.h>
-
-#include <gnumake.h>
-
-int plugin_is_GPL_compatible;
-
-char *
-gen_tmpfile(const char *nm, int argc, char **argv)
-{
-  int fd;
-
-  /* Compute the size of the filename and allocate space for it.  */
-  int len = strlen (argv[0]) + 6 + 1;
-  char *buf = gmk_alloc (len);
-
-  strcpy (buf, argv[0]);
-  strcat (buf, "XXXXXX");
-
-  fd = mkstemp(buf);
-  if (fd >= 0)
-    {
-      /* Don't leak the file descriptor.  */
-      close (fd);
-      return buf;
-    }
-
-  /* Failure.  */
-  fprintf (stderr, "mkstemp(%s) failed: %s\n", buf, strerror (errno));
-  gmk_free (buf);
-  return NULL;
-}
-
-int
-mk_temp_gmk_setup (const gmk_floc *floc)
-{
-  printf ("mk_temp plugin loaded from %s:%lu\n", floc->filenm, floc->lineno);
-  /* Register the function with make name "mk-temp".  */
-  gmk_add_function ("mk-temp", gen_tmpfile, 1, 1, 1);
-  return 1;
-}
-
-

Next, we will write a Makefile that can build this shared object, load it, and use it:

all:
-        @echo Temporary file: $(mk-temp tmpfile.)
-
-load mk_temp.so
-
-mk_temp.so: mk_temp.c
-        $(CC) -shared -fPIC -o $@ $<
-
-

On MS-Windows, due to peculiarities of how shared objects are produced, the compiler needs to scan the import library produced when building make, typically called libgnumake-version.dll.a, where version is the version of the load object API. So the recipe to produce a shared object will look on Windows like this (assuming the API version is 1):

mk_temp.dll: mk_temp.c
-        $(CC) -shared -o $@ $< -lgnumake-1
-
-

Now when you run make you’ll see something like:

$ make
-mk_temp plugin loaded from Makefile:4
-cc -shared -fPIC -o mk_temp.so mk_temp.c
-Temporary filename: tmpfile.A7JEwd
-
-
-

- Copyright © 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
- https://www.gnu.org/software/make/manual/html_node/Loaded-Object-Example.html -

-
-- cgit v1.2.3