C
Building for INTEGRITY
In Qt Safe Renderer 2.0, Qt Safe Renderer binaries built with Qt 5.15.13 are included to the installation. However, if you like to build Qt Safe Renderer yourself with Green Hills Software INTEGRITY Real-Time Operating System (RTOS), follow instructions in this topic.
Qt Safe Renderer and its tools are built via the following projects:
Project | Description | .pro file name | .pro file path | Build with Qt version |
---|---|---|---|---|
Qt Safe Layout Tool | Qt Safe Layout Tool generates safe layout data for Qt Safe Renderer. | qtsafelayouttool.pro | <Qt installation directory>/Src/QtSafeRenderer-<version>/tools/qtsafelayouttool | Qt that is compiled for your host platform. |
Qt Safe Resource Compiler Tool | Qt Safe Resource Compiler Tool generates safe resource files for Qt Safe Renderer. | qtsafercctool.pro | <Qt installation directory>/Src/QtSafeRenderer-<version>/tools/qtsafercctool | Qt that is compiled for your host platform. |
Qt Safe Renderer | When you build Qt Safe Renderer, the Qt Safe Renderer plugins are built and installed under the current kit in Qt Creator (that is, the Qt version that you use for building the projects). | qtsaferenderer.pro | <Qt installation directory>/Src/QtSafeRenderer-<version> | Qt compiled for INTEGRITY. |
For INTEGRITY, Qt Safe Renderer provides the following examples:
Project | Description | .pro file name | .pro file path | Build with Qt version |
---|---|---|---|---|
The Qt Cluster example | Qt Cluster demonstrates rendering on INTEGRITY and recovery from the main UI failure. | qtcluster.pro | <Qt installation directory>/Examples/QtSafeRenderer-<version>/saferenderer/qtcluster | Qt compiled for INTEGRITY |
The Telltales example | When you build Telltales, you must use the Qt compiled for INTEGRITY. Then the INTEGRITY specific part of the project is built. The Process Watcher project is built together with the INTEGRITY specific Telltales. Telltales uses layout files from the Qt Cluster example. | examples.pro | <Qt installation directory>/Examples/QtSafeRenderer-<version>/saferenderer | Qt compiled for INTEGRITY |
The Localization example | Localization demonstrates how you can localize content in safety-critical elements. | localization.pro | <Qt installation directory>/Examples/QtSafeRenderer-<version>/saferenderer/localization/localization.pro |
Building Qt for INTEGRITY describes the high-level steps that are required for building Qt Safe Renderer for INTEGRITY in case your target device is either Renesas R-Car H3 or Qualcomm Snapdragon.
However, you should note that the steps assume you already have experience of working with the INTEGRITY environment. If you need more detailed information how to build Qt Safe Renderer for INTEGRITY, you can contact Qt Consulting Services.
Building Qt Safe Tools
Note: Since Qt Safe Renderer release 1.1.2 Qt Safe Layout and Qt Safe Resource Compiler Tools are available as a pre-built package in <Qt installation directory>/Tools/QSR-<version>/bin. You can skip this step if you do not intend to build the tool yourself.
To build Qt Safe Tools in Qt Creator, execute the steps listed in the following topics for qtsaferenderer.pro
. Build the project with a Qt version that is compiled for your host platform. After a successful build, qtsafelayouttool and qtsafercctool are generated under <Qt installation directory>/<Qt version>/<compiler>/bin.
Opening Project to Edit Mode
Open the project to Qt Creator's Edit mode:
- Start Qt Creator.
- Select File > Open File or Project and browse to a .pro file.
- Select Open.
- In the Configure Project page, choose a kit for building the project and select Configure Project.
The project is now open in Qt Creator's Edit mode.
Adding a Custom Build Step <make install>
Note: If you are building some of the examples in Qt Safe Renderer, you can skip this step.
Before building Qt Safe Renderer, add a custom build step that installs the binary file under <Qt installation directory>/<Qt version/<compiler>/bin in the Qt version that is used for building the project:
- Select a Projects mode.
- In the kit, select Build.
- Select Build Settings > Build Steps > Add Build Step > Make.
- In Make arguments, add install.
- Select the Edit mode. Your custom build step is automatically saved.
Building the Project
Build the project in the Edit mode by selecting Build > Build Project "<project name>".
Setting Up Cross Compiling Environment
Copy the Qt Safe Layout Tool binary file (qtsafelayouttool) and Qt Safe Resource Compiler Tool binary file (qtsafercctool) to the directory in your cross compiling environment that contains the qmake executable.
You find the pre-built qtsafelayouttool and qtsafercctool in <Qt installation directory>/Tools/QSR-<version>/bin or, when self-built, in <Qt installation directory>/<Qt version>/<compiler>/bin.
Building Qt for INTEGRITY
Building Qt Safe Renderer for INTEGRITY is supported with Qt 5.9.4 or later for INTEGRITY. This is due to QTBUG-62568 INTEGRITY on Renesas H3 Salvator-X that has been fixed into Qt 5.9.4.
Before you can build Qt Safe Renderer for INTEGRITY, you need to build Qt itself. The built Qt contains the qmake
tool that you need for building Qt Safe Renderer for INTEGRITY.
To build Qt, you must have a properly installed INTEGRITY environment on your host platform. Also, you need an environment setup script. The INTEGRITY environment must be installed according to the Green Hills and Board Support Package (BSP) instructions provided by Renesas or Qualcomm
Setting Environment for Renesas R-Car H3
The following code provides an example of the environment setup script for the Renesas R-Car H3 target:
#!/bin/bash export PATH=$PATH:</path/to>/comp_201714 export INTEGRITY_DIR=</path/to>/int1144 export INTEGRITY_BSP=devtree-arm64 export GL_INC_DIR=</path/to>/int1144/modules/renesas/libs/Gfx/INC:/path/to/int1144/modules/renesas/libs/wm_usr/inc/:</path/to>/int1144/modules/renesas/libs/mmgr_usr/inc/:</path/to>/int1144/modules/renesas/include/ export GL_LIB_DIR=</path/to>/int1144/modules/renesas/libs/Gfx/LIB/rcar-h3:</path/to>/int1144/bin/devtree-arm64
</path/to> is a path that points to a directory that is mentioned in the example script.
After you have sourced the environment, you can build Qt for INTEGRITY as follows:
mkdir qt-shadow cd qt-shadow </path/to>/qt-source/configure -developer-build -xplatform \ integrity-armv8-rcar -confirm-license -nomake examples -nomake tests \ -no-dbus -silent -opengl es2 -static make -j10
You can find the qmake
binary under qt-shadow/qtbase/bin/.
Setting Environment for Qualcomm Snapdragon
The following code provides an example of the environment setup script for the Qualcomm Snapdragon target:
export PATH=$PATH:</path/to>/comp_201714 export INTEGRITY_DIR=</path/to>/int1172 export INTEGRITY_BSP=devtree-arm64 export GL_INC_DIR=</path/to>/qc_bsp/ghs_ap/AMSS/multimedia/graphics/opengl/esx/shared/include/public export GL_LIB_DIR=</path/to>/int1170/bin/AMSS/graphics export QCLIBS_DIR=</path/to>/int1170/libs/qclibs export QC_MULTIMEDIA_INC_DIR=</path/to>/qc_bsp/ghs_ap/include/amss/multimedia export GHS_DTC=</path/to>/dtc/dtc
After you have sourced the environment, you can build Qt for INTEGRITY as follows:
mkdir qt-shadow cd qt-shadow </path/to>/qt-source/configure -device integrity-armv8-msm8996au -nomake examples -nomake tests -no-dbus -silent -static make -j10
You can find the qmake
binary under qt-shadow/qtbase/bin/.
Building Qt Safe Renderer and Examples
After you have built Qt for INTEGRITY, you can start Qt Creator and build the Qt Safe Renderer and its INTEGRITY specific examples, Telltales and Qt Cluster. To enable an INTEGRITY build in Qt Creator, you must set the Qt for INTEGRITY to your kit. See Adding Kits.
You can build Qt Safe Renderer, Telltales, and Qt Cluster for INTEGRITY with the same steps that are described in Building Qt Safe Tools. Just remember that in Opening Project to Edit Mode, you must select the Qt for INTEGRITY kit. The kit is selected from the Configure Project page.
When you build the Telltales example, also a Process Watcher project is built.
Adding New Address Space
After you have built the Telltales example, you need to add a new address space to your working INTEGRITY project. Add the following code block to the integrated file (.int) under your project:
AddressSpace saferenderer Filename </path/to>/telltales MemoryPoolSize 0x1000000 Language C++ Task Initial StackLength 0x20000 StartIt true EndTask HeapExtensionReservedSize 0x20000 EndAddressSpace
</path/to> is the directory where the Telltales binaries are found.
Rebuild the project and run it on the target device as instructed in the INTEGRITY BSP instructions provided by Green Hills and the target device vendor (Renesas or Qualcomm).
Available under certain Qt licenses.
Find out more.