postgres.git / summary / log / commit / refs
commit 6a90e70415efe1137d58072331f9101e0a00a4e6
Author: Andres Freund <andres@anarazel.de>
Date: Fri Jul 17 15:23:18 2026 +0000
meson: Fix ccache issues when using precompiled headers with gcc
Unfortunately the combination of gcc, precompiled headers, ccache and meson
currently is not safe without further options. The dependencies emitted by gcc
are insufficient to trigger rebuilds when headers "below" the precompiled
headers are changed. Whether that's a ccache, gcc or meson bug is
debatable. Luckily gcc's -fpch-deps option fixes the issue.
This problem occasionally leads to build failures, e.g. if only c.h,
postgres.h or pg_config_manual.h change. That's e.g. the case when creating a
new major version branch.
Reviewed-by: Nazir Bilal Yavuz <byavuz81@gmail.com>
Reviewed-by: Jelte Fennema-Nio <postgres@jeltef.nl>
Discussion: https://postgr.es/m/CAN55FZ0tqR6Xz%3DiVFLc1BBoLOEHU775ARhcGYwggHA3XLA%3DoQg%40mail.gmail.com
Discussion: https://postgr.es/m/CA+hUKG+s7Yvt0PUnSQUEjCjysV-7-51n9B1h468Le3VJi0x4ZQ@mail.gmail.com
Discussion: https://postgr.es/m/phsrssp75npoyalqsolcd7fmnmlbzbmquc2p7w7mqjlw7432jk@bzskz3luyjvb
Discussion: https://github.com/ccache/ccache/issues/1686
Backpatch-through: 16, where meson support was added
meson.build | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/meson.build b/meson.build
index 1a807981e11..d4986ef9a23 100644
--- a/meson.build
+++ b/meson.build
@@ -2200,6 +2200,12 @@ common_functional_flags = [
# Disable optimizations that assume no overflow; needed for gcc 4.3+
'-fwrapv',
'-fexcess-precision=standard',
+ # Without -fpch-deps gcc emits dependencies that are insufficient for ccache
+ # to trigger a rebuild when the precompiled header changes. We could make
+ # this depend on using gcc and precompiled headers being enabled, but that's
+ # probably not worth it. See also
+ # https://github.com/ccache/ccache/issues/1686
+ '-fpch-deps',
]
cflags += cc.get_supported_arguments(common_functional_flags)
[parent: 5ccbcbdbb7df]