The open source OpenXR runtime

cmake: Fix building in dir with whitespace

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

authored by Patrick Nicolas and committed by Rylie Pavlik 825de0ec 6db9d570

Changed files
+31 -27
cmake
doc
changes
misc_fixes
src
+5 -4
cmake/GenerateKhrManifest.cmake
··· 77 77 message(FATAL_ERROR "Need MANIFEST_DESCRIPTION specified!") 78 78 endif() 79 79 if(_genmanifest_LIBMONADO) 80 - set(_libmonado $<TARGET_FILE:${_genmanifest_LIBMONADO}>) 80 + set(_libmonado "$<TARGET_FILE:${_genmanifest_LIBMONADO}>") 81 81 endif() 82 82 83 83 # Set template values ··· 101 101 "${_script}" DEPENDS "${_script}" 102 102 COMMENT 103 103 "Generating ${_genmanifest_MANIFEST_DESCRIPTION} named ${_genmanifest_OUT_FILE} for build tree usage" 104 + VERBATIM 104 105 ) 105 106 endfunction() 106 107 ··· 144 145 set(_genmanifest_IS_INSTALL ON) 145 146 # Template value 146 147 set(TARGET_FILENAME 147 - ${CMAKE_SHARED_MODULE_PREFIX}${_genmanifest_TARGET}${CMAKE_SHARED_MODULE_SUFFIX} 148 + "${CMAKE_SHARED_MODULE_PREFIX}${_genmanifest_TARGET}${CMAKE_SHARED_MODULE_SUFFIX}" 148 149 ) 149 150 if(_genmanifest_LIBMONADO) 150 - set(LIBMONADO ${CMAKE_SHARED_MODULE_PREFIX}${_genmanifest_LIBMONADO}${CMAKE_SHARED_MODULE_SUFFIX}) 151 + set(LIBMONADO "${CMAKE_SHARED_MODULE_PREFIX}${_genmanifest_LIBMONADO}${CMAKE_SHARED_MODULE_SUFFIX}") 151 152 endif() 152 153 153 154 set(_script 154 - ${CMAKE_CURRENT_BINARY_DIR}/make_manifest_${_genmanifest_TARGET}.cmake) 155 + "${CMAKE_CURRENT_BINARY_DIR}/make_manifest_${_genmanifest_TARGET}.cmake") 155 156 configure_file("${_KHR_MANIFEST_SCRIPT}" "${_script}" @ONLY) 156 157 install(SCRIPT "${_script}" COMPONENT ${_genmanifest_COMPONENT}) 157 158 endfunction()
+22 -20
cmake/GenerateKhrManifestInternals.cmake.in
··· 7 7 # 2019-2022 Rylie Pavlik <rylie.pavlik@collabora.com> <rylie@ryliepavlik.com> 8 8 9 9 # Get input from main CMake script 10 - set(MANIFEST_TEMPLATE @_genmanifest_MANIFEST_TEMPLATE@) 11 - set(DESTINATION @_genmanifest_DESTINATION@) 12 - set(OUT_FILENAME @_genmanifest_OUT_FILENAME@) 13 - set(CONFIGURE_OUTPUT_FILE @_genmanifest_INTERMEDIATE_MANIFEST@) 10 + set(MANIFEST_TEMPLATE "@_genmanifest_MANIFEST_TEMPLATE@") 11 + set(DESTINATION "@_genmanifest_DESTINATION@") 12 + set(OUT_FILENAME "@_genmanifest_OUT_FILENAME@") 13 + set(CONFIGURE_OUTPUT_FILE "@_genmanifest_INTERMEDIATE_MANIFEST@") 14 14 set(IS_INSTALL @_genmanifest_IS_INSTALL@) 15 15 set(MANIFEST_DESCRIPTION "@_genmanifest_MANIFEST_DESCRIPTION@") 16 - set(TARGET @_genmanifest_TARGET@) 16 + set(TARGET "@_genmanifest_TARGET@") 17 17 # Target install dir relative to install prefix 18 - set(RELATIVE_TARGET_DIR @_genmanifest_RELATIVE_TARGET_DIR@) 18 + set(RELATIVE_TARGET_DIR "@_genmanifest_RELATIVE_TARGET_DIR@") 19 19 # Target so/dll filename 20 - set(TARGET_FILENAME @TARGET_FILENAME@) 20 + set(TARGET_FILENAME "@TARGET_FILENAME@") 21 21 # The relative path from the manifest dir to the library. Optional. 22 22 set(TARGET_DIR_RELATIVE_TO_MANIFEST 23 - @_genmanifest_TARGET_DIR_RELATIVE_TO_MANIFEST@) 23 + "@_genmanifest_TARGET_DIR_RELATIVE_TO_MANIFEST@") 24 24 # Config option 25 - set(ABSOLUTE_TARGET_PATH @_genmanifest_ABSOLUTE_TARGET_PATH@) 26 - set(LIBMONADO @LIBMONADO@) 25 + set(ABSOLUTE_TARGET_PATH "@_genmanifest_ABSOLUTE_TARGET_PATH@") 26 + if (NOT LIBMONADO) 27 + set(LIBMONADO "@LIBMONADO@") 28 + endif() 27 29 28 30 if(TARGET_PATH) 29 31 # This is at build time, not install time ··· 33 35 message( 34 36 STATUS 35 37 "Installing ${MANIFEST_DESCRIPTION} with absolute path to library") 36 - set(TARGET_PATH ${RELATIVE_TARGET_DIR}/${TARGET_FILENAME}) 38 + set(TARGET_PATH "${RELATIVE_TARGET_DIR}/${TARGET_FILENAME}") 37 39 if(NOT IS_ABSOLUTE ${RELATIVE_TARGET_DIR}) 38 - set(TARGET_PATH ${CMAKE_INSTALL_PREFIX}/${TARGET_PATH}) 40 + set(TARGET_PATH "${CMAKE_INSTALL_PREFIX}/${TARGET_PATH}") 39 41 endif() 40 42 if(LIBMONADO) 41 - set(LIBMONADO ${RELATIVE_TARGET_DIR}/${LIBMONADO}) 43 + set(LIBMONADO "${RELATIVE_TARGET_DIR}/${LIBMONADO}") 42 44 if(NOT IS_ABSOLUTE ${RELATIVE_TARGET_DIR}) 43 - set(LIBMONADO ${CMAKE_INSTALL_PREFIX}/${LIBMONADO}) 45 + set(LIBMONADO "${CMAKE_INSTALL_PREFIX}/${LIBMONADO}") 44 46 endif() 45 47 endif() 46 48 elseif(TARGET_DIR_RELATIVE_TO_MANIFEST) ··· 49 51 STATUS 50 52 "Installing ${MANIFEST_DESCRIPTION} with JSON-relative path to library" 51 53 ) 52 - set(TARGET_PATH ${TARGET_DIR_RELATIVE_TO_MANIFEST}/${TARGET_FILENAME}) 54 + set(TARGET_PATH "${TARGET_DIR_RELATIVE_TO_MANIFEST}/${TARGET_FILENAME}") 53 55 if(LIBMONADO) 54 - get_filename_component(LIBMONADO ${LIBMONADO} NAME) 55 - set(LIBMONADO ${TARGET_DIR_RELATIVE_TO_MANIFEST}/${LIBMONADO}) 56 + get_filename_component(LIBMONADO "${LIBMONADO}" NAME) 57 + set(LIBMONADO "${TARGET_DIR_RELATIVE_TO_MANIFEST}/${LIBMONADO}") 56 58 endif() 57 59 else() 58 60 # Unqualified filename: requires it exist on the system shared library search path. ··· 60 62 STATUS 61 63 "Installing ${MANIFEST_DESCRIPTION} with unqualified library filename (uses system search path)" 62 64 ) 63 - set(TARGET_PATH ${TARGET_FILENAME}) 65 + set(TARGET_PATH "${TARGET_FILENAME}") 64 66 if(LIBMONADO) 65 - get_filename_component(LIBMONADO ${LIBMONADO} NAME) 67 + get_filename_component(LIBMONADO "${LIBMONADO}" NAME) 66 68 endif() 67 69 endif() 68 70 ··· 75 77 string(REPLACE "/" [[\\]] TARGET_PATH ${TARGET_PATH}) 76 78 endif() 77 79 78 - set(target_path ${TARGET_PATH}) 80 + set(target_path "${TARGET_PATH}") 79 81 # Create manifest 80 82 configure_file("${MANIFEST_TEMPLATE}" "${CONFIGURE_OUTPUT_FILE}") 81 83
+1
doc/changes/misc_fixes/mr.2319.md
··· 1 + Fix: Be able to build properly in directories with whitespace.
+1 -1
src/xrt/targets/openxr/CMakeLists.txt
··· 42 42 APPEND_STRING 43 43 PROPERTY 44 44 LINK_FLAGS 45 - "-u xrNegotiateLoaderRuntimeInterface -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/libopenxr.version" 45 + "-u xrNegotiateLoaderRuntimeInterface -Wl,--version-script=\"${CMAKE_CURRENT_SOURCE_DIR}/libopenxr.version\"" 46 46 ) 47 47 # Re-link if the version script changes. 48 48 set_property(
+2 -2
src/xrt/targets/service/configure_and_install_units.cmake
··· 13 13 endif() 14 14 15 15 # Create unit files 16 - configure_file(@SOCKET_INPUT@ "@CMAKE_CURRENT_BINARY_DIR@/@UNIT_NAME@.socket") 17 - configure_file(@SERVICE_INPUT@ "@CMAKE_CURRENT_BINARY_DIR@/@UNIT_NAME@.service") 16 + configure_file("@SOCKET_INPUT@" "@CMAKE_CURRENT_BINARY_DIR@/@UNIT_NAME@.socket") 17 + configure_file("@SERVICE_INPUT@" "@CMAKE_CURRENT_BINARY_DIR@/@UNIT_NAME@.service") 18 18 19 19 # Install them 20 20 file(