QNX Platforms
=============

The following table shows the currently supported QNX platforms.

.. list-table:: Supported QNX Platforms
   :widths: 10 10 10 10 10 25 25
   :header-rows: 1

   * - OS
     - Version
     - CPU
     - Network Stack
     - Toolchain
     - Architecture PIL
     - Architecture PSL
   * - QNX
     - 7.1
     - ARMv8 (64-bit)
     - OS Default: io-pkt
     - qcc_gpp8.3.0
     - armv8leElfqcc8.3.0
     - armv8leElfqcc8.3.0-QNX7.1
   * - QOS (QNX OS for Safety)
     - 2.2.1
     - ARMv8 (64-bit)
     - OS Default: io-pkt
     - qcc_gpp8.3.0
     - armv8leElfqcc8.3.0CERT
     - armv8leElfqcc8.3.0CERT-QOS2.2.1

How the PIL was built for QNX platforms
---------------------------------------

This section describes how RTI built the Platform Independent Library (PIL)
for QNX platforms. 

The following table shows the compiler flags RTI used to create
the PIL for QNX platforms:

.. list-table:: PIL Compiler Flags for QNX Platforms
   :name: QnxRequiredFlags
   :widths: 30 20 50
   :header-rows: 1

   * - Architecture PIL
     - Library Format
     - Compiler Flags Used by RTI
   * - armv8leElfqcc8.3.0
     - Static Release
     - **C Flags:**

       -nostdinc -fsigned-char -O2 -Vgcc/${version},gcc_ntoaarch64le -Winit-self -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wunused -Wconversion -Wsign-conversion -Wlogical-op -Wdouble-promotion -DRTI_PIL=1

       **C++ Flags:**

       -nostdinc -fsigned-char -O2 -Vgcc/${version},gcc_ntoaarch64le -Winit-self -Wmissing-declarations -Wall -Wextra -Wpedantic  -Wshadow -Wnon-virtual-dtor -Wcast-align -Wunused -Woverloaded-virtual -Wconversion -Wsign-conversion -Wlogical-op  -Wdouble-promotion -DRTI_PIL=1
   * - 
     - Static Debug
     - **C Flags:**

       -nostdinc -fsigned-char -Vgcc/${version},gcc_ntoaarch64le -Winit-self -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wunused -Wconversion -Wsign-conversion -Wlogical-op -Wdouble-promotion -g -DRTI_PIL=1

       **C++ Flags:**

       -nostdinc -fsigned-char -Vgcc/${version},gcc_ntoaarch64le -Winit-self -Wmissing-declarations -Wall -Wextra -Wpedantic  -Wshadow -Wnon-virtual-dtor -Wcast-align -Wunused -Woverloaded-virtual -Wconversion -Wsign-conversion -Wlogical-op  -Wdouble-promotion -g -DRTI_PIL=1
   * - armv8leElfqcc8.3.0CERT
     - Static Release
     - **C Flags:**

       -nostdinc -fsigned-char -O2 -Vgcc/${version},gcc_ntoaarch64le -Winit-self -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wunused -Wconversion -Wsign-conversion -Wlogical-op -Wdouble-promotion -DRTI_PIL=1  -DRTI_CERT
   * - 
     - Static Debug
     - **C Flags:**

       -nostdinc -fsigned-char -Vgcc/${version},gcc_ntoaarch64le -Winit-self -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wunused -Wconversion -Wsign-conversion -Wlogical-op -Wdouble-promotion -g -DRTI_PIL=1 -DRTI_CERT


.. warning::

  The |rti_me| platform independent libraries are built without the standard C 
  header-files. However, in |rti_me| 4.1.0, there is one direct call to 
  the C library API ``qsort``. In addition, QCC may insert direct calls
  to GLIBC functions and other required functions, such as default C++  
  constructors and destructors. For this reason, it is necessary to use a 
  QCC version that is compatible with the QCC version used to build the 
  platform independent libraries, or provide a C library with an implementation
  of the required functions. Future versions of |rti_me| will remove these
  dependencies.

Building the PSL from source for QNX platforms
----------------------------------------------

Refer to :ref:`psl_compiling` for instructions on how to build your own 
Platform Support Library (PSL) for QNX platforms.

Building QNX applications with |me_h|
-------------------------------------

This section describes how RTI built the Platform Support Library (PSL) for
QNX platforms. You must build applications with compatible flags to the PIL 
and PSL in order to operate with |me|. The PSL must also be binary compatible 
with the PIL. Applications must not specify the ``RTI_PSL`` or ``RTI_PIL``
preprocessor definitions. 

The following table shows the compiler flags and required options that RTI 
used to build the PSL for FreeRTOS platforms. When you build the PSL with 
``rtime-make``, the ``--target`` argument automatically adds all the necessary
flags for the specified architecture.

.. list-table:: PSL Compiler Flags for QNX Platforms
   :widths: 30 20 50
   :header-rows: 1

   * - Architecture PSL
     - Library Format
     - Compiler Flags Used by RTI
   * - armv8leElfqcc8.3.0-QNX7.1
     - Static Release
     - **C Flags:**

       -Vgcc/${version},gcc_ntoaarch64le  -fsigned-char -O2 -Y_gpp -Winit-self -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wunused -Wconversion -Wsign-conversion -Wlogical-op  -Wdouble-promotion -DRTI_PSL=1

       **C++ Flags:**

       -Vgcc/${version},gcc_ntoaarch64le -fsigned-char -O2 -Y_gpp -Winit-self -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wnon-virtual-dtor -Wcast-align -Wunused -Woverloaded-virtual -Wconversion -Wsign-conversion -Wlogical-op  -Wdouble-promotion -DRTI_PSL=1
   * - 
     - Static Debug
     - **C Flags:**

       -Vgcc/${version},gcc_ntoaarch64le  -fsigned-char -Y_gpp -Winit-self -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wunused -Wconversion -Wsign-conversion -Wlogical-op  -Wdouble-promotion -g -DRTI_PSL=1

       **C++ Flags:**

       -Vgcc/${version},gcc_ntoaarch64le -fsigned-char -Y_gpp -Winit-self -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wnon-virtual-dtor -Wcast-align -Wunused -Woverloaded-virtual -Wconversion -Wsign-conversion -Wlogical-op  -Wdouble-promotion -g -DRTI_PSL=1
   * - armv8leElfqcc8.3.0CERT-QOS2.2.1
     - Static Release
     - **C Flags:**

       -Vgcc/${version},gcc_ntoaarch64le  -fsigned-char -O2 -Y_gpp -Winit-self -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wunused -Wconversion -Wsign-conversion -Wlogical-op  -Wdouble-promotion -DRTI_PSL=1 -DRTI_CERT
   * - 
     - Static Debug
     - **C Flags:**

       -Vgcc/${version},gcc_ntoaarch64le  -fsigned-char -Y_gpp -Winit-self -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wunused -Wconversion -Wsign-conversion -Wlogical-op  -Wdouble-promotion -g -DRTI_PSL=1 -DRTI_CERT