Are There Any Dependencies to be Aware of?

In general, it is recommend that one of the CMakeLists.txt and/or gradle scripts should be used as a base, because this takes care of all dependencies.

Otherwise, to start from scratch:

  • All external dependencies are downloaded and/or built as part of CMake and put in the [SDKROOT]/external folder. Pre-downloaded versions are usually bundled as well. External dependencies are as follow:
    • GLM (PVRCore and everything else) for vector maths.
    • PugiXML for XML parsing
    • GLSLang is used by PVRUtilsVk to allow online shader compilation
    • moodyCamel::concurrentQueue for multithreaded producer-consumer queues.
  • The [SDKROOT]/include folder must be added as an include file search path. It contains the API header files and any other headers that are used. As well as the stock Khronos headers for most APIs, it contains PowerVR SDK's own custom DynamicGles.h, DynamicEgl.h, and vulkan_wrapper.h bindings. This is added automatically if including any Framework CMake target.
  • The [SDKROOT]/framework folder must be added as an include file search path to access the Framework’s headers. This is added automatically if including any Framework CMake target.
  • The [SDKROOT]/lib [PLATFORM…] folder may contain library dependencies of the project files. For example, the PVRScope libraries are located there. This is added automatically if including any Framework CMake target.
  • The Framework library files will be either wherever they were built, or by default, prebuilt would be in [SDKROOT]/framework/lib/[PLATFORM…] . As the PowerVR libraries do NOT have a C interface as they expose C++ classes in their API, it is strongly recommended to not use prebuilts. Instead, always build them through CMake with common compilation options with the application.