Skip to content
  • James Johnston's avatar
    Embarcadero: Run at most one linker invocation at a time (#15620) · 078b60f0
    James Johnston authored and Brad King's avatar Brad King committed
    At least some versions (e.g. C++ Builder 5) of the bcc32 linker are known to
    write temporary files with a constant name to the current directory (e.g.
    "turboc.$ln").  (This can be verified by using Process Monitor to watch the
    file writes that bcc32 / ilink32 / implib make).  This causes problems with
    some generators that keep a constant current directory and run concurrent
    linkers.
    
    For example, the Ninja generator, by default, always has the current directory
    set to the top of the build tree - resulting in conflicts between the linkers
    that are simultaneously trying to write to "turboc.$ln".  Symptoms include
    direct errors regarding the "turboc.$ln" file, or later build steps failing due
    to corrupted output from previous links that happened to link "successfully."
    
    This is not a problem for the Borland Makefiles generator which does not
    run jobs in parallel.  For the Ninja generator, work around this problem
    by using a link job pool of size 1.
    078b60f0