• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1if(LLVM_BUILD_INSTRUMENTED)
2  if (CMAKE_CFG_INTDIR STREQUAL ".")
3    set(LLVM_BUILD_MODE ".")
4  else ()
5    set(LLVM_BUILD_MODE "%(build_mode)s")
6  endif ()
7
8  string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} CLANG_TOOLS_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
9
10  configure_lit_site_cfg(
11    ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
12    ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
13    )
14
15  add_lit_testsuite(generate-profraw "Generating clang PGO data"
16    ${CMAKE_CURRENT_BINARY_DIR}
17    DEPENDS clang clear-profraw
18    )
19
20  add_custom_target(clear-profraw
21    COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/perf-helper.py clean ${CMAKE_CURRENT_BINARY_DIR}
22    COMMENT "Clearing old profraw data")
23
24  if(NOT LLVM_PROFDATA)
25    find_program(LLVM_PROFDATA llvm-profdata)
26  endif()
27
28  if(NOT LLVM_PROFDATA)
29    message(FATAL_ERROR "Must set LLVM_PROFDATA to point to llvm-profdata to use for merging PGO data")
30  endif()
31
32  add_custom_target(generate-profdata
33    COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/perf-helper.py merge ${LLVM_PROFDATA} ${CMAKE_CURRENT_BINARY_DIR}/clang.profdata ${CMAKE_CURRENT_BINARY_DIR}
34    COMMENT "Merging profdata"
35    DEPENDS generate-profraw)
36endif()
37