GNU make release candidate 4.1.90 available for download

2016-04-23 Thread Paul Smith

GNU make is a tool which controls the generation of executables and
other non-source files of a program from the program's source files.

You can learn more at: http://www.gnu.org/software/make/


A new release candidate for GNU make 4.2 is available now for download:

90a3ac4fbf4a1cf8dacaf92b079b16b2  make-4.1.90.tar.bz2
ffd56d762220269c0534edfda9197cb3  make-4.1.90.tar.gz

You can obtain a copy from:  http://alpha.gnu.org/gnu/make/

- NEWS 

A complete list of bugs fixed in this version is available here:

http://sv.gnu.org/bugs/index.php?group=make_id=111_release_id=106=custom

* New variable: $(.SHELLSTATUS) is set to the exit status of the last != or
  $(shell ...) function invoked in this instance of make.  This will be "0" if
  successful or not "0" if not successful.  The variable value is unset if no
  != or $(shell ...) function has been invoked.

* The $(file ...) function can now read from a file with $(file 

* The interface to GNU make's "jobserver" is stable as documented in the
  manual, for tools which may want to access it.

  WARNING: Backward-incompatibility! The internal-only command line option
  --jobserver-fds has been renamed for publishing, to --jobserver-auth.

* The amount of parallelism can be determined by querying MAKEFLAGS, even when
  the job server is enabled (previously MAKEFLAGS would always contain only
  "-j", with no number, when job server was enabled).

* VMS-specific changes:

  * Perl test harness now works.

  * Full support for converting Unix exit status codes to VMS exit status
codes.  BACKWARD INCOMPATIBILITY Notice: On a child failure the VMS exit
code is now the encoded Unix exit status that Make usually generates, not
the VMS exit status of the child.

signature.asc
Description: This is a digitally signed message part
___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: ifeq and ifneq not working

2016-04-23 Thread Martin Dorey
TESTSRC depends on $@, an automatic variable set at the time of recipe 
execution.  ifneq by contrast runs earlier.  
https://www.gnu.org/software/make/manual/html_node/Conditionals.html#Conditionals
 explains "Conditionals control what make actually “sees” in the makefile, so 
they cannot be used to control recipes at the time of execution".

On Apr 23, 2016, at 09:12, Sedrubal 
> wrote:

Hi,

I'm not sure but I think I found a bug in ifeq and ifneq:

My project structure is like this:

$ tree
.
├── Makefile
├── subprojA
│   ├── src.cpp
│   ├── Makefile
│   └── test.cpp
└── subprojA
   ├── src.cpp
   ├── Makefile
   └── test.cpp

The upper Makefile should run `make test` for each sub project if "test.cpp" is
in this folder.

My Makefile is like this:

SUBDIRS:= $(wildcard */)
TESTDIRS:= $(SUBDIRS:%=test-%)

.PHONY: test $(SUBDIRS) $(TESTDIRS)

all: $(SUBDIRS)

test: $(TESTDIRS)

$(SUBDIRS):
   CC=$(CC) CFLAGS='$(CFLAGS)' LDFLAGS='$(LDFLAGS)' $(MAKE) all -C $@

$(TESTDIRS):
   $(eval TARGETDIR := $(@:test-%=%))
   $(eval TESTSRC := $(TARGETDIR)test.cpp)
   @echo "$(wildcard $(TESTSRC))" # <-- prints subproj{A,B}/test.cpp if it
exists -> this is working
ifneq ("$(wildcard $(TESTSRC))","")
   @#file exists --> but even if the test src exists, this will never be
reached
   CC=$(CC) CFLAGS='$(CFLAGS)' LDFLAGS='$(LDFLAGS)' $(MAKE) test -C
$(TARGETDIR)
else
   @echo "[i] $(TARGETDIR) has no tests..."
endif

Can you explain, why this shouldn't work? Is this a bug or only a fail in
Makefile logic?

Best regards and grml,

Sedrubal
___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make
___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


ifeq and ifneq not working

2016-04-23 Thread Sedrubal
Hi,

I'm not sure but I think I found a bug in ifeq and ifneq:

My project structure is like this:

$ tree
.
├── Makefile
├── subprojA
│   ├── src.cpp
│   ├── Makefile
│   └── test.cpp
└── subprojA
├── src.cpp
├── Makefile
└── test.cpp

The upper Makefile should run `make test` for each sub project if "test.cpp" is 
in this folder.

My Makefile is like this:

SUBDIRS := $(wildcard */)
TESTDIRS:= $(SUBDIRS:%=test-%)

.PHONY: test $(SUBDIRS) $(TESTDIRS)

all: $(SUBDIRS)

test: $(TESTDIRS)

$(SUBDIRS):
CC=$(CC) CFLAGS='$(CFLAGS)' LDFLAGS='$(LDFLAGS)' $(MAKE) all -C $@

$(TESTDIRS):
$(eval TARGETDIR := $(@:test-%=%))
$(eval TESTSRC := $(TARGETDIR)test.cpp)
@echo "$(wildcard $(TESTSRC))" # <-- prints subproj{A,B}/test.cpp if it 
exists -> this is working
ifneq ("$(wildcard $(TESTSRC))","")
@#file exists --> but even if the test src exists, this will never be 
reached
CC=$(CC) CFLAGS='$(CFLAGS)' LDFLAGS='$(LDFLAGS)' $(MAKE) test -C 
$(TARGETDIR)
else
@echo "[i] $(TARGETDIR) has no tests..."
endif

Can you explain, why this shouldn't work? Is this a bug or only a fail in 
Makefile logic?

Best regards and grml,

Sedrubal

signature.asc
Description: This is a digitally signed message part.
___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make