Libbacktrace: Fix the use of newline in sed replacement
authorFrancois-Xavier Coudert <fxcoudert@gmail.com>
Tue, 28 Dec 2021 22:28:49 +0000 (23:28 +0100)
committerFrancois-Xavier Coudert <fxcoudert@gmail.com>
Tue, 28 Dec 2021 22:28:49 +0000 (23:28 +0100)
On non-ELF targets, the Makefile needs a newline inside the sed REPLACE
string. The way it is currently done fails with GNU Make < 4, but GCC
only requires "GNU make version 3.80 (or later)".

The portable solution is given in the autoconf manual:
https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Newlines-in-Make-Rules.html

libbacktrace/ChangeLog:

PR libbacktrace/103822

* Makefile.am: Fix newline.
* Makefile.in: Regenerate.

libbacktrace/Makefile.am
libbacktrace/Makefile.in

index 8874f41..d200e3a 100644 (file)
@@ -145,18 +145,18 @@ endif HAVE_OBJCOPY_DEBUGLINK
 endif HAVE_ELF
 
 elf_%.c: elf.c
+       nlinit=`echo 'nl="'; echo '"'`; eval "$$nlinit"; \
        SEARCH='#error "Unknown BACKTRACE_ELF_SIZE"'; \
-       REPLACE='#undef BACKTRACE_ELF_SIZE\
-       #define BACKTRACE_ELF_SIZE'; \
+       REPLACE="#undef BACKTRACE_ELF_SIZE\\$${nl}#define BACKTRACE_ELF_SIZE"; \
        $(SED) "s/^$$SEARCH\$$/$$REPLACE $*/" \
                $< \
                > $@.tmp
        mv $@.tmp $@
 
 xcoff_%.c: xcoff.c
+       nlinit=`echo 'nl="'; echo '"'`; eval "$$nlinit"; \
        SEARCH='#error "Unknown BACKTRACE_XCOFF_SIZE"'; \
-       REPLACE='#undef BACKTRACE_XCOFF_SIZE\
-       #define BACKTRACE_XCOFF_SIZE'; \
+       REPLACE="#undef BACKTRACE_XCOFF_SIZE\\$${nl}#define BACKTRACE_XCOFF_SIZE"; \
        $(SED) "s/^$$SEARCH\$$/$$REPLACE $*/" \
                $< \
                > $@.tmp
index 2ba8dfa..08cdd21 100644 (file)
@@ -2408,18 +2408,18 @@ uninstall-am:
 @HAVE_ELF_TRUE@@HAVE_OBJCOPY_DEBUGLINK_TRUE@@NATIVE_TRUE@      mv $@.tmp $@
 
 @NATIVE_TRUE@elf_%.c: elf.c
+@NATIVE_TRUE@  nlinit=`echo 'nl="'; echo '"'`; eval "$$nlinit"; \
 @NATIVE_TRUE@  SEARCH='#error "Unknown BACKTRACE_ELF_SIZE"'; \
-@NATIVE_TRUE@  REPLACE='#undef BACKTRACE_ELF_SIZE\
-@NATIVE_TRUE@  #define BACKTRACE_ELF_SIZE'; \
+@NATIVE_TRUE@  REPLACE="#undef BACKTRACE_ELF_SIZE\\$${nl}#define BACKTRACE_ELF_SIZE"; \
 @NATIVE_TRUE@  $(SED) "s/^$$SEARCH\$$/$$REPLACE $*/" \
 @NATIVE_TRUE@          $< \
 @NATIVE_TRUE@          > $@.tmp
 @NATIVE_TRUE@  mv $@.tmp $@
 
 @NATIVE_TRUE@xcoff_%.c: xcoff.c
+@NATIVE_TRUE@  nlinit=`echo 'nl="'; echo '"'`; eval "$$nlinit"; \
 @NATIVE_TRUE@  SEARCH='#error "Unknown BACKTRACE_XCOFF_SIZE"'; \
-@NATIVE_TRUE@  REPLACE='#undef BACKTRACE_XCOFF_SIZE\
-@NATIVE_TRUE@  #define BACKTRACE_XCOFF_SIZE'; \
+@NATIVE_TRUE@  REPLACE="#undef BACKTRACE_XCOFF_SIZE\\$${nl}#define BACKTRACE_XCOFF_SIZE"; \
 @NATIVE_TRUE@  $(SED) "s/^$$SEARCH\$$/$$REPLACE $*/" \
 @NATIVE_TRUE@          $< \
 @NATIVE_TRUE@          > $@.tmp