NASM - The Netwide Assembler

version 2.17rc0-20240610

Appendix D: Building NASM from Source

The source code for NASM is available from our website, https://www.nasm.us/, see section E.1.

D.1 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 (https://www.msys2.org/) is such a development environment.

In a POSIX environment, run:

     sh configure 
     make

A number of options can be passed to configure; see sh configure --help. In particular, the --host option can be used to cross-compile NASM to run on another host system.

For non-POSIX environments, a set of Makefiles for some other environments are also available; please see the file Mkfiles/README.

The .zip version of the source archive has DOS/Windows line endings (CR LF), which many POSIX systems will not recognize. To extract the .zip version on such a system, use unzip -a. The .tar versions of the source archive has POSIX line endings (LF).

D.2 Optional Build Tools

The following additional tools are required to build specific subsystems, to build from the 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 PATH (or equivalent.)

To build the installer for the Windows platform:

To modify the sources, or to build the documentation:

To build the documentation:

To build the Unix man pages:

To build from the git repository on a POSIX platform:

D.3 Building Optional Components

Install the required tools for the subsystem in question as described in section D.2.

To build the documentation:

     make doc

Building the documentation may not work in a non-POSIX environment.

To build the Windows installer:

     make nsis

To build the Unix man pages:

     make manpages

To build everything available on the current platform:

     make everything

D.4 Building from the git Repository

The NASM development tree is kept in a source code repository using the 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 section D.2.

In a POSIX environment:

Run:

     sh autogen.sh

to create the configure script and then build as described in section D.1.

In a non-POSIX environment, use the tool-specific Makefiles as described in section D.1.

D.5 Modifying the Sources

To build modified sources, you will need the tools described in section D.2.

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:

     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.