8fcf3a50b0
* Replace `cmake-format` with `gersemi`
Signed-off-by: David Galiffi <David.Galiffi@amd.com>
* Remove .cmake-format.yaml
Signed-off-by: David Galiffi <David.Galiffi@amd.com>
* Update workflow to use gersemi
Signed-off-by: David Galiffi <David.Galiffi@amd.com>
* Update CONTRIBUTING.md
* Update helper scripts
* Don't include `*/external/*` in workflows
---------
Signed-off-by: David Galiffi <David.Galiffi@amd.com>
[ROCm/rocprofiler-systems commit: 122623a929]
169 строки
5.5 KiB
CMake
169 строки
5.5 KiB
CMake
#
|
|
# C extensions are required
|
|
#
|
|
set(CMAKE_C_STANDARD 11)
|
|
set(CMAKE_C_EXTENSIONS ON)
|
|
set(CMAKE_C_STANDARD_REQUIRED ON)
|
|
|
|
# ------------------------------------------------------------------------------#
|
|
# target sources
|
|
# ------------------------------------------------------------------------------#
|
|
|
|
include(cmake/platform.cmake)
|
|
|
|
set(SRC_LIST src/RTcommon.c src/RTmemEmulator.c)
|
|
|
|
if(PLATFORM MATCHES freebsd)
|
|
list(
|
|
APPEND
|
|
SRC_LIST
|
|
src/RTposix.c
|
|
src/RTfreebsd.c
|
|
src/RTheap.c
|
|
src/RTheap-freebsd.c
|
|
src/RTthread.c
|
|
src/RTspace.S
|
|
src/RTsignal.c
|
|
)
|
|
elseif(PLATFORM MATCHES linux)
|
|
list(
|
|
APPEND
|
|
SRC_LIST
|
|
src/RTposix.c
|
|
src/RTlinux.c
|
|
src/RTheap.c
|
|
src/RTheap-linux.c
|
|
src/RTthread.c
|
|
src/RTspace.S
|
|
src/RTsignal.c
|
|
)
|
|
list(
|
|
APPEND
|
|
RT_STATIC_ONLY_SRC_LIST
|
|
src/RTstatic_ctors_dtors_begin.c
|
|
src/RTstatic_ctors_dtors_end.c
|
|
)
|
|
elseif(PLATFORM MATCHES nt OR PLATFORM MATCHES windows)
|
|
list(
|
|
APPEND
|
|
SRC_LIST
|
|
src/RTheap.c
|
|
src/RTheap-win.c
|
|
src/RTwinnt.c
|
|
src/RTthread.c
|
|
src/RTthread-x86.c
|
|
)
|
|
endif()
|
|
|
|
set(SRC_LIST_i386 src/RTthread-x86.c src/RTtlsgetaddr-x86.S)
|
|
set(RT_STATIC_ONLY_SRC_LIST_i386 src/RTstatic_ctors_dtors-x86.c)
|
|
set(SRC_LIST_x86_64 src/RTthread-x86-64.c src/RTtlsgetaddr-x86.S)
|
|
set(RT_STATIC_ONLY_SRC_LIST_x86_64 src/RTstatic_ctors_dtors-x86.c)
|
|
set(SRC_LIST_ppc32 src/RTthread-powerpc.c src/RTthread-powerpc-asm.S)
|
|
set(RT_STATIC_ONLY_SRC_LIST_ppc32 src/RTstatic_ctors_dtors-ppc32.c)
|
|
set(SRC_LIST_ppc64 src/RTthread-powerpc.c src/RTthread-powerpc-asm.S)
|
|
set(RT_STATIC_ONLY_SRC_LIST_ppc64 src/RTstatic_ctors_dtors-ppc64.c)
|
|
set(SRC_LIST_aarch64
|
|
src/RTthread-aarch64.c
|
|
# src/RTthread-aarch64-asm.S
|
|
)
|
|
set(RT_STATIC_ONLY_SRC_LIST_aarch64 src/RTstatic_ctors_dtors-aarch64.c)
|
|
|
|
# We use gcc to compile the various assembly files, but cmake doesn't default to knowing
|
|
# that gcc can handle .S.
|
|
enable_language(ASM)
|
|
file(GLOB SRC_ASSEMBLY "src/*.S")
|
|
if(NEED_NATIVE_ASSEMBER)
|
|
set_source_files_properties(${SRC_ASSEMBLY} PROPERTIES LANGUAGE ASM)
|
|
else()
|
|
set_source_files_properties(${SRC_ASSEMBLY} PROPERTIES LANGUAGE C)
|
|
endif()
|
|
|
|
# The arch-specific files other than RTthread-x86 are Unix-only.
|
|
if(UNIX)
|
|
if(PLATFORM MATCHES amd64 OR PLATFORM MATCHES x86_64)
|
|
set(SRC_LIST_mabi ${SRC_LIST} ${SRC_LIST_i386})
|
|
set(RT_STATIC_ONLY_SRC_LIST_mabi
|
|
${RT_STATIC_ONLY_SRC_LIST}
|
|
${RT_STATIC_ONLY_SRC_LIST_i386}
|
|
)
|
|
list(APPEND SRC_LIST ${SRC_LIST_x86_64})
|
|
list(APPEND RT_STATIC_ONLY_SRC_LIST ${RT_STATIC_ONLY_SRC_LIST_x86_64})
|
|
elseif(PLATFORM MATCHES ppc64)
|
|
set(SRC_LIST_mabi ${SRC_LIST} ${SRC_LIST_ppc32})
|
|
set(RT_STATIC_ONLY_SRC_LIST_mabi
|
|
${RT_STATIC_ONLY_SRC_LIST}
|
|
${RT_STATIC_ONLY_SRC_LIST_ppc32}
|
|
)
|
|
list(APPEND SRC_LIST ${SRC_LIST_ppc64})
|
|
list(APPEND RT_STATIC_ONLY_SRC_LIST ${RT_STATIC_ONLY_SRC_LIST_ppc64})
|
|
elseif(PLATFORM MATCHES i386)
|
|
list(APPEND SRC_LIST ${SRC_LIST_i386})
|
|
list(APPEND RT_STATIC_ONLY_SRC_LIST ${RT_STATIC_ONLY_SRC_LIST_i386})
|
|
elseif(PLATFORM MATCHES ppc32)
|
|
list(APPEND SRC_LIST ${SRC_LIST_ppc32})
|
|
list(APPEND RT_STATIC_ONLY_SRC_LIST ${RT_STATIC_ONLY_SRC_LIST_ppc32})
|
|
elseif(PLATFORM MATCHES aarch64)
|
|
list(APPEND SRC_LIST ${SRC_LIST_aarch64})
|
|
list(APPEND RT_STATIC_ONLY_SRC_LIST ${RT_STATIC_ONLY_SRC_LIST_aarch64})
|
|
endif()
|
|
endif()
|
|
|
|
add_library(rocprofiler-systems-rt-library SHARED)
|
|
add_library(
|
|
rocprofiler-systems::rocprofiler-systems-rt-library
|
|
ALIAS rocprofiler-systems-rt-library
|
|
)
|
|
|
|
target_sources(rocprofiler-systems-rt-library PRIVATE ${SRC_LIST})
|
|
target_include_directories(
|
|
rocprofiler-systems-rt-library
|
|
PRIVATE
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/h>
|
|
)
|
|
target_compile_definitions(rocprofiler-systems-rt-library PRIVATE ${UNIFIED_DEFINES})
|
|
target_link_libraries(
|
|
rocprofiler-systems-rt-library
|
|
PUBLIC $<BUILD_INTERFACE:${dl_LIBRARY}>
|
|
PRIVATE rocprofiler-systems::rocprofiler-systems-threading
|
|
)
|
|
|
|
add_target_cxx_flag_if_avail(rocprofiler-systems-rt-library "-g3")
|
|
|
|
set_target_properties(
|
|
rocprofiler-systems-rt-library
|
|
PROPERTIES
|
|
OUTPUT_NAME ${BINARY_NAME_PREFIX}-rt
|
|
VERSION ${PROJECT_VERSION}
|
|
SOVERSION ${PROJECT_VERSION_MAJOR}
|
|
BUILD_RPATH "\$ORIGIN"
|
|
INSTALL_RPATH "\$ORIGIN"
|
|
)
|
|
|
|
rocprofiler_systems_strip_target(rocprofiler-systems-rt-library)
|
|
|
|
install(TARGETS rocprofiler-systems-rt-library DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
|
|
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(
|
|
rocprofiler-systems-rt-library-dyninstAPI_RT-symlink
|
|
ALL
|
|
${CMAKE_COMMAND} -E create_symlink
|
|
../$<TARGET_FILE_NAME:rocprofiler-systems-rt-library>
|
|
${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
|
|
COMMENT
|
|
"Creating ${CMAKE_SHARED_LIBRARY_PREFIX}dyninstAPI_RT${CMAKE_SHARED_LIBRARY_SUFFIX} to rocprof-sys-rt..."
|
|
)
|
|
|
|
install(
|
|
FILES
|
|
${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/${CMAKE_SHARED_LIBRARY_PREFIX}dyninstAPI_RT${CMAKE_SHARED_LIBRARY_SUFFIX}
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}
|
|
)
|