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/eval-function.html | 32 -------------------------------- 1 file changed, 32 deletions(-) delete mode 100644 devdocs/gnu_make/eval-function.html (limited to 'devdocs/gnu_make/eval-function.html') diff --git a/devdocs/gnu_make/eval-function.html b/devdocs/gnu_make/eval-function.html deleted file mode 100644 index a826411f..00000000 --- a/devdocs/gnu_make/eval-function.html +++ /dev/null @@ -1,32 +0,0 @@ -

The eval Function

The eval function is very special: it allows you to define new makefile constructs that are not constant; which are the result of evaluating other variables and functions. The argument to the eval function is expanded, then the results of that expansion are parsed as makefile syntax. The expanded results can define new make variables, targets, implicit or explicit rules, etc.

The result of the eval function is always the empty string; thus, it can be placed virtually anywhere in a makefile without causing syntax errors.

It’s important to realize that the eval argument is expanded twice; first by the eval function, then the results of that expansion are expanded again when they are parsed as makefile syntax. This means you may need to provide extra levels of escaping for “$” characters when using eval. The value function (see Value Function) can sometimes be useful in these situations, to circumvent unwanted expansions.

Here is an example of how eval can be used; this example combines a number of concepts and other functions. Although it might seem overly complex to use eval in this example, rather than just writing out the rules, consider two things: first, the template definition (in PROGRAM_template) could need to be much more complex than it is here; and second, you might put the complex, “generic” part of this example into another makefile, then include it in all the individual makefiles. Now your individual makefiles are quite straightforward.

PROGRAMS    = server client
-
-server_OBJS = server.o server_priv.o server_access.o
-server_LIBS = priv protocol
-
-client_OBJS = client.o client_api.o client_mem.o
-client_LIBS = protocol
-
-# Everything after this is generic
-
-.PHONY: all
-all: $(PROGRAMS)
-
-define PROGRAM_template =
- $(1): $$($(1)_OBJS) $$($(1)_LIBS:%=-l%)
- ALL_OBJS   += $$($(1)_OBJS)
-endef
-
-$(foreach prog,$(PROGRAMS),$(eval $(call PROGRAM_template,$(prog))))
-
-$(PROGRAMS):
-        $(LINK.o) $^ $(LDLIBS) -o $@
-
-clean:
-        rm -f $(ALL_OBJS) $(PROGRAMS)
-
-
-

- 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/Eval-Function.html -

-
-- cgit v1.2.3