Doc: improve directions for building on macOS.

In light of recent discussions, we should instruct people to
install Apple's command line tools; installing Xcode is secondary.

Also, fix sample command for finding out the default sysroot,
as we now know that the command originally recommended can give
a result that doesn't match your OS version.

Also document the workaround to use if you really don't want
configure to select a sysroot at all.

Discussion: https://postgr.es/m/20210119111625.20435-1-james.hilliard1@gmail.com
This commit is contained in:
Tom Lane 2021-01-22 18:58:25 -05:00
parent 175f716a8f
commit 2cdce1e848
1 changed files with 25 additions and 1 deletions

View File

@ -2523,6 +2523,17 @@ PHSS_30849 s700_800 u2comp/be/plugin library Patch
<secondary>installation on</secondary>
</indexterm>
<para>
To build <productname>PostgreSQL</productname> from source
on <productname>macOS</productname>, you will need to install Apple's
command line developer tools, which can be done by issuing
<programlisting>
xcode-select --install
</programlisting>
(note that this will pop up a GUI dialog window for confirmation).
You may or may not wish to also install Xcode.
</para>
<para>
On recent <productname>macOS</productname> releases, it's necessary to
embed the <quote>sysroot</quote> path in the include switches used to
@ -2539,7 +2550,7 @@ make PG_SYSROOT=<replaceable>/desired/path</replaceable> all
</programlisting>
To find out the appropriate path on your machine, run
<programlisting>
xcodebuild -version -sdk macosx Path
xcrun --show-sdk-path
</programlisting>
Note that building an extension using a different sysroot version than
was used to build the core server is not really recommended; in the
@ -2553,6 +2564,19 @@ xcodebuild -version -sdk macosx Path
<programlisting>
./configure ... PG_SYSROOT=<replaceable>/desired/path</replaceable>
</programlisting>
This would primarily be useful to cross-compile for some other
macOS version. There is no guarantee that the resulting executables
will run on the current host.
</para>
<para>
To suppress the <option>-isysroot</option> options altogether, use
<programlisting>
./configure ... PG_SYSROOT=none
</programlisting>
(any nonexistent pathname will work). This might be useful if you wish
to build with a non-Apple compiler, but beware that that case is not
tested or supported by the PostgreSQL developers.
</para>
<para>