1 2# All test suites added here should be excuded from check-all 3set(EXCLUDE_FROM_ALL On) 4 5if (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 13set(CLANG_PGO_TRAINING_DATA "${CMAKE_CURRENT_SOURCE_DIR}" CACHE PATH 14 "The path to a lit testsuite containing samples for PGO and order file generation" 15 ) 16 17if(LLVM_BUILD_INSTRUMENTED) 18 configure_lit_site_cfg( 19 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in 20 ${CMAKE_CURRENT_BINARY_DIR}/pgo-data/lit.site.cfg 21 ) 22 23 add_lit_testsuite(generate-profraw "Generating clang PGO data" 24 ${CMAKE_CURRENT_BINARY_DIR}/pgo-data/ 25 DEPENDS clang clear-profraw 26 ) 27 28 add_custom_target(clear-profraw 29 COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/perf-helper.py clean ${CMAKE_CURRENT_BINARY_DIR} profraw 30 COMMENT "Clearing old profraw data") 31 32 if(NOT LLVM_PROFDATA) 33 find_program(LLVM_PROFDATA llvm-profdata) 34 endif() 35 36 if(NOT LLVM_PROFDATA) 37 message(STATUS "To enable merging PGO data LLVM_PROFDATA has to point to llvm-profdata") 38 else() 39 add_custom_target(generate-profdata 40 COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/perf-helper.py merge ${LLVM_PROFDATA} ${CMAKE_CURRENT_BINARY_DIR}/clang.profdata ${CMAKE_CURRENT_BINARY_DIR} 41 COMMENT "Merging profdata" 42 DEPENDS generate-profraw) 43 endif() 44endif() 45 46find_program(DTRACE dtrace) 47if(APPLE AND DTRACE) 48 configure_lit_site_cfg( 49 ${CMAKE_CURRENT_SOURCE_DIR}/order-files.lit.site.cfg.in 50 ${CMAKE_CURRENT_BINARY_DIR}/order-files/lit.site.cfg 51 ) 52 53 add_lit_testsuite(generate-dtrace-logs "Generating clang dtrace data" 54 ${CMAKE_CURRENT_BINARY_DIR}/order-files/ 55 ARGS -j 1 56 DEPENDS clang clear-dtrace-logs 57 ) 58 59 add_custom_target(clear-dtrace-logs 60 COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/perf-helper.py clean ${CMAKE_CURRENT_BINARY_DIR} dtrace 61 COMMENT "Clearing old dtrace data") 62 63 if(NOT CLANG_ORDER_FILE) 64 message(FATAL_ERROR "Output clang order file is not set") 65 endif() 66 67 add_custom_target(generate-order-file 68 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} 69 COMMENT "Generating order file" 70 DEPENDS generate-dtrace-logs) 71endif() 72