postgresql/doc/src/sgml
Andres Freund e6927270cd meson: Add initial version of meson based build system
Autoconf is showing its age, fewer and fewer contributors know how to wrangle
it. Recursive make has a lot of hard to resolve dependency issues and slow
incremental rebuilds. Our home-grown MSVC build system is hard to maintain for
developers not using Windows and runs tests serially. While these and other
issues could individually be addressed with incremental improvements, together
they seem best addressed by moving to a more modern build system.

After evaluating different build system choices, we chose to use meson, to a
good degree based on the adoption by other open source projects.

We decided that it's more realistic to commit a relatively early version of
the new build system and mature it in tree.

This commit adds an initial version of a meson based build system. It supports
building postgres on at least AIX, FreeBSD, Linux, macOS, NetBSD, OpenBSD,
Solaris and Windows (however only gcc is supported on aix, solaris). For
Windows/MSVC postgres can now be built with ninja (faster, particularly for
incremental builds) and msbuild (supporting the visual studio GUI, but
building slower).

Several aspects (e.g. Windows rc file generation, PGXS compatibility, LLVM
bitcode generation, documentation adjustments) are done in subsequent commits
requiring further review. Other aspects (e.g. not installing test-only
extensions) are not yet addressed.

When building on Windows with msbuild, builds are slower when using a visual
studio version older than 2019, because those versions do not support
MultiToolTask, required by meson for intra-target parallelism.

The plan is to remove the MSVC specific build system in src/tools/msvc soon
after reaching feature parity. However, we're not planning to remove the
autoconf/make build system in the near future. Likely we're going to keep at
least the parts required for PGXS to keep working around until all supported
versions build with meson.

Some initial help for postgres developers is at
https://wiki.postgresql.org/wiki/Meson

With contributions from Thomas Munro, John Naylor, Stone Tickle and others.

