The open source OpenXR runtime
at main 90 lines 3.2 kB view raw
1# Copyright 2019-2022, Collabora, Ltd. 2# Copyright 2019, Benjamin Saunders <ben.e.saunders@gmail.com> 3# 4# SPDX-License-Identifier: BSL-1.0 5# 6# Maintained by: 7# 2019-2022 Rylie Pavlik <rylie.pavlik@collabora.com> <rylie@ryliepavlik.com> 8 9# Get input from main CMake script 10set(MANIFEST_TEMPLATE "@_genmanifest_MANIFEST_TEMPLATE@") 11set(DESTINATION "@_genmanifest_DESTINATION@") 12set(OUT_FILENAME "@_genmanifest_OUT_FILENAME@") 13set(CONFIGURE_OUTPUT_FILE "@_genmanifest_INTERMEDIATE_MANIFEST@") 14set(IS_INSTALL @_genmanifest_IS_INSTALL@) 15set(MANIFEST_DESCRIPTION "@_genmanifest_MANIFEST_DESCRIPTION@") 16set(TARGET "@_genmanifest_TARGET@") 17# Target install dir relative to install prefix 18set(RELATIVE_TARGET_DIR "@_genmanifest_RELATIVE_TARGET_DIR@") 19# Target so/dll filename 20set(TARGET_FILENAME "@TARGET_FILENAME@") 21# The relative path from the manifest dir to the library. Optional. 22set(TARGET_DIR_RELATIVE_TO_MANIFEST 23 "@_genmanifest_TARGET_DIR_RELATIVE_TO_MANIFEST@") 24# Config option 25set(ABSOLUTE_TARGET_PATH "@_genmanifest_ABSOLUTE_TARGET_PATH@") 26if (NOT LIBMONADO) 27 set(LIBMONADO "@LIBMONADO@") 28endif() 29 30if(TARGET_PATH) 31 # This is at build time, not install time 32 set(CONFIGURE_OUTPUT_FILE "${OUT_FILE}") 33elseif(ABSOLUTE_TARGET_PATH) 34 # Absolute path to TARGET 35 message( 36 STATUS 37 "Installing ${MANIFEST_DESCRIPTION} with absolute path to library") 38 set(TARGET_PATH "${RELATIVE_TARGET_DIR}/${TARGET_FILENAME}") 39 if(NOT IS_ABSOLUTE ${RELATIVE_TARGET_DIR}) 40 set(TARGET_PATH "${CMAKE_INSTALL_PREFIX}/${TARGET_PATH}") 41 endif() 42 if(LIBMONADO) 43 set(LIBMONADO "${RELATIVE_TARGET_DIR}/${LIBMONADO}") 44 if(NOT IS_ABSOLUTE ${RELATIVE_TARGET_DIR}) 45 set(LIBMONADO "${CMAKE_INSTALL_PREFIX}/${LIBMONADO}") 46 endif() 47 endif() 48elseif(TARGET_DIR_RELATIVE_TO_MANIFEST) 49 # Relative path to target. 50 message( 51 STATUS 52 "Installing ${MANIFEST_DESCRIPTION} with JSON-relative path to library" 53 ) 54 set(TARGET_PATH "${TARGET_DIR_RELATIVE_TO_MANIFEST}/${TARGET_FILENAME}") 55 if(LIBMONADO) 56 get_filename_component(LIBMONADO "${LIBMONADO}" NAME) 57 set(LIBMONADO "${TARGET_DIR_RELATIVE_TO_MANIFEST}/${LIBMONADO}") 58 endif() 59else() 60 # Unqualified filename: requires it exist on the system shared library search path. 61 message( 62 STATUS 63 "Installing ${MANIFEST_DESCRIPTION} with unqualified library filename (uses system search path)" 64 ) 65 set(TARGET_PATH "${TARGET_FILENAME}") 66 if(LIBMONADO) 67 get_filename_component(LIBMONADO "${LIBMONADO}" NAME) 68 endif() 69endif() 70 71if(LIBMONADO) 72 set(extra_fields ",\n \"MND_libmonado_path\": \"${LIBMONADO}\"") 73endif() 74 75if(WIN32) 76 # Windows really wants backslashes in the manifest, and they must be escaped. 77 string(REPLACE "/" [[\\]] TARGET_PATH ${TARGET_PATH}) 78endif() 79 80set(target_path "${TARGET_PATH}") 81# Create manifest 82configure_file("${MANIFEST_TEMPLATE}" "${CONFIGURE_OUTPUT_FILE}") 83 84if(IS_INSTALL) 85 # Install it 86 file( 87 INSTALL 88 DESTINATION "${CMAKE_INSTALL_PREFIX}/${DESTINATION}" 89 TYPE FILE FILES "${CONFIGURE_OUTPUT_FILE}") 90endif()