The GNUmakefile in this directory prepares ``/lib/firmware/intel/sof/`` and ``/lib/firmware/intel/sof-tplg/`` directories. It extracts what's needed from the output of the scripts ``./scripts/xtensa-build-all.sh`` and ``./scripts/build-tools.sh -T -l``. It automatically runs these scripts when needed for the platforms listed in config.mk and performs incremental builds when they have already been run. It does not copy anything to ``/lib/firmware/`` directly but to local, "staging" subdirectory first. The staging area can then be installed with rsync to a local or remote ``/lib/firmware/intel/`` or to a release location. This gives an opportunity to inspect the staging area and avoids running everything as root. The default target (re-)generates the staging area: make -C installer/ Then, to install the staging area: sudo make -C installer/ rsync By default, the "rsync" target installs to the local ``/lib/firmware/intel/`` directory. To install to a different host or different directory, copy the ``sample-config.mk`` file to ``config.mk`` and follow the instructions inside the file. ``config.mk`` can also be used to change the list of platforms installed and a number of other Make variables. As usual with Make, many parameters can also be overridden on the command line. To stage and install in one go: make -C installer/ stage rsync "stage" is the default target and it tries to stage everything: firmware, dictionaries and topologies. As usual with Make, it's possible to invoke individual targets. Find a list of targets at the top of GNUMakefile. You can use `make -jN stage` to build multiple platforms faster but do *not* `make -jN stage rsync` as this will start deploying before the builds are all complete. That's because we want the rsync target to be able to deploy subsets. Instead do: `make -jN somethings && make rsync`. Sample output: staging/sof: symbolic link to sof-v1.6.1 staging/sof-v1.6.1/ ├── community/ │   ├── sof-tgl.ri │   ├── sof-cnl.ri │   ├── sof-icl.ri │   ├── sof-jsl.ri │   ├── sof-apl.ri │   ├── sof-cfl.ri -> sof-cnl.ri │   ├── sof-cml.ri -> sof-cnl.ri │   ├── sof-ehl.ri -> sof-tgl.ri │   └── sof-glk.ri -> sof-apl.ri ├── intel-signed/ ├── sof-bdw.ri ├── sof-cht.ri ├── sof-byt.ri ├── sof-cnl.ldc ├── sof-tgl.ldc ├── sof-icl.ldc ├── sof-jsl.ldc ├── sof-apl.ldc ├── sof-bdw.ldc ├── sof-byt.ldc ├── sof-cht.ldc ├── sof-apl.ri -> intel-signed/sof-apl.ri ├── sof-cfl.ri -> intel-signed/sof-cfl.ri ├── sof-cml.ri -> intel-signed/sof-cml.ri ├── sof-cnl.ri -> intel-signed/sof-cnl.ri ├── sof-ehl.ri -> intel-signed/sof-ehl.ri ├── sof-glk.ri -> intel-signed/sof-glk.ri ├── sof-icl.ri -> intel-signed/sof-icl.ri ├── sof-jsl.ri -> intel-signed/sof-jsl.ri ├── sof-tgl.ri -> intel-signed/sof-tgl.ri ├── sof-cfl.ldc -> sof-cnl.ldc ├── sof-cml.ldc -> sof-cnl.ldc ├── sof-ehl.ldc -> sof-tgl.ldc └── sof-glk.ldc -> sof-apl.ldc