Skip to content
  • Brad King's avatar
    Makefile: Support directory names containing '=' (#12934) · ee6c1b8a
    Brad King authored
    Since commit c8ef6430 (Allow directory names containing '=' and warn if
    necessary, 2012-02-06) we allow directories with '=' instead of
    rejecting them as was previously done since commit 8704525f (Reject
    directory names containing '=', 2011-01-14).  However, we did not warn
    in all cases that '=' may cause failure, such as when it appears on the
    right-hand side of a dependency line.
    
    Both commits above were made assuming that '=' cannot be escaped in Make
    syntax, but it can be achieved with a variable:
    
      EQUALS = =
      left$(EQUALS)side : right$(EQUALS)side
    
    Use this approach to escape '=' in dependency lines, thus supporting
    the character in paths.
    
    All our tests now pass when CMake is built in source and build trees
    both containing '=', except for the "OutOfSource" test.  It fails in
    its coverage of the obscure "OutOfBinary" test case where part of the
    build tree is located outside the main build tree of the test.  The
    reason is that CMake must invoke a command like
    
      $(MAKE) -f /path/with=sign/build.make /path/with=sign/somefile
    
    but the make tool interprets the last argument as a variable assignment.
    This is an acceptable limitation, since the case is so obscure, in
    exchange for supporting '=' cleanly otherwise.
    ee6c1b8a