Re: [PATCH] Add an ldflags_sl meson build option

From: Peter Eisentraut <peter(at)eisentraut(dot)org>
To: "Matt Smith (matts3)" <matts3(at)cisco(dot)com>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: [PATCH] Add an ldflags_sl meson build option
Date: 2025-06-18 09:44:22
Message-ID: 18877695-3859-485e-95b2-2a93c1717d69@eisentraut.org
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 18.06.25 08:40, Matt Smith (matts3) wrote:
> Yes I understand what you're saying. I know Meson tries to set some of
> these flags. But I want the source of truth for my flags for each target
> type to be outside Meson.  Which Meson is not designed to do.
>
> When you're building many 3^rd  party deps all with different build
> systems and all trying to tweak flags here and there, it introduces much
> better consistency to specify "all targets of a certain type use this
> flag set".  Otherwise you end up having to write logic to filter flags
> per build system/package. And yes I realize we live in an imperfect
> world and packages such as postgres will in fact need to set project-
> specific flags, but this should be an exception.
>
> I have raised an issue on Meson itself: https://github.com/mesonbuild/
> meson/issues/14621 <https://github.com/mesonbuild/meson/issues/14621>
>
> Cmake has functionality whereby you can specify linker flags per target
> type and it will set them accordingly.  Meson doesn't have this type of
> feature and instead sets base flags itself across all targets.

Yeah, I see myself agreeing with the answers on that Meson issue. I
think this is just not how the tool was meant to be used.

> So it would be helpful if postgresql could "drill a hole" as you say to
> shared_library() flags because then at least those flags can be
> overrriden externally just for those targets.
>
> If you don't mind me asking - I assume ldflags_sl exists as a way for
> postgres internally to be able to set flags across all shared libs?

I think this is all legacy from makefiles. With makefiles there isn't a
clear boundary between what variables are internal and external. And at
some point someone thought that it would be useful to document the
LDFLAGS_SL variable as external. But I don't know why anyone would use
it. I can make up some ideas retrospectively, perhaps someone wanted to
play around with -fvisibility or -fPIE or stuff like that. But even
then I would wonder whether it has the right granularity, since you
might need different flags for shared modules versus shared libraries.

That's why I asked you if you had a specific use case for an option to
pass. And then we could have thought about a way to expose that option
in a dedicated way perhaps. But I think this idea that you want to
control all the options yourself is just not the way this is meant to be
working.

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Bertrand Drouvot 2025-06-18 09:46:51 Re: confusing message in check_tuple
Previous Message Bertrand Drouvot 2025-06-18 09:09:12 Re: POC: enable logical decoding when wal_level = 'replica' without a server restart