Files
rocm-systems/projects/rocprofiler-systems/source/lib/rocprof-sys-rt/CMakeLists.txt
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

106 lines
3.4 KiB
CMake
Raw Normal View History

2024-06-27 16:51:43 -05:00
#
# C extensions are required
#
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_EXTENSIONS ON)
set(CMAKE_C_STANDARD_REQUIRED ON)
# Ensure .S files are compiled as assembly
set(NEED_NATIVE_ASSEMBLER ON)
2024-06-27 16:51:43 -05:00
# ------------------------------------------------------------------------------#
# target sources
# ------------------------------------------------------------------------------#
include(cmake/platform.cmake)
2025-09-03 09:19:43 -04:00
set(_public_headers h/dyninstAPI_RT.h h/dyninstRTExport.h)
2024-06-27 16:51:43 -05:00
2025-09-03 09:19:43 -04:00
set(_private_headers src/RTcommon.h src/RTheap.h src/RTthread.h)
set(_sources src/RTcommon.c src/RTheap.c src/RTthread.c)
if(PLATFORM MATCHES linux)
set(_static_sources src/RTstatic_ctors_dtors_begin.c src/RTstatic_ctors_dtors_end.c)
2024-06-27 16:51:43 -05:00
list(
APPEND _sources
2024-06-27 16:51:43 -05:00
src/RTposix.c
src/RTlinux.c
src/RTheap-linux.c
src/RTspace.S
2025-06-22 10:44:33 -04:00
src/RTsignal.c
)
2024-06-27 16:51:43 -05:00
endif()
2025-09-03 09:19:43 -04:00
list(APPEND _sources src/RTthread-x86-64.c src/RTtlsgetaddr-x86.S)
list(APPEND _static_sources src/RTstatic_ctors_dtors-x86.c)
2024-06-27 16:51:43 -05:00
# We use gcc to compile the various assembly files, but cmake doesn't default to knowing
# that gcc can handle .S.
enable_language(ASM)
2025-09-03 09:19:43 -04:00
file(GLOB _source_assembly "src/*.S")
if(NEED_NATIVE_ASSEMBLER)
2025-09-03 09:19:43 -04:00
set_source_files_properties(${_source_assembly} PROPERTIES LANGUAGE ASM)
2024-06-27 16:51:43 -05:00
else()
2025-09-03 09:19:43 -04:00
set_source_files_properties(${_source_assembly} PROPERTIES LANGUAGE C)
2024-06-27 16:51:43 -05:00
endif()
add_library(rocprofiler-systems-rt-library SHARED)
2025-06-22 10:44:33 -04:00
add_library(
rocprofiler-systems::rocprofiler-systems-rt-library
ALIAS rocprofiler-systems-rt-library
)
2024-06-27 16:51:43 -05:00
2025-09-03 09:19:43 -04:00
target_sources(rocprofiler-systems-rt-library PRIVATE ${_sources})
2024-06-27 16:51:43 -05:00
target_include_directories(
rocprofiler-systems-rt-library
2025-06-22 10:44:33 -04:00
PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/h>
)
target_compile_definitions(rocprofiler-systems-rt-library PRIVATE ${UNIFIED_DEFINES})
2024-06-27 16:51:43 -05:00
target_link_libraries(
rocprofiler-systems-rt-library
2024-06-27 16:51:43 -05:00
PUBLIC $<BUILD_INTERFACE:${dl_LIBRARY}>
2025-06-22 10:44:33 -04:00
PRIVATE rocprofiler-systems::rocprofiler-systems-threading
)
2024-06-27 16:51:43 -05:00
add_target_cxx_flag_if_avail(rocprofiler-systems-rt-library "-g3")
2024-06-27 16:51:43 -05:00
set_target_properties(
rocprofiler-systems-rt-library
2025-06-22 10:44:33 -04:00
PROPERTIES
OUTPUT_NAME ${BINARY_NAME_PREFIX}-rt
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}
BUILD_RPATH "\$ORIGIN"
INSTALL_RPATH "\$ORIGIN"
)
2024-06-27 16:51:43 -05:00
rocprofiler_systems_strip_target(rocprofiler-systems-rt-library)
2024-06-27 16:51:43 -05:00
install(TARGETS rocprofiler-systems-rt-library DESTINATION ${CMAKE_INSTALL_LIBDIR})
2024-06-27 16:51:43 -05:00
if(NOT EXISTS ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME})
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME})
endif()
add_custom_target(
2025-06-22 10:44:33 -04:00
rocprofiler-systems-rt-library-dyninstAPI_RT-symlink
ALL
${CMAKE_COMMAND} -E create_symlink
../$<TARGET_FILE_NAME:rocprofiler-systems-rt-library>
2024-06-27 16:51:43 -05:00
${CMAKE_SHARED_LIBRARY_PREFIX}dyninstAPI_RT${CMAKE_SHARED_LIBRARY_SUFFIX}
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}
DEPENDS rocprofiler-systems-rt-library
2024-06-27 16:51:43 -05:00
COMMENT
"Creating ${CMAKE_SHARED_LIBRARY_PREFIX}dyninstAPI_RT${CMAKE_SHARED_LIBRARY_SUFFIX} to rocprof-sys-rt..."
2025-06-22 10:44:33 -04:00
)
2024-06-27 16:51:43 -05:00
install(
FILES
${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/${CMAKE_SHARED_LIBRARY_PREFIX}dyninstAPI_RT${CMAKE_SHARED_LIBRARY_SUFFIX}
2025-06-22 10:44:33 -04:00
DESTINATION ${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}
)