From b21a094a9276945907484b1d2d8eccbb03cdf447 Mon Sep 17 00:00:00 2001
From: foreman
Date: Mon, 22 Jul 2019 17:19:35 -0400
Subject: [PATCH] P4 to Git Change 1971654 by kzhuravl@kzhuravl-spot-ocl on
2019/07/22 17:15:57
SWDEV-79445 - Bring cmake related changes from git
http://git.amd.com:8080/c/compute/ec/opencl/+/229473
http://git.amd.com:8080/c/compute/ec/opencl/+/229474
http://git.amd.com:8080/c/compute/ec/opencl/+/233268
+
Payam's changes for comgr
Affected files ...
... //depot/stg/opencl/drivers/opencl/CMakeLists.txt#24 edit
... //depot/stg/opencl/drivers/opencl/DEB/postinst#1 add
... //depot/stg/opencl/drivers/opencl/DEB/prerm#1 add
... //depot/stg/opencl/drivers/opencl/RPM/rpm_post#1 add
... //depot/stg/opencl/drivers/opencl/RPM/rpm_postun#1 add
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/CMakeLists.txt#18 edit
... //depot/stg/opencl/drivers/opencl/cmake/modules/FindROCR.cmake#3 edit
... //depot/stg/opencl/drivers/opencl/cmake/modules/FindROCT.cmake#1 add
... //depot/stg/opencl/drivers/opencl/runtime/CMakeLists.txt#15 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/CMakeLists.txt#20 edit
---
rocclr/CMakeLists.txt | 68 ++++-------------------
rocclr/cmake/modules/FindROCR.cmake | 33 +++++------
rocclr/cmake/modules/FindROCT.cmake | 16 ++++++
rocclr/runtime/CMakeLists.txt | 10 +++-
rocclr/runtime/device/rocm/CMakeLists.txt | 6 ++
5 files changed, 56 insertions(+), 77 deletions(-)
create mode 100644 rocclr/cmake/modules/FindROCT.cmake
diff --git a/rocclr/CMakeLists.txt b/rocclr/CMakeLists.txt
index 4c5fcc5952..63df360043 100644
--- a/rocclr/CMakeLists.txt
+++ b/rocclr/CMakeLists.txt
@@ -55,7 +55,14 @@ include_directories(${CMAKE_SOURCE_DIR}/compiler/llvm/tools/lld/include)
include_directories(${CMAKE_SOURCE_DIR}/compiler/llvm/lib/Target/AMDGPU)
include_directories(${CMAKE_BINARY_DIR}/compiler/llvm/lib/Target/AMDGPU)
-add_subdirectory(compiler/driver EXCLUDE_FROM_ALL)
+if(${USE_COMGR_LIBRARY} MATCHES "yes")
+ set(COMGR_DYN_DLL "yes")
+ add_definitions(-DCOMGR_DYN_DLL="yes")
+ include_directories(${CMAKE_SOURCE_DIR}/compiler/llvm/include)
+ add_definitions(-DUSE_COMGR_LIBRARY)
+else()
+ add_subdirectory(compiler/driver EXCLUDE_FROM_ALL)
+endif()
set(BUILD_HC_LIB OFF CACHE BOOL "")
set(ROCM_DEVICELIB_INCLUDE_TESTS OFF CACHE BOOL "")
@@ -66,6 +73,7 @@ add_subdirectory(library/amdgcn EXCLUDE_FROM_ALL)
add_subdirectory(compiler/lib/loaders/elf/utils/libelf)
+find_package(ROCT REQUIRED)
find_package(ROCR REQUIRED)
add_subdirectory(runtime)
@@ -119,50 +127,6 @@ set ( CPACK_GENERATOR RPM DEB )
set ( CPACK_PACKAGING_INSTALL_PREFIX "/opt/rocm/opencl" )
## Debian package values
-file(GENERATE OUTPUT "postinst"
- CONTENT "#!/bin/bash
-
-set -e
-
-do_ldconfig() {
- echo /opt/rocm/opencl/lib/x86_64 > /etc/ld.so.conf.d/x86_64-rocm-opencl.conf && ldconfig
- mkdir -p /etc/OpenCL/vendors && (echo libamdocl64.so > /etc/OpenCL/vendors/amdocl64.icd)
-}
-
-case \"$1\" in
- configure)
- do_ldconfig
- ;;
- abort-upgrade|abort-remove|abort-deconfigure)
- echo \"$1\"
- ;;
- *)
- exit 0
- ;;
-esac
-")
-
-file(GENERATE OUTPUT "prerm"
- CONTENT "#!/bin/bash
-
-set -e
-
-rm_ldconfig() {
- rm -f /etc/OpenCL/vendors/amdocl64.icd
- rm -f /etc/ld.so.conf.d/x86_64-rocm-opencl.conf && ldconfig
-}
-
-case \"$1\" in
- remove)
- rm_ldconfig
- ;;
- purge)
- ;;
- *)
- exit 0
- ;;
-esac
-")
set ( CPACK_DEBIAN_PACKAGE_MAINTAINER "AMD" )
set ( CPACK_DEBIAN_PACKAGE_DEPENDS "" )
@@ -172,26 +136,18 @@ set ( CPACK_DEBIAN_applications_FILE_NAME "rocm-opencl-1.2.0.deb" )
set ( CPACK_DEBIAN_libraries_PACKAGE_NAME "rocm-opencl-dev" )
set ( CPACK_DEBIAN_libraries_FILE_NAME "rocm-opencl-dev-1.2.0.deb" )
set ( CPACK_DEBIAN_libraries_PACKAGE_DEPENDS "rocm-opencl" )
-set ( CPACK_DEBIAN_applications_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_BINARY_DIR}/prerm;${CMAKE_CURRENT_BINARY_DIR}/postinst" )
+set ( CPACK_DEBIAN_applications_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/DEB/postinst;${CMAKE_CURRENT_SOURCE_DIR}/DEB/prerm" )
## RPM package values
-file(GENERATE OUTPUT "rpm_postinst"
- CONTENT "echo /opt/rocm/opencl/lib/x86_64 > /etc/ld.so.conf.d/x86_64-rocm-opencl.conf && ldconfig;
-mkdir -p /etc/OpenCL/vendors && (echo libamdocl64.so > /etc/OpenCL/vendors/amdocl64.icd)")
-file(GENERATE OUTPUT "rpm_prerm"
- CONTENT "rm -f /etc/OpenCL/vendors/amdocl64.icd
-rm -f /etc/ld.so.conf.d/x86_64-rocm-opencl.conf && ldconfig")
-
set ( CPACK_RPM_COMPONENT_INSTALL ON)
set ( CPACK_RPM_applications_PACKAGE_NAME "rocm-opencl" )
set ( CPACK_RPM_applications_FILE_NAME "rocm-opencl-1.2.0.rpm" )
set ( CPACK_RPM_libraries_PACKAGE_NAME "rocm-opencl-devel" )
set ( CPACK_RPM_libraries_FILE_NAME "rocm-opencl-devel-1.2.0.rpm" )
set ( CPACK_RPM_libraries_PACKAGE_DEPENDS "rocm-opencl" )
-set ( CPACK_RPM_applications_POST_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/rpm_postinst" )
-set ( CPACK_RPM_applications_PRE_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/rpm_prerm" )
-
+set ( CPACK_RPM_applications_POST_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/RPM/rpm_post" )
+set ( CPACK_RPM_applications_POST_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/RPM/rpm_postun" )
set ( CPACK_COMPONENTS_ALL applications libraries )
include ( CPack )
diff --git a/rocclr/cmake/modules/FindROCR.cmake b/rocclr/cmake/modules/FindROCR.cmake
index 7d4c0ca4cf..2b198dcf8f 100644
--- a/rocclr/cmake/modules/FindROCR.cmake
+++ b/rocclr/cmake/modules/FindROCR.cmake
@@ -1,23 +1,16 @@
-# - Try to find the ROCm Runtime.
-# Once done this will define
-# ROCR_FOUND - System has the ROCR installed
-# ROCR_INCLUDE_DIRS - The ROCR include directories
-# ROCR_LIBRARIES - The libraries needed to use the ROCR
-
-find_path(ROCR_INCLUDE_DIR hsa.h
- HINTS /opt/rocm/include /opt/rocm/hsa/include
- PATH_SUFFIXES hsa)
-
-find_library(ROCR_LIBRARY hsa-runtime64
- HINTS /opt/rocm/lib /opt/rocm/hsa/lib)
+# Try to find ROCR (Radeon Open Compute Runtime)
+#
+# Once found, this will define:
+# - ROCR_FOUND - ROCR status (found or not found)
+# - ROCR_INCLUDES - Required ROCR include directories
+# - ROCR_LIBRARIES - Required ROCR libraries
+find_path(FIND_ROCR_INCLUDES hsa.h HINTS /opt/rocm/include /opt/rocm/hsa/include PATH_SUFFIXES hsa)
+find_library(FIND_ROCR_LIBRARIES hsa-runtime64 HINTS /opt/rocm/lib /opt/rocm/hsa/lib)
include(FindPackageHandleStandardArgs)
-# handle the QUIETLY and REQUIRED arguments and set ROCR_FOUND to TRUE
-# if all listed variables are TRUE
-find_package_handle_standard_args(ROCR DEFAULT_MSG
- ROCR_LIBRARY ROCR_INCLUDE_DIR)
+find_package_handle_standard_args(ROCR DEFAULT_MSG
+ FIND_ROCR_INCLUDES FIND_ROCR_LIBRARIES)
+mark_as_advanced(FIND_ROCR_INCLUDES FIND_ROCR_LIBRARIES)
-mark_as_advanced(ROCR_INCLUDE_DIR ROCR_LIBRARY)
-
-set(ROCR_LIBRARIES ${ROCR_LIBRARY})
-set(ROCR_INCLUDE_DIRS ${ROCR_INCLUDE_DIR})
+set(ROCR_INCLUDES ${FIND_ROCR_INCLUDES})
+set(ROCR_LIBRARIES ${FIND_ROCR_LIBRARIES})
diff --git a/rocclr/cmake/modules/FindROCT.cmake b/rocclr/cmake/modules/FindROCT.cmake
new file mode 100644
index 0000000000..37f08fcff7
--- /dev/null
+++ b/rocclr/cmake/modules/FindROCT.cmake
@@ -0,0 +1,16 @@
+# Try to find ROCT (Radeon Open Compute Thunk)
+#
+# Once found, this will define:
+# - ROCT_FOUND - ROCT status (found or not found)
+# - ROCT_INCLUDES - Required ROCT include directories
+# - ROCT_LIBRARIES - Required ROCT libraries
+find_path(FIND_ROCT_INCLUDES hsakmt.h HINTS /opt/rocm/include)
+find_library(FIND_ROCT_LIBRARIES hsakmt HINTS /opt/rocm/lib)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(ROCT DEFAULT_MSG
+ FIND_ROCT_INCLUDES FIND_ROCT_LIBRARIES)
+mark_as_advanced(FIND_ROCT_INCLUDES FIND_ROCT_LIBRARIES)
+
+set(ROCT_INCLUDES ${FIND_ROCT_INCLUDES})
+set(ROCT_LIBRARIES ${FIND_ROCT_LIBRARIES})
diff --git a/rocclr/runtime/CMakeLists.txt b/rocclr/runtime/CMakeLists.txt
index 62e2bf7c00..0a55cf58ae 100644
--- a/rocclr/runtime/CMakeLists.txt
+++ b/rocclr/runtime/CMakeLists.txt
@@ -7,7 +7,7 @@ if(CMAKE_BUILD_TYPE MATCHES "^Debug$")
add_definitions(-DDEBUG)
endif()
-include_directories(${ROCR_INCLUDE_DIRS})
+include_directories(${ROCR_INCLUDES})
include_directories(${CMAKE_SOURCE_DIR}/runtime)
include_directories(${CMAKE_SOURCE_DIR}/api/opencl)
@@ -29,6 +29,13 @@ include_directories(${CMAKE_SOURCE_DIR}/compiler/lib/loaders/elf/utils/libelf)
add_subdirectory(device/rocm)
+if(${USE_COMGR_LIBRARY} MATCHES "yes")
+ add_definitions(-DUSE_COMGR_LIBRARY -DCOMGR_DYN_DLL)
+ find_package(amd_comgr REQUIRED CONFIG)
+ include_directories("$")
+ set(COMGR_CPP device/comgrctx.cpp)
+endif()
+
add_library(oclruntime OBJECT
thread/thread.cpp
thread/monitor.cpp
@@ -61,6 +68,7 @@ add_library(oclruntime OBJECT
${CMAKE_SOURCE_DIR}/compiler/lib/loaders/elf/elf.cpp
${CMAKE_SOURCE_DIR}/compiler/lib/loaders/elf/elf_utils.cpp
${CMAKE_SOURCE_DIR}/compiler/tools/caching/cache.cpp
+ ${COMGR_CPP}
)
set_target_properties(oclruntime PROPERTIES POSITION_INDEPENDENT_CODE ON)
diff --git a/rocclr/runtime/device/rocm/CMakeLists.txt b/rocclr/runtime/device/rocm/CMakeLists.txt
index 4ce7c453a3..7dce5b9738 100644
--- a/rocclr/runtime/device/rocm/CMakeLists.txt
+++ b/rocclr/runtime/device/rocm/CMakeLists.txt
@@ -7,6 +7,12 @@ include_directories(${CMAKE_SOURCE_DIR}/compiler/lib/loaders/elf/utils/libelf)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(${ROCM_OCL_INCLUDES})
+if(${USE_COMGR_LIBRARY} MATCHES "yes")
+ add_definitions(-DUSE_COMGR_LIBRARY -DCOMGR_DYN_DLL)
+ find_package(amd_comgr REQUIRED CONFIG)
+ include_directories("$")
+endif()
+
add_library(oclrocm OBJECT
roccounters.cpp
rocprintf.cpp