From: Ryan Pavlik <ryan.pavlik@collabora.com>
Date: Fri, 13 Dec 2019 16:01:07 -0600
Subject: Make the API layer manifest have an absolute install path

Signed-off-by: Ryan Pavlik <ryan.pavlik@collabora.com>

Updated: 2021-10-25
---
 src/api_layers/CMakeLists.txt | 26 ++++++++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/src/api_layers/CMakeLists.txt b/src/api_layers/CMakeLists.txt
index f398bbd..49e0679 100644
--- a/src/api_layers/CMakeLists.txt
+++ b/src/api_layers/CMakeLists.txt
@@ -28,6 +28,9 @@ foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
     set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_CURRENT_BINARY_DIR})
 endforeach(OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES)
 
+set(LAYER_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/openxr/${MAJOR}/api_layers)
+set(LAYER_INSTALL_DIR_ABS ${CMAKE_INSTALL_PREFIX}/${LAYER_INSTALL_DIR})
+
 # Copy the api_layer_platform_defines.h file and place it in the binary (build) directory.
 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/api_layer_platform_defines.h ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)
 
@@ -192,9 +195,27 @@ elseif(APPLE)
 else()
     # Linux api_dump-specific information
     set_target_properties(XrApiLayer_api_dump PROPERTIES LINK_FLAGS "-Wl,-Bsymbolic,--exclude-libs,ALL")
+    gen_xr_layer_json(
+        ${CMAKE_CURRENT_BINARY_DIR}/XrApiLayer_api_dump_installed.json
+        LUNARG_api_dump
+        ${LAYER_INSTALL_DIR_ABS}/$<TARGET_FILE_NAME:XrApiLayer_api_dump>
+        1
+        "API Layer to record api calls as they occur"
+        ""
+    )
+    target_sources(XrApiLayer_api_dump PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/XrApiLayer_api_dump_installed.json)
 
     # Linux core_validation-specific information
     set_target_properties(XrApiLayer_core_validation PROPERTIES LINK_FLAGS "-Wl,-Bsymbolic,--exclude-libs,ALL")
+    gen_xr_layer_json(
+        ${CMAKE_CURRENT_BINARY_DIR}/XrApiLayer_core_validation_installed.json
+        LUNARG_core_validation
+        ${LAYER_INSTALL_DIR_ABS}/$<TARGET_FILE_NAME:XrApiLayer_core_validation>
+        1
+        "API Layer to perform validation of api calls and parameters as they occur"
+        ""
+    )
+    target_sources(XrApiLayer_core_validation PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/XrApiLayer_core_validation_installed.json)
 endif()
 
 # Install explicit layers
@@ -203,11 +224,12 @@ set(TARGET_NAMES
     XrApiLayer_core_validation)
 if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
     foreach(TARGET_NAME ${TARGET_NAMES})
-        install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME}.json
+        install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME}_installed.json
             DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/openxr/${MAJOR}/api_layers/explicit.d
+            RENAME ${TARGET_NAME}.json
             COMPONENT Layers)
         install(TARGETS ${TARGET_NAME}
-            DESTINATION ${CMAKE_INSTALL_LIBDIR}
+            DESTINATION ${LAYER_INSTALL_DIR}
             COMPONENT Layers)
     endforeach()
 elseif(WIN32)
