meson vs. extension builds

From: Robert Haas <robertmhaas(at)gmail(dot)com>
To: "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: meson vs. extension builds
Date: 2024-11-05 17:30:42
Message-ID: CA+Tgmob9W=jiLF6-CJw3N+v2WwjpaEi+6CijjQL7EbFVuisSVQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

This issue has been bugging me for a while but I haven't gotten around
to reporting it until now. Apologies if this is a duplicate report.
When I try to build an extension such as pg_catcheck against a meson
build, it does not work. If I do the same thing with a configure-based
build, it does work. Here's the failure:

ccache clang -isysroot
/Library/Developer/CommandLineTools/SDKs/MacOSX14.0.sdk
-fno-strict-aliasing -fwrapv -Wall -g -O2 -Wmissing-prototypes
-Wpointer-arith -Werror=vla -Werror=unguarded-availability-new
-Wendif-labels -Wmissing-format-attribute -Wcast-function-type
-Wformat-security -Wdeclaration-after-statement
-Wmissing-variable-declarations -Wno-unused-command-line-argument
-Wno-compound-token-split-by-macro
-I/Users/robert.haas/install/dev/include -I. -I./
-I/Users/robert.haas/install/dev/include/postgresql/server
-I/Users/robert.haas/install/dev/include/postgresql/internal -c -o
pg_catcheck.o pg_catcheck.c -MMD -MP -MF .deps/pg_catcheck.Po
In file included from pg_catcheck.c:22:
In file included from
/Users/robert.haas/install/dev/include/postgresql/server/postgres_fe.h:25:
/Users/robert.haas/install/dev/include/postgresql/server/c.h:78:10:
fatal error: 'libintl.h' file not found
#include <libintl.h>
^~~~~~~~~~~
1 error generated.
make: *** [pg_catcheck.o] Error 1

The problem is that libintl.h is in /opt/local/include. When I run
meson setup, I specify -Dextra_include_dirs=/opt/local/include
-Dextra_lib_dirs=/opt/local/lib. And correspondingly, when I use
configure, I use --with-libraries=/opt/local/lib
--with-includes=/opt/local/include. But it seems that the configure
settings automatically propagate through to where extension builds
also pick them up, and the meson settings don't. Consequently, I am
sad.

Taking a diff of the generated lib/postgresql/pgxs/src/Makefile.global
files, I see, inter alia, this:

240c240
< CPPFLAGS = -isysroot $(PG_SYSROOT) -I/opt/local/include/libxml2
-I/opt/local/include
---
> CPPFLAGS =
315c315
< LDFLAGS = $(LDFLAGS_INTERNAL) -isysroot $(PG_SYSROOT)
-L/opt/local/lib -L/opt/local/lib -Wl,-dead_strip_dylibs
---
> LDFLAGS = $(LDFLAGS_INTERNAL) -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.0.sdk -Wl,-no_warn_duplicate_libraries

Which is probably related.

--
Robert Haas
EDB: http://www.enterprisedb.com

Browse pgsql-hackers by date

  From Date Subject
Next Message Aleksander Alekseev 2024-11-05 17:35:31 Re: New function normal_rand_array function to contrib/tablefunc.
Previous Message Fujii Masao 2024-11-05 16:40:17 Re: index_delete_sort: Unnecessary variable "low" is used in heapam.c