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

Re: ./configure fails to link test program due to missing dependencies

From
Patrick Steinhardt <ps@pks.im>
Date
Sep 16, 2024, 07:50 UTC
Message-ID
<ZufjWR6AJM-DIWPR@pks.im>
In-Reply-To
<xmqqldzsrhyp.fsf@gitster.g>
On Sun, Sep 15, 2024 at 09:37:34AM -0700, Junio C Hamano wrote:
Show 15 quoted lines
> Henrik Holst <henrik.holst@outlook.com> writes:
> 
> > If I set LDFLAGS to whatever pkg-config --libs libcurl says on my system (actually: -lcurl -lssl -lcrypto -lzstd -lbrotlidec -lz) then it compiles just fine. If I add LDFLAGS to the configure environment it will accept that test, and then detect, as expected, the pkg-config settings for libcurl.
> >
> > Should not ./configure FIRST check for a pkg-config environment without assuming that even the most trivial curl programs should compile without any additional dependencies like zstd etc?
> 
> Looking at configure.ac, pkg-config is not used for any package.
> Specifically for curl, it seems that "curl-config --libs" is used.
> 
> Presumably the reason behind the current behaviour is combination of
> (1) ./configure is an after-thought in the build infrastructure for
> this project, (2) pkg-config was not ubiquitous back when autoconf
> support was written for this project, and (3) nobody considered
> "upgrading" our use of "curl-config" and our manual detection of
> dependency detection for other libraries to just use "pkg-config".

I sometimes wonder whether we should move on and discard one of the three build systems we have: plain GNU Make, autoconf and CMake. And from these three I'd rather want to throw the autoconf-based thing away:

  - The Makefile is probably what most people use, so throwing it out is
    a no-go right now.
  - CMake is really useful because it has support for IDEs and
    alternatives to GNU Make like Ninja, which builds Git way faster
    than Makefiles. It also has support for out-of-tree builds, which I
    find rather useful.

So is there a path forward to move CMake support out of contrib/, make it an officially supported way to build Git and then throw away the autoconf-based infra? I'm not the biggest fan of CMake myself and very much prefer Meson, but we already have it wired up and thus I'm trying to be at least a bit pragmatic.

(I'd honestly prefer to end up with a single build system, but also throwing our Makefiles out would be a step too far at this point in time.)

Patrick
Previous: brian m. carlsonNext: Phillip Wood
Message 4 of 31 in “./configure fails to link test program due to missing dependencies”
  1. Henrik HolstSep 14, 2024
  2. Junio C HamanoSep 15, 2024
  3. brian m. carlsonSep 15, 2024
  4. Patrick SteinhardtSep 16, 2024
  5. Phillip WoodSep 18, 2024
  6. Junio C HamanoSep 18, 2024
  7. Patrick SteinhardtSep 24, 2024
  8. Eli SchwartzSep 24, 2024
  9. Paul SmithSep 24, 2024
  10. Patrick SteinhardtSep 25, 2024
  11. Eli SchwartzSep 25, 2024
  12. Patrick SteinhardtSep 25, 2024
  13. Phillip WoodSep 26, 2024
  14. Patrick SteinhardtSep 26, 2024
  15. Phillip WoodSep 27, 2024
  16. Eli SchwartzSep 26, 2024
  17. phillip.wood123@gmail.comSep 27, 2024
  18. Junio C HamanoSep 26, 2024
  19. Johannes SchindelinSep 29, 2024
  20. Eli SchwartzSep 29, 2024
  21. Phillip WoodSep 30, 2024
  22. Eli SchwartzSep 30, 2024
  23. Junio C HamanoSep 30, 2024
  24. Johannes SchindelinSep 30, 2024
  25. Patrick SteinhardtSep 25, 2024
  26. Patrick SteinhardtSep 25, 2024
  27. Junio C HamanoSep 24, 2024
  28. Paul SmithSep 25, 2024
  29. Eli SchwartzSep 26, 2024
  30. Paul SmithSep 26, 2024
  31. Eli SchwartzSep 24, 2024

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.