Re: Decouple C++ support in Meson's PGXS from LLVM enablement - Mailing list pgsql-hackers

From Josef Šimánek
Subject Re: Decouple C++ support in Meson's PGXS from LLVM enablement
Date
Msg-id CAFp7QwrzNNQM7Hh-q5wVoDC53x_wRxJRW2Nd5AsDG7DaVt-tcw@mail.gmail.com
Whole thread Raw
In response to Decouple C++ support in Meson's PGXS from LLVM enablement  ("Tristan Partin" <tristan@partin.io>)
List pgsql-hackers
ne 2. 11. 2025 v 17:21 odesílatel Tristan Partin <tristan@partin.io> napsal:
>
> Howdy folks,
>
> While playing around with pg_duckdb[0], a Postgres extension written in
> C++ which uses PGXS, I came across a strange build error:
>
> std=c++17  -Wno-sign-compare...
> /bin/sh: line 1: -Wno-sign-compare: command not found
>
> I was very confused by the error, but reading the command line, it made
> sense. After talking to Jelte off-list, he told me to try a Postgres
> installation that had been built with autotools. Today, I finally had
> a chance to try that tip, and building pg_duckdb succeeded.
>
> I spent some time exploring the Meson build a bit, and I realized that
> C++ support in PGXS is tied to LLVM enablement. Checking the autotools
> build in the configure.ac script indicates that that is not the case for
> it.
>
> On master, C++ support looks like:
>
> llvmopt = get_option('llvm')
> llvm = not_found_dep
> if add_languages('cpp', required: llvmopt, native: false)
>   llvm = dependency('llvm', version: '>=14', method: 'config-tool', required: llvmopt)
>     if llvm.found()
>
>       cdata.set('USE_LLVM', 1)
>
>       cpp = meson.get_compiler('cpp')
>
> By default, the `llvm` option is disabled, which Meson takes to mean,
> "do not check for C++ support". Thusly, add_languages() returns false.
> In addition, every check for adding to cxxflags, et. al. is gated on
> llvm.found(), which is always false for the `not_found_dep`. All this
> considered, the Makefile.global of a Postgres build roughly looked like:
>
> CXX =
> CXXFLAGS =
> ...

Did local build and review. I can confirm it detects CXX properly with
llvm disabled. Tested with

meson setup "$BUILD_DIR" \
    --prefix="$INSTALL_DIR" \
    --buildtype=debug \
    -Dcassert=true \
    -Dllvm=disabled

pre-patch (resulting into empty CXX) and post-patch (properly assigned
"ccache c++" to CXX).

> This then accounts for the original pg_duckdb command line looking the
> way that it did.
>
> Attached is a patch which decouples C++ support in PGXS from LLVM for
> a Meson-compiled Postgres.
>
> [0]: https://github.com/duckdb/pg_duckdb
>
> --
> Tristan Partin
> Neon (https://neon.tech)



pgsql-hackers by date:

Previous
From: Bryan Green
Date:
Subject: Re: C nitpick about pgwin32_dispatch_queued_signals()
Next
From: "Haiyang Li"
Date:
Subject: [PATCH] Add a guc parameter to control limit clause adjust path cost.