diff options
author | Tatiana Borisova <tatiana.borisova@qt.io> | 2021-11-23 14:05:59 +0200 |
---|---|---|
committer | Tatiana Borisova <tatiana.borisova@qt.io> | 2021-12-10 16:07:42 +0000 |
commit | 360e3824fc16674c773c2cf01fbffd593addf26a (patch) | |
tree | 7f3be0ba47f7ff9b013f5c53c39f60cd01c47016 | |
parent | f004572306cdc464c47e0f37a6a5d1a8b835f96f (diff) | |
download | qtdoc-360e3824fc16674c773c2cf01fbffd593addf26a.tar.gz |
Add instructions to build Qt6 for INTEGRITY on Windows 10 host
Task-number: QTBUG-96833
Change-Id: I44e1c94795a0b0204ad7baac4c53375693fcf26b
Reviewed-by: Nicholas Bennett <nicholas.bennett@qt.io>
(cherry picked from commit 88436b8129540930ed3889f5c38431bbc102954b)
15 files changed, 849 insertions, 528 deletions
diff --git a/doc/snippets/platforms/cmake/toolchain_integrity.cmake b/doc/snippets/platforms/cmake/linux/toolchain_integrity.cmake index 4f4ed6a5..4f4ed6a5 100644 --- a/doc/snippets/platforms/cmake/toolchain_integrity.cmake +++ b/doc/snippets/platforms/cmake/linux/toolchain_integrity.cmake diff --git a/doc/snippets/platforms/cmake/win/toolchain_integrity.cmake b/doc/snippets/platforms/cmake/win/toolchain_integrity.cmake new file mode 100644 index 00000000..85fc17e3 --- /dev/null +++ b/doc/snippets/platforms/cmake/win/toolchain_integrity.cmake @@ -0,0 +1,101 @@ +#generic +set(CMAKE_SYSTEM_NAME Integrity) +set(CMAKE_SYSTEM_PROCESSOR arm) +set(CMAKE_CROSSCOMPILING True) + +#path to installed GHS compiler for WIN10 +set(TARGET_ROOT_PATH "C:/Users/user/ghs_pack/es7_dev_env/hlos_dev_boot") +set(CMAKE_BUILD_TYPE "Release") + +set(GHS_COMPILER C:/ghs/comp_202014/cxintarm64.exe) +set(CMAKE_C_COMPILER ${GHS_COMPILER}) +set(CMAKE_CXX_COMPILER ${GHS_COMPILER}) +set(CMAKE_ASM_COMPILER ${GHS_COMPILER}) + +set(EGL_FOUND True) +set(UNIX True) + +set (CMAKE_C_COMPILE_FEATURES c_std_99) +set (CMAKE_CXX_COMPILE_FEATURES +cxx_alias_templates +cxx_alignas +cxx_alignof +cxx_attributes +cxx_auto_type +cxx_constexp +cxx_decltype +cxx_delegating_constructors +cxx_explicit_conversions +cxx_extern_templates +cxx_inheriting_constructors +cxx_lambdas +cxx_noexcept +cxx_nonstatic_member_init +cxx_nullptr +cxx_override +cxx_range_for +cxx_raw_string_literals +cxx_reference_qualified_functions +cxx_rvalue_references +cxx_static_assert +cxx_std_17 +cxx_thread_local +cxx_unicode_literals +cxx_uniform_initialization +cxx_unrestricted_unions +cxx_variadic_macros +cxx_variadic_templates) + +if (NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_PROGRAM) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +endif() +if (NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_LIBRARY) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +endif() +if (NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_PACKAGE) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) +endif() +if (NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_INCLUDE) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +endif() + +set(CMAKE_FIND_ROOT_PATH ${TARGET_ROOT_PATH}) + +#base +set(CMAKE_C_FLAGS "-bsp $ENV{INTEGRITY_BSP} -os_dir $ENV{INTEGRITY_DIR} -non_shared -startfile_dir=$ENV{INTEGRITY_DIR}/libs/$ENV{INTEGRITY_BSP}/$ENV{INTEGRITY_BUILD_TARGET} --rtos_library_directory=libs/$ENV{INTEGRITY_BSP}/$ENV{INTEGRITY_BUILD_TARGET} --rtos_library_directory=libs/arm64/$ENV{INTEGRITY_BUILD_TARGET} -bigswitch -DINTEGRITY -llibivfs.a -llibposix.a -llibpaged_alloc.a -llibnet.a -llibsocket.a") +set(CMAKE_C_FLAGS_DEBUG "-g -Omaxdebug") +set(CMAKE_C_FLAGS_RELEASE "-Ospeed -Olink -Omax") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --signed_fields --diag_suppress=1,82,228,236,381,611,961,997,1795,1931,1974,3148 --c++17 --thread_local_storage --exceptions --defer_parse_function_templates") + +set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} --signed_fields --no_implicit_include --link_once_templates -non_shared --new_outside_of_constructor -I $ENV{QC_MULTIMEDIA_INC_DIR}") +set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG}) +set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L$ENV{TARGET_ROOT_PATH} -L$ENV{TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/out/rel/libs/multimedia/graphics -L$ENV{TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/out/rel/libs/base -L$ENV{TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/opengl/esx/build/integrity/prebuilt -L$ENV{TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/out/rel/libs/platform -L$ENV{TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/out/rel/libs/multimedia/display/ --commons") +set(CMAKE_FIND_LIBRARY_PREFIXES "lib") +set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") + +set(BUILD_SHARED_LIBS OFF) +set(QT_CFLAGS_OPTIMIZE_FULL "-Ospeed -Olink -Omax") + +set(EGL_INCLUDE_DIR $ENV{GL_INC_DIR}) +set(PKG_EGL_LIBRARY_DIRS ${TARGET_ROOT_PATH}) + +set(GLESv2_INCLUDE_DIR $ENV{GL_INC_DIR}) +set(OPENGL_INCLUDE_DIR $ENV{GL_INC_DIR}) + +set(EGL_LIBRARY ${TARGET_ROOT_PATH}/libeglmegapack.a) +set(GLESv2_LIBRARY ${TARGET_ROOT_PATH}/libeglmegapack.a) +set(OPENGL_opengl_LIBRARY ${TARGET_ROOT_PATH}/libeglmegapack.a) + +# Command is required to fix CMake WIN bug https://gitlab.kitware.com/cmake/cmake/-/issues/22933 +set(CMAKE_CXX_COMPILER_PREDEFINES_COMMAND ${CMAKE_CXX_COMPILER}) +list(APPEND CMAKE_CXX_COMPILER_PREDEFINES_COMMAND -bsp $ENV{INTEGRITY_BSP} -os_dir $ENV{INTEGRITY_DIR} -E -dM "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp") + +# Set format for creating static library +set(CMAKE_CXX_CREATE_STATIC_LIBRARY "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_FLAGS} <LINK_FLAGS> -archive -o <TARGET> <OBJECTS> -keep_objs") +set(CMAKE_C_CREATE_STATIC_LIBRARY "${CMAKE_CXX_COMPILER} ${CMAKE_C_FLAGS} <LINK_FLAGS> -archive -o <TARGET> <OBJECTS> -keep_objs") + +# Set format to create executables +set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_FLAGS} <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>") +set(CMAKE_C_LINK_EXECUTABLE "${CMAKE_CXX_COMPILER} ${CMAKE_C_FLAGS} <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>") diff --git a/doc/src/images/dynamic-loaded-pro.png b/doc/src/images/dynamic-loaded-pro.png Binary files differnew file mode 100644 index 00000000..48041385 --- /dev/null +++ b/doc/src/images/dynamic-loaded-pro.png diff --git a/doc/src/images/dynamic-pro.png b/doc/src/images/dynamic-pro.png Binary files differnew file mode 100644 index 00000000..d35430e0 --- /dev/null +++ b/doc/src/images/dynamic-pro.png diff --git a/doc/src/images/integrity-os.png b/doc/src/images/integrity-os.png Binary files differnew file mode 100644 index 00000000..45cab57c --- /dev/null +++ b/doc/src/images/integrity-os.png diff --git a/doc/src/images/sa8155-target.png b/doc/src/images/sa8155-target.png Binary files differnew file mode 100644 index 00000000..efcd6c37 --- /dev/null +++ b/doc/src/images/sa8155-target.png diff --git a/doc/src/platforms/installing-platform-dependencies.qdocinc b/doc/src/platforms/installing-platform-dependencies.qdocinc deleted file mode 100644 index 929f428e..00000000 --- a/doc/src/platforms/installing-platform-dependencies.qdocinc +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! -//! [installing platform dependencies] - -Before building applications with Qt for INTEGRITY, -install the correct build tools and other dependencies required -in the 64-bit Linux development host: - -\table 80% -\header \li Requirement \li Description -\row \li INTEGRITY 19.0.13 installation - \li The installation must contain the patches for C++17 support. - Contact \l {https://support.ghs.com/contact/request-support/} - {Green Hills Software}. - \note GHS patches \e 14695, \e 16456, \e 16761, \e 16762 and \e 16917. - -\row \li MULTI IDE and Green Hills Software Compiler (version 2020.1.4 or newer) - \li The Green Hills Software development tools. See - \l {http://www.ghs.com/products/MULTI_IDE.html} {MULTI IDE}. - For licenses, contact \l {https://support.ghs.com/licensing/request-license/} - {Green Hills Software}. - \note GHS patches \e 16398 and \e 17423. - -\row \li QC BSP [ES7] for GHS Integrity 19.0.13-QC - \li The development Qualcomm Board Support Package for Integrity and Snapdragon 8155P Board. - Contact \l {https://support.ghs.com/contact/request-support/} - {Green Hills Software}. - -\row \li QC [ES7] Customer package - \li Additional patches and instructions from Qualcomm. - Contact \l {https://www.qualcomm.com/support} {Qualcomm Support}. -\row - \li CMake 3.18.4 or higher - \li CMake build system is now the default one for Qt 6 building. - See \l {https://cmake.org/documentation/} {CMake Documentation}. -\row - \li Ninja - \li Ninja is a build system with a focus on speed. It is used to build Google - Chrome, parts of Android, LLVM, and can be used in many other projects due to CMake's Ninja backend. - See \l {https://cmake.org/cmake/help/latest/generator/Ninja.html} {Ninja}. -\row - \li Other extra packages (perl, python, etc) required to be installed Host OS - \li See \l {https://wiki.qt.io/Building_Qt_5_from_Git} {Building Requirements}. - \note Perl is not required if you download the Qt sources via - your Qt Account. -\endtable - -//! [installing platform dependencies] -*/ diff --git a/doc/src/platforms/integrity-build-monolith-app-tutorial.qdoc b/doc/src/platforms/integrity-build-monolith-app-tutorial.qdoc index b3b9d712..fa691f11 100644 --- a/doc/src/platforms/integrity-build-monolith-app-tutorial.qdoc +++ b/doc/src/platforms/integrity-build-monolith-app-tutorial.qdoc @@ -45,47 +45,636 @@ {Qualcomm Snapdragon 8155P}. Tutorial content: - \list 1 + \list \li \l {Installing Platform Dependencies} - \li \l {Building Qt for Qualcomm Snapdragon 8155P Board} - \li \l {Building a monolith project} - \li \l {Flashing a monolith image and running Qt application on the board} + \li \l {Build Qt with Ubuntu host} + \li \l {Build Qt with Windows 10 host} \endlist - */ /*! \page integrity-installing-dependencies.html \title Installing Platform Dependencies \previouspage integrity-monolith-project-tutorial.html - \nextpage integrity-building-qt-for-8155P-board.html + \nextpage integrity-linux-monolith.html + + Before building applications with Qt for INTEGRITY, + install the correct build tools and other dependencies required + in the 64-bit Linux development host: + + \table 80% + \header \li Requirement \li Description + \row \li INTEGRITY 19.0.13 installation + \li The installation must contain the patches for C++17 support. + Contact \l {https://support.ghs.com/contact/request-support/} + {Green Hills Software}. + \note GHS patches \e 14695, \e 16456, \e 16761, \e 16762 and \e 16917. + + \row \li MULTI IDE and Green Hills Software Compiler (version 2020.1.4 or newer) + \li The Green Hills Software development tools. See + \l {http://www.ghs.com/products/MULTI_IDE.html} {MULTI IDE}. + For licenses, contact \l {https://support.ghs.com/licensing/request-license/} + {Green Hills Software}. + \note GHS patches \e 16398 and \e 17423. - \include installing-platform-dependencies.qdocinc installing platform dependencies + \row \li QC BSP [ES7] for GHS Integrity 19.0.13-QC + \li The development Qualcomm Board Support Package for Integrity and Snapdragon 8155P Board. + Contact \l {https://support.ghs.com/contact/request-support/} + {Green Hills Software}. + + \row \li QC [ES7] Customer package + \li Additional patches and instructions from Qualcomm. + Contact \l {https://www.qualcomm.com/support} {Qualcomm Support}. + \row + \li CMake 3.18.4 or higher + \li CMake build system is now the default one for Qt 6 building. + See \l {https://cmake.org/documentation/} {CMake Documentation}. + \row + \li Ninja + \li Ninja is a build system with a focus on speed. It is used to build Google + Chrome, parts of Android, LLVM, and can be used in many other projects due to CMake's Ninja backend. + See \l {https://cmake.org/cmake/help/latest/generator/Ninja.html} {Ninja}. + \row + \li Other extra packages (perl, python, etc) required to be installed Host OS + \li See \l {https://wiki.qt.io/Building_Qt_5_from_Git} {Building Requirements}. + \note Perl is not required if you download the Qt sources via + your Qt Account. + \endtable */ /*! - \page integrity-building-qt-for-8155P-board.html - \title Building Qt for Qualcomm Snapdragon 8155P Board + \page integrity-linux-monolith.html + \title Build Qt with Ubuntu host \previouspage integrity-installing-dependencies.html + \nextpage integrity-win-monolith.html + + \include qt6CMakeCrossCompile.qdocinc Qt cross-compile introduction + + The following tutorial content is for building a Qt for \e {INTEGRITY 19.0.13} target on an \e {Ubuntu 20.04 64 host}: + \list + \li \l {Building Qt for Qualcomm Snapdragon 8155P Board on Ubuntu} + \li \l {Building a monolith project} + \li \l {Flashing and Running an Image on the 8155P} + \endlist +*/ + +/*! + \page integrity-building-qt-8155P-on-ubuntu.html + \title Building Qt for Qualcomm Snapdragon 8155P Board on Ubuntu + \previouspage integrity-linux-monolith.html \nextpage integrity-building-monolith.html - \include integrity-building-qt-8155P.qdocinc building qt for Qualcomm Snapdragon 8155P + Having Green Hills INTEGRITY and Qualcomm development environments setup is a required before proceeding. See \l {Installing Platform Dependencies}. + + \section1 Creating a set environment shell script + + To set up the development environment for Qt for INTEGRITY, build Qt from the sources for the Qualcomm Snapdragon 8155P board. + Before building Qt for INTEGRITY, set up build environment. Here a batch script to automate that, as it needs to be done before each build. + + Create a new shell script \e{setEnvironment.sh}, and save it under + your home folder. Add the following export commands to the script: + + \badcode + export PATH=$PATH:/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/comp + export INTEGRITY_DIR=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/integrity + export INTEGRITY_BSP=platform-sa8155 + export INTEGRITY_BUILD_TARGET=chk + export QC_MULTIMEDIA_INC_DIR=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/include/amss/multimedia + export GL_INC_DIR=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/include/public + export GL_LIB_DIR=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/rel/libs/base:/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/rel/libs/multimedia/display:/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/rel/libs/multimedia/graphics:/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/rel/libs/platform/:/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/opengl/esx/build/integrity/prebuilt/ + \endcode + + These export paths assume you have used the \c /work/ghs/* installation directories + while installing the MULTI IDE and INTEGRITY (see \l {Installing Platform Dependencies}). If you have not used the default + directories, adjust the export paths accordingly. + + To initialize your build environment, run the following command in a terminal: + \badcode + source ~/setEnvironment.sh + \endcode + + \note Run this command in your terminal every time you build Qt, + or use the \c qmake or \c CMake build systems. + + \include qt6GettingSources.qdocinc Getting Qt6 sources + + \section1 Building Qt Desktop for cross-compiling tools usage + + The cross-compiling Qt requires a host build of Qt being available. + During the build, tools such as moc, rcc, qmlcachegen, qsb, + and others, are invoked from there. + For more detailed information please read + \l {https://www.qt.io/blog/qt-6-build-system} {Cross-compiling Qt}. + + Run the following commands: + \badcode + mkdir hostbuild + cd hostbuild/ + ../qt5/configure -nomake tests -nomake examples -release -prefix /work/ghs/hostbuild + cmake --build . --parallel 6 + cmake --install . + \endcode + + \section1 Creating a toolchain file for INTEGRITY + + To cross-compile a project with CMake, one must specify a toolchain file. + This CMake-language file sets the right values for the platform name, + the compiler/linker used, and a whole bunch of other toolchain-specific things. + For Integrity build on Ubuntu create a toolchain.cmake file with content: + + \quotefromfile platforms/cmake/linux/toolchain_integrity.cmake + + \printuntil set(OPENGL_opengl_LIBRARY ${TARGET_ROOT_PATH}/libeglmegapack.a) + + \include qt6CreatingEglPack.qdocinc Creating EGL pack lib + + \section1 Configuring Qt for INTEGRITY + + Configure Qt for the Qualcomm Snapdragon 8155P board using these following commands: + + \badcode + cd /work/ghs/targetbuild // Path to Qt installation directory + cmake ../qt5/ -DQT_HOST_PATH=/work/ghs/hostbuild/qtbase + -DCMAKE_TOOLCHAIN_FILE=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/toolchain_integrity.cmake + -DQT_QMAKE_TARGET_MKSPEC=devices/integrity-armv8-SA8155P -DBUILD_qtdoc=OFF + -DBUILD_qttranslations=OFF -DFEATURE_printdialog=OFF --debug-trycompile -DFEATURE_dbus=OFF + -GNinja -DUNIX=ON + -DEGL_LIBRARY=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/libeglmegapack.a + -DEGL_INCLUDE_DIR=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/include/public + -DFEATURE_dnslookup=OFF -DFEATURE_glib=OFF -DFEATURE_libudev=OFF -DFEATURE_system_pcre2=OFF -DFEATURE_sql_mysql=OFF + -DCMAKE_INSTALL_PREFIX=/work/ghs/targetbuild + \endcode + + \note INTEGRITY supports only static Qt builds. + \note \c QT_HOST_PATH variable introduced in Qt 6. + When cross-compiling, this must be set to the install location of Qt for the host platform. + It is used to locate tools to be run on the host (moc, rcc, androiddeployqt, and so on). + + \section1 Building Qt for INTEGRITY + + Build Qt by calling \c cmake in the terminal. You can run \c cmake with as + many cores on your host machine as you desire. In our example we use six cores: + + \badcode + cmake --build . --parallel 6 + \endcode + + \target installing-qt-for-sa8155 + \section1 Installing Qt + + If you have not used the configure option \c {-prefix $PWD/qtbase} in \l {Configuring Qt}, + run the following commands in a terminal: + + \badcode + cd <Qt installation directory> + cmake --install . + \endcode + + If you have used the configure option \c {-prefix $PWD/qtbase}, + you can use Qt from the build directory, without running the + \c {cmake install} command. + + Qt is now configured and built for the sa8155 board. */ /*! \page integrity-building-monolith.html \title Building a monolith project - \previouspage integrity-building-qt-for-8155P-board.html + \previouspage integrity-building-qt-8155P-on-ubuntu.html \nextpage integrity-flash-image-and-run.html - \include integrity-building-monolith.qdocinc building monolith + This tutorial will guide you through building a monolith INTEGRITY project for a Qt example + application. You can select any Qt example application that uses the + \l {Supported Qt Modules} {Supported Qt modules}. + + Before building the monolith INTEGRITY project, prepare your build environment + by running the \c setEnvironment.sh script. For more information about the script, see + \l {Creating a set environment shell script}. + + \badcode + source ~/setEnvironment.sh + \endcode + + \section1 Building the Qt application + \list + \li \c CMake tool + + To build the application against Qt6 using CMake, run the following commands in a terminal: + + \badcode + <Qt installation path>/bin/qt-cmake <Qt example application path>/CMakeLists.txt + cmake --build . + \endcode + + Where, \c qt-cmake is the wrapper script that calls CMake to configure your project with appropriate include paths. + \li \c qmake tool + + To build the application against Qt6 using qmake, run the following commands in a terminal: + + \badcode + <Qt installation path>/bin/qmake <Qt example application path>/application.pro + make + \endcode + \endlist + + \section1 Building a monolith project + + The board support package (BSP) for the Qualcomm Snapdragon 8155P board provides + a build script to create a set of images for board partitions: + \badcode + /work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/build_ghs.sh + \endcode + + Add a Qt application to a build by adding it into the \e {monolith-service.int} file: + + \list + \li Start MULTI Launcher. + \li Select \uicontrol {Components} > \uicontrol {Open Project Manager}. + \li Select the project file \e {default.gpj} + under the \e {/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp} directory: + \image open-project.png "Select a project." + MULTI application shows a window with a list of project files from the chosen folder. + \li Select \uicontrol {Open}. + \endlist + + In the MULTI Project Manager view, you should see a tree structure of the opened + project. + + Go through the \c default.gpj sub projects: + \list + \li Select \e {target.auto} \e {vmm-adp-no-gvm-sa8155.gpj} > \e {vvm-adp-gvm-ref.gpj} > \e {monolith-service.gpj}. + You can observe the project structure and edit a project's files. + + \li Select \e {monolith-service.int} + \image project-structure.png "Project tree." + Selected \e {monolith-service.int} file is highlited in the project tree. + + \li Right-click on the file, then select \uicontrol {Edit} from the context menu. + \li Add the following lines at the end of the file. + \badcode + AddressSpace + Name myappname + Filename /path/to/your/app/executable + MemoryPoolSize 0x2700000 + Language C++ + HeapSize 0x90000 + + Task Initial + StackSize 0x80000 + StartIt false + EndTask + Extendedmemorypoolsize 0x300000 + EndAddressSpace + \endcode + \note Replace </path/to/your/app/executable> with a path to your application executable. + + \li Run the build script. + \badcode + bash /work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/build_ghs.sh + \endcode + \endlist + + Your monolith project is now ready to be flashed on to the board. */ /*! \page integrity-flash-image-and-run.html - \title Flashing a monolith image and running Qt application on the board + \title Flashing and Running an Image on the 8155P \previouspage integrity-building-monolith.html \nextpage integrity-monolith-project-tutorial.html - \include integrity-flash-and-run.qdocinc flash and run application + \section1 Qualcomm Snapdragon 8155P Board + This is a top view of the Qualcomm Snapdragon 8155P board. + \image sa8155p.png "Top view of the Qualcomm Snapdragon 8155P board." + + \section1 Set up the wiring + Several cables between the PC and the board are needed for flashing and debugging applications on the board: + + \list + \li Power connector + \li Micro USB is the FT serial console output + \li Normal USB is the QFIL/Fastboot port (USB-A - USB A/USB C cable) + \li DisplayPort cable is for Graphical output + \li Ethernet port, for loading an application dynamically. + \endlist + \image wiring1.png "Front view of the Qualcomm Snapdragon 8155P board." + \caption This is a wiring configuration example: power is ON, + male USB-A is connected for flashing images, + DisplayPort cable is conected for Graphical output. + \image wiring2.png "Side view of the Qualcomm Snapdragon 8155P board." + \caption Micro USB is connected for using the FT serial console. + + \section1 Switch to Fastboot Mode + To flash images on Qualcomm Snapdragon 8155P board install + Fastboot Tool on Host OS. + See, \l {https://developer.android.com/studio/releases/platform-tools} {Fastboot Tool} + + Before flashing switch the board to the Fastboot Mode: + \list + \li Open serial connection with the board: + \badcode + putty /dev/ttyUSB0 -serial -sercfg 115200,8,1 + \endcode + \li There are 2 options: + + - On the device, hold the volume key and power cycle the device. + + - Or press down arrow on the UART shell and power cycle the device. + + \li If the board switches to Fastboot Mode successfully, + it prints following console output: + \image fastboot-mode.png "Fastboot terminal." + + Another way to check the board is in Fastboot Mode is to run the command: + \badcode + fastboot devices + \endcode + + \endlist + + \section1 Flash images + The build script produces set of images for board partitions. + \badcode + boot.img, perf_dyn.img, misc_dyn.img, abl.elf, etc + \endcode + + After switching to Fastboot Mode images can be flashed to the board. + + \list + \li When setting up for the first time, follow the images flashing procedure from GHS + \e ES7_FinalCopy/ES7_customer_package_readme.docx: + + \badcode + cd /work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/bin/target + fastboot flash abl abl.elf + fastboot flash boot vmm-adp-gvm-sa8155/boot.img + fastboot flash perf_dyn_a vmm-adp-gvm-sa8155/perf_dyn.img + fastboot flash misc_dyn_a vmm-adp-gvm-sa8155/misc_dyn.img + + cd /work/ghs/sa8155/es7/es7_dev_env/ES7_FinalCopy/Images/sa8155_hyp + fastboot flash hyp_a hyp.mbn + fastboot flash tz tz.mbn + fastboot flash apdp apdp.mbn + + cd /work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/bin/target/fs + fastboot flash gh_sys sys.img + fastboot flash gh_persist ghs_persist.img + fastboot flash gh_test ghs_test.img.sparse + + cd /work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/prebuilt_NHLOS/adsp/asic_8150 + fastboot flash adsp adsp.img + + cd /work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/lagvm/LINUX/android/out/target/product/msmnile_gvmgh + fastboot flash vendor vendor.img + \endcode + \note \e ES7_FinalCopy/ES7_customer_package_readme.docx is a part of QC [ES7] Customer package. + Contact \l {https://www.qualcomm.com/support} {Qualcomm Support} for more information. + + \li If this is not the first time flashing, then the monolith part should be flashed: + \badcode + cd /work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/bin/target + fastboot flash boot vmm-adp-gvm-sa8155/boot.img + \endcode + \li Restart the board. + \endlist + + \section1 Run Qt application on the board + \list + \li Open serial console: + \badcode + putty /dev/ttyUSB0 -serial -sercfg 115200,8,1 + \endcode + \li Execute the command: + \badcode + rt <application name> Initial + \endcode + \li Run Qt application example: + \image qml-application.png "QML application" + Qt application is running on Qualcomm Snapdragon 8155P Board and displayed on the connected screen. + \endlist +*/ + +/*! + \page integrity-win-monolith.html + \title Build Qt with Windows 10 host + \previouspage integrity-linux-monolith.html + \nextpage integrity-monolith-project-tutorial.html + + \include qt6CMakeCrossCompile.qdocinc Qt cross-compile introduction + + The following tutorial content is for building a Qt for \e {INTEGRITY 19.0.13} target on a \e {Windows 10 64 host}: + \list + \li \l {Building Qt for Qualcomm Snapdragon 8155P Board on Windows 10} + \li \l {Building and flashing a Dynamic Download Project} + \endlist +*/ + +/*! + \page integrity-building-qt-8155P-on-windows.html + \title Building Qt for Qualcomm Snapdragon 8155P Board on Windows 10 + \previouspage integrity-win-monolith.html + \nextpage integrity-building-and-flashing-dd-project.html + + Having Green Hills INTEGRITY and Qualcomm development environments setup is a required before proceeding. See \l {Installing Platform Dependencies}. + + \section1 Creating a batch script for Windows 10 + + To set up the development environment for Qt for INTEGRITY, build Qt from the sources for the Qualcomm Snapdragon 8155P board. + Before building Qt for INTEGRITY, set up build environment. Here a batch script to automate that, as it needs to be done before each build. + + For Windows 10 create a new batch script \e{setEnvironment.bat}, and save it under + your home folder. Add the following export variables to the script: + \badcode + @echo off + set PATH=%PATH%;C:\ghs\comp_202014 + set INTEGRITY_DIR=C:\Users\user\ghs_pack\es7_dev_env\hlos_dev_boot\apps\ghs_apps_proc\integrity + set INTEGRITY_BSP=platform-sa8155 + set INTEGRITY_BUILD_TARGET=chk + set QC_MULTIMEDIA_INC_DIR=C:\Users\user\ghs_pack\es7_dev_env\hlos_dev_boot\apps\ghs_apps_proc\qc_bsp\include\amss\multimedia + set GL_INC_DIR=C:\Users\user\ghs_pack\es7_dev_env\hlos_dev_boot\apps\ghs_apps_proc\qc_bsp\AMSS\multimedia\graphics\include\public + set GL_LIB_DIR=C:\Users\user\ghs_pack\es7_dev_env\hlos_dev_boot\apps\ghs_apps_proc\qc_bsp\out\rel\libs\base;C:\Users\user\ghs_pack\es7_dev_env\hlos_dev_boot\apps\ghs_apps_proc\qc_bsp\out\rel\libs\multimedia\display;C:\Users\user\ghs_pack\es7_dev_env\hlos_dev_boot\apps\ghs_apps_proc\qc_bsp\out\rel\libs\multimedia\graphics;C:\Users\user\ghs_pack\es7_dev_env\hlos_dev_boot\apps\ghs_apps_proc\qc_bsp\out\rel\libs\platform\;C:\Users\user\ghs_pack\es7_dev_env\hlos_dev_boot\apps\ghs_apps_proc\qc_bsp\AMSS\multimedia\graphics\opengl\esx\build\integrity\prebuilt\ + set TARGET_ROOT_PATH="C:\Users\user\ghs_pack\es7_dev_env\hlos_dev_boot" + \endcode + + These export paths assume you have used the \c {C:\ghs\comp_202014 and C:\Users\user\ghs_pack\*} installation directories + while installing the MULTI IDE and INTEGRITY (see \l {Installing Platform Dependencies}). If you have not used the default + directories, adjust the export paths accordingly. + + To initialize your build environment, run the following command in a Windows CMD terminal: + + \badcode + setEnvironment.bat + \endcode + + \note Run this command in the Windows CMD terminal every time you build Qt, + or use the \c qmake or \c CMake build systems. + + \include qt6GettingSources.qdocinc Getting Qt6 sources + + \section1 Building Qt Desktop for cross-compiling tools usage + + The cross-compiling Qt requires a host build of Qt being available. + During the build, tools such as moc, rcc, qmlcachegen, qsb, + and others, are invoked from there. + For more detailed information please read + \l {https://www.qt.io/blog/qt-6-build-system} {Cross-compiling Qt}. + + Run the following commands for Windows 10 Host build: + \badcode + mkdir hostbuild + cd hostbuild/ + C:/Users/user/qt5/configure -nomake tests -nomake examples -release -prefix C:/Users/user/hostbuild + cmake --build . --parallel 6 + cmake --install . + \endcode + + \section1 Creating a toolchain file for INTEGRITY + + To cross-compile a project with CMake, one must specify a toolchain file. + This CMake-language file sets the right values for the platform name, + the compiler/linker used, and a whole bunch of other toolchain-specific things. + For Integrity build on Windows 10 create a toolchain.cmake file with following content: + + \quotefromfile platforms/cmake/win/toolchain_integrity.cmake + + \printuntil set(CMAKE_C_LINK_EXECUTABLE "${CMAKE_CXX_COMPILER} ${CMAKE_C_FLAGS} <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>") + + \include qt6CreatingEglPack.qdocinc Creating EGL pack lib + + \section1 Configuring Qt for INTEGRITY + + Configure Qt for the Qualcomm Snapdragon 8155P board using these following commands: + \c {Windows 10 HOST} requires follow configure line: + \badcode + mkdir targetbuild + cd targetbuild/ + cmake C:/Users/user/qt5/ -DQT_HOST_PATH=/c/Users/user/hostbuild/qtbase + -DCMAKE_TOOLCHAIN_FILE=/c/Users/user/ghs_pack/es7_dev_env/hlos_dev_boot/toolchain_integrity.cmake + -DQT_QMAKE_TARGET_MKSPEC=devices/integrity-armv8-SA8155P + -DBUILD_qtdoc=OFF -DBUILD_qttranslations=OFF -DFEATURE_printdialog=OFF --debug-trycompile -DFEATURE_dbus=OFF + -DFEATURE_dnslookup=OFF -DFEATURE_glib=OFF -DFEATURE_system_pcre2=OFF -DFEATURE_sql_mysql=OFF + -DQT_FEATURE_harfbuzz=OFF -DFEATURE_pkg_config=OFF -DUNIX=ON -DCMAKE_HOST_WIN32=ON -GNinja -DCMAKE_INSTALL_PREFIX=/c/Users/user/targetbuild/ + \endcode + + \note INTEGRITY supports only static Qt builds. + \note \c QT_HOST_PATH variable introduced in Qt 6. + When cross-compiling, this must be set to the install location of Qt for the host platform. + It is used to locate tools to be run on the host (moc, rcc, androiddeployqt, and so on). + + \section1 Building Qt for INTEGRITY + + Build Qt by calling \c cmake in the terminal. You can run \c cmake with as + many cores on your host machine as you desire. In our example we use six cores: + + \badcode + cmake --build . --parallel 6 + \endcode + + \target installing-qt-for-sa8155 + \section1 Installing Qt + + If you have not used the configure option \c {-prefix $PWD/qtbase} in \l {Configuring Qt}, + run the following commands in a terminal: + + \badcode + cd <Qt installation directory> + cmake --install . + \endcode + + If you have used the configure option \c {-prefix $PWD/qtbase}, + you can use Qt from the build directory, without running the + \c {cmake install} command. + + Qt is now configured and built for the sa8155 board. +*/ + +/*! + \page integrity-building-and-flashing-dd-project.html + \title Building and flashing a Dynamic Download Project + \previouspage integrity-building-qt-8155P-on-windows.html + \nextpage integrity-win-monolith.html + + This tutorial will guide you through building an INTEGRITY project for a Qt example + application on a Windows 10 host. You can select any Qt example application that uses the + \l {Supported Qt Modules} {Supported Qt modules}. + + \section1 Preparing the Qt application build environment + + Before building the INTEGRITY project, you need to prepare your build environment. + Run the \c setEnvironment.bat script from the Windows CMD terminal. For more information about the script, see + \l {Creating a batch script for Windows 10}. + + \badcode + setEnvironment.bat + \endcode + + \section1 Building the Qt application example + To build Qt 6 application using CMake, run the following commands in the Windows CMD terminal: + + \badcode + "Qt installation path>\bin\qt-cmake.bat" CMakeLists.txt -GNinja + -DCMAKE_PREFIX_PATH="C:\Users\user\targetbuild" + -DQt6_DIR="C:\Users\user\targetbuild\lib\cmake\Qt6" + -DQt6Core_DIR="C:\Users\user\targetbuild\lib\cmake\Qt6Core" + -DQt6Gui_DIR="C:\Users\user\targetbuild\lib\cmake\Qt6Gui" + + cmake --build . + \endcode + + Where, \c qt-cmake is the wrapper script that calls CMake to configure your project with appropriate include paths. + + \section1 Creating a Dynamic Download Project in MULTI + \list + \li Start MULTI Launcher and select \uicontrol {File} > \uicontrol {Create workspace}. + \li In the creation window mode select \uicontrol {New Project} and click \uicontrol {OK}. + \li In the dialog \uicontrol {Project Wizard}, select a path where the new project is to be created e.g. \e C:\\Users\\user\\Documents\\My \e Projects\\Project1\\default.gpj and click \uicontrol {Next}. + \li Select \e INTEGRITY in \uicontrol {Operating System} dialog and click \uicontrol {Next}. + \image integrity-os.png "Project creation window dialog." + \li Select \uicontrol {Finish}. + \image sa8155-target.png "Qualcom board creation window dialog." + \li Select \uicontrol {Create New} > \uicontrol {Dynamic Download} > \uicontrol {Next}. + \li Select \uicontrol {Settings For Dynamic Download} > \uicontrol {Finish}. + \image dynamic-pro.png "Project tree view." + \endlist + + \section1 Building a Dynamic Download Project + \list + \li Edit and save \e myproject.int file in the project tree: + \badcode + AddressSpace + Name qtapp + Filename C:\path\to\your\qt\app\binary + MemoryPoolSize 0x2700000 + Language C++ + HeapSize 0x90000 + Task Initial + StackSize 0x90000 + StartIt false + EndTask + Extendedmemorypoolsize 0x300000 + EndAddressSpace + \endcode + \li Create a new file called \e 'multi_commands' and add the following commands to it: + \badcode + switch -component "debugger.task.qtapp.Initial" + route "debugger.task.qtapp.Initial" { __ntwcommand prepare_target } + wait -load + switch -component "debugger.task.qtapp.Initial" + route "debugger.task.qtapp.Initial" { __ntwcommand resume } + wait -time 240000 -stop + switch -component "debugger.task.qtapp.Initial" + unload myproject + wait -time 8000 -stop + savedebugpane cmd "autotestresult.txt" + quitall + \endcode + \li Run building and loading commands from the Windows CMD terminal: + \badcode + multi.exe "C:\Users\user\Documents\My Projects\Project1\default.gpj" -build myproject & + multi.exe "C:\Users\user\Documents\My Projects\Project1\dbg\bin\myproject" -connect="rtserv2 192.168.1.1" -p C:\Users\user\multi_commands & + \endcode + \image dynamic-loaded-pro.png "MULTI IDE binary load window." + \note \e {"rtserv2 192.168.1.1"} is a board IP address. Check \l {Set up the wiring} to set up the board network. + \note It takes several minutes to deploy by Dynamic Download. + \endlist */ diff --git a/doc/src/platforms/integrity-building-monolith.qdocinc b/doc/src/platforms/integrity-building-monolith.qdocinc deleted file mode 100644 index 71272e69..00000000 --- a/doc/src/platforms/integrity-building-monolith.qdocinc +++ /dev/null @@ -1,112 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! -//! [building monolith] - -This tutorial will guide you through building a monolith INTEGRITY project for a Qt example -application. You can select any Qt example application that uses the -\l {Supported Qt Modules} {Supported Qt modules}. - -Before building the monolith INTEGRITY project, prepare your build environment -by running the \c setEnvironment.sh script. For more information about the script, see -\l {Creating a shell script}. - -\badcode - source ~/setEnvironment.sh -\endcode - -\section1 Building the Qt application -For building a Qt6 based application using the CMake tool, run the following commands in a terminal: - -\badcode - <Qt installation path>/qtbase/bin/qt-cmake <Qt example application path>/CMakeLists.txt - cmake --build . -\endcode - -Where, \c qt-cmake is the wrapper script that calls CMake to configure your project with appropriate include paths. - -\section1 Building a monolith project - -The board support package (BSP) for the Qualcomm Snapdragon 8155P board provides -a build script to create a set of images for board partitions: -\badcode - /work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/build_ghs.sh -\endcode - -Add a Qt application to a build by adding it into the \e {monolith-service.int} file: - -\list 1 - \li Start MULTI Launcher. - \li Select \uicontrol {Components} > \uicontrol {Open Project Manager}. - \li Select the project file \e {default.gpj} - under the \e {/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp} directory: - \image open-project "Select a project" - MULTI application shows a window with a list of project files from the chosen folder. - \li Select \uicontrol {Open}. -\endlist - -In the MULTI Project Manager view, you should see a tree structure of the opened -project. - -Go through the \c default.gpj sub projects: -\list 1 - \li Select \e {target.auto} \e {vmm-adp-no-gvm-sa8155.gpj} > \e {vvm-adp-gvm-ref.gpj} > \e {monolith-service.gpj}. - You can observe the project structure and edit a project's files. - - \li Select \e {monolith-service.int} - \image project-structure "Project tree" - Selected \e {monolith-service.int} file is highlited in the project tree. - - \li Right-click on the file, then select \uicontrol {Edit} from the context menu. - \li Add the following lines at the end of the file. - \badcode - AddressSpace - Name myappname - Filename /path/to/your/app/executable - MemoryPoolSize 0x2700000 - Language C++ - HeapSize 0x90000 - - Task Initial - StackSize 0x80000 - StartIt false - EndTask - Extendedmemorypoolsize 0x300000 - EndAddressSpace - \endcode - \note Replace </path/to/your/app/executable> with a path to your application executable. - - \li Run the build script. - \badcode - bash /work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/build_ghs.sh - \endcode -\endlist - -Your monolith project is now ready to be flashed on to the board. -//! [building monolith] -*/ diff --git a/doc/src/platforms/integrity-building-qt-8155P.qdocinc b/doc/src/platforms/integrity-building-qt-8155P.qdocinc deleted file mode 100644 index 2a257f50..00000000 --- a/doc/src/platforms/integrity-building-qt-8155P.qdocinc +++ /dev/null @@ -1,187 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! -//! [building qt for Qualcomm Snapdragon 8155P] - Install INTEGRITY and Qualcomm environment according to the provided - instructions from Green Hills and Qualcomm. - - To set up the development environment for Qt for INTEGRITY, - build Qt from the sources for the Qualcomm Snapdragon 8155P board. Before building Qt, - create a shell script that will set up the build environment. - - \section1 Creating a shell script - - Create a new shell script \e{setEnvironment.sh}, and save it under - your home folder. Add the following export commands to the script: - - \badcode - export PATH=$PATH:/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/comp - export INTEGRITY_DIR=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/integrity - export INTEGRITY_BSP=platform-sa8155 - export INTEGRITY_BUILD_TARGET=chk - export QC_MULTIMEDIA_INC_DIR=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/include/amss/multimedia - export GL_INC_DIR=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/include/public - export GL_LIB_DIR=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/rel/libs/base:/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/rel/libs/multimedia/display:/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/rel/libs/multimedia/graphics:/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/rel/libs/platform/:/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/opengl/esx/build/integrity/prebuilt/ - \endcode - - These exports assume you have used the \c /work/ghs/* installation directories - while installing MULTI IDE and INTEGRITY (see - \l {Installing Platform Dependencies}). If you have not used the default - directories, adjust the exported paths accordingly. - - To initialize your build environment, run the following command in a terminal: - - \badcode - source ~/setEnvironment.sh - \endcode - - \note Run this command in your terminal every time you build Qt, - or use the \c qmake or CMake build systems. - - \section1 Getting Qt sources - - You can download the Qt source code from your - \l {https://login.qt.io/login} {Qt Account}. - - You can also get the Qt sources from the Git repo. Qt Wiki has - instructions for getting Qt sources from Git, see - \l {https://wiki.qt.io/Building_Qt_5_from_Git#Getting_the_source_code} {Getting source code}. - - \note Qt sources version must be 6.2 or laler. - \note The init-repository script initializes the Qt 6 repository - and clones various Qt 6 sub-modules (see - \l {https://wiki.qt.io/Building_Qt_5_from_Git#Getting_the_submodule_source_code} - {Getting the submodule source code}). - Qt modules supported by Qt for INTEGRITY are listed in \l {Supported Qt Modules}. - - \section1 Building Qt Desktop for cross-compiling tools usage - - The cross-compiling Qt requires a host build of Qt being available. - During the build, tools such as moc, rcc, qmlcachegen, qsb, - and others, are invoked from there. - For more detailed information please read - \l {https://www.qt.io/blog/qt-6-build-system} {Cross-compiling Qt}. - - Run the following commands for Linux Host build: - \badcode - mkdir hostbuild - cd hostbuild/ - ../qt5/configure -nomake tests -nomake examples -release -developer-build - cmake --build . --parallel 6 - \endcode - - \section1 Creating a toolchain file for INTEGRITY - - To cross-compile a project with CMake, one must specify a toolchain file. - This CMake-language file sets the right values for the platform name, - used compiler/linker, and a whole bunch of other toolchain-specific things. - For Integrity build create toolchain.cmake with follow content: - - \quotefromfile platforms/cmake/toolchain_integrity.cmake - - \printuntil set(OPENGL_opengl_LIBRARY ${TARGET_ROOT_PATH}/libeglmegapack.a) - - \section1 Creating EGL pack - - For CMake find EGL module to properly detect EGL, repack the needed egl libraries into one archive called libeglmegapack: - - \badcode - ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/graphics/libESXEGL_Adreno.a - ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/graphics/libadreno_utils.a - ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/graphics/libESXGLESv2_Adreno.a - ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/graphics/libadreno_utils.a - ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/graphics/libGSLUser.a - ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/graphics/libOSUser.a - ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/graphics/libpanel.a - ar -x ../hlos_dev_boot/apps/ghs_apps_proc/integrity/libs/arm64/chk/libivfs.a - ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/platform/libpmem.a - ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/platform/libtzbsp.a - ar -x ../hlos_dev_boot/apps/ghs_apps_proc/integrity/libs/arm64/chk/libpaged_alloc.a - ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/opengl/esx/build/integrity/prebuilt/libglnext-llvm.a - ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/display/libopenwfd.a - ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/base/libplanedef.a - ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/platform/liblogger.a - ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/base/librfs_client.a - ar -x ../hlos_dev_boot/apps/ghs_apps_proc/integrity/libs/arm64/chk/libshm_client.a - ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/base/libmmosalrfs.a - ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/base/libmmosalfile.a - ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/base/libOSAbstraction.a - ar r libeglmegapack.a *.o - rm *.o - \endcode - - Copy the resulting \c libeglmegapack.a to your installation directory \c hlos_dev_boot. - - \section1 Configuring Qt for INTEGRITY - - Configure Qt for the Qualcomm Snapdragon 8155P board using these following commands: - - \badcode - cd <Qt installation directory> - cmake ../qt5/ -DQT_HOST_PATH=/work/ghs/hostbuild/qtbase - -DCMAKE_TOOLCHAIN_FILE=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/toolchain_integrity.cmake - -DQT_QMAKE_TARGET_MKSPEC=devices/integrity-armv8-SA8155P -DBUILD_qtdoc=OFF - -DBUILD_qttranslations=OFF -DFEATURE_printdialog=OFF --debug-trycompile -DFEATURE_dbus=OFF - -GNinja -DUNIX=ON - -DEGL_LIBRARY=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/libeglmegapack.a - -DEGL_INCLUDE_DIR=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/include/public - -DFEATURE_dnslookup=OFF -DFEATURE_glib=OFF -DFEATURE_libudev=OFF -DFEATURE_system_pcre2=OFF -DFEATURE_sql_mysql=OFF - \endcode - - \note INTEGRITY supports only static Qt builds. - \note \c QT_HOST_PATH variable introduced in Qt 6. - When cross-compiling, this must be set to the install location of Qt for the host platform. - It is used to locate tools to be run on the host (moc, rcc, androiddeployqt, and so on). - - \section1 Building Qt for INTEGRITY - - Build Qt by calling \c cmake in the terminal. You can run \c cmake with as - many cores on your host machine as you desire. In our example we use six cores: - - \badcode - cmake --build . --parallel 6 - \endcode - - \target installing-qt-for-sa8155 - \section1 Installing Qt - - If you have not used the configure option \c {-prefix $PWD/qtbase} in \l {Configuring Qt}, - run the following commands in a terminal: - - \badcode - cd <Qt installation directory> - cmake --install . - \endcode - - If you have used the configure option \c {-prefix $PWD/qtbase}, - you can use Qt from the build directory, without running the - \c {cmake install} command. - - Qt is now configured and built for the sa8155 board. -//! [building qt for Qualcomm Snapdragon 8155P] -*/ diff --git a/doc/src/platforms/integrity-flash-and-run.qdocinc b/doc/src/platforms/integrity-flash-and-run.qdocinc deleted file mode 100644 index 77531235..00000000 --- a/doc/src/platforms/integrity-flash-and-run.qdocinc +++ /dev/null @@ -1,140 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! -//! [flash and run application] -\section1 Qualcomm Snapdragon 8155P Board - There is Qualcomm Snapdragon 8155P Board top view. -\image sa8155p - -\section1 Setup the wiring - There are several connectors are needed to be connected to the PC - for flashing and running applications on the board: - - \list 1 - \li Power connector - \li Micro USB is the FT serial console output - \li Normal (male male USB-A - USB A/USB C cable) USB is the QFIL/Fastboot port - \li DisplayPort cable is for Graphical output - \endlist - \image wiring1 - \caption There is a wiring configuration example: power is ON, - normal male USB-A is connected for flashing images, - DisplayPort cable is conected for Graphical output. - \image wiring2 - \caption Micro USB is connected for using the FT serial console. - -\section1 Switch to Fastboot Mode - To flash images on Qualcomm Snapdragon 8155P board install - Fastboot Tool on Host OS. - See, \l {https://developer.android.com/studio/releases/platform-tools} {Fastboot Tool} - - Before flashing switch the board to the Fastboot Mode: - \list 1 - \li Open serial connection with the board: - \badcode - putty /dev/ttyUSB0 -serial -sercfg 115200,8,1 - \endcode - \li There are 2 options: - - - On the device, hold the volume key and power cycle the device. - - - Or press down arrow on the UART shell and power cycle the device. - - \li If the board switches to Fastboot Mode successfully, - it prints following console output: - \image fastboot-mode - - Another way to check the board is in Fastboot Mode is to run the command: - \badcode - fastboot devices - \endcode - - \endlist - -\section1 Flash images - The build script produces set of images for board partitions. - \badcode - boot.img, perf_dyn.img, misc_dyn.img, abl.elf, etc - \endcode - - After switching to Fastboot Mode images can be flashed to the board. - - \list 1 - \li When setting up for the first time, follow the images flashing procedure from GHS - \e ES7_FinalCopy/ES7_customer_package_readme.docx: - - \badcode - cd /work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/bin/target - fastboot flash abl abl.elf - fastboot flash boot vmm-adp-gvm-sa8155/boot.img - fastboot flash perf_dyn_a vmm-adp-gvm-sa8155/perf_dyn.img - fastboot flash misc_dyn_a vmm-adp-gvm-sa8155/misc_dyn.img - - cd /work/ghs/sa8155/es7/es7_dev_env/ES7_FinalCopy/Images/sa8155_hyp - fastboot flash hyp_a hyp.mbn - fastboot flash tz tz.mbn - fastboot flash apdp apdp.mbn - - cd /work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/bin/target/fs - fastboot flash gh_sys sys.img - fastboot flash gh_persist ghs_persist.img - fastboot flash gh_test ghs_test.img.sparse - - cd /work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/prebuilt_NHLOS/adsp/asic_8150 - fastboot flash adsp adsp.img - - cd /work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/lagvm/LINUX/android/out/target/product/msmnile_gvmgh - fastboot flash vendor vendor.img - \endcode - \note \e ES7_FinalCopy/ES7_customer_package_readme.docx is a part of QC [ES7] Customer package. - Contact \l {https://www.qualcomm.com/support} {Qualcomm Support} for more information. - - \li If this is not the first time flashing, then the monolith part should be flashed: - \badcode - cd /work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/bin/target - fastboot flash boot vmm-adp-gvm-sa8155/boot.img - \endcode - \li Restart the board. - \endlist - -\section1 Run Qt application on the board - \list 1 - \li Open serial console: - \badcode - putty /dev/ttyUSB0 -serial -sercfg 115200,8,1 - \endcode - \li Execute the command: - \badcode - rt <application name> Initial - \endcode - \li Run Qt application example: - \image qml-application "QML application" - Qt application is running on Qualcomm Snapdragon 8155P Board and displayed on the connected screen. - \endlist -//! [flash and run application] -*/ diff --git a/doc/src/platforms/integrity.qdoc b/doc/src/platforms/integrity.qdoc index 50e38f54..bb3b8dc6 100644 --- a/doc/src/platforms/integrity.qdoc +++ b/doc/src/platforms/integrity.qdoc @@ -66,6 +66,7 @@ Qt for INTEGRITY should be able to be built on the following hosts: \list \li 64-bit Linux distributions + \li 64-bit Windows 10 \endlist \note Only Ubuntu 20.04 64 bit is supported by Qt at this time. diff --git a/doc/src/platforms/qt6CMakeCrossCompile.qdocinc b/doc/src/platforms/qt6CMakeCrossCompile.qdocinc new file mode 100644 index 00000000..c7730b6b --- /dev/null +++ b/doc/src/platforms/qt6CMakeCrossCompile.qdocinc @@ -0,0 +1,37 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! +//! [Qt cross-compile introduction] + +In Qt 6, CMake is the build tool, which supports cross-compiling, +that means the software is built on one system, but is intended to run on a different system. + +The system used to build is called the \c host. The device which will run the software product is called the \c target. + +//! [Qt cross-compile introduction] +*/ diff --git a/doc/src/platforms/qt6CreatingEglPack.qdocinc b/doc/src/platforms/qt6CreatingEglPack.qdocinc new file mode 100644 index 00000000..ba3df2b3 --- /dev/null +++ b/doc/src/platforms/qt6CreatingEglPack.qdocinc @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! +//! [Creating EGL pack lib] +\section1 Creating EGL pack + + For CMake find and properly detect the EGL module, repack the needed egl libraries into one archive called libeglmegapack: + + \badcode + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/graphics/libESXEGL_Adreno.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/graphics/libadreno_utils.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/graphics/libESXGLESv2_Adreno.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/graphics/libadreno_utils.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/graphics/libGSLUser.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/graphics/libOSUser.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/graphics/libpanel.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/integrity/libs/arm64/chk/libivfs.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/platform/libpmem.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/platform/libtzbsp.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/integrity/libs/arm64/chk/libpaged_alloc.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/opengl/esx/build/integrity/prebuilt/libglnext-llvm.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/display/libopenwfd.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/base/libplanedef.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/platform/liblogger.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/base/librfs_client.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/integrity/libs/arm64/chk/libshm_client.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/base/libmmosalrfs.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/base/libmmosalfile.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/base/libOSAbstraction.a + ar r libeglmegapack.a *.o + rm *.o + \endcode + + Copy the resulting \c libeglmegapack.a to your installation directory \c hlos_dev_boot. +//! [Creating EGL pack lib] +*/ diff --git a/doc/src/platforms/qt6GettingSources.qdocinc b/doc/src/platforms/qt6GettingSources.qdocinc new file mode 100644 index 00000000..21425c48 --- /dev/null +++ b/doc/src/platforms/qt6GettingSources.qdocinc @@ -0,0 +1,46 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! +//! [Getting Qt6 sources] +\section1 Getting Qt sources + + You can download the Qt source code from your + \l {https://login.qt.io/login} {Qt Account}. + + You can also get the Qt sources from the Git repo. Qt Wiki has + instructions for getting Qt sources from Git, see + \l {https://wiki.qt.io/Building_Qt_5_from_Git#Getting_the_source_code} {Getting source code}. + + \note Qt sources version must be 6.2 or later. + \note The init-repository script initializes the Qt 6 repository + and clones various Qt 6 sub-modules (see + \l {https://wiki.qt.io/Building_Qt_5_from_Git#Getting_the_submodule_source_code} + {Getting the submodule source code}). + Qt modules supported by Qt for INTEGRITY are listed in \l {Supported Qt Modules}. +//! [Getting Qt6 sources] +*/ |