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

Re: Minor portability issues + fixes

From
Jeff King <peff@peff.net>
Date
May 22, 2020, 20:03 UTC
Message-ID
<20200522200300.GA2160187@coredump.intra.peff.net>
In-Reply-To
<86f751ac-b7c1-43fd-ada5-a8e2e9c4ebc9@www.fastmail.com>
On Thu, May 21, 2020 at 12:29:18AM -0400, Daniel Richard G. wrote:
Show 20 quoted lines
> > So probably we'd want something like (in this order):
> > 
> >   - NEEDS_EXPLICIT_STDINT gets passed from the Makefile into the
> >     compiler via -D, which then triggers stdint.h being included
> >     unconditionally in git-compat-util.h
> > 
> >   - optionally set that in config.mak.uname for AIX (checking uname_R
> >     since it sounds like only old versions need it)
> > 
> >   - add an autoconf rule that sets it, either strictly (when a
> >     test-program decides it's needed) or loosely (when we see that it's
> >     available at all)
> > 
> > Even just the first one would let you build by setting the knob
> > manually; the rest is gravy on top, if you or somebody else chooses to
> > do it.
> 
> Hmm... that's a fairly specific knob, which I would think is less than
> ideal. The rest is reasonable, but would have to be written in terms
> of the knob.

Yeah, it is. I do wonder if just setting the existing NO_INTTYPES_H is a simpler solution for your case (since it sounds like that works). If you want to tweak the knob for older AIX in config.mak.uname, that would be fine (or if you think other people aren't likely to be building on the platform, maybe tweak your own "make" invocation and let this conversation serve to document for anybody else).

Show 24 quoted lines
> > but it would be nice if the Makefile handled this correctly. It looks
> > like CC_LD_DYNPATH gets used in a lot of places, so I suspect we'd
> > want a Makefile function to help out. Something like:
> > 
> >   # usage: $(call linker_lib,PATH)
> >   # Create linker args for looking for libraries in PATH at both link-time
> >   # and run-time.
> >   linker_lib = -L$1 $(if $(CC_LD_DYNPATH),$(CC_LD_DYNPATH)$1)
> > 
> > which would allow:
> > 
> >   EXTLIBS += $(call linker_lib,$(LIBPCREDIR)/$(lib))
> > 
> > etc. This would be our first foray into Makefile functions, but I think
> > we've determined that most platforms have a recent enough GNU make for
> > it to be OK (and we already require GNU make).
> 
> Why not just a variable to wrap the conditional? Something like
> 
>     CC_LD_DYNPATH_flag = $(if $(CC_LD_DYNPATH),$(CC_LD_DYNPATH),-L)
> 
>     ...
> 
>     EXTLIBS += -L$(ZLIB_PATH)/$(lib) $(CC_LD_DYNPATH_flag)$(ZLIB_PATH)/$(lib)

I was trying to actually remove the argument, rather than turn it into a duplicate "-L". But you're probably right that it's not worth the effort.

I think we could just normalize an empty CC_LD_DYNPATH to "-L" in the same variable, and then we wouldn't even have to change the sites which reference it.

-Peff
Previous: Daniel Richard G.Next: Carlo Marcelo Arenas Belón
Message 6 of 8 in “Minor portability issues + fixes”
  1. Daniel Richard G.May 19, 2020
  2. Jeff KingMay 19, 2020
  3. Daniel Richard G.May 19, 2020
  4. Jeff KingMay 20, 2020
  5. Daniel Richard G.May 21, 2020
  6. Jeff KingMay 22, 2020
  7. Carlo Marcelo Arenas BelónMay 19, 2020
  8. Daniel Richard G.May 19, 2020

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.