Files
TheRock/rocm-systems/experimental/perf-dkms/CMakeLists.txt
T
derek.holloway 7502bf64a4
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
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

143 lines
5.1 KiB
CMake

cmake_minimum_required(VERSION 3.16)
project(perf-pmu-stub VERSION 1.0.0 LANGUAGES C)
# Add cmake modules to module path
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
# Include GNUInstallDirs for standard installation paths
include(GNUInstallDirs)
#================================================================================
# Build Options
#================================================================================
option(BUILD_KERNEL_MODULE "Build the kernel module component" ON)
option(BUILD_USERSPACE_TOOLS "Build packet_gen_tool and pm4_decoder" ON)
option(BUILD_TESTS "Build test executables" ON)
option(ENABLE_DEBUG "Enable debug flags (-DDEBUG, -g)" ON)
option(ENABLE_DKMS "Enable DKMS installation targets" OFF)
#================================================================================
# Module Configuration
#================================================================================
set(MODULE_NAME "perf-pmu-stub" CACHE STRING "Kernel module name")
set(MODULE_VERSION "${PROJECT_VERSION}" CACHE STRING "Module version")
#================================================================================
# Kernel Configuration
#================================================================================
# Find kernel headers if building kernel module
if(BUILD_KERNEL_MODULE)
find_package(KernelHeaders REQUIRED)
# Set DKMS installation directory
if(NOT DKMS_INSTALL_DIR)
set(DKMS_INSTALL_DIR "/usr/src" CACHE PATH "DKMS source installation directory")
endif()
endif()
#================================================================================
# Compiler Configuration
#================================================================================
# Set C standard for userspace code
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)
# Debug flags
if(ENABLE_DEBUG)
add_compile_options(-g -Wall -Wextra)
add_compile_definitions(DEBUG)
endif()
#================================================================================
# Build Type
#================================================================================
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING
"Choose the type of build: Debug Release RelWithDebInfo MinSizeRel" FORCE)
endif()
#================================================================================
# Subdirectories
#================================================================================
if(BUILD_KERNEL_MODULE)
add_subdirectory(src)
endif()
if(BUILD_USERSPACE_TOOLS)
add_subdirectory(src/aql_c/tools)
endif()
if(BUILD_TESTS)
enable_testing()
add_subdirectory(src/aql_c/tests)
endif()
#================================================================================
# DKMS Targets
#================================================================================
if(ENABLE_DKMS AND BUILD_KERNEL_MODULE)
set(DKMS_SOURCE_PATH "${DKMS_INSTALL_DIR}/${MODULE_NAME}-${MODULE_VERSION}")
add_custom_target(dkms-add
COMMAND ${CMAKE_COMMAND} -E echo "Installing source to ${DKMS_SOURCE_PATH}"
COMMAND sudo cp -R ${CMAKE_CURRENT_SOURCE_DIR} ${DKMS_SOURCE_PATH}
COMMAND sudo dkms add -m ${MODULE_NAME} -v ${MODULE_VERSION}
COMMENT "Adding module to DKMS"
)
add_custom_target(dkms-build
COMMAND sudo dkms build -m ${MODULE_NAME} -v ${MODULE_VERSION}
DEPENDS dkms-add
COMMENT "Building module with DKMS"
)
add_custom_target(dkms-install
COMMAND sudo dkms install -m ${MODULE_NAME} -v ${MODULE_VERSION}
DEPENDS dkms-build
COMMENT "Installing module with DKMS"
)
add_custom_target(dkms-remove
COMMAND sudo dkms remove -m ${MODULE_NAME} -v ${MODULE_VERSION} --all || true
COMMAND sudo rm -rf ${DKMS_SOURCE_PATH} || true
COMMENT "Removing module from DKMS"
)
endif()
#================================================================================
# Information Display
#================================================================================
message(STATUS "")
message(STATUS "============================================")
message(STATUS " perf-pmu-stub Build Configuration")
message(STATUS "============================================")
message(STATUS "Module Name: ${MODULE_NAME}")
message(STATUS "Module Version: ${MODULE_VERSION}")
message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}")
message(STATUS "")
message(STATUS "Build Options:")
message(STATUS " Kernel Module: ${BUILD_KERNEL_MODULE}")
message(STATUS " Userspace Tools: ${BUILD_USERSPACE_TOOLS}")
message(STATUS " Tests: ${BUILD_TESTS}")
message(STATUS " Debug: ${ENABLE_DEBUG}")
message(STATUS " DKMS: ${ENABLE_DKMS}")
if(BUILD_KERNEL_MODULE)
message(STATUS "")
message(STATUS "Kernel Configuration:")
message(STATUS " Kernel Version: ${KERNEL_VERSION}")
message(STATUS " Kernel Build Dir: ${KERNEL_BUILD_DIR}")
if(ENABLE_DKMS)
message(STATUS " DKMS Install Dir: ${DKMS_INSTALL_DIR}")
endif()
endif()
message(STATUS "============================================")
message(STATUS "")