Rework submodule installation (#70)
* Rework submodule installation
- use add_subdirectory(... EXCLUDE_FROM_ALL) + explicit installation of deps
- install all library deps to lib/omnitrace
- internal builds of dyninst use libomnitrace-rt for binary rewriting
- support libdyninstAPI_RT not in LD_LIBRARY_PATH when dyninst built internally
* Update ubuntu-focal to test full dyninst install
* Use RelWithDebInfo because Dyninst segfaults with MinSizeRel
* Fix ubuntu-focal.yml install step
[ROCm/rocprofiler-systems commit: fadcfa36da]
Esse commit está contido em:
@@ -1,15 +1,4 @@
|
||||
if(DYNINST_BUILD_ELFUTILS AND DYNINST_ELFUTILS_DOWNLOAD_VERSION)
|
||||
omnitrace_add_feature(DYNINST_ELFUTILS_DOWNLOAD_VERSION "ElfUtils download version")
|
||||
foreach(_LIB dw elf)
|
||||
install(
|
||||
PROGRAMS
|
||||
${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/dyninst-tpls/lib/lib${_LIB}${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/dyninst-tpls/lib/lib${_LIB}${CMAKE_SHARED_LIBRARY_SUFFIX}.1
|
||||
${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/dyninst-tpls/lib/lib${_LIB}-${DYNINST_ELFUTILS_DOWNLOAD_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/dyninst-tpls/lib
|
||||
OPTIONAL)
|
||||
endforeach()
|
||||
endif()
|
||||
# configure packaging
|
||||
|
||||
function(omnitrace_parse_release)
|
||||
if(EXISTS /etc/lsb-release AND NOT IS_DIRECTORY /etc/lsb-release)
|
||||
|
||||
@@ -781,4 +781,57 @@ function(OMNITRACE_FIND_SHARED_LIBRARY)
|
||||
find_library(${ARGN})
|
||||
endfunction()
|
||||
|
||||
function(OMNITRACE_INSTALL_TPL _TPL_TARGET _NEW_NAME _BUILD_TREE_DIR)
|
||||
get_target_property(_TPL_VERSION ${_TPL_TARGET} VERSION)
|
||||
get_target_property(_TPL_SOVERSION ${_TPL_TARGET} SOVERSION)
|
||||
get_target_property(_TPL_NAME ${_TPL_TARGET} OUTPUT_NAME)
|
||||
set(_TPL_PREFIX ${CMAKE_SHARED_LIBRARY_PREFIX})
|
||||
set(_TPL_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX})
|
||||
|
||||
foreach(_TAIL ${_TPL_SUFFIX} ${_TPL_SUFFIX}.${_TPL_SOVERSION}
|
||||
${_TPL_SUFFIX}.${_TPL_VERSION})
|
||||
set(_INP ${_TPL_PREFIX}${_TPL_NAME}${_TAIL})
|
||||
set(_OUT ${_TPL_PREFIX}${_NEW_NAME}${_TAIL})
|
||||
endforeach()
|
||||
|
||||
# build tree symbolic links
|
||||
add_custom_target(
|
||||
${_NEW_NAME}-library ALL
|
||||
${CMAKE_COMMAND} -E create_symlink $<TARGET_FILE:${_TPL_TARGET}>
|
||||
${_TPL_PREFIX}${_NEW_NAME}${_TPL_SUFFIX}.${_TPL_VERSION}
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E create_symlink
|
||||
${_TPL_PREFIX}${_NEW_NAME}${_TPL_SUFFIX}.${_TPL_VERSION}
|
||||
${_BUILD_TREE_DIR}/${_TPL_PREFIX}${_NEW_NAME}${_TPL_SUFFIX}.${_TPL_SOVERSION}
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E create_symlink
|
||||
${_TPL_PREFIX}${_NEW_NAME}${_TPL_SUFFIX}.${_TPL_SOVERSION}
|
||||
${_BUILD_TREE_DIR}/${_TPL_PREFIX}${_NEW_NAME}${_TPL_SUFFIX}
|
||||
WORKING_DIRECTORY ${_BUILD_TREE_DIR}
|
||||
DEPENDS ${_TPL_TARGET}
|
||||
COMMENT "Creating ${_NEW_NAME} symbolic links to ${_TPL_TARGET}...")
|
||||
|
||||
install(
|
||||
FILES $<TARGET_FILE:${_TPL_TARGET}>
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
RENAME ${_TPL_PREFIX}${_NEW_NAME}${_TPL_SUFFIX}.${_TPL_VERSION})
|
||||
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_BINARY_DIR}/install-tree
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E create_symlink
|
||||
${_TPL_PREFIX}${_NEW_NAME}${_TPL_SUFFIX}.${_TPL_VERSION}
|
||||
${PROJECT_BINARY_DIR}/install-tree/${_TPL_PREFIX}${_NEW_NAME}${_TPL_SUFFIX}.${_TPL_SOVERSION}
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E create_symlink
|
||||
${_TPL_PREFIX}${_NEW_NAME}${_TPL_SUFFIX}.${_TPL_SOVERSION}
|
||||
${PROJECT_BINARY_DIR}/install-tree/${_TPL_PREFIX}${_NEW_NAME}${_TPL_SUFFIX})
|
||||
install(
|
||||
FILES
|
||||
${PROJECT_BINARY_DIR}/install-tree/${_TPL_PREFIX}${_NEW_NAME}${_TPL_SUFFIX}.${_TPL_SOVERSION}
|
||||
${PROJECT_BINARY_DIR}/install-tree/${_TPL_PREFIX}${_NEW_NAME}${_TPL_SUFFIX}
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
|
||||
endfunction()
|
||||
|
||||
cmake_policy(POP)
|
||||
|
||||
@@ -208,14 +208,50 @@ if(OMNITRACE_BUILD_DYNINST)
|
||||
|
||||
omnitrace_save_variables(PIC VARIABLES CMAKE_POSITION_INDEPENDENT_CODE)
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
add_subdirectory(external/dyninst)
|
||||
set(DYNINST_TPL_INSTALL_PREFIX
|
||||
"omnitrace"
|
||||
CACHE PATH "Third-party library install-tree install prefix" FORCE)
|
||||
set(DYNINST_TPL_INSTALL_LIB_DIR
|
||||
"omnitrace"
|
||||
CACHE PATH "Third-party library install-tree install library prefix" FORCE)
|
||||
add_subdirectory(external/dyninst EXCLUDE_FROM_ALL)
|
||||
omnitrace_restore_variables(PIC VARIABLES CMAKE_POSITION_INDEPENDENT_CODE)
|
||||
|
||||
add_library(Dyninst::Dyninst INTERFACE IMPORTED)
|
||||
foreach(_LIB common dyninstAPI parseAPI instructionAPI symtabAPI stackwalk Boost TBB)
|
||||
foreach(_LIB common dyninstAPI parseAPI instructionAPI symtabAPI stackwalk)
|
||||
target_link_libraries(Dyninst::Dyninst INTERFACE Dyninst::${_LIB})
|
||||
endforeach()
|
||||
|
||||
foreach(
|
||||
_LIB
|
||||
common
|
||||
dynDwarf
|
||||
dynElf
|
||||
dyninstAPI
|
||||
dyninstAPI_RT
|
||||
instructionAPI
|
||||
parseAPI
|
||||
patchAPI
|
||||
pcontrol
|
||||
stackwalk
|
||||
symtabAPI)
|
||||
if(TARGET ${_LIB})
|
||||
install(
|
||||
TARGETS ${_LIB}
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/omnitrace
|
||||
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_LIBDIR}/omnitrace/include)
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
omnitrace_install_tpl(dyninstAPI_RT omnitrace-rt "${PROJECT_BINARY_DIR}")
|
||||
|
||||
# for packaging
|
||||
install(
|
||||
DIRECTORY ${DYNINST_TPL_STAGING_PREFIX}/lib/
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/omnitrace
|
||||
FILES_MATCHING
|
||||
PATTERN "*${CMAKE_SHARED_LIBRARY_SUFFIX}*")
|
||||
|
||||
target_link_libraries(omnitrace-dyninst INTERFACE Dyninst::Dyninst)
|
||||
|
||||
set(OMNITRACE_DYNINST_API_RT
|
||||
@@ -529,7 +565,16 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
CACHE BOOL "" FORCE)
|
||||
endif()
|
||||
|
||||
add_subdirectory(external/timemory)
|
||||
add_subdirectory(external/timemory EXCLUDE_FROM_ALL)
|
||||
|
||||
install(TARGETS gotcha DESTINATION ${CMAKE_INSTALL_LIBDIR}/omnitrace)
|
||||
if(OMNITRACE_BUILD_LIBUNWIND)
|
||||
install(
|
||||
DIRECTORY ${PROJECT_BINARY_DIR}/external/timemory/external/libunwind/install/lib/
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/omnitrace
|
||||
FILES_MATCHING
|
||||
PATTERN "*${CMAKE_SHARED_LIBRARY_SUFFIX}*")
|
||||
endif()
|
||||
|
||||
omnitrace_restore_variables(
|
||||
BUILD_CONFIG VARIABLES BUILD_SHARED_LIBS BUILD_STATIC_LIBS
|
||||
@@ -590,7 +635,7 @@ if(NOT TARGET PTL::ptl-shared)
|
||||
set(CMAKE_CXX_VISIBILITY_PRESET "hidden")
|
||||
set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
|
||||
|
||||
add_subdirectory(external/PTL)
|
||||
add_subdirectory(external/PTL EXCLUDE_FROM_ALL)
|
||||
|
||||
omnitrace_restore_variables(
|
||||
BUILD_CONFIG
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário