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