From 89a49218a1770d245936eb4af12df0ea2af44dc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Ferenc=20Nagy-Egri?= Date: Tue, 9 Dec 2025 13:28:43 +0100 Subject: [PATCH] scripts: Install PCC and ICD manifest JSONs --- icd/CMakeLists.txt | 33 +++++++++++++++------------------ pcc/CMakeLists.txt | 33 ++++++++++++++++++++++++++++++--- pcc/pcconvk.json.in | 13 +++++++++++++ 3 files changed, 58 insertions(+), 21 deletions(-) create mode 100644 pcc/pcconvk.json.in diff --git a/icd/CMakeLists.txt b/icd/CMakeLists.txt index 8b82228..72a96fa 100644 --- a/icd/CMakeLists.txt +++ b/icd/CMakeLists.txt @@ -108,17 +108,11 @@ set_target_properties(icd PROPERTIES OUTPUT_NAME ${ICD_NAME}) set(INPUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/${ICD_NAME}.json.in") set(INTERMEDIATE_FILE "${CMAKE_CURRENT_BINARY_DIR}/json/icd.json") set(OUTPUT_FILE_FINAL_NAME "${ICD_NAME}.json") -set(LAYER_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}) -if (WIN32) - set(LAYER_INSTALL_DIR ${CMAKE_INSTALL_BINDIR}) # WIN32 expect the dll in the `bin` dir, this matches our WIN32 SDK process -endif() -if (WIN32) - set(JSON_LIBRARY_PATH ".\\\\${ICD_NAME}.dll") -elseif(APPLE) - set(JSON_LIBRARY_PATH "./lib${ICD_NAME}.dylib") +if(WIN32) + set(JSON_LIBRARY_PATH ".\\\\${CMAKE_SHARED_LIBRARY_PREFIX}${ICD_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}") else() - set(JSON_LIBRARY_PATH "./lib${ICD_NAME}.so") + set(JSON_LIBRARY_PATH "./${CMAKE_SHARED_LIBRARY_PREFIX}${ICD_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}") endif() configure_file(${INPUT_FILE} ${INTERMEDIATE_FILE} @ONLY) @@ -130,22 +124,25 @@ add_custom_command(TARGET icd POST_BUILD # For UNIX-based systems, `library_path` should not contain a relative path (indicated by "./") before installing to system directories # This json isn't used for regular local development, it's used for installation +if(WIN32) + set(ICD_INSTALL_DIR ${CMAKE_INSTALL_BINDIR}) + set(MANIFEST_INSTALL_DIR ${CMAKE_INSTALL_BINDIR}) +else() + set(ICD_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}) + set(MANIFEST_INSTALL_DIR ${CMAKE_INSTALL_DATAROOTDIR}/${API_TYPE}/icd.d) +endif() + if (UNIX) set(UNIX_INTERMEDIATE_FILE "${CMAKE_CURRENT_BINARY_DIR}/json/unix_install_icd.json") - - if(APPLE) - set(JSON_LIBRARY_PATH "lib${ICD_NAME}.dylib") - else() - set(JSON_LIBRARY_PATH "lib${ICD_NAME}.so") - endif() + set(JSON_LIBRARY_PATH "${CMAKE_SHARED_LIBRARY_PREFIX}${ICD_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}") configure_file(${INPUT_FILE} ${UNIX_INTERMEDIATE_FILE} @ONLY) - install(FILES ${UNIX_INTERMEDIATE_FILE} DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${API_TYPE}/icd.d RENAME ${OUTPUT_FILE_FINAL_NAME}) + install(FILES ${UNIX_INTERMEDIATE_FILE} DESTINATION ${MANIFEST_INSTALL_DIR} RENAME ${OUTPUT_FILE_FINAL_NAME}) endif() if (WIN32) - install(FILES ${INTERMEDIATE_FILE} DESTINATION ${LAYER_INSTALL_DIR} RENAME ${OUTPUT_FILE_FINAL_NAME}) + install(FILES ${INTERMEDIATE_FILE} DESTINATION ${MANIFEST_INSTALL_DIR} RENAME ${OUTPUT_FILE_FINAL_NAME}) endif() -install(TARGETS icd DESTINATION ${LAYER_INSTALL_DIR}) +install(TARGETS icd LIBRARY DESTINATION ${ICD_INSTALL_DIR}) diff --git a/pcc/CMakeLists.txt b/pcc/CMakeLists.txt index 48568c0..3583911 100644 --- a/pcc/CMakeLists.txt +++ b/pcc/CMakeLists.txt @@ -34,10 +34,37 @@ if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") ) endif() -target_include_directories(pcc PRIVATE - . -) +target_include_directories(pcc PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}") set_target_properties(pcc PROPERTIES OUTPUT_NAME ${PCC_NAME}) +set(INPUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/${PCC_NAME}.json.in") +set(INTERMEDIATE_FILE "${CMAKE_CURRENT_BINARY_DIR}/pcc/pcc.json") +set(OUTPUT_FILE_FINAL_NAME "${PCC_NAME}.json") + +if(WIN32) + set(JSON_PCC_PATH ".\\\\${PCC_NAME}${CMAKE_EXECUTABLE_SUFFIX}") +else() + set(JSON_PCC_PATH "./${PCC_NAME}${CMAKE_EXECUTABLE_SUFFIX}") +endif() + +configure_file(${INPUT_FILE} ${INTERMEDIATE_FILE} @ONLY) + +# To support both multi/single configuration generators just copy the json to the correct directory +add_custom_command(TARGET pcc POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${INTERMEDIATE_FILE} $/${OUTPUT_FILE_FINAL_NAME} +) + +if(WIN32) + set(COMPONENT_INSTALL_DIR ${CMAKE_INSTALL_BINDIR}) # WIN32 expect the dll in the `bin` dir, this matches our WIN32 SDK process +else() + set(COMPONENT_INSTALL_DIR ${CMAKE_INSTALL_DATAROOTDIR}/${API_TYPE}/pcc.d) +endif() + +set(INTERMEDIATE_FILE "${CMAKE_CURRENT_BINARY_DIR}/pcc/install_pcc.json") +set(JSON_PCC_PATH "${PCC_NAME}${CMAKE_EXECUTABLE_SUFFIX}") + +configure_file(${INPUT_FILE} ${INTERMEDIATE_FILE} @ONLY) + +install(FILES ${INTERMEDIATE_FILE} DESTINATION ${COMPONENT_INSTALL_DIR} RENAME ${OUTPUT_FILE_FINAL_NAME}) install(TARGETS pcc) diff --git a/pcc/pcconvk.json.in b/pcc/pcconvk.json.in new file mode 100644 index 0000000..6b12c52 --- /dev/null +++ b/pcc/pcconvk.json.in @@ -0,0 +1,13 @@ +{ + "file_format_version": "1.0.0", + "name": "Emulation", + "architectures": { + "Portable": { + "pipeline_cache_compiler": "@JSON_PCC_PATH@", + "pipeline_cache_flags" : "", + "pipeline_cache_debug_flag": "--debug", + "vendor_id_filter" : "0x10000", + "driver_id_filter" : "0x1b" + } + } +}