Файл CMakeLists.txt для сборки программы Einit
Файл CMakeLists.txt
для сборки инициализирующей программы Einit
должен содержать следующие команды:
include (platform/image)
– подключение библиотекиCMake
, содержащей скрипты сборки образа решения.project_header_default ("STANDARD_GNU_11:YES" "STRICT_WARNINGS:NO"
) – установка флагов компилятора и компоновщика.- Настройка пакетов системных программ и драйверов, которые необходимо включить в решение.
- Подключение пакета выполняется с помощью команды
find_package ()
. - Для некоторых пакетов также требуется установить значения свойств с помощью команды
set_target_properties ()
.
CMake
-описания системных программ и драйверов, поставляемых в составе KasperskyOS Community Edition, а также их экспортированных переменных и свойств находятся в соответствующих файлах/opt/KasperskyOS-Community-Edition-<version>/sysroot-aarch64-kos/lib/cmake/<имя программы>/<имя программы>-config.cmake
- Подключение пакета выполняется с помощью команды
- Для автоматического добавления описаний IPC-каналов между процессами системных программ в файл
init.yaml
при сборке решения необходимо добавить эти каналы в свойствоEXTRA_CONNECTIONS
для соответствующих программ.Обратите внимание на отступы в начале строк в свойстве
EXTRA_CONNECTIONS
. Эти отступы необходимы для корректной подстановки значений в файлinit.yaml
и должны соответствовать требованиям к его синтаксису.Например, программа
VFS
по умолчанию не имеет канала для соединения с программойEnv
. Чтобы описание такого канала автоматически добавилось в файл init.yaml при сборке решения, необходимо добавить следующий вызов в файлCMakeLists.txt
для сборки программыEinit
:set_target_properties (${vfs_ENTITY} PROPERTIES EXTRA_CONNECTIONS " - target: env.Env id: {var: ENV_SERVICE_NAME, include: env/env.h}"В результате, при сборке решения, описание этого IPC-канала будет автоматически добавлено в файл
init.yaml
на этапе обработки макросов шаблона init.yaml.in. - Для автоматического добавления списка аргументов функции
main()
и словаря переменных окружения в файлinit.yaml
при сборке решения, необходимо определить свойстваEXTRA_ARGS
иEXTRA_ENV
и присвоить им соответствующие значения.Обратите внимание на отступы в начале строк в свойствах
EXTRA_ARGS
иEXTRA_ENV
. Эти отступы необходимы для корректной подстановки значений в файлinit.yaml
и должны соответствовать требованиям к его синтаксису.
Пример передачи программе VfsEntity
аргумента "-f fstab"
функции main()
и переменной окружения ROOTFS
со значением ramdisk0,0 / ext2 0
:
В результате, при сборке решения, описание аргумента функции main()
и значение переменной окружения будут автоматически добавлены в файл init.yaml
на этапе обработки макросов шаблона init.yaml.in.
set(ENTITIES <полный список программ, входящих в решение>)
– определение переменнойENTITIES
со списком исполняемых файлов всех программ, входящих в решение.- Одна или обе команды для сборки образа решения:
- build_kos_hw_image() – создает цель сборки образа решения для аппаратной платформы.
- build_kos_qemu_image() – создает цель сборки образа решения для QEMU.
Пример файла CMakeLists.txt для сборки программы Einit
CMakeLitsts.txt