Re: Decouple C++ support in Meson's PGXS from LLVM enablement
| От | Josef Šimánek |
|---|---|
| Тема | Re: Decouple C++ support in Meson's PGXS from LLVM enablement |
| Дата | |
| Msg-id | CAFp7QwrzNNQM7Hh-q5wVoDC53x_wRxJRW2Nd5AsDG7DaVt-tcw@mail.gmail.com обсуждение исходный текст |
| Ответ на | Decouple C++ support in Meson's PGXS from LLVM enablement ("Tristan Partin" <tristan@partin.io>) |
| Список | 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 по дате отправления: