Package: make
Version: 4.3-4
Severity: important
X-Debbugs-Cc: d.caviedes.voulli...@fz-juelich.de

Dear Maintainer,

Here is a minimal (Makefile.test) example to reproduce the problem,
derived from a complex build of Kokkos on a system with Make4.3-4


TMP_FILE=test.tmp
append_header = $(shell echo $1 >> $(TMP_FILE))

tmp := $(shell echo '\#if !defined(MYMACRO)' > $(TMP_FILE))
tmp := $(call append_header,'\#error "Do not include"')


Running 
make -f Makefile.test

produces a test.tmp file with the following content


\#if !defined(MYMACRO)
\#error "Do not include"


The expected behaviour should have no \ before #. 

I edited one line in Makefile.test, removing the \

tmp := $(shell echo '#if !defined(MYMACRO)' > $(TMP_FILE))

and ran it again. This should produce an error, as the # would be
interpreted as comment. It produces no error. The content of test.tmp is
now

#if !defined(MYMACRO)
\#error "Do not include"

Tests under Make4.2.1 and Make4.1 have no issues and behave as expected.



-- System Information:
Debian Release: bullseye/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 5.9.0-3-amd64 (SMP w/8 CPU threads)
Kernel taint flags: TAINT_WARN
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_US:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages make depends on:
ii  libc6  2.31-4

make recommends no packages.

Versions of packages make suggests:
pn  make-doc  <none>

-- no debconf information

Reply via email to