Building |me_h| with compatibility for |me_cert_h| ================================================== |rti_me| can be compiled to only include features that are available or planned for |rti_me_cert|. This is useful to enable the development of a safety-certified project using |me| before certification evidence for |me_cert| is available. Once |me_cert| certification is available, the transition from |me| to |me_cert| typically requires few changes in the application. The |me| Cert-compatibility profile refers to the subset of |me| that is feature-comparable to |me_cert|. .. warning:: Please note that this does not mean that certification evidence is provided for |me| for any of these features or that using the Cert-compatibility profile constitutes safety. Please contact RTI for further information about |me_cert| and certification evidence. When compiling |me| with compatibility for |me_cert|, the following restrictions apply: - The C++ API is not supported - Only Dynamic Participant Static Endpoint (`DPSE`_) discovery is available. - Memory deallocation is not possible - Any API that deallocates memory is not supported. In other words, any API whose name includes “finalize”, “free”, or “delete” is not supported (such as ``DDS_DomainParticipantFactory_delete_participant()``, ``DDS_DomainParticipantQos_finalize()``, or ``OSAPI_Heap_free()``) - POSIX®-compliant systems (Linux, macOS, QNX, etc.) and Windows systems are supported - Only one library, librti_me, is built. While |me| consists of different libraries for discovery, reader and writer history, etc, |me_cert| consists of only one library - Code generated by the |me| code generator is compatible with |me_cert|, but the code must be generated with the code generator using the ``-interpreted 0`` option - The Log module is only available in the debug build - The UDP transport *must* be configured statically by using the API ``UDP_InterfaceTable_add_entry()`` and setting ``UDP_InterfaceFactoryProperty.disable_auto_interface_config`` equal to ``RTI_TRUE`` - ``OSAPI_Thread_sleep()`` is not available - Batching reception is not supported - UDP Transformations are not supported - The Zero Copy transport is not supported - The shared memory transport is not supported - The Property, User Data, and Partition Qos APIs are available in the |me| Cert-compatibility profile, but are not yet available in |me_cert| Compiling with compatibility for |me_cert_h| -------------------------------------------- To compile |me| with the Cert-compatibility profile, you must use one of the available CERT architectures. To get a list of available CERT architectures, please use the following command: :: cd resource/scripts/rtime-make --list Architectures ending in CERT (e.g, x64Linux5gcc12.3.0CERT) are representative of Cert-compatibility profiles. To compile, use the following command: :: cd resource/scripts/rtime-make --target x64Linux5gcc12.3.0CERT The library is generated in the directory ``lib/x64Linux5gcc12.3.0CERT``. Compiling Applications with compatibility for |me_cert_h| --------------------------------------------------------- To compile an application with compatibility for |me_cert_h|, the application must be compiled with the ``RTI_CERT=1`` preprocessor flag. This can be achieved with one of the following methods: - If a CMakeLists.txt file generated with rtiddsgen is used, pass ``-DRTIME_CERT=true`` to either ``rtime-make`` or cmake. - Pass ``-DRTI_CERT=1`` directly to the C preprocessor With ``rtime-make`` on Linux or macOS: .. code-block:: none resource/scripts/rtime-make -target x64Linux5gcc12.3.0CERT -DRTIME_CERT=true --src-dir . With ``rtime-make`` On Windows: .. code-block:: none resource/scripts/rtime-make --target x64Win64VS2015CERT -DRTIME_CERT_eq_true --src-dir . Please refer to :ref:`example_generation` for more information about generating examples.