diff --git a/CMakeLists.txt b/CMakeLists.txt index 24921c65d3..79ff2479f5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -124,6 +124,10 @@ if(MSVC AND ENABLE_VS_FASTLINK) string(APPEND CMAKE_MODULE_LINKER_FLAGS_DEBUG " /debug:FASTLINK") endif() if(UNIX) + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -g") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -g") + set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -g") + set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -g") set(CMAKE_C_FLAGS_RELEASEINTERNAL "${CMAKE_C_FLAGS_RELEASEINTERNAL} -g") set(CMAKE_CXX_FLAGS_RELEASEINTERNAL "${CMAKE_CXX_FLAGS_RELEASEINTERNAL} -g") set(CMAKE_SHARED_LINKER_FLAGS_RELEASEINTERNAL "${CMAKE_SHARED_LINKER_FLAGS_RELEASEINTERNAL} -g") @@ -193,6 +197,16 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${NEO_BINARY_DIR}/lib) # determine Neo version include(version.cmake) +# set variables for symbols stripping +if(UNIX) + set_property(GLOBAL PROPERTY DEBUG_SYMBOL_FILES "") + set_property(GLOBAL PROPERTY IGDRCL_SYMBOL_FILE "") + set_property(GLOBAL APPEND PROPERTY NEO_OCL_COMPONENTS_LIST "neo_debug_symbols") + set(STRIP_SYMBOLS_TARGET strip_debug_symbols) + set(DEBUG_SYMBOL_INSTALL_DIR "/usr/lib/debug${CMAKE_INSTALL_FULL_LIBDIR}") + add_custom_target(${STRIP_SYMBOLS_TARGET} ALL) +endif() + # We want to build with the static, multithreaded runtime libraries (as opposed # to the multithreaded runtime DLLs) if(MSVC) diff --git a/level_zero/CMakeLists.txt b/level_zero/CMakeLists.txt index 2de31f8529..fd67b6c3a0 100644 --- a/level_zero/CMakeLists.txt +++ b/level_zero/CMakeLists.txt @@ -491,6 +491,18 @@ if(BUILD_WITH_L0) ) if(UNIX) + get_filename_component(lib_file_name $ NAME_WE) + set(symbols_file_name ${lib_file_name}.debug) + set(debug_symbols_target_name "${STRIP_SYMBOLS_TARGET}_${TARGET_NAME_L0}") + add_custom_target(${debug_symbols_target_name} + COMMAND sh -c "objcopy --only-keep-debug ${lib_file_name} ${symbols_file_name}" + COMMAND sh -c "strip -g ${lib_file_name}" + COMMAND sh -c "objcopy --add-gnu-debuglink=${symbols_file_name} ${lib_file_name}" + ) + add_dependencies(${debug_symbols_target_name} ${TARGET_NAME_L0}) + add_dependencies(${STRIP_SYMBOLS_TARGET} ${debug_symbols_target_name}) + set_property(GLOBAL APPEND PROPERTY DEBUG_SYMBOL_FILES "${symbols_file_name}") + install(TARGETS ${TARGET_NAME_L0} LIBRARY PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE diff --git a/opencl/source/CMakeLists.txt b/opencl/source/CMakeLists.txt index 7141111506..69d7e7321a 100644 --- a/opencl/source/CMakeLists.txt +++ b/opencl/source/CMakeLists.txt @@ -1,5 +1,5 @@ # -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # # SPDX-License-Identifier: MIT # @@ -135,6 +135,18 @@ if(${GENERATE_EXECUTABLE}) ) if(UNIX) + get_filename_component(lib_file_name $ NAME_WE) + set(symbols_file_name ${lib_file_name}.debug) + set(debug_symbols_target_name "${STRIP_SYMBOLS_TARGET}_${NEO_DYNAMIC_LIB_NAME}") + add_custom_target(${debug_symbols_target_name} + COMMAND sh -c "objcopy --only-keep-debug ${lib_file_name} ${symbols_file_name}" + COMMAND sh -c "strip -g ${lib_file_name}" + COMMAND sh -c "objcopy --add-gnu-debuglink=${symbols_file_name} ${lib_file_name}" + ) + add_dependencies(${debug_symbols_target_name} ${NEO_DYNAMIC_LIB_NAME}) + add_dependencies(${STRIP_SYMBOLS_TARGET} ${debug_symbols_target_name}) + set_property(GLOBAL PROPERTY IGDRCL_SYMBOL_FILE "${symbols_file_name}") + install(FILES $ PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE diff --git a/package.cmake b/package.cmake index ae3d397271..21af3303fc 100644 --- a/package.cmake +++ b/package.cmake @@ -1,5 +1,5 @@ # -# Copyright (C) 2017-2020 Intel Corporation +# Copyright (C) 2017-2021 Intel Corporation # # SPDX-License-Identifier: MIT # @@ -45,6 +45,17 @@ if(UNIX) ) install(FILES ${NEO_BINARY_DIR}/intel.icd DESTINATION ${OCL_ICD_VENDORDIR} COMPONENT opencl) + get_property(DEBUG_SYMBOL_FILES GLOBAL PROPERTY DEBUG_SYMBOL_FILES) + install(FILES ${DEBUG_SYMBOL_FILES} + DESTINATION ${DEBUG_SYMBOL_INSTALL_DIR} + COMPONENT neo_debug_symbols + ) + get_property(IGDRCL_SYMBOL_FILE GLOBAL PROPERTY IGDRCL_SYMBOL_FILE) + install(FILES ${IGDRCL_SYMBOL_FILE} + DESTINATION ${DEBUG_SYMBOL_INSTALL_DIR}/intel-opencl + COMPONENT neo_debug_symbols + ) + if(NEO_CPACK_GENERATOR) set(CPACK_GENERATOR "${NEO_CPACK_GENERATOR}") else() @@ -106,14 +117,17 @@ if(UNIX) set(CPACK_DEBIAN_OPENCL_FILE_NAME "intel-opencl_${NEO_OCL_VERSION_MAJOR}.${NEO_OCL_VERSION_MINOR}.${NEO_VERSION_BUILD}-1~${os_codename}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb") set(CPACK_DEBIAN_OCLOC_FILE_NAME "intel-ocloc_${NEO_OCL_VERSION_MAJOR}.${NEO_OCL_VERSION_MINOR}.${NEO_VERSION_BUILD}-1~${os_codename}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb") set(CPACK_DEBIAN_LEVEL-ZERO-GPU_FILE_NAME "intel-level-zero-gpu_${NEO_L0_VERSION_MAJOR}.${NEO_L0_VERSION_MINOR}.${NEO_VERSION_BUILD}-1~${os_codename}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb") + set(CPACK_DEBIAN_NEO_DEBUG_SYMBOLS_FILE_NAME "intel-opencl-debuginfo_${NEO_OCL_VERSION_MAJOR}.${NEO_OCL_VERSION_MINOR}.${NEO_VERSION_BUILD}-1~${os_codename}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb") set(CPACK_RPM_OPENCL_FILE_NAME "intel-opencl-${NEO_OCL_VERSION_MAJOR}.${NEO_OCL_VERSION_MINOR}.${NEO_VERSION_BUILD}-${CPACK_RPM_PACKAGE_RELEASE}%{?dist}.${CPACK_RPM_PACKAGE_ARCHITECTURE}.rpm") set(CPACK_RPM_OCLOC_FILE_NAME "intel-ocloc-${NEO_OCL_VERSION_MAJOR}.${NEO_OCL_VERSION_MINOR}.${NEO_VERSION_BUILD}-${CPACK_RPM_PACKAGE_RELEASE}%{?dist}.${CPACK_RPM_PACKAGE_ARCHITECTURE}.rpm") set(CPACK_RPM_LEVEL-ZERO-GPU_FILE_NAME "intel-level-zero-gpu-${NEO_L0_VERSION_MAJOR}.${NEO_L0_VERSION_MINOR}.${NEO_VERSION_BUILD}-${CPACK_RPM_PACKAGE_RELEASE}%{?dist}.${CPACK_RPM_PACKAGE_ARCHITECTURE}.rpm") + set(CPACK_RPM_NEO_DEBUG_SYMBOLS_FILE_NAME "intel-opencl-debuginfo-${NEO_OCL_VERSION_MAJOR}.${NEO_OCL_VERSION_MINOR}.${NEO_VERSION_BUILD}-${CPACK_RPM_PACKAGE_RELEASE}%{?dist}.${CPACK_RPM_PACKAGE_ARCHITECTURE}.rpm") set(CPACK_ARCHIVE_OPENCL_FILE_NAME "intel-opencl-${NEO_OCL_VERSION_MAJOR}.${NEO_OCL_VERSION_MINOR}.${NEO_VERSION_BUILD}-${os_codename}-${CPACK_PACKAGE_ARCHITECTURE}") set(CPACK_ARCHIVE_OCLOC_FILE_NAME "intel-ocloc-${NEO_OCL_VERSION_MAJOR}.${NEO_OCL_VERSION_MINOR}.${NEO_VERSION_BUILD}-${os_codename}-${CPACK_PACKAGE_ARCHITECTURE}") set(CPACK_ARCHIVE_LEVEL-ZERO-GPU_FILE_NAME "intel-level-zero-gpu-${NEO_L0_VERSION_MAJOR}.${NEO_L0_VERSION_MINOR}.${NEO_VERSION_BUILD}-${os_codename}_${CPACK_PACKAGE_ARCHITECTURE}") + set(CPACK_ARCHIVE_NEO_DEBUG_SYMBOLS_FILE_NAME "intel-opencl-debuginfo-${NEO_OCL_VERSION_MAJOR}.${NEO_OCL_VERSION_MINOR}.${NEO_VERSION_BUILD}-${os_codename}-${CPACK_PACKAGE_ARCHITECTURE}") else() if(CPACK_GENERATOR STREQUAL "DEB") set(CPACK_PACKAGE_FILE_NAME "intel-compute-runtime_${NEO_OCL_VERSION_MAJOR}.${NEO_OCL_VERSION_MINOR}.${NEO_VERSION_BUILD}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}") diff --git a/shared/offline_compiler/source/CMakeLists.txt b/shared/offline_compiler/source/CMakeLists.txt index 1a1fb27c59..4b21071a6e 100644 --- a/shared/offline_compiler/source/CMakeLists.txt +++ b/shared/offline_compiler/source/CMakeLists.txt @@ -191,6 +191,18 @@ else() endif() if(UNIX) + get_filename_component(lib_file_name $ NAME_WE) + set(symbols_file_name ${lib_file_name}.debug) + set(debug_symbols_target_name "${STRIP_SYMBOLS_TARGET}_${OCLOC_NAME}_lib") + add_custom_target(${debug_symbols_target_name} + COMMAND sh -c "objcopy --only-keep-debug ${lib_file_name} ${symbols_file_name}" + COMMAND sh -c "strip -g ${lib_file_name}" + COMMAND sh -c "objcopy --add-gnu-debuglink=${symbols_file_name} ${lib_file_name}" + ) + add_dependencies(${debug_symbols_target_name} ${OCLOC_NAME}_lib) + add_dependencies(${STRIP_SYMBOLS_TARGET} ${debug_symbols_target_name}) + set_property(GLOBAL APPEND PROPERTY DEBUG_SYMBOL_FILES "${symbols_file_name}") + set_property(GLOBAL APPEND PROPERTY NEO_OCL_COMPONENTS_LIST ${OCLOC_NAME}) install(FILES $ DESTINATION ${CMAKE_INSTALL_BINDIR}