git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Build errors when building git on MacOS 11 (x86-64) and for M1 macs

From
Jeff King <peff@peff.net>
Date
Jun 10, 2021, 14:51 UTC
Message-ID
<YMIm+hqqeY2IjEW3@coredump.intra.peff.net>
In-Reply-To
<YMIjaytMYslKjK6z@coredump.intra.peff.net>
On Thu, Jun 10, 2021 at 10:36:27AM -0400, Jeff King wrote:
Show 19 quoted lines
> Most compilers put the directory of the source file at the start of the
> search path. E.g., gcc says under -I:
> 
>   1. For the quote form of the include directive, the directory of the
>      current file is searched first.
> 
> Which is why we need "-I." at all; we are finding "archive.h" from
> "builtin/*.c". I'm not sure what "current file" there means, or how
> portable it is. Is it the source file being filed, or the file
> containing the #include directive?
> 
> I'd hope it's consistently the latter. Otherwise "foo.h" which includes
> "bar.h" cannot be included as "../foo.h" (from builtin/foo.c) and as
> "foo.h" (from top-level foo.c).
> 
> If so, then yeah, using "../archive.h" (and dropping -I. entirely) would
> be an option. Which is nice, because it makes things less magical and
> more predictable (think what confusion we'd see if we introduced
> "archive.h" into builtin/ ourselves).

There's a related case, which is that within trace2/foo.c, we'd include trace2/foo.h. Without "-I.", the correct include there is just "foo.h".

So what was explicit actually becomes implicit. Here's a real example to make this file work without -I:

  diff --git a/trace2/tr2_tgt_perf.c b/trace2/tr2_tgt_perf.c
  index a8018f18cc..592c194ab4 100644
  --- a/trace2/tr2_tgt_perf.c
  +++ b/trace2/tr2_tgt_perf.c
  @@ -1,15 +1,15 @@
  -#include "cache.h"
  -#include "config.h"
  -#include "run-command.h"
  -#include "quote.h"
  -#include "version.h"
  -#include "json-writer.h"
  -#include "trace2/tr2_dst.h"
  -#include "trace2/tr2_sid.h"
  -#include "trace2/tr2_sysenv.h"
  -#include "trace2/tr2_tbuf.h"
  -#include "trace2/tr2_tgt.h"
  -#include "trace2/tr2_tls.h"
  +#include "../cache.h"
  +#include "../config.h"
  +#include "../run-command.h"
  +#include "../quote.h"
  +#include "../version.h"
  +#include "../json-writer.h"
  +#include "tr2_dst.h"
  +#include "tr2_sid.h"
  +#include "tr2_sysenv.h"
  +#include "tr2_tbuf.h"
  +#include "tr2_tgt.h"
  +#include "tr2_tls.h"

So I dunno. I had hoped it would be a strict readability improvement, but now I'm not so sure.

-Peff
Previous: Jeff King
Message 4 of 4 in “Re: Build errors when building git on MacOS 11 (x86-64) and for M1 macs”
  1. Ævar Arnfjörð BjarmasonJun 10, 2021
  2. Felipe ContrerasJun 10, 2021
  3. Jeff KingJun 10, 2021
  4. Jeff KingJun 10, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.