blob: 5b1707af0a16dcb6594ce15a6a7f4fd87a261aa7 [file] [log] [blame]
Chris Bienemand8b5bde2016-01-15 21:21:12 +00001if (CMAKE_CFG_INTDIR STREQUAL ".")
2 set(LLVM_BUILD_MODE ".")
3else ()
4 set(LLVM_BUILD_MODE "%(build_mode)s")
5endif ()
6
7string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} CLANG_TOOLS_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
8
Chris Bienemanae543392015-12-16 01:02:44 +00009if(LLVM_BUILD_INSTRUMENTED)
Chris Bienemanae543392015-12-16 01:02:44 +000010 configure_lit_site_cfg(
11 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
Chris Bienemand8b5bde2016-01-15 21:21:12 +000012 ${CMAKE_CURRENT_BINARY_DIR}/pgo-data/lit.site.cfg
Chris Bienemanae543392015-12-16 01:02:44 +000013 )
14
15 add_lit_testsuite(generate-profraw "Generating clang PGO data"
Chris Bienemand8b5bde2016-01-15 21:21:12 +000016 ${CMAKE_CURRENT_BINARY_DIR}/pgo-data/
Chris Bienemanae543392015-12-16 01:02:44 +000017 DEPENDS clang clear-profraw
18 )
19
20 add_custom_target(clear-profraw
Chris Bienemand8b5bde2016-01-15 21:21:12 +000021 COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/perf-helper.py clean ${CMAKE_CURRENT_BINARY_DIR} profraw
Chris Bienemanae543392015-12-16 01:02:44 +000022 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()
Chris Bienemand8b5bde2016-01-15 21:21:12 +000037
38find_program(DTRACE dtrace)
39if(DTRACE)
40 configure_lit_site_cfg(
41 ${CMAKE_CURRENT_SOURCE_DIR}/order-files.lit.site.cfg.in
42 ${CMAKE_CURRENT_BINARY_DIR}/order-files/lit.site.cfg
43 )
44
45 add_lit_testsuite(generate-dtrace-logs "Generating clang dtrace data"
46 ${CMAKE_CURRENT_BINARY_DIR}/order-files/
47 DEPENDS clang clear-dtrace-logs
48 )
49
50 add_custom_target(clear-dtrace-logs
51 COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/perf-helper.py clean ${CMAKE_CURRENT_BINARY_DIR} dtrace
52 COMMENT "Clearing old dtrace data")
53
54
55 add_custom_target(generate-order-file
56 COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/perf-helper.py gen-order-file --binary $<TARGET_FILE:clang> --output ${CMAKE_CURRENT_BINARY_DIR}/clang.order ${CMAKE_CURRENT_BINARY_DIR}
57 COMMENT "Generating order file"
58 DEPENDS generate-dtrace-logs)
59endif()