The open source OpenXR runtime

cmake: add MND_libmonado_path in openxr manifest

Part-of: <https://gitlab.freedesktop.org/monado/monado/-/merge_requests/2285>

authored by

Patrick Nicolas and committed by
Marge Bot
49a20660 8e407e96

+55 -13
+11 -2
cmake/GenerateKhrManifest.cmake
··· 59 60 function(generate_khr_manifest_buildtree) 61 set(options) 62 - set(oneValueArgs MANIFEST_TEMPLATE TARGET OUT_FILE MANIFEST_DESCRIPTION) 63 set(multiValueArgs) 64 cmake_parse_arguments(_genmanifest "${options}" "${oneValueArgs}" 65 "${multiValueArgs}" ${ARGN}) ··· 76 if(NOT _genmanifest_MANIFEST_DESCRIPTION) 77 message(FATAL_ERROR "Need MANIFEST_DESCRIPTION specified!") 78 endif() 79 80 # Set template values 81 set(_genmanifest_INTERMEDIATE_MANIFEST ··· 93 BYPRODUCTS "${_genmanifest_OUT_FILE}" 94 COMMAND 95 "${CMAKE_COMMAND}" "-DOUT_FILE=${_genmanifest_OUT_FILE}" 96 "-DTARGET_PATH=$<TARGET_FILE:${_genmanifest_TARGET}>" -P 97 "${_script}" DEPENDS "${_script}" 98 COMMENT ··· 110 TARGET_DIR_RELATIVE_TO_MANIFEST 111 RELATIVE_TARGET_DIR 112 MANIFEST_DESCRIPTION 113 - COMPONENT) 114 set(multiValueArgs) 115 cmake_parse_arguments(_genmanifest "${options}" "${oneValueArgs}" 116 "${multiValueArgs}" ${ARGN}) ··· 140 set(TARGET_FILENAME 141 ${CMAKE_SHARED_MODULE_PREFIX}${_genmanifest_TARGET}${CMAKE_SHARED_MODULE_SUFFIX} 142 ) 143 144 set(_script 145 ${CMAKE_CURRENT_BINARY_DIR}/make_manifest_${_genmanifest_TARGET}.cmake)
··· 59 60 function(generate_khr_manifest_buildtree) 61 set(options) 62 + set(oneValueArgs MANIFEST_TEMPLATE TARGET OUT_FILE MANIFEST_DESCRIPTION LIBMONADO) 63 set(multiValueArgs) 64 cmake_parse_arguments(_genmanifest "${options}" "${oneValueArgs}" 65 "${multiValueArgs}" ${ARGN}) ··· 76 if(NOT _genmanifest_MANIFEST_DESCRIPTION) 77 message(FATAL_ERROR "Need MANIFEST_DESCRIPTION specified!") 78 endif() 79 + if(_genmanifest_LIBMONADO) 80 + set(_libmonado $<TARGET_FILE:${_genmanifest_LIBMONADO}>) 81 + endif() 82 83 # Set template values 84 set(_genmanifest_INTERMEDIATE_MANIFEST ··· 96 BYPRODUCTS "${_genmanifest_OUT_FILE}" 97 COMMAND 98 "${CMAKE_COMMAND}" "-DOUT_FILE=${_genmanifest_OUT_FILE}" 99 + "-DLIBMONADO=${_libmonado}" 100 "-DTARGET_PATH=$<TARGET_FILE:${_genmanifest_TARGET}>" -P 101 "${_script}" DEPENDS "${_script}" 102 COMMENT ··· 114 TARGET_DIR_RELATIVE_TO_MANIFEST 115 RELATIVE_TARGET_DIR 116 MANIFEST_DESCRIPTION 117 + COMPONENT 118 + LIBMONADO 119 + ) 120 set(multiValueArgs) 121 cmake_parse_arguments(_genmanifest "${options}" "${oneValueArgs}" 122 "${multiValueArgs}" ${ARGN}) ··· 146 set(TARGET_FILENAME 147 ${CMAKE_SHARED_MODULE_PREFIX}${_genmanifest_TARGET}${CMAKE_SHARED_MODULE_SUFFIX} 148 ) 149 + if(_genmanifest_LIBMONADO) 150 + set(LIBMONADO ${CMAKE_SHARED_MODULE_PREFIX}${_genmanifest_LIBMONADO}${CMAKE_SHARED_MODULE_SUFFIX}) 151 + endif() 152 153 set(_script 154 ${CMAKE_CURRENT_BINARY_DIR}/make_manifest_${_genmanifest_TARGET}.cmake)
+18
cmake/GenerateKhrManifestInternals.cmake.in
··· 23 @_genmanifest_TARGET_DIR_RELATIVE_TO_MANIFEST@) 24 # Config option 25 set(ABSOLUTE_TARGET_PATH @_genmanifest_ABSOLUTE_TARGET_PATH@) 26 27 if(TARGET_PATH) 28 # This is at build time, not install time ··· 36 if(NOT IS_ABSOLUTE ${RELATIVE_TARGET_DIR}) 37 set(TARGET_PATH ${CMAKE_INSTALL_PREFIX}/${TARGET_PATH}) 38 endif() 39 elseif(TARGET_DIR_RELATIVE_TO_MANIFEST) 40 # Relative path to target. 41 message( ··· 43 "Installing ${MANIFEST_DESCRIPTION} with JSON-relative path to library" 44 ) 45 set(TARGET_PATH ${TARGET_DIR_RELATIVE_TO_MANIFEST}/${TARGET_FILENAME}) 46 else() 47 # Unqualified filename: requires it exist on the system shared library search path. 48 message( ··· 50 "Installing ${MANIFEST_DESCRIPTION} with unqualified library filename (uses system search path)" 51 ) 52 set(TARGET_PATH ${TARGET_FILENAME}) 53 endif() 54 55 if(WIN32)
··· 23 @_genmanifest_TARGET_DIR_RELATIVE_TO_MANIFEST@) 24 # Config option 25 set(ABSOLUTE_TARGET_PATH @_genmanifest_ABSOLUTE_TARGET_PATH@) 26 + set(LIBMONADO @LIBMONADO@) 27 28 if(TARGET_PATH) 29 # This is at build time, not install time ··· 37 if(NOT IS_ABSOLUTE ${RELATIVE_TARGET_DIR}) 38 set(TARGET_PATH ${CMAKE_INSTALL_PREFIX}/${TARGET_PATH}) 39 endif() 40 + if(LIBMONADO) 41 + set(LIBMONADO ${RELATIVE_TARGET_DIR}/${LIBMONADO}) 42 + if(NOT IS_ABSOLUTE ${RELATIVE_TARGET_DIR}) 43 + set(LIBMONADO ${CMAKE_INSTALL_PREFIX}/${LIBMONADO}) 44 + endif() 45 + endif() 46 elseif(TARGET_DIR_RELATIVE_TO_MANIFEST) 47 # Relative path to target. 48 message( ··· 50 "Installing ${MANIFEST_DESCRIPTION} with JSON-relative path to library" 51 ) 52 set(TARGET_PATH ${TARGET_DIR_RELATIVE_TO_MANIFEST}/${TARGET_FILENAME}) 53 + if(LIBMONADO) 54 + get_filename_component(LIBMONADO ${LIBMONADO} NAME) 55 + set(LIBMONADO ${TARGET_DIR_RELATIVE_TO_MANIFEST}/${LIBMONADO}) 56 + endif() 57 else() 58 # Unqualified filename: requires it exist on the system shared library search path. 59 message( ··· 61 "Installing ${MANIFEST_DESCRIPTION} with unqualified library filename (uses system search path)" 62 ) 63 set(TARGET_PATH ${TARGET_FILENAME}) 64 + if(LIBMONADO) 65 + get_filename_component(LIBMONADO ${LIBMONADO} NAME) 66 + endif() 67 + endif() 68 + 69 + if(LIBMONADO) 70 + set(extra_fields ",\n \"MND_libmonado_path\": \"${LIBMONADO}\"") 71 endif() 72 73 if(WIN32)
+13 -4
cmake/GenerateOpenXRRuntimeManifest.cmake
··· 42 # runtime directory relative to the manifest directory in the installed layout 43 [OUT_FILENAME <outfilename> # Optional: Alternate name of the manifest file to generate 44 [MANIFEST_TEMPLATE <template>] # Optional: Specify an alternate template to use 45 ) 46 #]] 47 ··· 57 58 function(generate_openxr_runtime_manifest_buildtree) 59 set(options) 60 - set(oneValueArgs MANIFEST_TEMPLATE RUNTIME_TARGET OUT_FILE) 61 set(multiValueArgs) 62 cmake_parse_arguments(_genmanifest "${options}" "${oneValueArgs}" 63 "${multiValueArgs}" ${ARGN}) ··· 80 TARGET 81 "${_genmanifest_RUNTIME_TARGET}" 82 OUT_FILE 83 - "${_genmanifest_OUT_FILE}") 84 85 endfunction() 86 ··· 93 COMPONENT 94 RUNTIME_TARGET 95 RUNTIME_DIR_RELATIVE_TO_MANIFEST 96 - RELATIVE_RUNTIME_DIR) 97 set(multiValueArgs) 98 cmake_parse_arguments(_genmanifest "${options}" "${oneValueArgs}" 99 "${multiValueArgs}" ${ARGN}) ··· 141 RELATIVE_TARGET_DIR 142 "${_genmanifest_RELATIVE_RUNTIME_DIR}" 143 OUT_FILENAME 144 - "${_genmanifest_OUT_FILENAME}") 145 endfunction()
··· 42 # runtime directory relative to the manifest directory in the installed layout 43 [OUT_FILENAME <outfilename> # Optional: Alternate name of the manifest file to generate 44 [MANIFEST_TEMPLATE <template>] # Optional: Specify an alternate template to use 45 + [LIBMONADO <path>] # Optional: path to libmonado to include in manifest 46 ) 47 #]] 48 ··· 58 59 function(generate_openxr_runtime_manifest_buildtree) 60 set(options) 61 + set(oneValueArgs MANIFEST_TEMPLATE RUNTIME_TARGET OUT_FILE LIBMONADO) 62 set(multiValueArgs) 63 cmake_parse_arguments(_genmanifest "${options}" "${oneValueArgs}" 64 "${multiValueArgs}" ${ARGN}) ··· 81 TARGET 82 "${_genmanifest_RUNTIME_TARGET}" 83 OUT_FILE 84 + "${_genmanifest_OUT_FILE}" 85 + LIBMONADO 86 + "${_genmanifest_LIBMONADO}" 87 + ) 88 89 endfunction() 90 ··· 97 COMPONENT 98 RUNTIME_TARGET 99 RUNTIME_DIR_RELATIVE_TO_MANIFEST 100 + RELATIVE_RUNTIME_DIR 101 + LIBMONADO 102 + ) 103 set(multiValueArgs) 104 cmake_parse_arguments(_genmanifest "${options}" "${oneValueArgs}" 105 "${multiValueArgs}" ${ARGN}) ··· 147 RELATIVE_TARGET_DIR 148 "${_genmanifest_RELATIVE_RUNTIME_DIR}" 149 OUT_FILENAME 150 + "${_genmanifest_OUT_FILENAME}" 151 + LIBMONADO 152 + "${_genmanifest_LIBMONADO}" 153 + ) 154 endfunction()
+1 -1
cmake/openxr_manifest.in.json
··· 2 "file_format_version": "1.0.0", 3 "runtime": { 4 "name": "Monado", 5 - "library_path": "@target_path@" 6 } 7 }
··· 2 "file_format_version": "1.0.0", 3 "runtime": { 4 "name": "Monado", 5 + "library_path": "@target_path@"@extra_fields@ 6 } 7 }
+5 -5
src/xrt/targets/CMakeLists.txt
··· 7 8 add_subdirectory(common) 9 10 if(XRT_FEATURE_OPENXR) 11 add_subdirectory(openxr) 12 endif() ··· 41 ) 42 add_subdirectory(sdl_test) 43 endif() 44 - 45 - # Monado management library 46 - if(XRT_FEATURE_SERVICE AND XRT_HAVE_LINUX) 47 - add_subdirectory(libmonado) 48 - endif()
··· 7 8 add_subdirectory(common) 9 10 + # Monado management library 11 + if(XRT_FEATURE_SERVICE AND XRT_HAVE_LINUX) 12 + add_subdirectory(libmonado) 13 + endif() 14 + 15 if(XRT_FEATURE_OPENXR) 16 add_subdirectory(openxr) 17 endif() ··· 46 ) 47 add_subdirectory(sdl_test) 48 endif()
+7 -1
src/xrt/targets/openxr/CMakeLists.txt
··· 64 set(DEV_MANIFEST_OUTPUT "${CMAKE_BINARY_DIR}/${RUNTIME_TARGET}-dev.json") 65 endif() 66 67 include(GenerateOpenXRRuntimeManifest) 68 generate_openxr_runtime_manifest_buildtree( 69 RUNTIME_TARGET ${RUNTIME_TARGET} # 70 OUT_FILE ${DEV_MANIFEST_OUTPUT} 71 ) ··· 118 set(_extra_args RUNTIME_DIR_RELATIVE_TO_MANIFEST ../../../${CMAKE_INSTALL_LIBDIR}) 119 endif() 120 generate_openxr_runtime_manifest_at_install( 121 - ${_extra_args} 122 RUNTIME_TARGET ${RUNTIME_TARGET} 123 DESTINATION share/openxr/${XR_API_MAJOR} 124 RELATIVE_RUNTIME_DIR ${CMAKE_INSTALL_LIBDIR}
··· 64 set(DEV_MANIFEST_OUTPUT "${CMAKE_BINARY_DIR}/${RUNTIME_TARGET}-dev.json") 65 endif() 66 67 + set(_libmonado_arg) 68 + if(TARGET monado) 69 + set(_libmonado_arg LIBMONADO monado) 70 + endif() 71 + 72 include(GenerateOpenXRRuntimeManifest) 73 generate_openxr_runtime_manifest_buildtree( 74 + ${_libmonado_arg} 75 RUNTIME_TARGET ${RUNTIME_TARGET} # 76 OUT_FILE ${DEV_MANIFEST_OUTPUT} 77 ) ··· 124 set(_extra_args RUNTIME_DIR_RELATIVE_TO_MANIFEST ../../../${CMAKE_INSTALL_LIBDIR}) 125 endif() 126 generate_openxr_runtime_manifest_at_install( 127 + ${_extra_args} ${_libmonado_arg} 128 RUNTIME_TARGET ${RUNTIME_TARGET} 129 DESTINATION share/openxr/${XR_API_MAJOR} 130 RELATIVE_RUNTIME_DIR ${CMAKE_INSTALL_LIBDIR}