Files
TheRock/rocm-systems/projects/rocprofiler-systems/external/timemory/cmake/Modules/GenerateMakefile.cmake
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

360 lines
11 KiB
CMake

set_property(DIRECTORY PROPERTY PROCESSED)
# ----------------------------------------------------------------------------------------#
function(TIMEMORY_MAKEFILE_TARGET _VAR _TARG)
string(REPLACE "-" "_" _FILE_TARG "${_TARG}")
string(REGEX REPLACE ".*::" "" _FILE_TARG "${_FILE_TARG}")
set(${_VAR}
${_FILE_TARG}
PARENT_SCOPE)
endfunction()
# ----------------------------------------------------------------------------------------#
function(TIMEMORY_MAKEFILE_TARGET_NAME _VAR _TARG)
string(REPLACE "-" "_" _FILE_TARG "${_TARG}")
string(REGEX REPLACE ".*::" "" _FILE_TARG "${_FILE_TARG}")
string(TOUPPER "${_FILE_TARG}" _NAME)
set(${_VAR}
${_NAME}
PARENT_SCOPE)
endfunction()
# ----------------------------------------------------------------------------------------#
macro(TIMEMORY_MAKEFILE_REMOVE_COMPILE_LANGUAGE)
foreach(_ARG ${ARGN})
if(NOT "${${_ARG}}" MATCHES "COMPILE_LANGUAGE")
continue()
endif()
string(REPLACE "\$<\$<COMPILE_LANGUAGE:" "<<COMPILE_LANGUAGE:" ${_ARG}
"${${_ARG}}")
string(REGEX REPLACE "<<COMPILE_LANGUAGE:(C|CXX|CUDA)>:" "" ${_ARG} "${${_ARG}}")
string(REGEX REPLACE ">$" "" ${_ARG} "${${_ARG}}")
endforeach()
endmacro()
# ----------------------------------------------------------------------------------------#
macro(TIMEMORY_MAKEFILE_REMOVE_COMPILER_ID)
foreach(_ARG ${ARGN})
if(NOT "${${_ARG}}" MATCHES "COMPILER_ID:")
continue()
else()
set(${_ARG})
endif()
endforeach()
endmacro()
# ----------------------------------------------------------------------------------------#
function(TIMEMORY_MAKEFILE_TARGET_EXTRACT _TARG _TYPE)
# don't process alias libraries
string(REGEX REPLACE "^timemory::" "" _BASE_TARG "${_TARG}")
if(TARGET "${_BASE_TARG}")
set(_TARG ${_BASE_TARG})
endif()
get_property(
GLOBAL_PROCESSED
DIRECTORY
PROPERTY GLOBAL_PROCESSED)
get_property(
PROCESSED
DIRECTORY
PROPERTY PROCESSED)
# first
set(_GLOBAL_FIRST OFF)
set(_FIRST OFF)
if("${PROCESSED}" STREQUAL "")
set(_FIRST ON)
endif()
if("${_TARG}" IN_LIST PROCESSED)
return()
endif()
if(NOT "${_TARG}" IN_LIST GLOBAL_PROCESSED)
set(_GLOBAL_FIRST ON)
endif()
set_property(
DIRECTORY
APPEND
PROPERTY GLOBAL_PROCESSED ${_TARG})
set_property(
DIRECTORY
APPEND
PROPERTY PROCESSED ${_TARG})
# if(_GLOBAL_FIRST) message(STATUS "|_ Processing ${_TARG}...") endif()
timemory_makefile_target(_FILE_TARG ${_TARG})
timemory_makefile_target_name(_NAME ${_TARG})
set(VARS C_OPTS CXX_OPTS CUDA_OPTS EXTRA_OPTS INCLUDE DEFINE LINKED DEPEND)
foreach(_VAR ${VARS})
set(${_VAR})
endforeach()
get_target_property(INCLUDE_DIRS ${_TARG} ${_TYPE}_INCLUDE_DIRECTORIES)
get_target_property(COMPILE_OPTS ${_TARG} ${_TYPE}_COMPILE_OPTIONS)
get_target_property(COMPILE_DEFS ${_TARG} ${_TYPE}_COMPILE_DEFINITIONS)
get_target_property(LIBRARY_LINK ${_TARG} ${_TYPE}_LINK_LIBRARIES)
get_target_property(LIBRARY_LDIR ${_TARG} ${_TYPE}_LINK_DIRECTORIES)
if(INCLUDE_DIRS)
foreach(_DIR ${INCLUDE_DIRS})
if(_DIR MATCHES ".*<BUILD_INTERFACE:")
continue()
endif()
if(_DIR MATCHES ".*<INSTALL_INTERFACE:")
string(REPLACE "\$" "" _DIR "${_DIR}")
string(REPLACE "<INSTALL_INTERFACE:" "" _DIR "${_DIR}")
string(REPLACE ">" "" _DIR "${_DIR}")
if(NOT EXISTS "${_DIR}")
set(_DIR "${CMAKE_INSTALL_PREFIX}/${_DIR}")
endif()
endif()
list(APPEND INCLUDE "-I${_DIR}")
endforeach()
string(REPLACE ";" " " INCLUDE "${INCLUDE}")
# message(STATUS "[${_FILE_TARG}]> Include: ${INCLUDE}")
endif()
if(COMPILE_OPTS)
foreach(_OPT ${COMPILE_OPTS})
foreach(_LANG C CXX CUDA)
timemory_makefile_remove_compiler_id(_OPT)
if(NOT _OPT)
continue()
endif()
if(_OPT MATCHES ".*COMPILE_LANGUAGE:${_LANG}>.*")
timemory_makefile_remove_compile_language(_OPT)
if(_OPT)
list(APPEND ${_LANG}_OPTS ${_OPT})
endif()
else()
list(APPEND EXTRA_OPTS ${_OPT})
endif()
endforeach()
endforeach()
foreach(_TYPE C CXX CUDA EXTRA)
string(REPLACE ";" " " ${_TYPE}_OPTS "${${_TYPE}_OPTS}")
endforeach()
# message(STATUS "[${_FILE_TARG}]> Compile C : ${C_OPTS}") message(STATUS
# "[${_FILE_TARG}]> Compile CXX : ${CXX_OPTS}") message(STATUS "[${_FILE_TARG}]>
# Compile CUDA : ${CUDA_OPTS}") message(STATUS "[${_FILE_TARG}]> Compile EXTRA :
# ${EXTRA_OPTS}")
endif()
if(COMPILE_DEFS)
foreach(_DEF ${COMPILE_DEFS})
# skip configuration generator expressions
if("${_DEF}" MATCHES "<CONFIG:"
OR "${_DEF}" MATCHES "<BUILD_INTERFACE:"
OR "${_DEF}" MATCHES "TIMEMORY_CMAKE")
continue()
endif()
timemory_makefile_remove_compile_language(_DEF)
if(_DEF)
list(APPEND DEFINE "-D${_DEF}")
endif()
endforeach()
string(REPLACE ";" " " DEFINE "${DEFINE}")
# message(STATUS "[${_FILE_TARG}]> Defines: ${DEFINE}")
endif()
if(LIBRARY_LINK)
foreach(_LINK ${LIBRARY_LDIR})
if(EXISTS ${_LINK})
list(APPEND LINKED "-L${_LDIR}")
endif()
endforeach()
endif()
if(LIBRARY_LINK)
foreach(_LINK ${LIBRARY_LINK})
string(REPLACE "\$" "" _LINK "${_LINK}")
string(REGEX REPLACE "<LINK_ONLY:([A-Za-z0-9-=].+)>" "\\1" _LINK "${_LINK}")
if(TARGET ${_LINK})
timemory_makefile_target_extract(${_LINK} INTERFACE)
timemory_makefile_target_name(_DEP ${_LINK})
list(APPEND DEPEND ${_DEP})
get_target_property(_LINK_TARGET_TYPE ${_LINK} TYPE)
if("${_LINK_TARGET_TYPE}" MATCHES "SHARED_LIBRARY"
OR "${_LINK_TARGET_TYPE}" MATCHES "STATIC_LIBRARY")
get_target_property(_LINK_OUTPUT_NAME ${_LINK} OUTPUT_NAME)
if(_LINK_OUTPUT_NAME)
list(APPEND LINKED "-l${_LINK_OUTPUT_NAME}")
else()
list(APPEND LINKED "-l${_LINK}")
endif()
endif()
else()
if(EXISTS "${_LINK}")
get_filename_component(_LDIR "${_LINK}" PATH)
get_filename_component(_LNAME "${_LINK}" NAME_WE)
string(REGEX REPLACE "^lib" "" _LNAME "${_LNAME}")
list(APPEND LINKED "-L${_LDIR}")
list(APPEND LINKED "-l${_LNAME}")
else()
if(NOT "${_LINK}" MATCHES "::@")
if(NOT "${_LINK}" MATCHES "^-")
list(APPEND LINKED "-l${_LINK}")
else()
list(APPEND LINKED "${_LINK}")
endif()
endif()
endif()
endif()
endforeach()
string(REPLACE ";" " " LINKED "${LINKED}")
# message(STATUS "[${_FILE_TARG}]> Library: ${LINKED}")
endif()
# if called recursively, set variables in parent scope and return
if(NOT _FIRST)
foreach(_VAR ${VARS})
set(${_NAME}_${_VAR}
"${${_VAR}}"
PARENT_SCOPE)
endforeach()
if(NOT _GLOBAL_FIRST)
return()
endif()
endif()
# add variables from depends
foreach(_DEP ${DEPEND})
foreach(_VAR ${VARS})
if(${_DEP}_${_VAR})
set(${_VAR} "${${_VAR}} ${${_DEP}_${_VAR}}")
endif()
endforeach()
endforeach()
# tweak spacing
foreach(_VAR ${VARS})
if(${_VAR})
string(REPLACE " " " " ${_VAR} "${${_VAR}}")
string(REGEX REPLACE "^ " "" ${_VAR} "${${_VAR}}")
endif()
endforeach()
file(
APPEND ${PROJECT_BINARY_DIR}/outputs/Makefile.timemory.inc
"#
# TARGET: ${_NAME}
#
")
if(INCLUDE)
file(APPEND ${PROJECT_BINARY_DIR}/outputs/Makefile.timemory.inc
"${_NAME}_INCLUDE = ${INCLUDE}\n")
endif()
if(LINKED)
file(APPEND ${PROJECT_BINARY_DIR}/outputs/Makefile.timemory.inc
"${_NAME}_LIBS = ${LINKED}\n")
endif()
if(DEFINE)
file(APPEND ${PROJECT_BINARY_DIR}/outputs/Makefile.timemory.inc
"${_NAME}_DEFS = ${DEFINE}\n")
endif()
if(C_OPTS)
file(APPEND ${PROJECT_BINARY_DIR}/outputs/Makefile.timemory.inc
"${_NAME}_CFLAGS = ${C_OPTS}\n")
endif()
if(CXX_OPTS)
file(APPEND ${PROJECT_BINARY_DIR}/outputs/Makefile.timemory.inc
"${_NAME}_CPPFLAGS = ${CXX_OPTS}\n")
endif()
if(CUDA_OPTS)
file(APPEND ${PROJECT_BINARY_DIR}/outputs/Makefile.timemory.inc
"${_NAME}_CUFLAGS = ${CUDA_OPTS}\n")
endif()
if(DEPEND)
list(REMOVE_DUPLICATES DEPEND)
string(REPLACE ";" " " DEPEND "${DEPEND}")
file(APPEND ${PROJECT_BINARY_DIR}/outputs/Makefile.timemory.inc
"${_NAME}_DEPENDS = ${DEPEND}\n")
endif()
if(INCLUDE
OR LINKED
OR DEFINE
OR C_OPTS
OR CXX_OPTS
OR CUDA_OPTS
OR DEPEND)
file(APPEND ${PROJECT_BINARY_DIR}/outputs/Makefile.timemory.inc "\n")
endif()
endfunction()
# ----------------------------------------------------------------------------------------#
message(STATUS "Generating Makefile.timemory.inc...")
set(TIMEMORY_MAKEFILE_LIBRARIES
${TIMEMORY_MAKEFILE_INTERFACE_LIBRARIES} ${TIMEMORY_MAKEFILE_COMPILED_LIBRARIES}
${TIMEMORY_TOOL_LIBRARIES})
list(REMOVE_DUPLICATES TIMEMORY_MAKEFILE_LIBRARIES)
list(SORT TIMEMORY_MAKEFILE_LIBRARIES)
set(MAKEFILE_LIBS)
foreach(_LIB ${TIMEMORY_MAKEFILE_LIBRARIES})
timemory_makefile_target_name(_LIB ${_LIB})
list(APPEND MAKEFILE_LIBS ${_LIB})
endforeach()
string(REPLACE ";" " " MAKEFILE_LIBS "${MAKEFILE_LIBS}")
file(
WRITE ${PROJECT_BINARY_DIR}/outputs/Makefile.timemory.inc
"
#
# This file was auto-generated by the timemory CMake build system
#
TIMEMORY_MAKEFILE_LIBRARIES = ${MAKEFILE_LIBS}
")
# ----------------------------------------------------------------------------------------#
list(SORT TIMEMORY_MAKEFILE_LIBRARIES)
foreach(_TARG ${TIMEMORY_MAKEFILE_LIBRARIES})
set_property(DIRECTORY PROPERTY PROCESSED "")
timemory_makefile_target_extract(${_TARG} INTERFACE)
endforeach()
file(APPEND ${PROJECT_BINARY_DIR}/outputs/Makefile.timemory.inc "\n")
# ----------------------------------------------------------------------------------------#
message(STATUS "Generated outputs/Makefile.timemory.inc")
# ----------------------------------------------------------------------------------------#
if(TIMEMORY_INSTALL_CONFIG)
install(
FILES ${PROJECT_BINARY_DIR}/outputs/Makefile.timemory.inc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}
OPTIONAL)
endif()