Important: This does not break builds of ddrescue.

But it is at least an interesting observation:

$ ../src/ddrescue-1.28/configure ...OPTIONS...

$ make --version
GNU Make 4.4.1
Built for x86_64-pc-cygwin

$ make -n foobar
g++  ...OPTIONS... -c -o foobar.o
cc   foobar.o   -o foobar
rm foobar.o

With from 1.27 the result is as expected:

$ make -n foobar
make: *** No rule to make target 'foobar'.  Stop.

The root of the problem is this new rule in

# prevent 'make' from trying to remake source files
%.h : ;

I don't know why the above happens if this rule is present. Bug in GNU make itself?

I found this during test packaging for Cygwin using its packaging support tool cygport and the existing ddrescue.cygport script. The script uses the default 'src_install' recipe of cygport which does the following:

        #  Runs 'make install' (or 'make install/fast' in CMake packages) ...
        if $(make -n -s install/fast &> /dev/null)
        make ... ${inst_target} DESTDIR=...

This fails with new No problem in this case, as I could add a custom recipe simply running "make install DESTDIR=...".


Reply via email to