Author: Andres Freund <andres@anarazel.de>
Author: Nazir Bilal Yavuz <byavuz81@gmail.com>
Author: Peter Eisentraut <peter@eisentraut.org>
Reviewed-By: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
Discussion: https://postgr.es/m/20211012083721.hvixq4pnh2pixr3j@alap3.anarazel.de
2022-09-21 22:37:17 -07:00
..
images Replace genetic algorithm ASCII-art with a real figure 2019-08-19 12:05:38 -04:00
keywords Revert SQL/JSON features 2022-09-01 17:07:14 -04:00
ref docs: Fix snapshot name in SET TRANSACTION docs. 2022-09-22 12:54:26 +09:00
.gitignore Update .gitignore 2022-09-14 21:56:01 +02:00
Makefile Run xmllint validation only once 2022-09-14 18:10:18 +02:00
README.links doc: mention <link> can be inside of <command>, but not <xref> 2021-04-22 16:01:17 -04:00
acronyms.sgml doc: add section about heap-only tuples (HOT) 2022-08-12 15:05:13 -04:00
adminpack.sgml doc: Improve some markups and some wording around archiving modules 2022-08-19 10:00:12 +09:00
advanced.sgml Remove trailing whitespace from *.sgml files. 2022-04-20 11:04:49 -04:00
amcheck.sgml doc: Standardize capitalization of term "hot standby"/"Hot Standby" 2022-03-11 15:16:21 +09:00
appendix-obsolete-default-roles.sgml Fix file references inside some SGML comments 2022-06-20 14:33:41 +02:00
appendix-obsolete-pgreceivexlog.sgml Fix file references inside some SGML comments 2022-06-20 14:33:41 +02:00
appendix-obsolete-pgresetxlog.sgml Fix file references inside some SGML comments 2022-06-20 14:33:41 +02:00
appendix-obsolete-pgxlogdump.sgml Fix file references inside some SGML comments 2022-06-20 14:33:41 +02:00
appendix-obsolete-recovery-config.sgml Fix file references inside some SGML comments 2022-06-20 14:33:41 +02:00
appendix-obsolete.sgml Fix file references inside some SGML comments 2022-06-20 14:33:41 +02:00
arch-dev.sgml doc: Properly punctuate "etc." 2022-05-19 09:42:17 +02:00
archive-modules.sgml doc: Improve some markups and some wording around archiving modules 2022-08-19 10:00:12 +09:00
array.sgml Doc: correct nitpicky mistakes in array_position/array_positions examples. 2020-06-25 13:28:30 -04:00
auth-delay.sgml doc: Do s/int/integer/ to describe the type of some GUC parameters 2022-06-17 09:03:07 +09:00
auto-explain.sgml autho_explain: Add GUC to log query parameters 2022-07-06 09:55:30 +09:00
backup-manifest.sgml Fix file references inside some SGML comments 2022-06-20 14:33:41 +02:00
backup.sgml Use the terminology "WAL file" not "log file" more consistently. 2022-09-14 18:40:58 -04:00
basebackup-to-shell.sgml doc: Improve some markups and some wording around archiving modules 2022-08-19 10:00:12 +09:00
basic-archive.sgml Allow archiving via loadable modules. 2022-02-03 14:05:02 -05:00
bgworker.sgml Add missing PGDLLEXPORT markings in contrib/pg_prewarm. 2022-07-27 12:00:10 -04:00
biblio.sgml doc: Remove link to JSON support in the SQL specification 2022-01-06 11:41:09 +09:00
bki.sgml doc: Properly punctuate "etc." 2022-05-19 09:42:17 +02:00
bloom.sgml Remove trailing whitespace from *.sgml files. 2022-04-20 11:04:49 -04:00
brin.sgml Fix assorted doc typos 2022-08-04 16:09:15 +07:00
btree-gin.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
btree-gist.sgml Add bool to btree_gist documentation 2021-12-11 04:59:15 +01:00
btree.sgml doc: add section about heap-only tuples (HOT) 2022-08-12 15:05:13 -04:00
catalogs.sgml Allow grant-level control of role inheritance behavior. 2022-08-25 10:06:02 -04:00
charset.sgml Remove trailing whitespace from *.sgml files. 2022-04-20 11:04:49 -04:00
citext.sgml Add deduplication to nbtree. 2020-02-26 13:05:30 -08:00
client-auth.sgml Remove configure probe for sockaddr_in6 and require AF_INET6. 2022-08-26 10:18:30 +12:00
color.sgml Add color support for new frontend detail/hint messages 2022-04-11 17:36:44 +02:00
config.sgml Use the terminology "WAL file" not "log file" more consistently. 2022-09-14 18:40:58 -04:00
contrib-spi.sgml Remove timetravel extension. 2018-10-11 11:43:56 -07:00
contrib.sgml Add contrib/pg_walinspect. 2022-04-08 00:26:44 -07:00
cube.sgml Remove deprecated containment operators for contrib types. 2021-03-05 10:45:41 -05:00
custom-rmgr.sgml Fix some trailing whitespace in documentation files 2022-04-16 09:05:07 +02:00
custom-scan.sgml Allow CustomScan providers to say whether they support projections. 2021-07-06 18:10:20 -04:00
datatype.sgml doc: document the maximum char/varchar length value 2022-08-31 19:43:06 -04:00
datetime.sgml doc: Properly punctuate "etc." 2022-05-19 09:42:17 +02:00
dblink.sgml Remove trailing whitespace from *.sgml files. 2022-04-20 11:04:49 -04:00
ddl.sgml Doc: clarify partitioned table limitations 2022-09-05 18:43:03 +12:00
dfunc.sgml Remove HP-UX port. 2022-07-08 14:05:05 +12:00
dict-int.sgml Add an "absval" parameter to allow contrib/dict_int to ignore signs. 2020-03-08 18:35:06 -04:00
dict-xsyn.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
diskusage.sgml Fix many typos and inconsistencies 2019-07-01 10:00:23 +09:00
dml.sgml doc: Improve wording 2021-04-07 13:52:26 +02:00
docguide.sgml doc: Fix link to FreeBSD documentation project 2022-09-12 22:17:17 +02:00
earthdistance.sgml Doc: add a glossary entry for "domain". 2021-07-30 14:50:21 -04:00
ecpg.sgml doc: add documentation about ecpg Oracle-compatibility mode 2022-07-14 16:19:45 -04:00
errcodes.sgml Doc: remove now-redundant align specifications in colspecs. 2020-05-06 15:58:23 -04:00
event-trigger.sgml Allow event trigger table_rewrite for ALTER MATERIALIZED VIEW 2022-08-17 14:55:20 +09:00
extend.sgml In extensions, don't replace objects not belonging to the extension. 2022-08-08 11:12:31 -04:00
external-projects.sgml Update link for pllua 2020-10-19 13:48:00 +02:00
fdwhandler.sgml Remove trailing whitespace from *.sgml files. 2022-04-20 11:04:49 -04:00
features.sgml doc: Clean up title case use 2020-06-07 13:18:36 +02:00
file-fdw.sgml Add csvlog output for the new query_id value 2021-04-07 22:30:30 -04:00
filelist.sgml doc: move system views section to its own chapter 2022-07-14 16:07:12 -04:00
func.sgml doc: Fix parameter name for pg_create_logical_replication_slot() 2022-09-20 19:28:37 +09:00
fuzzystrmatch.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
generate-errcodes-table.pl Update copyright for 2022 2022-01-07 19:04:57 -05:00
generate-keywords-table.pl Update copyright for 2022 2022-01-07 19:04:57 -05:00
generic-wal.sgml Custom WAL Resource Managers. 2022-04-06 23:06:46 -07:00
geqo.sgml doc: Refresh more URLs in the docs 2020-07-18 22:43:35 +09:00
gin.sgml doc: Remove more notes about compatibilities with past versions 2020-12-01 16:32:26 +09:00
gist.sgml Doc: fix minor issues in GiST support function documentation. 2021-10-04 13:34:31 -04:00
glossary.sgml doc: Properly punctuate "etc." 2022-05-19 09:42:17 +02:00
hash.sgml Remove some trailing whitespace in documentation files 2022-01-27 18:31:01 +01:00
high-availability.sgml doc: clarify wording about phantom reads 2022-06-22 14:33:48 -04:00
history.sgml doc: Use proper em and en dashes 2019-10-25 20:39:41 +02:00
hstore.sgml Remove trailing whitespace from *.sgml files. 2022-04-20 11:04:49 -04:00
indexam.sgml doc: add section about heap-only tuples (HOT) 2022-08-12 15:05:13 -04:00
indices.sgml doc: mention "bloom" as a possible index access method 2022-08-31 22:35:09 -04:00
info.sgml Don't use SGML empty tags 2017-10-17 15:10:33 -04:00
information_schema.sgml Add UNIQUE null treatment option 2022-02-03 11:48:21 +01:00
install-binaries.sgml Expand installation documentation to cover binary installations 2020-10-06 14:15:32 +02:00
install-windows.sgml Bump minimum Perl version to 5.14 2022-09-14 12:37:04 +07:00
installation.sgml Bump minimum Perl version to 5.14 2022-09-14 12:37:04 +07:00
intagg.sgml Don't use SGML empty tags 2017-10-17 15:10:33 -04:00
intarray.sgml Doc: improve example for intarray's uniq() function. 2022-06-03 13:54:53 -04:00
intro.sgml doc: Refresh more URLs in the docs 2020-07-18 22:43:35 +09:00
isn.sgml Misc documentation fixes. 2020-10-19 19:28:54 +03:00
jit.sgml Doc: tweak examples to silence line-too-long PDF build warnings. 2020-05-14 18:13:08 -04:00
json.sgml doc: Fix inconsistent quotes in some jsonb fields 2022-07-11 10:56:17 +09:00
keywords.sgml Allow most keywords to be used as column labels without requiring AS. 2020-09-18 16:46:36 -04:00
legal.sgml Update copyright for 2022 2022-01-07 19:04:57 -05:00
libpq.sgml doc: Remove reference to tty libpq connstring param 2022-08-16 22:54:43 +02:00
limits.sgml Doc: mention limitation of the number of resultset columns 2022-06-01 12:44:45 +12:00
lo.sgml Doc: add a glossary entry for "domain". 2021-07-30 14:50:21 -04:00
lobj.sgml Prevent write operations on large objects in read-only transactions 2022-07-04 15:48:52 +09:00
logical-replication.sgml Message wording improvements 2022-09-16 16:39:26 +02:00
logicaldecoding.sgml Remove trailing whitespace from *.sgml files. 2022-04-20 11:04:49 -04:00
ltree.sgml plpython: Adjust docs after removal of Python 2 support. 2022-03-07 18:30:57 -08:00
maintenance.sgml doc: warn about security issues around log files 2022-08-12 12:02:21 -04:00
manage-ag.sgml Remove configure probes for symlink/readlink, and dead code. 2022-08-05 09:22:56 +12:00
meson.build meson: Add initial version of meson based build system 2022-09-21 22:37:17 -07:00
mk_feature_tables.pl Initial pgindent and pgperltidy run for v13. 2020-05-14 13:06:50 -04:00
monitoring.sgml doc: add section about heap-only tuples (HOT) 2022-08-12 15:05:13 -04:00
mvcc.sgml MERGE docs adjustments 2022-08-12 13:16:50 +02:00
nls.sgml doc: Add a note on PO editors 2022-08-17 23:41:56 +02:00
notation.sgml doc: clarify syntax notation, particularly parentheses 2022-02-02 21:53:52 -05:00
oid2name.sgml Doc: fix some description of environment variables with frontend tools 2020-03-09 10:53:22 +09:00
oldsnapshot.sgml Add new 'old_snapshot' contrib module. 2020-09-24 13:55:47 -04:00
pageinspect.sgml Remove trailing whitespace from *.sgml files. 2022-04-20 11:04:49 -04:00
parallel.sgml Remove trailing whitespace from *.sgml files. 2022-04-20 11:04:49 -04:00
passwordcheck.sgml doc: Update cracklib URL 2020-08-28 08:19:12 +02:00
perform.sgml doc: use wording "restore" instead of "reload" of dumps 2022-07-21 14:55:23 -04:00
pgbuffercache.sgml Use has_privs_for_roles for predefined role checks 2022-03-28 15:10:04 -04:00
pgcrypto.sgml doc: clarify that pgcrypto's gen_random_uuid calls core func. 2022-08-31 22:04:36 -04:00
pgfreespacemap.sgml Remove trailing whitespace from *.sgml files. 2022-04-20 11:04:49 -04:00
pgprewarm.sgml doc: add pg_prewarm example 2022-07-08 18:36:27 -04:00
pgrowlocks.sgml Use has_privs_for_roles for predefined role checks 2022-03-28 15:10:04 -04:00
pgstatstatements.sgml doc: Fix description of the JIT time fields in pg_stat_statements 2022-05-21 17:57:23 +09:00
pgstattuple.sgml Revert "Avoid the creation of the free space map for small heap relations". 2019-05-07 09:30:24 +05:30
pgsurgery.sgml Remove trailing whitespace from *.sgml files. 2022-04-20 11:04:49 -04:00
pgtrgm.sgml doc: Document pg_trgm being case-insensitive by default 2022-08-17 09:56:02 +02:00
pgvisibility.sgml Use has_privs_for_roles for predefined role checks 2022-03-28 15:10:04 -04:00
pgwalinspect.sgml Use float8 datatype for percentiles in pg_walinspect stat functions 2022-09-12 10:01:00 +02:00
planstats.sgml Remove trailing whitespace from *.sgml files. 2022-04-20 11:04:49 -04:00
plhandler.sgml doc: use wording "restore" instead of "reload" of dumps 2022-07-21 14:55:23 -04:00
plperl.sgml doc: Properly punctuate "etc." 2022-05-19 09:42:17 +02:00
plpgsql.sgml doc: Fix PL/pgSQL casing to be consistent 2022-09-08 09:56:50 +02:00
plpython.sgml plpython: Adjust docs after removal of Python 2 support. 2022-03-07 18:30:57 -08:00
pltcl.sgml doc: Properly punctuate "etc." 2022-05-19 09:42:17 +02:00
postgres-fdw.sgml doc: Properly punctuate "etc." 2022-05-19 09:42:17 +02:00
postgres.sgml doc: move system views section to its own chapter 2022-07-14 16:07:12 -04:00
problems.sgml Fix inconsistencies and typos in the tree 2019-07-22 10:01:50 +09:00
protocol.sgml Use the terminology "WAL file" not "log file" more consistently. 2022-09-14 18:40:58 -04:00
queries.sgml doc: clarify recursion internal behavior 2022-09-02 21:57:41 -04:00
query.sgml doc: use FILTER in aggregate example 2022-08-31 22:19:06 -04:00
rangetypes.sgml Revert 29854ee8d1 due to buildfarm failures 2021-06-15 21:44:40 +03:00
reference.sgml Add support for MERGE SQL command 2022-03-28 16:47:48 +02:00
regress.sgml Remove HP-UX port. 2022-07-08 14:05:05 +12:00
release-16.sgml Stamp HEAD as 16devel. 2022-06-30 11:26:40 -04:00
release.sgml Stamp HEAD as 16devel. 2022-06-30 11:26:40 -04:00
replication-origins.sgml Refer to replication origin roident as "ID" in user facing messages and docs 2022-08-18 08:57:13 +07:00
rowtypes.sgml Doc: add a glossary entry for "domain". 2021-07-30 14:50:21 -04:00
rules.sgml Remove trailing whitespace from *.sgml files. 2022-04-20 11:04:49 -04:00
runtime.sgml Fix typos. 2022-09-19 14:21:39 +05:30
seg.sgml Remove deprecated containment operators for contrib types. 2021-03-05 10:45:41 -05:00
sepgsql.sgml doc: Fix link to SELinux user guide in sepgsql page 2021-10-28 09:25:55 +09:00
sourcerepo.sgml doc: Clean up title case use 2019-09-08 10:27:29 +02:00
sources.sgml doc: Properly punctuate "etc." 2022-05-19 09:42:17 +02:00
spgist.sgml doc: Fix some typos and markups 2021-09-29 11:56:13 +09:00
spi.sgml Fix SPI's handling of errors during transaction commit. 2022-02-28 12:45:36 -05:00
sslinfo.sgml Introduce --with-ssl={openssl} as a configure option 2021-02-01 19:19:44 +09:00
standalone-install.xml Run xmllint validation only once 2022-09-14 18:10:18 +02:00
standalone-profile.xsl Remove unused chunk from standalone-profile.xsl 2021-10-30 12:38:14 +02:00
start.sgml Doc: update example connection-failure messages in the documentation. 2021-01-23 15:50:51 -05:00
storage.sgml doc: add section about heap-only tuples (HOT) 2022-08-12 15:05:13 -04:00
stylesheet-common.xsl Doc: re-re-revise markup for tables of functions. 2020-04-30 00:34:12 -04:00
stylesheet-fo.xsl Doc: reformat catalog/view description tables. 2020-05-13 23:03:39 -04:00
stylesheet-hh.xsl Fix XML namespace declarations 2022-02-15 11:13:49 +01:00
stylesheet-html-common.xsl docs: Work around bug in the docbook xsl stylesheets. 2022-02-15 13:52:40 -08:00
stylesheet-html-nochunk.xsl Fix XML namespace declarations 2022-02-15 11:13:49 +01:00
stylesheet-man.xsl doc: Improve man build speed 2018-02-28 09:26:36 -05:00
stylesheet-speedup-common.xsl doc: Further speed improvements for HTML XSLT build 2016-12-22 15:41:44 -05:00
stylesheet-speedup-xhtml.xsl doc: Further speed improvements for HTML XSLT build 2016-12-22 15:41:44 -05:00
stylesheet-text.xsl Fix XML namespace declarations 2022-02-15 11:13:49 +01:00
stylesheet.css Doc: reformat catalog/view description tables. 2020-05-13 23:03:39 -04:00
stylesheet.xsl Fix XML namespace declarations 2022-02-15 11:13:49 +01:00
syntax.sgml doc: Consistently spell case-insensitive 2022-08-17 10:05:03 +02:00
system-views.sgml Doc: improve explanation of when custom GUCs appear in pg_settings. 2022-09-10 16:42:24 -04:00
tableam.sgml Fix doc oversight for custom WAL resource managers. 2022-08-25 10:26:31 -07:00
tablefunc.sgml Use the correct article for abbreviations 2021-06-11 13:38:04 +12:00
tablesample-method.sgml Use the correct article for abbreviations 2021-06-11 13:38:04 +12:00
tcn.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
test-decoding.sgml Remove trailing whitespace from *.sgml files. 2022-04-20 11:04:49 -04:00
textsearch.sgml doc: use wording "restore" instead of "reload" of dumps 2022-07-21 14:55:23 -04:00
trigger.sgml Doc: Update struct Trigger definition. 2022-09-02 16:45:00 +09:00
tsm-system-rows.sgml Improve <xref> vs. <command> formatting in the documentation 2020-10-03 16:40:02 +02:00
tsm-system-time.sgml Improve <xref> vs. <command> formatting in the documentation 2020-10-03 16:40:02 +02:00
typeconv.sgml Use the correct article for abbreviations 2021-06-11 13:38:04 +12:00
unaccent.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
user-manag.sgml doc: Fix typo in user inheritance documentation 2022-08-31 13:32:52 +02:00
uuid-ossp.sgml Reject bogus output from uuid_create(3). 2022-09-09 12:41:36 -04:00
vacuumlo.sgml doc: remove xreflabels from commits 75fcdd2ae2 and 85af628da5 2020-06-11 18:19:25 -04:00
version.sgml.in meson: Add initial version of meson based build system 2022-09-21 22:37:17 -07:00
wal.sgml Use the terminology "WAL file" not "log file" more consistently. 2022-09-14 18:40:58 -04:00
xaggr.sgml Remove trailing whitespace from *.sgml files. 2022-04-20 11:04:49 -04:00
xfunc.sgml Revert "Convert *GetDatum() and DatumGet*() macros to inline functions" 2022-09-12 19:57:07 +02:00
xindex.sgml Doc: fix minor issues in GiST support function documentation. 2021-10-04 13:34:31 -04:00
xml2.sgml doc: Properly punctuate "etc." 2022-05-19 09:42:17 +02:00
xoper.sgml Remove support for postfix (right-unary) operators. 2020-09-17 19:38:05 -04:00
xplang.sgml Improve <xref> vs. <command> formatting in the documentation 2020-10-03 16:40:02 +02:00
xtypes.sgml doc: Clean up title case use 2019-09-08 10:27:29 +02:00

