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.
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.
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