From 2b391e21485bdbff362eaa15ca9b912463b01cdc Mon Sep 17 00:00:00 2001 From: foreman Date: Thu, 1 Aug 2019 12:44:10 -0400 Subject: [PATCH] P4 to Git Change 1977054 by kzhuravl@kzhuravl-spot-ocl on 2019/08/01 12:32:41 SWDEV-79445 - OCL generic changes and code clean-up - Fix COMGR+CMAKE combination - http://git.amd.com:8080/c/compute/ec/opencl/+/247843 - Fix and clean up packaging (cmake) - http://git.amd.com:8080/c/compute/ec/opencl/+/247844 Affected files ... ... //depot/stg/opencl/drivers/opencl/CMakeLists.txt#26 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/CMakeLists.txt#19 edit ... //depot/stg/opencl/drivers/opencl/runtime/CMakeLists.txt#16 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/devprogram.cpp#54 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/CMakeLists.txt#21 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocprogram.cpp#104 edit ... //depot/stg/opencl/drivers/opencl/tools/clinfo/CMakeLists.txt#6 edit --- opencl/CMakeLists.txt | 190 +++++++++++++----------- opencl/api/opencl/amdocl/CMakeLists.txt | 6 +- opencl/tools/clinfo/CMakeLists.txt | 2 - 3 files changed, 110 insertions(+), 88 deletions(-) diff --git a/opencl/CMakeLists.txt b/opencl/CMakeLists.txt index 3d04b39a5c..b5544361aa 100644 --- a/opencl/CMakeLists.txt +++ b/opencl/CMakeLists.txt @@ -5,6 +5,9 @@ if (POLICY CMP0048) set(PROJ_VERSION VERSION 1.5.0) endif() +# FIXME: Remove following line after enabling COMGR by default +set(USE_COMGR_LIBRARY "no" CACHE STRING "Do not enable COMGR by default") + # Build ROCm-OpenCL with ccache if the package is present. set(ROCM_OPENCL_CCACHE_BUILD OFF CACHE BOOL "Set to ON for a ccache enabled build") if(ROCM_OPENCL_CCACHE_BUILD) @@ -14,9 +17,13 @@ if(ROCM_OPENCL_CCACHE_BUILD) else() message(FATAL_ERROR "Unable to find the program ccache. Set ROCM_OPENCL_CCACHE_BUILD to OFF") endif() - set(LLVM_CCACHE_BUILD ON CACHE BOOL "") - set(ROCM_DEVICE_LIBS_CCACHE_BUILD ON CACHE BOOL "") - set(ROCM_OPENCL_DRIVER_CCACHE_BUILD ON CACHE BOOL "") + + # FIXME: Remove following if block after enabling COMGR by default + if (${USE_COMGR_LIBRARY} STREQUAL "no") + set(LLVM_CCACHE_BUILD ON CACHE BOOL "") + set(ROCM_DEVICE_LIBS_CCACHE_BUILD ON CACHE BOOL "") + set(ROCM_OPENCL_DRIVER_CCACHE_BUILD ON CACHE BOOL "") + endif() # if (${USE_COMGR_LIBRARY} STREQUAL "no") endif() project(OpenCL-ROCm) @@ -28,52 +35,65 @@ set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" ) -set(LLVM_INCLUDE_TESTS OFF CACHE BOOL "") -set(LLVM_BUILD_TOOLS OFF CACHE BOOL "") -set(LLVM_INSTALL_TOOLCHAIN_ONLY ON CACHE BOOL "") -set(LLVM_TARGETS_TO_BUILD "AMDGPU" CACHE STRING "") -set(CLANG_ENABLE_ARCMT OFF CACHE BOOL "") -set(CLANG_ENABLE_STATIC_ANALYZER OFF CACHE BOOL "") +# FIXME: Remove following if block after enabling COMGR by default +if (${USE_COMGR_LIBRARY} STREQUAL "no") + set(LLVM_INCLUDE_TESTS OFF CACHE BOOL "") + set(LLVM_BUILD_TOOLS OFF CACHE BOOL "") + set(LLVM_INSTALL_TOOLCHAIN_ONLY ON CACHE BOOL "") + set(LLVM_TARGETS_TO_BUILD "AMDGPU" CACHE STRING "") + set(CLANG_ENABLE_ARCMT OFF CACHE BOOL "") + set(CLANG_ENABLE_STATIC_ANALYZER OFF CACHE BOOL "") -# override default option value in library and driver -set(GENERIC_IS_ZERO ON CACHE BOOL ON FORCE) + # override default option value in library and driver + set(GENERIC_IS_ZERO ON CACHE BOOL ON FORCE) -add_subdirectory(compiler/llvm EXCLUDE_FROM_ALL) + add_subdirectory(compiler/llvm EXCLUDE_FROM_ALL) -find_package(LLVM REQUIRED CONFIG PATHS ${CMAKE_BINARY_DIR}/compiler/llvm NO_DEFAULT_PATH) + find_package(LLVM REQUIRED CONFIG PATHS ${CMAKE_BINARY_DIR}/compiler/llvm NO_DEFAULT_PATH) -list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}") -include(AddLLVM) + list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}") + include(AddLLVM) -add_definitions(${LLVM_DEFINITIONS}) -# TODO: add find_package for Clang and lld, and also use LLVM/Clang variables got from their config -include_directories(${CMAKE_SOURCE_DIR}/compiler/llvm/tools/clang/include) -include_directories(${CMAKE_BINARY_DIR}/compiler/llvm/tools/clang/include) -include_directories(${CMAKE_SOURCE_DIR}/compiler/llvm/tools/lld/include) + add_definitions(${LLVM_DEFINITIONS}) + # TODO: add find_package for Clang and lld, and also use LLVM/Clang variables got from their config + include_directories(${CMAKE_SOURCE_DIR}/compiler/llvm/tools/clang/include) + include_directories(${CMAKE_BINARY_DIR}/compiler/llvm/tools/clang/include) + include_directories(${CMAKE_SOURCE_DIR}/compiler/llvm/tools/lld/include) -# TODO: move AMDGPU.h header to include folder -include_directories(${CMAKE_SOURCE_DIR}/compiler/llvm/lib/Target/AMDGPU) -include_directories(${CMAKE_BINARY_DIR}/compiler/llvm/lib/Target/AMDGPU) + # TODO: move AMDGPU.h header to include folder + include_directories(${CMAKE_SOURCE_DIR}/compiler/llvm/lib/Target/AMDGPU) + include_directories(${CMAKE_BINARY_DIR}/compiler/llvm/lib/Target/AMDGPU) + + set(BUILD_HC_LIB OFF CACHE BOOL "") + set(ROCM_DEVICELIB_INCLUDE_TESTS OFF CACHE BOOL "") + set(AMDGCN_TARGETS_LIB_LIST "AMDGCN_LIB_TARGETS") + set(AMDGCN_TARGETS_LIB_DEPS "AMDGCN_DEP_TARGETS") + set(AMDGPU_TARGET_TRIPLE "amdgcn-amd-amdhsa") + add_subdirectory(library/amdgcn EXCLUDE_FROM_ALL) + add_subdirectory(compiler/driver EXCLUDE_FROM_ALL) + + install(PROGRAMS $ $ + DESTINATION bin/x86_64 + COMPONENT DEV) + + foreach(AMDGCN_LIB_TARGET ${AMDGCN_LIB_TARGETS}) + get_target_property(lib_file_name ${AMDGCN_LIB_TARGET} ARCHIVE_OUTPUT_NAME) + get_target_property(lib_file_path ${AMDGCN_LIB_TARGET} ARCHIVE_OUTPUT_DIRECTORY) + install(FILES ${lib_file_path}/${lib_file_name}.amdgcn.bc + DESTINATION lib/x86_64/bitcode + COMPONENT DEV) + endforeach() +endif() # if (${USE_COMGR_LIBRARY} STREQUAL "no") 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(-DCOMGR_DYN_DLL) add_definitions(-DUSE_COMGR_LIBRARY) if( ${BUILD_HIP} MATCHES "yes") - add_subdirectory(api/hip) + add_subdirectory(api/hip) endif() -else() - add_subdirectory(compiler/driver EXCLUDE_FROM_ALL) endif() -set(BUILD_HC_LIB OFF CACHE BOOL "") -set(ROCM_DEVICELIB_INCLUDE_TESTS OFF CACHE BOOL "") -set(AMDGCN_TARGETS_LIB_LIST "AMDGCN_LIB_TARGETS") -set(AMDGCN_TARGETS_LIB_DEPS "AMDGCN_DEP_TARGETS") -set(AMDGPU_TARGET_TRIPLE "amdgcn-amd-amdhsa") -add_subdirectory(library/amdgcn EXCLUDE_FROM_ALL) - add_subdirectory(compiler/lib/loaders/elf/utils/libelf) find_package(ROCT REQUIRED) @@ -89,68 +109,68 @@ add_subdirectory(api/opencl/khronos/icd) add_subdirectory(tools/clinfo) -install(PROGRAMS $ $ - DESTINATION bin/x86_64 - COMPONENT libraries) +###--- Packaging ------------------------------------------------------------### +# MAIN package +install(PROGRAMS $ + DESTINATION bin/x86_64 + COMPONENT MAIN) +install(PROGRAMS $ + DESTINATION lib/x86_64 + COMPONENT MAIN) install(PROGRAMS $ DESTINATION lib/x86_64 - COMPONENT applications) + COMPONENT MAIN) +install(PROGRAMS $ + DESTINATION lib/x86_64 + COMPONENT MAIN) +# DEV package +install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/api/opencl/khronos/headers/opencl2.2/CL" + DESTINATION include + COMPONENT DEV + USE_SOURCE_PERMISSIONS + PATTERN cl_d3d10.h EXCLUDE + PATTERN cl_d3d11.h EXCLUDE + PATTERN cl_dx9_media_sharing.h EXCLUDE + PATTERN cl_egl.h EXCLUDE) install(PROGRAMS $ DESTINATION lib/x86_64 - COMPONENT libraries) + COMPONENT DEV) -install(DIRECTORY - "${CMAKE_CURRENT_SOURCE_DIR}/api/opencl/khronos/headers/opencl2.2/CL" - DESTINATION include - COMPONENT libraries - USE_SOURCE_PERMISSIONS - PATTERN cl_egl.h EXCLUDE) +# Generic CPACK variables +set(CPACK_GENERATOR "DEB;RPM" CACHE STRING "Default packaging generators") -foreach(AMDGCN_LIB_TARGET ${AMDGCN_LIB_TARGETS}) - get_target_property(lib_file_name ${AMDGCN_LIB_TARGET} ARCHIVE_OUTPUT_NAME) - get_target_property(lib_file_path ${AMDGCN_LIB_TARGET} ARCHIVE_OUTPUT_DIRECTORY) - install(FILES ${lib_file_path}/${lib_file_name}.amdgcn.bc - DESTINATION lib/x86_64/bitcode - COMPONENT libraries) -endforeach() +set(CPACK_PACKAGE_CONTACT "Advanced Micro Devices Inc.") +set(CPACK_PACKAGE_VENDOR "AMD") +set(CPACK_PACKAGING_INSTALL_PREFIX "/opt/rocm/opencl") -## CPack standard variables -set ( CPACK_PACKAGE_NAME "rocm-opencl" ) -set ( CPACK_PACKAGE_FILE_NAME "rocm-opencl-1.2.0" ) -set ( CPACK_PACKAGE_VENDOR "AMD" ) -set ( CPACK_PACKAGE_VERSION_MAJOR "1" ) -set ( CPACK_PACKAGE_VERSION_MINOR "2" ) -set ( CPACK_PACKAGE_VERSION_PATCH "0" ) -set ( CPACK_PACKAGE_CONTACT "Advanced Micro Devices Inc." ) -set ( CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime" ) +set(CPACK_PACKAGE_VERSION_MAJOR "1") +set(CPACK_PACKAGE_VERSION_MINOR "2") +set(CPACK_PACKAGE_VERSION_PATCH "0") -set ( CPACK_GENERATOR RPM DEB ) -set ( CPACK_PACKAGING_INSTALL_PREFIX "/opt/rocm/opencl" ) +# Debian CPACK variables +set(CPACK_DEB_COMPONENT_INSTALL ON) -## Debian package values +set(CPACK_DEBIAN_MAIN_FILE_NAME "rocm-opencl-1.2.0.deb") +set(CPACK_DEBIAN_MAIN_PACKAGE_NAME "rocm-opencl") +set(CPACK_DEBIAN_MAIN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/DEB/postinst;${CMAKE_CURRENT_SOURCE_DIR}/DEB/prerm") -set ( CPACK_DEBIAN_PACKAGE_MAINTAINER "AMD" ) -set ( CPACK_DEBIAN_PACKAGE_DEPENDS "" ) -set ( CPACK_DEB_COMPONENT_INSTALL ON) -set ( CPACK_DEBIAN_applications_PACKAGE_NAME "rocm-opencl" ) -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_SOURCE_DIR}/DEB/postinst;${CMAKE_CURRENT_SOURCE_DIR}/DEB/prerm" ) +set(CPACK_DEBIAN_DEV_FILE_NAME "rocm-opencl-dev-1.2.0.deb") +set(CPACK_DEBIAN_DEV_PACKAGE_NAME "rocm-opencl-dev") +set(CPACK_DEBIAN_DEV_PACKAGE_DEPENDS "rocm-opencl") -## RPM package values +# RPM CPACK variables +set(CPACK_RPM_COMPONENT_INSTALL ON) -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_SOURCE_DIR}/RPM/rpm_post" ) -set ( CPACK_RPM_applications_POST_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/RPM/rpm_postun" ) +set(CPACK_RPM_MAIN_FILE_NAME "rocm-opencl-1.2.0.rpm") +set(CPACK_RPM_MAIN_PACKAGE_NAME "rocm-opencl") +set(CPACK_RPM_MAIN_POST_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/RPM/rpm_post") +set(CPACK_RPM_MAIN_POST_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/RPM/rpm_postun") -set ( CPACK_COMPONENTS_ALL applications libraries ) -include ( CPack ) +set(CPACK_RPM_DEV_FILE_NAME "rocm-opencl-devel-1.2.0.rpm") +set(CPACK_RPM_DEV_PACKAGE_NAME "rocm-opencl-devel") +set(CPACK_RPM_DEV_PACKAGE_DEPENDS "rocm-opencl") + +set(CPACK_COMPONENTS_ALL MAIN DEV) +include(CPack) diff --git a/opencl/api/opencl/amdocl/CMakeLists.txt b/opencl/api/opencl/amdocl/CMakeLists.txt index 642ce8c296..8ea8517f39 100644 --- a/opencl/api/opencl/amdocl/CMakeLists.txt +++ b/opencl/api/opencl/amdocl/CMakeLists.txt @@ -16,6 +16,11 @@ if(CMAKE_BUILD_TYPE MATCHES "^Debug$") add_definitions(-DDEBUG) endif() +include_directories(${ROCR_INCLUDES}) +if (DEFINED LLVM_INCLUDES AND NOT ${LLVM_INCLUDES} STREQUAL "") + include_directories(${LLVM_INCLUDES}) +endif() # if (DEFINED LLVM_INCLUDES AND NOT ${LLVM_INCLUDES} STREQUAL "") + include_directories(${CMAKE_SOURCE_DIR}/runtime) include_directories(${CMAKE_SOURCE_DIR}/api/opencl) include_directories(${CMAKE_SOURCE_DIR}/api/opencl/khronos) @@ -77,4 +82,3 @@ if(${USE_COMGR_LIBRARY} MATCHES "yes") else() target_link_libraries(amdocl64 opencl_driver oclelf pthread dl ${ROCT_LIBRARIES} ${ROCR_LIBRARIES}) endif() -install(TARGETS amdocl64 LIBRARY DESTINATION lib/x86_64 COMPONENT applications) diff --git a/opencl/tools/clinfo/CMakeLists.txt b/opencl/tools/clinfo/CMakeLists.txt index 974a46fa95..08765e1a0d 100644 --- a/opencl/tools/clinfo/CMakeLists.txt +++ b/opencl/tools/clinfo/CMakeLists.txt @@ -9,5 +9,3 @@ add_definitions(-DHAVE_CL2_HPP) add_executable(clinfo clinfo.cpp) target_link_libraries(clinfo OpenCL) - -install(TARGETS clinfo DESTINATION bin)