1The GNUmakefile in this directory prepares ``/lib/firmware/intel/sof/`` and
2``/lib/firmware/intel/sof-tplg/`` directories.
3
4It extracts what's needed from the output of the scripts
5``./scripts/xtensa-build-all.sh`` and ``./scripts/build-tools.sh -T
6-l``. It automatically runs these scripts when needed for the platforms
7listed in config.mk and performs incremental builds when they have
8already been run.
9
10It does not copy anything to ``/lib/firmware/`` directly but to local,
11"staging" subdirectory first. The staging area can then be installed with
12rsync to a local or remote ``/lib/firmware/intel/`` or to a release
13location. This gives an opportunity to inspect the staging area and
14avoids running everything as root.
15
16The default target (re-)generates the staging area:
17
18    make -C installer/
19
20Then, to install the staging area:
21
22    sudo make -C installer/ rsync
23
24By default, the "rsync" target installs to the local
25``/lib/firmware/intel/`` directory. To install to a different host or
26different directory, copy the ``sample-config.mk`` file to ``config.mk``
27and follow the instructions inside the file. ``config.mk`` can also be
28used to change the list of platforms installed and a number of other
29Make variables. As usual with Make, many parameters can also be
30overridden on the command line.
31
32To stage and install in one go:
33
34    make -C installer/ stage rsync
35
36"stage" is the default target and it tries to stage everything:
37firmware, dictionaries and topologies. As usual with Make, it's possible
38to invoke individual targets. Find a list of targets at the top of
39GNUMakefile.
40
41You can use `make -jN stage` to build multiple platforms faster but do
42*not* `make -jN stage rsync` as this will start deploying before the
43builds are all complete. That's because we want the rsync target to be
44able to deploy subsets. Instead do: `make -jN somethings && make rsync`.
45
46Sample output:
47
48    staging/sof: symbolic link to sof-v1.6.1
49    staging/sof-v1.6.1/
50    ├── community/
51    │   ├── sof-tgl.ri
52    │   ├── sof-cnl.ri
53    │   ├── sof-icl.ri
54    │   ├── sof-jsl.ri
55    │   ├── sof-apl.ri
56    │   ├── sof-cfl.ri -> sof-cnl.ri
57    │   ├── sof-cml.ri -> sof-cnl.ri
58    │   ├── sof-ehl.ri -> sof-tgl.ri
59    │   └── sof-glk.ri -> sof-apl.ri
60    ├── intel-signed/
61    ├── sof-bdw.ri
62    ├── sof-cht.ri
63    ├── sof-byt.ri
64    ├── sof-cnl.ldc
65    ├── sof-tgl.ldc
66    ├── sof-icl.ldc
67    ├── sof-jsl.ldc
68    ├── sof-apl.ldc
69    ├── sof-bdw.ldc
70    ├── sof-byt.ldc
71    ├── sof-cht.ldc
72    ├── sof-apl.ri -> intel-signed/sof-apl.ri
73    ├── sof-cfl.ri -> intel-signed/sof-cfl.ri
74    ├── sof-cml.ri -> intel-signed/sof-cml.ri
75    ├── sof-cnl.ri -> intel-signed/sof-cnl.ri
76    ├── sof-ehl.ri -> intel-signed/sof-ehl.ri
77    ├── sof-glk.ri -> intel-signed/sof-glk.ri
78    ├── sof-icl.ri -> intel-signed/sof-icl.ri
79    ├── sof-jsl.ri -> intel-signed/sof-jsl.ri
80    ├── sof-tgl.ri -> intel-signed/sof-tgl.ri
81    ├── sof-cfl.ldc -> sof-cnl.ldc
82    ├── sof-cml.ldc -> sof-cnl.ldc
83    ├── sof-ehl.ldc -> sof-tgl.ldc
84    └── sof-glk.ldc -> sof-apl.ldc
85
86