xref: /aosp_15_r20/external/clang/utils/perf-training/CMakeLists.txt (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li
2*67e74705SXin Li# All test suites added here should be excuded from check-all
3*67e74705SXin Liset(EXCLUDE_FROM_ALL On)
4*67e74705SXin Li
5*67e74705SXin Liif (CMAKE_CFG_INTDIR STREQUAL ".")
6*67e74705SXin Li  set(LLVM_BUILD_MODE ".")
7*67e74705SXin Lielse ()
8*67e74705SXin Li  set(LLVM_BUILD_MODE "%(build_mode)s")
9*67e74705SXin Liendif ()
10*67e74705SXin Li
11*67e74705SXin Listring(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} CLANG_TOOLS_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
12*67e74705SXin Li
13*67e74705SXin Liif(LLVM_BUILD_INSTRUMENTED)
14*67e74705SXin Li  configure_lit_site_cfg(
15*67e74705SXin Li    ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
16*67e74705SXin Li    ${CMAKE_CURRENT_BINARY_DIR}/pgo-data/lit.site.cfg
17*67e74705SXin Li    )
18*67e74705SXin Li
19*67e74705SXin Li  add_lit_testsuite(generate-profraw "Generating clang PGO data"
20*67e74705SXin Li    ${CMAKE_CURRENT_BINARY_DIR}/pgo-data/
21*67e74705SXin Li    DEPENDS clang clear-profraw
22*67e74705SXin Li    )
23*67e74705SXin Li
24*67e74705SXin Li  add_custom_target(clear-profraw
25*67e74705SXin Li    COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/perf-helper.py clean ${CMAKE_CURRENT_BINARY_DIR} profraw
26*67e74705SXin Li    COMMENT "Clearing old profraw data")
27*67e74705SXin Li
28*67e74705SXin Li  if(NOT LLVM_PROFDATA)
29*67e74705SXin Li    find_program(LLVM_PROFDATA llvm-profdata)
30*67e74705SXin Li  endif()
31*67e74705SXin Li
32*67e74705SXin Li  if(NOT LLVM_PROFDATA)
33*67e74705SXin Li    message(FATAL_ERROR "Must set LLVM_PROFDATA to point to llvm-profdata to use for merging PGO data")
34*67e74705SXin Li  endif()
35*67e74705SXin Li
36*67e74705SXin Li  add_custom_target(generate-profdata
37*67e74705SXin Li    COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/perf-helper.py merge ${LLVM_PROFDATA} ${CMAKE_CURRENT_BINARY_DIR}/clang.profdata ${CMAKE_CURRENT_BINARY_DIR}
38*67e74705SXin Li    COMMENT "Merging profdata"
39*67e74705SXin Li    DEPENDS generate-profraw)
40*67e74705SXin Liendif()
41*67e74705SXin Li
42*67e74705SXin Lifind_program(DTRACE dtrace)
43*67e74705SXin Liif(DTRACE)
44*67e74705SXin Li  configure_lit_site_cfg(
45*67e74705SXin Li    ${CMAKE_CURRENT_SOURCE_DIR}/order-files.lit.site.cfg.in
46*67e74705SXin Li    ${CMAKE_CURRENT_BINARY_DIR}/order-files/lit.site.cfg
47*67e74705SXin Li    )
48*67e74705SXin Li
49*67e74705SXin Li  add_lit_testsuite(generate-dtrace-logs "Generating clang dtrace data"
50*67e74705SXin Li    ${CMAKE_CURRENT_BINARY_DIR}/order-files/
51*67e74705SXin Li    ARGS -j 1
52*67e74705SXin Li    DEPENDS clang clear-dtrace-logs
53*67e74705SXin Li    )
54*67e74705SXin Li
55*67e74705SXin Li  add_custom_target(clear-dtrace-logs
56*67e74705SXin Li    COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/perf-helper.py clean ${CMAKE_CURRENT_BINARY_DIR} dtrace
57*67e74705SXin Li    COMMENT "Clearing old dtrace data")
58*67e74705SXin Li
59*67e74705SXin Li  add_custom_target(generate-order-file
60*67e74705SXin Li    COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/perf-helper.py gen-order-file --binary $<TARGET_FILE:clang> --output ${CLANG_ORDER_FILE} ${CMAKE_CURRENT_BINARY_DIR}
61*67e74705SXin Li    COMMENT "Generating order file"
62*67e74705SXin Li    DEPENDS generate-dtrace-logs)
63*67e74705SXin Liendif()
64