bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Challenges around the combination of functions "call" and "eval"


From: Paul Smith
Subject: Re: Challenges around the combination of functions "call" and "eval"
Date: Wed, 28 Jan 2015 17:07:59 -0500

On Wed, 2015-01-28 at 22:38 +0100, SF Markus Elfring wrote:
> > $(eval ...) is a (relatively) recently implemented, very advanced
> > feature that exists only in GNU make: no other implementation of make
> > has anything like it (that I'm aware of).
> 
> Since which program version are the functions "call" and "eval"
> generally available?

The NEWS file that comes with GNU make source has a complete history of
all the versions and which user-visible features were added in each:

http://git.savannah.gnu.org/cgit/make.git/tree/NEWS?id=4.1


> > So you really just don't need $(eval ...), except in rare situations
> > where you really do need it.  Nothing you've shown us so far really
> > needs it.
> 
> Would you like to adjust your view a bit if you look at my working
> intermediate build scripts again?
> https://build.opensuse.org/package/view_file/home:elfring:semantic_patching:Deletion_of_checks_before_specific_function_calls/Deletion_of_checks_before_specific_function_calls_in_Linux_source_files/parallel-inc.make?expand=1

I'm sorry, but (a) I'm about to be completely offline for a while,
perhaps as long as a week or more, and (b) I don't have time to review
large complex makefile environments.

If you would like to describe one example of something you're trying to
do, in words, then show how you were solving the problem in your
makefile then we could critique that.  But a quick check of your link
above shows no comments or anything in the makefile describing what it
does, and I don't really understand the purpose behind all these recipes
which consist of if-statements where the body of the recipe is made
empty if variables are not set.

I will also mention that I see you using various bash-specific shell
features (e.g., 'XY=$${XY/|/ }'), but I don't see any setting of "SHELL
= /bin/bash" in your makefile; unless you do this then your makefiles
will fail on any system where /bin/sh (which is the default setting for
SHELL in make) is not bash; this includes, as an example, all
Debian-derived instances of GNU/Linux including Ubuntu, as well as
almost all non-Linux-based UNIX systems.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]