postgres.git / summary / log / commit / refs

commit    fc358af65e2a366012804eecb24a319335b80229
Author:   Andres Freund <andres@anarazel.de>
Date:     Fri Jul 17 15:23:18 2026 +0000
First released in: 16.15, 17.11, 18.6

    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 533af31dd04..bafeeff2a68 100644 --- a/meson.build +++ b/meson.build @@ -1993,6 +1993,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: ee1cffbb80a3]