Decouple C++ support in Meson's PGXS from LLVM enablement
От | Tristan Partin |
---|---|
Тема | Decouple C++ support in Meson's PGXS from LLVM enablement |
Дата | |
Msg-id | D98JHQF7H2A8.VSE3I4CJBTAB@partin.io обсуждение исходный текст |
Ответы |
Re: Decouple C++ support in Meson's PGXS from LLVM enablement
|
Список | pgsql-hackers |
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 = ... 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 по дате отправления: