
Commit 8306968b592d942cc49bde2e387061e673a9fbb7 deleted file `compiler-rt/lib/memprof/memprof_meminfoblock.h`, but didn't remove it from MEMPROF_HEADERS in `compiler-rt/lib/memprof/CMakeLists.txt`. Remove unneeded leftover line in `compiler-rt/lib/memprof/CMakeLists.txt`. p.s. GH #54777 reported a llvm14 build failure due to the existence of the leftover line, but I'm unable to reproduce the build failure with llvm19 trunk.
211 lines
6.2 KiB
CMake
211 lines
6.2 KiB
CMake
# Build for the Memory Profiler runtime support library.
|
|
|
|
set(MEMPROF_SOURCES
|
|
memprof_allocator.cpp
|
|
memprof_descriptions.cpp
|
|
memprof_flags.cpp
|
|
memprof_interceptors.cpp
|
|
memprof_interceptors_memintrinsics.cpp
|
|
memprof_linux.cpp
|
|
memprof_malloc_linux.cpp
|
|
memprof_mibmap.cpp
|
|
memprof_posix.cpp
|
|
memprof_rawprofile.cpp
|
|
memprof_rtl.cpp
|
|
memprof_shadow_setup.cpp
|
|
memprof_stack.cpp
|
|
memprof_stats.cpp
|
|
memprof_thread.cpp
|
|
)
|
|
|
|
set(MEMPROF_CXX_SOURCES
|
|
memprof_new_delete.cpp
|
|
)
|
|
|
|
set(MEMPROF_PREINIT_SOURCES
|
|
memprof_preinit.cpp
|
|
)
|
|
|
|
SET(MEMPROF_HEADERS
|
|
memprof_allocator.h
|
|
memprof_descriptions.h
|
|
memprof_flags.h
|
|
memprof_flags.inc
|
|
memprof_init_version.h
|
|
memprof_interceptors.h
|
|
memprof_interceptors_memintrinsics.h
|
|
memprof_interface_internal.h
|
|
memprof_internal.h
|
|
memprof_mapping.h
|
|
memprof_mibmap.h
|
|
memprof_rawprofile.h
|
|
memprof_stack.h
|
|
memprof_stats.h
|
|
memprof_thread.h
|
|
)
|
|
|
|
include_directories(..)
|
|
include_directories(../../include)
|
|
|
|
set(MEMPROF_CFLAGS ${SANITIZER_COMMON_CFLAGS})
|
|
set(MEMPROF_COMMON_DEFINITIONS "")
|
|
|
|
# Too many existing bugs, needs cleanup.
|
|
append_list_if(COMPILER_RT_HAS_WNO_FORMAT -Wno-format MEMPROF_CFLAGS)
|
|
|
|
append_rtti_flag(OFF MEMPROF_CFLAGS)
|
|
|
|
set(MEMPROF_DYNAMIC_LINK_FLAGS ${SANITIZER_COMMON_LINK_FLAGS})
|
|
|
|
set(MEMPROF_DYNAMIC_DEFINITIONS
|
|
${MEMPROF_COMMON_DEFINITIONS} MEMPROF_DYNAMIC=1)
|
|
|
|
set(MEMPROF_DYNAMIC_CFLAGS ${MEMPROF_CFLAGS})
|
|
append_list_if(COMPILER_RT_HAS_FTLS_MODEL_INITIAL_EXEC
|
|
-ftls-model=initial-exec MEMPROF_DYNAMIC_CFLAGS)
|
|
|
|
set(MEMPROF_DYNAMIC_LIBS
|
|
${COMPILER_RT_UNWINDER_LINK_LIBS}
|
|
${SANITIZER_CXX_ABI_LIBRARIES}
|
|
${SANITIZER_COMMON_LINK_LIBS})
|
|
|
|
append_list_if(COMPILER_RT_HAS_LIBDL dl MEMPROF_DYNAMIC_LIBS)
|
|
append_list_if(COMPILER_RT_HAS_LIBRT rt MEMPROF_DYNAMIC_LIBS)
|
|
append_list_if(COMPILER_RT_HAS_LIBM m MEMPROF_DYNAMIC_LIBS)
|
|
append_list_if(COMPILER_RT_HAS_LIBPTHREAD pthread MEMPROF_DYNAMIC_LIBS)
|
|
append_list_if(COMPILER_RT_HAS_LIBLOG log MEMPROF_DYNAMIC_LIBS)
|
|
|
|
# Compile MemProf sources into an object library.
|
|
|
|
add_compiler_rt_object_libraries(RTMemprof_dynamic
|
|
OS ${SANITIZER_COMMON_SUPPORTED_OS}
|
|
ARCHS ${MEMPROF_SUPPORTED_ARCH}
|
|
SOURCES ${MEMPROF_SOURCES} ${MEMPROF_CXX_SOURCES}
|
|
ADDITIONAL_HEADERS ${MEMPROF_HEADERS}
|
|
CFLAGS ${MEMPROF_DYNAMIC_CFLAGS}
|
|
DEFS ${MEMPROF_DYNAMIC_DEFINITIONS}
|
|
DEPS ${MEMPROF_DEPS})
|
|
|
|
add_compiler_rt_object_libraries(RTMemprof
|
|
ARCHS ${MEMPROF_SUPPORTED_ARCH}
|
|
SOURCES ${MEMPROF_SOURCES}
|
|
ADDITIONAL_HEADERS ${MEMPROF_HEADERS}
|
|
CFLAGS ${MEMPROF_CFLAGS}
|
|
DEFS ${MEMPROF_COMMON_DEFINITIONS}
|
|
DEPS ${MEMPROF_DEPS})
|
|
add_compiler_rt_object_libraries(RTMemprof_cxx
|
|
ARCHS ${MEMPROF_SUPPORTED_ARCH}
|
|
SOURCES ${MEMPROF_CXX_SOURCES}
|
|
ADDITIONAL_HEADERS ${MEMPROF_HEADERS}
|
|
CFLAGS ${MEMPROF_CFLAGS}
|
|
DEFS ${MEMPROF_COMMON_DEFINITIONS}
|
|
DEPS ${MEMPROF_DEPS})
|
|
add_compiler_rt_object_libraries(RTMemprof_preinit
|
|
ARCHS ${MEMPROF_SUPPORTED_ARCH}
|
|
SOURCES ${MEMPROF_PREINIT_SOURCES}
|
|
ADDITIONAL_HEADERS ${MEMPROF_HEADERS}
|
|
CFLAGS ${MEMPROF_CFLAGS}
|
|
DEFS ${MEMPROF_COMMON_DEFINITIONS}
|
|
DEPS ${MEMPROF_DEPS})
|
|
|
|
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp "")
|
|
add_compiler_rt_object_libraries(RTMemprof_dynamic_version_script_dummy
|
|
ARCHS ${MEMPROF_SUPPORTED_ARCH}
|
|
SOURCES ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp
|
|
CFLAGS ${MEMPROF_DYNAMIC_CFLAGS}
|
|
DEFS ${MEMPROF_DYNAMIC_DEFINITIONS}
|
|
DEPS ${MEMPROF_DEPS})
|
|
|
|
# Build MemProf runtimes shipped with Clang.
|
|
add_compiler_rt_component(memprof)
|
|
|
|
# Build separate libraries for each target.
|
|
|
|
set(MEMPROF_COMMON_RUNTIME_OBJECT_LIBS
|
|
RTInterception
|
|
RTSanitizerCommon
|
|
RTSanitizerCommonLibc
|
|
RTSanitizerCommonCoverage
|
|
RTSanitizerCommonSymbolizer
|
|
# FIXME: hangs.
|
|
# RTSanitizerCommonSymbolizerInternal
|
|
)
|
|
|
|
add_compiler_rt_runtime(clang_rt.memprof
|
|
STATIC
|
|
ARCHS ${MEMPROF_SUPPORTED_ARCH}
|
|
OBJECT_LIBS RTMemprof_preinit
|
|
RTMemprof
|
|
${MEMPROF_COMMON_RUNTIME_OBJECT_LIBS}
|
|
CFLAGS ${MEMPROF_CFLAGS}
|
|
DEFS ${MEMPROF_COMMON_DEFINITIONS}
|
|
PARENT_TARGET memprof)
|
|
|
|
add_compiler_rt_runtime(clang_rt.memprof_cxx
|
|
STATIC
|
|
ARCHS ${MEMPROF_SUPPORTED_ARCH}
|
|
OBJECT_LIBS RTMemprof_cxx
|
|
CFLAGS ${MEMPROF_CFLAGS}
|
|
DEFS ${MEMPROF_COMMON_DEFINITIONS}
|
|
PARENT_TARGET memprof)
|
|
|
|
add_compiler_rt_runtime(clang_rt.memprof-preinit
|
|
STATIC
|
|
ARCHS ${MEMPROF_SUPPORTED_ARCH}
|
|
OBJECT_LIBS RTMemprof_preinit
|
|
CFLAGS ${MEMPROF_CFLAGS}
|
|
DEFS ${MEMPROF_COMMON_DEFINITIONS}
|
|
PARENT_TARGET memprof)
|
|
|
|
foreach(arch ${MEMPROF_SUPPORTED_ARCH})
|
|
if (UNIX)
|
|
add_sanitizer_rt_version_list(clang_rt.memprof-dynamic-${arch}
|
|
LIBS clang_rt.memprof-${arch} clang_rt.memprof_cxx-${arch}
|
|
EXTRA memprof.syms.extra)
|
|
set(VERSION_SCRIPT_FLAG
|
|
-Wl,--version-script,${CMAKE_CURRENT_BINARY_DIR}/clang_rt.memprof-dynamic-${arch}.vers)
|
|
set_property(SOURCE
|
|
${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp
|
|
APPEND PROPERTY
|
|
OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/clang_rt.memprof-dynamic-${arch}.vers)
|
|
else()
|
|
set(VERSION_SCRIPT_FLAG)
|
|
endif()
|
|
|
|
set(MEMPROF_DYNAMIC_WEAK_INTERCEPTION)
|
|
|
|
add_compiler_rt_runtime(clang_rt.memprof
|
|
SHARED
|
|
ARCHS ${arch}
|
|
OBJECT_LIBS ${MEMPROF_COMMON_RUNTIME_OBJECT_LIBS}
|
|
RTMemprof_dynamic
|
|
# The only purpose of RTMemprof_dynamic_version_script_dummy is to
|
|
# carry a dependency of the shared runtime on the version script.
|
|
# Replacing it with a straightforward
|
|
# add_dependencies(clang_rt.memprof-dynamic-${arch} clang_rt.memprof-dynamic-${arch}-version-list)
|
|
# generates an order-only dependency in ninja.
|
|
RTMemprof_dynamic_version_script_dummy
|
|
${MEMPROF_DYNAMIC_WEAK_INTERCEPTION}
|
|
CFLAGS ${MEMPROF_DYNAMIC_CFLAGS}
|
|
LINK_FLAGS ${MEMPROF_DYNAMIC_LINK_FLAGS}
|
|
${VERSION_SCRIPT_FLAG}
|
|
LINK_LIBS ${MEMPROF_DYNAMIC_LIBS}
|
|
DEFS ${MEMPROF_DYNAMIC_DEFINITIONS}
|
|
PARENT_TARGET memprof)
|
|
|
|
if (SANITIZER_USE_SYMBOLS)
|
|
add_sanitizer_rt_symbols(clang_rt.memprof_cxx
|
|
ARCHS ${arch})
|
|
add_dependencies(memprof clang_rt.memprof_cxx-${arch}-symbols)
|
|
add_sanitizer_rt_symbols(clang_rt.memprof
|
|
ARCHS ${arch}
|
|
EXTRA memprof.syms.extra)
|
|
add_dependencies(memprof clang_rt.memprof-${arch}-symbols)
|
|
endif()
|
|
endforeach()
|
|
|
|
|
|
if(COMPILER_RT_INCLUDE_TESTS)
|
|
add_subdirectory(tests)
|
|
endif()
|