README.links

<!-- doc/src/sgml/README.links -->

Linking within DocBook documents can be confusing, so here is a summary:


Intra-document Linking
----------------------

<xref>
	use to get chapter/section number from the title of the target
	link, or xreflabel if defined at the target, or refentrytitle if target
        is a refentry;  has no close tag
	http://www.oasis-open.org/docbook/documentation/reference/html/xref.html

linkend=
	controls the target of the link/xref, required

endterm=
	for <xref>, allows the text of the link/xref to be taken from a
	different link target title

<link>
	use to supply text for the link, only uses linkend, requires </link>
	http://www.oasis-open.org/docbook/documentation/reference/html/link.html
	can be embedded inside of <command>, unlike <xref>


External Linking
----------------

<ulink>
	like <link>, but uses a URL (not a document target);  requires
	</ulink>; if no text is specified, the URL appears as the link
	text
	http://www.oasis-open.org/docbook/documentation/reference/html/ulink.html

url=
	used by <ulink> to specify the URL, required


Guidelines
----------

- For an internal link, if you want to supply text, use <link>, else
  <xref>.

- Specific nouns like GUC variables, SQL commands, and contrib modules
  usually have xreflabels.

- For an external link, use <ulink>, with or without link text.

- xreflabels added to tags prevent the chapter/section for id's from being
  referenced;  only the xreflabel is accessible.  Therefore, use xreflabels
  only when linking is common, and chapter/section information is unneeded.