Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 15 additions & 18 deletions icd/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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})
33 changes: 30 additions & 3 deletions pcc/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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} $<TARGET_FILE_DIR:pcc>/${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)
13 changes: 13 additions & 0 deletions pcc/pcconvk.json.in
Original file line number Diff line number Diff line change
@@ -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"
}
}
}