###################
Supported Platforms
###################


.. _platforms_c_cpp_support:

C and C++ Target Platform Support
=================================

To get started with HOOPS Exchange C API, see :doc:`/tutorials/c/environment-setup`

+-------------------------------------+-----------------------------+----------------------------+---------------------------------------------+
| Platform (Minimum version)          | Architecture [#arm64]_      | Runtime Environment        | Build Requirements                          |
+=====================================+=============================+============================+=============================================+
| |wy| Microsoft Windows 10           | x86_64                      | :ref:`v142 <pt_msvc>`      | | :ref:`Visual Studio 2019 <pt_msvc>`       |
|                                     |                             |                            | | Minimum SDK version: v10.0.18362.0        |
+-------------------------------------+-----------------------------+----------------------------+---------------------------------------------+
| |ly| Red Hat Enterprise Linux 8     | arm64-v8a [#armv8]_         | glibc 2.28                 | | GNU GCC 8.3.0                             |
|                                     |                             |                            | | devtoolset 9                              |
+-------------------------------------+-----------------------------+----------------------------+---------------------------------------------+
| | |ly| CentOS 7                     | x86_64                      | glibc 2.17                 | | GNU GCC 8.2.3                             |
| | |ly| Red Hat Enterprise Linux 7   |                             |                            | | devtoolset 8                              |
+-------------------------------------+-----------------------------+----------------------------+---------------------------------------------+
| |my| Apple macOS 13.0 (Ventura)     | | x86_64                    | N/A                        | Xcode 15.1 (LLVM)                           |
|                                     | | arm64-v8a (Apple Silicon) |                            |                                             |
+-------------------------------------+-----------------------------+----------------------------+---------------------------------------------+
| |my| Apple Mac Catalyst             | | x86_64                    | N/A                        | Xcode 15.1 (LLVM)                           |
| (iOS 15.0) [#catalyst]_             | | arm64-v8a (Apple Silicon) |                            |                                             |
+-------------------------------------+-----------------------------+----------------------------+---------------------------------------------+
| |iy| Apple iOS 13.0                 | | x86_64 [#iosarch]_        | N/A                        | XCode 15.1 (LLVM)                           |
|                                     | | arm64-v8a                 |                            |                                             |
+-------------------------------------+-----------------------------+----------------------------+---------------------------------------------+
| |ay| Android 5.0 (Lollipop)         | | x86_64                    | N/A                        | | Android NDK R27c                          |
|                                     | | arm64-v8a                 |                            | | Clang, c++_shared                         |
+-------------------------------------+-----------------------------+----------------------------+---------------------------------------------+

.. [#arm64] ``arm64-v8a`` corresponds to ARMv8-A 64-bit CPUs, commonly referred to as ``arm64``.
.. [#armv8] GNU/Linux ARM binaries do not support Mx architectures (Such as Apple M1/M2/M3).
.. [#catalyst] Mac Catalyst apps run on macOS but are built using the iOS SDK.
   This enables iOS apps to be adapted for desktop use while retaining iOS APIs.
.. [#iosarch] iOS ``x86_64`` refers to Simulator support on Intel-based Macs.
   Actual devices use ``arm64-v8a``.

.. _pt_msvc:

.. rubric:: Microsoft Visual Studio Build and Runtime Requirements

Starting from HOOPS 2023, HOOPS Exchange migrated its compiler to Visual Studio 2019 (previously 2015).
Following `Microsoft's Documentation <https://learn.microsoft.com/en-us/cpp/porting/binary-compat-2015-2017?view=msvc-170>`__ on binary compatibility, this change implies an update to the required MSVC redistributables.

HOOPS Exchange being an explicitly shared library, the impact occurs at runtime.
Any application running HOOPS Exchange must have at least `Visual Studio 2019 redistributable <https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170>`__.

.. rubric:: Deprecated Platform Support

Support for all Microsoft Windows 10 editions is scheduled to end in October 2025 in coordination with Microsoft’s scheduled end of life policy.

Starting from HOOPS Exchange 2025.1.0, support for macOS versions below 13.0 and iOS versions below 12.5.7 has been dropped.

Visit our `Developer Support page <https://developer.techsoft3d.com/developer-support/>`_ to familiarize yourself with support procedures, including deprecated functionality.

.. rubric:: Platform-Specific Format Support

CAD format support may be restricted in some platforms.
Please refer to :doc:`/start/supported-formats` for more information.

The experimental USD Writer has restricted platform requirements, see :ref:`the USD documentation <usd_wt_platforms>` for more.

.. rubric:: Linux Specifics

In Linux systems, it's important to explicitly set the platform locale options to ensure proper handling of text for some of our readers.
Refer to your distribution's documentation for instructions on setting locales and utilizing the *LANG* environment variable

.. rubric:: Standards

Exchange C header files are C99-compliant.
Our example codes are compiled against either C99 or C++14 standards.

.. _package_hierarchy:

Package Description
-------------------

Here is a quick description of the package, once extracted:

=============== ========================================================= 
 Folder          Description                                              
=============== ========================================================= 
 bin             HOOPS Exchange and 3rd party binaries                    
 documentation   A link to this documentation                             
 include         C include files                                          
 samples         A list of example programs made with HOOPS               
 tools           Misc helper tools for facilitating client code upgrades  
=============== ========================================================= 

.. rubric:: Binaries

Binary files are located in a sub-folder of *bin/* directory.
The name of the sub-folder is set according to the runtime environment:

+-------------------+-----------------------------+---------------------+
|     Platform      |    Folder                   |  Main Binary File   |
+===================+=============================+=====================+
|  Windows          | win64_v142                  | A3DLIBS.dll         |
+-------------------+-----------------------------+---------------------+
|  GNU/Linux        | linux64                     |                     |
|                   +-----------------------------+                     |
|                   | linux_arm64-8va             |                     |
+-------------------+-----------------------------+ libA3DLIBS.so       |
|                   | android/arm64-v8a           |                     |
|  Android          +-----------------------------+                     |
|                   | android/x86_64              |                     |
+-------------------+-----------------------------+---------------------+
|  macOS            | macos                       | libA3DLIBS.dylib    |
+-------------------+-----------------------------+---------------------+
|  Mac Catalyst     | maccatalyst                 | libA3DLIBS.dylib    |
+-------------------+-----------------------------+---------------------+
|  iOS              | ios                         | libA3DLIBS.a        |
+-------------------+-----------------------------+---------------------+


.. _platforms_cs_cpp_support:

C# Support
==========

To get started with C# development, refer to the :doc:`/tutorials/cs/environment-setup` tutorial.

HOOPS Exchange C# API is available through the call bindings source files in `the Developer Zone <https://developer.techsoft3d.com/hoops/exchange/downloads/latest>`__.

The API is supported on **Windows**, **GNU/Linux**, and **macOS**.  
Since the C# API is built on top of the HOOPS Exchange C++ binaries, all C/C++ requirements outlined in :ref:`the previous section <platforms_c_cpp_support>` apply.

Additionally, the **.NET Core 3.1** framework is required.
You can download it from `the official .NET Core 3.1 page <https://dotnet.microsoft.com/en-us/download/dotnet/3.1>`__.

Package Description
-------------------

This section is a brief description of the C# API package contents.

================= ========================================================= 
 Folder            Description                                              
================= ========================================================= 
 ExchangeCSharp    A single C# library provided as source files
 samples           A list of example programs made with HOOPS               
================= ========================================================= 

.. rubric:: Source Files

The C# bindings are provided as source files rather that pre-compiled binaries.
These source files are mainly located under a subfolder of *ExchangeCSharp* called *Direct*:

================== ===========================================================================
 File               Description                                              
================== ===========================================================================
 API.cs             Support for :ref:`cs_bindings_api`
 Classes.cs         High-level classes 
 Constants.cs       Definitions for :ref:`cs_bindings_constants`
 Enums.cs           Definitions for :ref:`cs_bindings_enums`
 Structs.cs         Data :ref:`cs_bindings_structs`
 Library.cs         :doc:`/api/cs/loader`
 Utils.cs           :doc:`/api/cs/utils`
 hoops_license.cs   License key file.
================== ===========================================================================

For more information regarding the capabilities with the C# API, please refer to the C# API section of the documentation :doc:`here </api/cs>`.

Notes
=====

.. rubric:: Microsoft Visual Studio Runtime Requirements

Starting from HOOPS 2023, HOOPS Exchange migrated its compiler to Visual Studio 2019 (previously 2015).
Following `Microsoft's Documentation <https://learn.microsoft.com/en-us/cpp/porting/binary-compat-2015-2017?view=msvc-170>`__ on binary compatibility, this change implies an update to the required MSVC redistributables.

HOOPS Exchange being an explicitly shared library, the impact occurs at runtime.
Any application running HOOPS Exchange must have at least `Visual Studio 2019 redistributable <https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170>`__.

.. rubric:: Deprecated Platform Supports

Starting from HOOPS Exchange 2024, support for Android *x86 (32-bit)* has been dropped.
Starting from HOOPS Exchange 2024.2.0, support for Android *ARMv7 (32-bit)* has been dropped.

Visit our `Developer Support page <https://developer.techsoft3d.com/developer-support/>`_ to familiarize yourself with support procedures, including deprecated functionality.

.. rubric:: Format Support and Platform

CAD format support may be restricted in some platforms.
Please refer to :doc:`/start/supported-formats` for more information.

.. rubric:: Linux Specifics

In Linux systems, it's important to explicitly set the platform locale options to ensure proper handling of text for some of our readers.
Refer to your distribution's documentation for instructions on setting locales and utilizing the *LANG* environment variable


If you are already familiar with the :doc:`supported formats </start/supported-formats>` page, you are now ready to discover how to :doc:`evaluate HOOPS Exchange </start/evaluating-exchange>`; to do that, simply press the *Next* button.


.. _publish_details:

Advanced Publishing
===================
 
 Advanced Publishing is available on the following platforms:

 +----------+----------------------------+---------------------------+----------------------------+
 | Platform | Architecture               | Minimum Supported OS      | Compiler                   |
 +==========+============================+===========================+============================+
 | Windows  | x64                        | Windows 10                | MSVC v142                  |
 +----------+----------------------------+---------------------------+----------------------------+
 | Linux    | x64                        | | CentOS 7 / Red Hat      | | devtoolset 8 / GCC       |
 |          |                            | | Enterprise Linux 7      | | 8.2.3                    |
 |          |                            | | (glibc 2.17)            |                            |
 +----------+----------------------------+---------------------------+----------------------------+

 The API for Advanced Publishing is only available for the Windows and GNU/Linux environments on the above table.
 This addresses all API functions using the ``A3DPDF`` prefix.

 .. rubric:: Microsoft Visual Studio Runtime Requirements

 Starting from HOOPS 2023, Advanced Publishing migrated its compiler to Visual Studio 2019 (previously 2015).
 Following `Microsoft's Documentation <https://learn.microsoft.com/en-us/cpp/porting/binary-compat-2015-2017?view=msvc-170>`__ on binary compatibility, this change implies an update to the required MSVC redistributables.

 AS Advanced Publishing is an explicitly shared library, the impact occurs at runtime.
 Any application running HOOPS Publish must have at least `Visual Studio 2019 redistributable <https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170>`__.

 .. rubric:: Format Support and Platform

 CAD format support may be restricted in some platforms.
 Please refer to :doc:`/start/supported-formats` for more information.

 .. rubric:: Using Other Operating Systems and Compilers

 It is simplest and best if your application is compiled using one of the supported operating systems and compilers listed above.
 Other operating systems may work, but our testing is limited to the list above.

 It is possible to use a version of Visual Studio for your application development other than the supported versions, although it is not recommended or supported.
 We have spot checked that this is possible during the testing of our release.
 Please remember that any issues will need to be reproduced using a supported operating system and compiler before being submitted to Technical Support.

.. _package_hierarchy:

Package Hierarchy
=================

Here is a quick description of the package, once extracted:

=============== ========================================================= 
 Folder          Description                                              
=============== ========================================================= 
 bin             HOOPS Publish and 3rd party binaries                    
 documentation   A link to this documentation                             
 include         C include files                                          
 samples         A list of example programs made with HOOPS Publish
 tools           Misc helper tools for facilitating client code upgrades  
=============== ========================================================= 

.. rubric:: Binaries

Binary files are location in a sub-folder of *bin/* directory.
The name of the sub-folder is set according to the runtime environment:

+-------------------+-----------------------------+---------------------+
|     Platform      |    Folder                   |  Main Binary File   |
+===================+=============================+=====================+
|  Windows          | win64_v142                  | A3DLIBS.dll         |
+-------------------+-----------------------------+---------------------+
|  GNU/Linux        | linux64                     | libA3DLIBS.so       |
+-------------------+-----------------------------+---------------------+

If you are already familiar with the :doc:`Supported Formats </start/supported-formats>` page, you are now ready to discover how to :doc:`evaluate HOOPS Publish </start/getting-started>`.
