| \A{source} Building NASM from Source |
| |
| The source code for NASM is available from our website, |
| \w{https://www.nasm.us/}, see \k{website}. |
| |
| \H{tarball} Building from a Source Archive |
| |
| The source archives available on the web site should be capable of |
| building on a number of platforms. This is the recommended method for |
| building NASM to support platforms for which executables are not |
| available, if you do not require changing the source code. |
| |
| The preferred build platforms are development environments which |
| support POSIX (Unix)-style tools (a "POSIX environment"). For Windows, |
| MSYS2 (\w{https://www.msys2.org/}) is such a development |
| environment. Normally either \c{gcc} or \c{clang} is used as the |
| compiler, but it is also possible to use MSVC with a POSIX wrapper |
| like \W{https://github.com/swig/cccl}\c{cccl} from the SWIG project. |
| |
| In a POSIX environment, run: |
| |
| \c sh configure |
| \c make |
| |
| A number of options can be passed to \c{configure}; see |
| \c{sh configure --help}. In particular, the \c{--host} option can be |
| used to cross-compile NASM to run on another host system. |
| |
| For non-POSIX environments, a set of makefiles for a handful of other |
| environments are also available; please see the file |
| \c{Mkfiles/README}. These makefiles are generally considered |
| unreliable, as we have very little ability to test them. |
| |
| The \c{.zip} version of the source archive has DOS/Windows line |
| endings (\c{CR LF}), which many Unix/POSIX systems will not |
| recognize. To extract the \c{.zip} version on such a system, use |
| \c{unzip -a}. The \c{.tar} versions of the source archive has POSIX |
| line endings (\c{LF}). |
| |
| |
| \H{buildtools} Optional Build Tools |
| |
| The following additional tools are required to build specific |
| subsystems, to build from the \c{git} repository, or if the sources |
| are modified. |
| |
| Note that some of these tools will have their own dependencies. |
| |
| Make sure all tools are available in your \c{PATH} (or equivalent.) |
| |
| To build the installer for the Windows platform: |
| |
| \b The \i{Nullsoft Scriptable Installer} (\i{NSIS}, |
| \w{https://nsis-dev.github.io/}). |
| |
| To modify the sources, \e{or} to build the documentation: |
| |
| \b A Perl interpreter (\w{https://www.perl.org/}). |
| |
| \b Modules from CPAN (\w{https://www.cpan.org/}). The following Perl |
| modules are currently required, some of which will be bundled with the |
| Perl interpreter or into larger CPAN packages: |
| |
| \& perlbreq.src |
| |
| To build the documentation: |
| |
| \b Either Ghostscript (\w{https://www.ghostscript.com/}) or Adobe |
| Acrobat Distiller (untested.) |
| |
| \b The Google \e{Roboto} and \e{Roboto Mono} fonts, which are freely |
| available under the SIL Open Font License |
| (\w{https://github.com/google/roboto}). |
| |
| To build the Unix man pages: |
| |
| \b AsciiDoc (\w{https://asciidoc.org/}). |
| |
| \b xmlto (\w{https://pagure.io/xmlto/}). |
| |
| To build from the \c{git} repository on a POSIX platform: |
| |
| \b GNU \c{m4}, \c{autoconf} and \c{autoheader} |
| (\w{https://www.gnu.org/}). |
| |
| |
| |
| \H{buildopt} Building Optional Components |
| |
| Install the required tools for the subsystem in question as described |
| in \k{buildtools}. |
| |
| To build the documentation: |
| |
| \c make doc |
| |
| Building the documentation may not work in a non-POSIX environment. |
| |
| To build the Windows installer: |
| |
| \c make nsis |
| |
| To build the Unix man pages: |
| |
| \c make manpages |
| |
| To build everything available on the current platform: |
| |
| \c make everything |
| |
| |
| \H{git} Building from the \i\c{git} Repository |
| |
| The NASM development tree is kept in a source code repository using |
| the \c{git} distributed source control system. The link is available |
| on the website. This is recommended only to participate in the |
| development of NASM or to assist with testing the development code. |
| |
| Install the required tools as described in section \k{buildtools}. |
| |
| In a POSIX environment: |
| |
| Run: |
| |
| \c sh autogen.sh |
| |
| to create the \c{configure} script and then build as described in |
| \k{tarball}. |
| |
| In a non-POSIX environment, use the tool-specific Makefiles |
| as described in \k{tarball}. |
| |
| |
| \H{modifysrc} Modifying the Sources |
| |
| To build modified sources, you will need the tools described in |
| \k{buildtools}. |
| |
| Some build system changes might not be possible without a POSIX |
| environment. |
| |
| If you have modified the sources to change the embedded declarations |
| of warning classes, you may have to manually re-build the warning |
| catalog: |
| |
| \c make warnings |
| |
| This is not done automatically, as the tools do not have the ability |
| to automatically detect when it is necessary to do so. |