blob: 39f9a4ca3c130f2dcf72923d696a45d42e27c880 [file] [log] [blame]
Chris Bieneman3f746e62016-01-15 22:44:18 +00001
2# All test suites added here should be excuded from check-all
3set(EXCLUDE_FROM_ALL On)
4
Chris Bienemand8b5bde2016-01-15 21:21:12 +00005if (CMAKE_CFG_INTDIR STREQUAL ".")
6 set(LLVM_BUILD_MODE ".")
7else ()
8 set(LLVM_BUILD_MODE "%(build_mode)s")
9endif ()
10
11string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} CLANG_TOOLS_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
12
Chris Bienemanae543392015-12-16 01:02:44 +000013if(LLVM_BUILD_INSTRUMENTED)
Chris Bienemanae543392015-12-16 01:02:44 +000014 configure_lit_site_cfg(
15 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
Chris Bienemand8b5bde2016-01-15 21:21:12 +000016 ${CMAKE_CURRENT_BINARY_DIR}/pgo-data/lit.site.cfg
Chris Bienemanae543392015-12-16 01:02:44 +000017 )
18
19 add_lit_testsuite(generate-profraw "Generating clang PGO data"
Chris Bienemand8b5bde2016-01-15 21:21:12 +000020 ${CMAKE_CURRENT_BINARY_DIR}/pgo-data/
Chris Bienemanae543392015-12-16 01:02:44 +000021 DEPENDS clang clear-profraw
22 )
23
24 add_custom_target(clear-profraw
Chris Bienemand8b5bde2016-01-15 21:21:12 +000025 COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/perf-helper.py clean ${CMAKE_CURRENT_BINARY_DIR} profraw
Chris Bienemanae543392015-12-16 01:02:44 +000026 COMMENT "Clearing old profraw data")
27
28 if(NOT LLVM_PROFDATA)
29 find_program(LLVM_PROFDATA llvm-profdata)
30 endif()
31
32 if(NOT LLVM_PROFDATA)
Alexander Shaposhnikov0141e552017-10-13 03:21:39 +000033 message(STATUS "To enable merging PGO data LLVM_PROFDATA has to point to llvm-profdata")
34 else()
35 add_custom_target(generate-profdata
36 COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/perf-helper.py merge ${LLVM_PROFDATA} ${CMAKE_CURRENT_BINARY_DIR}/clang.profdata ${CMAKE_CURRENT_BINARY_DIR}
37 COMMENT "Merging profdata"
38 DEPENDS generate-profraw)
Chris Bienemanae543392015-12-16 01:02:44 +000039 endif()
Chris Bienemanae543392015-12-16 01:02:44 +000040endif()
Chris Bienemand8b5bde2016-01-15 21:21:12 +000041
42find_program(DTRACE dtrace)
Alexander Shaposhnikovfd7afa72016-12-31 05:25:52 +000043if(APPLE AND DTRACE)
Chris Bienemand8b5bde2016-01-15 21:21:12 +000044 configure_lit_site_cfg(
45 ${CMAKE_CURRENT_SOURCE_DIR}/order-files.lit.site.cfg.in
46 ${CMAKE_CURRENT_BINARY_DIR}/order-files/lit.site.cfg
47 )
48
49 add_lit_testsuite(generate-dtrace-logs "Generating clang dtrace data"
50 ${CMAKE_CURRENT_BINARY_DIR}/order-files/
Chris Bienemanf5a7ec72016-04-13 17:12:56 +000051 ARGS -j 1
Chris Bienemand8b5bde2016-01-15 21:21:12 +000052 DEPENDS clang clear-dtrace-logs
53 )
54
55 add_custom_target(clear-dtrace-logs
56 COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/perf-helper.py clean ${CMAKE_CURRENT_BINARY_DIR} dtrace
57 COMMENT "Clearing old dtrace data")
58
Alexander Shaposhnikovfd7afa72016-12-31 05:25:52 +000059 if(NOT CLANG_ORDER_FILE)
60 message(FATAL_ERROR "Output clang order file is not set")
61 endif()
62
Chris Bienemand8b5bde2016-01-15 21:21:12 +000063 add_custom_target(generate-order-file
Chris Bieneman834a40b2016-04-08 22:48:18 +000064 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}
Chris Bienemand8b5bde2016-01-15 21:21:12 +000065 COMMENT "Generating order file"
66 DEPENDS generate-dtrace-logs)
67endif()