--- title: "Building the Documentation with Make" id: docguide-build pg_version: "20devel" --- ## J.3. Building the Documentation with Make Once you have everything set up, change to the directory `doc/src/sgml` and run one of the commands described in the following subsections to build the documentation. (Remember to use GNU make.) ### J.3.1. HTML To build the HTML version of the documentation: doc/src/sgml$ make html This is also the default target. The output appears in the subdirectory `html`. To produce HTML documentation with the stylesheet used on [postgresql.org](https://www.postgresql.org/docs/current/) instead of the default simple style use: doc/src/sgml$ make STYLE=website html If the `STYLE=website` option is used, the generated HTML files include references to stylesheets hosted on [postgresql.org](https://www.postgresql.org/docs/current/) and require network access to view. ### J.3.2. Manpages We use the DocBook XSL stylesheets to convert DocBook refentry pages to *roff output suitable for man pages. To create the man pages, use the command: doc/src/sgml$ make man ### J.3.3. PDF To produce a PDF rendition of the documentation using FOP, you can use one of the following commands, depending on the preferred paper format: - For A4 format: doc/src/sgml$ make postgres-A4.pdf - For U.S. letter format: doc/src/sgml$ make postgres-US.pdf Because the PostgreSQL documentation is fairly big, FOP will require a significant amount of memory. Because of that, on some systems, the build will fail with a memory-related error message. This can usually be fixed by configuring Java heap settings in the configuration file `~/.foprc`, for example: # FOP binary distribution FOP_OPTS='-Xmx1500m' # Debian JAVA_ARGS='-Xmx1500m' # Red Hat ADDITIONAL_FLAGS='-Xmx1500m' There is a minimum amount of memory that is required, and to some extent more memory appears to make things a bit faster. On systems with very little memory (less than 1 GB), the build will either be very slow due to swapping or will not work at all. In its default configuration FOP will emit an `INFO` message for each page. The log level can be changed via `~/.foprc`: LOGCHOICE=-Dorg.apache.commons.logging.Log=​org.apache.commons.logging.impl.SimpleLog LOGLEVEL=-Dorg.apache.commons.logging.simplelog.defaultlog=WARN Other XSL-FO processors can also be used manually, but the automated build process only supports FOP. ### J.3.4. Syntax Check Building the documentation can take very long. But there is a method to just check the correct syntax of the documentation files, which only takes a few seconds: doc/src/sgml$ make check