The open source OpenXR runtime
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()