• Tom Lane's avatar
    Absorb -D_USE_32BIT_TIME_T switch from Perl, if relevant. · 5a5c2fec
    Tom Lane authored
    Commit 3c163a7f's original choice to ignore all #define symbols whose
    names begin with underscore turns out to be too simplistic.  On Windows,
    some Perl installations are built with -D_USE_32BIT_TIME_T, and we must
    absorb that or we get the wrong result for sizeof(PerlInterpreter).
    
    This effectively re-reverts commit ef58b87d, which injected that symbol
    in a hacky way, making it apply to all of Postgres not just PL/Perl.
    More significantly, it did so on *all* 32-bit Windows builds, even when
    the Perl build to be used did not select this option; so that it fails
    to work properly with some newer Perl builds.
    
    By making this change, we would be introducing an ABI break in 32-bit
    Windows builds; but fortunately we have not used type time_t in any
    exported Postgres APIs in a long time.  So it should be OK, both for
    PL/Perl itself and for third-party extensions, if an extension library
    is built with a different _USE_32BIT_TIME_T setting than the core code.
    
    Patch by me, based on research by Ashutosh Sharma and Robert Haas.
    Back-patch to all supported branches, as commit 3c163a7f was.
    
    Discussion: https://postgr.es/m/CANFyU97OVQ3+Mzfmt3MhuUm5NwPU=-FtbNH5Eb7nZL9ua8=rcA@mail.gmail.com
    5a5c2fec
perl.m4 4.12 KB