mirror of
https://git.postgresql.org/git/postgresql.git
synced 2026-02-19 04:46:59 +08:00
Teach it to scrape -I and -D switches from CPPFLAGS in Makefile.global. This is useful for testing on, eg, FreeBSD, where you won't get far without "-I/usr/local/include". Also, expand the set of blacklisted-for-unportability atomics headers, based on noting that arch-x86.h fails to compile on an ARM box. The other ones I'd omitted seem to compile all right on architectures they don't belong to, but that's surely too shaky to rely on. Let's do like we did for the src/include/port/ headers, and ignore all except the variant that's pulled in by the arch-independent header.
src/tools/pginclude/README pginclude ========= These utilities help clean up #include file usage. They should be run in this order so that the include files have the proper includes before the C files are tested. pgfixinclude change #include's to <> or "" pgcompinclude [-v] report which #include files can not compile on their own pgrminclude [-v] remove extra #include's pgcheckdefines check for #ifdef tests on symbols defined in files that weren't included --- this is a necessary sanity check on pgrminclude pgdefine create macro calls for all defines in the file (used by the above routines) It is also a good idea to sort the pg-specific include files in alphabetic order. This is best done with a text editor. Typical usage order would be: pgfixinclude sort include references run multiple times: pgcompinclude pgrminclude /src/include pgrminclude / pgcheckdefines There is a complexity when modifying /src/include. If include file 1 includes file 2, and file 2 includes file 3, then when file 1 is processed, it needs only file 2, not file 3. However, if later, include file 2 is processed, and file 3 is not needed by file 2 and is removed, file 1 might then need to include file 3. For this reason, the pgcompinclude and pgrminclude /src/include steps must be run several times until all includes compile cleanly. Also, tests should be done with configure settings of --enable-cassert and EXEC_BACKEND on and off. It is also wise to test a WIN32 compile. Another tools that does a similar task is at: http://code.google.com/p/include-what-you-use/ An include file visualizer script is available at: http://archives.postgresql.org/pgsql-hackers/2011-09/msg00311.php