Build files

To make complex builds easier to manage and configure, some QNX products (e.g., QNX Platform for ADAS) use several small build files, instead of a single, large buildfile.

The image generation process calls the mkifs utility to build the IFS. This utility uses buildfiles, which are plain-text files that specify:

If you are working on a complex system that is designed to run on different hardware architectures, or boards and board variants, it is good practice to adopt a modular approach and use several, smaller buildfiles rather than a single, large buildfile. You can place these buildfiles in appropriate directories, and list them in the board-name-ifs.cfg configuration files you will use to configure your builds (see How mksysimage uses build files below).

For more information about build files, including how to modify or add a new IFS, see Building Embedded Systems.

Warning: If you are building a safety-related system, you may need to make changes to one or more build files. Refer to the QNX OS for Safety documentation for your release.

How mksysimage uses build files

When you run mksysimage, this script reads the board-name-ifs.cfg configuration file (e.g., $QNX_DEPLOYMENT_WORKSPACE/ADAS/infra/boards/j6eco.ext/ifs/j6eco-ifs.cfg) to know which *.build files to use, searching the paths specified by the searchpaths.cfg for its content (see Search paths).

The mksysimage script generates all the IFS specified in the board-name-ifs.cfg configuration file. For example, from the configuration file below:

[PROCESSOR]
armle-v7

[jacinto6-sd.ifs]
jacinto6-base.build
adas.build
jacinto6-start-disk-sd.build
#jacinto6-start-audio.build
screen-jacinto6eco-diskLibs.build
screen-common-diskLibs.build
jacinto6eco.build
generic.build
script.build

[jacinto6-sd-emmc.ifs]
jacinto6-base.build
adas.build
jacinto6-start-disk-sd-emmc.build
jacinto6-start-audio.build
screen-jacinto6eco-diskLibs.build
screen-common-diskLibs.build
jacinto6eco.build
generic.build
script.build

The mksysimage script will use the *.build files specified for each IFS, and generate two IFS: jacinto6-sd-emmc.ifs and jacinto6-sd.ifs.

When it has finished generating the IFSs, mksysimage renames the IFS specified in the mksysimage configuration file to the standard QNX IFS name: qnx-ifs, so that it will be recognized by the QNX startup processes. If you want another IFS to be renamed qnx-ifs, you can edit the configuration file.

How mkworkspace.py uses build files

The mkworkspace.py utility script creates a workspace on your host system, and copies the contents and configuration information to this workspace. When it performs these tasks, mkworkspace.py also simplifies the build files. It merges the build files listed in the board-name-ifs.cfg configuration file into a single build file for each IFS. For example, it merges the build files listed in the configuration file above into two build files, and creates the following configuration file:

[PROCESSOR]
armle-v7

[jacinto6-sd.ifs]
jacinto6-sd.build
[jacinto6-sd-emmc.ifs]
jacinto6-sd-emmc.build
    		
Note: This simplification makes it easier for you to review the contents of your IFS, and to determine how best to configure your IFS, for example, to optimize your boot process. Note, that if you run mkworkspace.py again, the contents of the original build files will overwrite your changes to these merged build files. Once you decide on a configuration, you should go back and make the changes to the appropriate individual build files, so that your changes to the build aren't lost.