Skip to content
  • Rasmus Villemoes's avatar
    Kbuild: fix # escaping in .cmd files for future Make · 9564a8cf
    Rasmus Villemoes authored
    I tried building using a freshly built Make (4.2.1-69-g8a731d1), but
    already the objtool build broke with
    
    orc_dump.c: In function ‘orc_dump’:
    orc_dump.c:106:2: error: ‘elf_getshnum’ is deprecated [-Werror=deprecated-declarations]
      if (elf_getshdrnum(elf, &nr_sections)) {
    
    Turns out that with that new Make, the backslash was not removed, so cpp
    didn't see a #include directive, grep found nothing, and
    -DLIBELF_USE_DEPRECATED was wrongly put in CFLAGS.
    
    Now, that new Make behaviour is documented in their NEWS file:
    
      * WARNING: Backward-incompatibility!
        Number signs (#) appearing inside a macro reference or function invocation
        no longer introduce comments and should not be escaped with backslashes:
        thus a call such as:
          foo := $(shell echo '#')
        is legal.  Previously the number sign needed to be escaped, for example:
          foo := $(shell echo '\#')
        Now this latter will resolve to "\#".  If you want to write makefiles
        ...
    9564a8cf