CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
101 lines
4.4 KiB
CMake
101 lines
4.4 KiB
CMake
#
|
|
#//===----------------------------------------------------------------------===//
|
|
#//
|
|
#// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
#// See https://llvm.org/LICENSE.txt for license information.
|
|
#// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
#//
|
|
#//===----------------------------------------------------------------------===//
|
|
#
|
|
|
|
set (CMAKE_MODULE_PATH
|
|
"${CMAKE_SOURCE_DIR}/libompd/"
|
|
${CMAKE_MODULE_PATH}
|
|
)
|
|
|
|
find_package (Python3 COMPONENTS Interpreter Development)
|
|
|
|
file(READ "/etc/os-release" OS_RELEASE)
|
|
set(DIST "")
|
|
string(REGEX MATCH "Debian|Ubuntu" DIST ${OS_RELEASE})
|
|
|
|
# UBUNTU and Debian package manager have its own patch in "pip" to avoid user
|
|
# installed packages messing up with default paths.
|
|
# https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1419695
|
|
# Therfore, we have to use "--system" (specific to ubuntu and debian) when we
|
|
# use system installed pip.(Not required if user installed pip on other paths.)
|
|
# However, this has been taken care in pip for 20+ versions.
|
|
# https://github.com/pypa/pip/commit/5f1468274987348b569aa586eeca4363494d0357
|
|
|
|
if(DIST)
|
|
execute_process(COMMAND "${Python3_EXECUTABLE}"
|
|
"-mpip"
|
|
"--version"
|
|
OUTPUT_VARIABLE PIP_VERSION_INFO
|
|
RESULT_VARIABLE HAD_ERROR)
|
|
if (NOT ${HAD_ERROR} EQUAL 0)
|
|
message(WARNING "PIP command failed, gdb-plugin disabled.")
|
|
return()
|
|
endif ()
|
|
string(REGEX REPLACE " " ";" PIP_VERSION_INFO "${PIP_VERSION_INFO}")
|
|
list(GET PIP_VERSION_INFO 1 PIP_VERSION)
|
|
set(PYSYSFLAG "")
|
|
|
|
if(PIP_VERSION VERSION_LESS "20.0.0")
|
|
execute_process(COMMAND "${Python3_EXECUTABLE}"
|
|
"-mpip"
|
|
"install"
|
|
"--help"
|
|
OUTPUT_VARIABLE PIP_INSTALL_HELP
|
|
RESULT_VARIABLE HAD_ERROR )
|
|
string(REGEX MATCH "--system" SYSTEM_FLAG ${PIP_INSTALL_HELP})
|
|
if (SYSTEM_FLAG)
|
|
set(PYSYSFLAG "--system")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
find_package (PythonLibs REQUIRED)
|
|
|
|
include_directories (${OMPD_INCLUDE_PATH})
|
|
include_directories (${LIBOMP_INCLUDE_DIR})
|
|
|
|
# Needed for dlsym in the module.
|
|
find_library(CLANG_CPP clang-cpp HINTS ${LLVM_LIBRARY_DIR} ${LLVM_LIBRARY_DIR}/../lib REQUIRED)
|
|
GET_FILENAME_COMPONENT(CLANG_CPP_PATH "${CLANG_CPP}" PATH)
|
|
|
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/python-module/ompd/__init__.py
|
|
DEPENDS ompdModule.c DLSymService.cpp ompdAPITests.c setup.py ompd/frame_filter.py ompd/__init__.py ompd/ompd_address_space.py ompd/ompd_callbacks.py ompd/ompd_handles.py ompd/ompd.py
|
|
COMMAND ${CMAKE_COMMAND} -E env LIBOMP_INCLUDE_DIR=${LIBOMP_INCLUDE_DIR} LLVM_MAIN_INCLUDE_DIR=${LLVM_MAIN_INCLUDE_DIR} CLANG_CPP=${CLANG_CPP}
|
|
${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/setup.py -v bdist_wheel -b ${CMAKE_CURRENT_BINARY_DIR}/build -d ${CMAKE_CURRENT_BINARY_DIR}
|
|
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/setup.py clean --all
|
|
COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_CURRENT_SOURCE_DIR}/ompd.egg-info
|
|
COMMAND ${Python3_EXECUTABLE} -m pip install ${PYSYSFLAG} -U -t ${CMAKE_CURRENT_BINARY_DIR}/python-module --no-index --find-links=${CMAKE_CURRENT_BINARY_DIR} ompd
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
add_custom_target(ompd_gdb_plugin ALL
|
|
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/python-module/ompd/__init__.py
|
|
COMMENT "Building the OMPD GDB plugin")
|
|
|
|
add_library (ompdModule MODULE ompdModule.c ompdAPITests.c DLSymService.cpp)
|
|
|
|
## Include LLVM headers for DynamicLibrary support
|
|
target_include_directories(ompdModule PRIVATE ${LLVM_INCLUDE_DIRS})
|
|
|
|
include_directories (
|
|
${LIBOMP_INCLUDE_DIR}
|
|
${LIBOMP_SRC_DIR}
|
|
${Python3_INCLUDE_DIRS}
|
|
)
|
|
|
|
target_link_libraries (ompdModule ${Python3_LIBRARIES})
|
|
target_link_libraries (ompdModule ${CMAKE_DL_LIBS})
|
|
target_link_libraries (ompdModule ${CLANG_CPP})
|
|
|
|
set_target_properties (ompdModule PROPERTIES PREFIX "")
|
|
set_target_properties (ompdModule PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/python-module/ompd/")
|
|
|
|
openmp_register_meta_dep(ompd_gdb_plugin ompdModule)
|
|
|
|
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/python-module/ompd DESTINATION share/gdb/python/ COMPONENT openmp PATTERN ompdModule.so PERMISSIONS OWNER_READ WORLD_READ GROUP_READ OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)
|
|
|