brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 2f9c2ac Raw
57 lines · plain
1# =================================================================================2# Lifetime Analysis Benchmarking Target3# =================================================================================4# This target allows running performance benchmarks for the clang lifetime analysis5# using a Python script (with managed dependencies).6 7find_package(Python3 COMPONENTS Interpreter REQUIRED)8 9# Define paths for the virtual environment and requirements file.10set(LIFETIME_BENCHMARK_SCRIPT 11  "${CMAKE_CURRENT_SOURCE_DIR}/benchmark.py")12set(LIFETIME_BENCHMARK_VENV_DIR "${CMAKE_CURRENT_BINARY_DIR}/benchmark-venv")13set(LIFETIME_BENCHMARK_REQUIREMENTS14  "${CMAKE_CURRENT_SOURCE_DIR}/requirements.txt")15set(LIFETIME_BENCHMARK_OUTPUT_DIR16  "${CMAKE_CURRENT_BINARY_DIR}/benchmark_results")17 18if(WIN32)19  set(LIFETIME_BENCHMARK_VENV_PYTHON_EXECUTABLE20    "${LIFETIME_BENCHMARK_VENV_DIR}/Scripts/python")21else()22  set(LIFETIME_BENCHMARK_VENV_PYTHON_EXECUTABLE23    "${LIFETIME_BENCHMARK_VENV_DIR}/bin/python")24endif()25 26if(EXISTS ${LIFETIME_BENCHMARK_SCRIPT} AND EXISTS ${LIFETIME_BENCHMARK_REQUIREMENTS})27 28  # Set up the virtual environment and install packages29  add_custom_command(30    OUTPUT ${LIFETIME_BENCHMARK_VENV_DIR}/pyvenv.cfg31    COMMAND ${Python3_EXECUTABLE} -m venv ${LIFETIME_BENCHMARK_VENV_DIR}32    COMMAND ${LIFETIME_BENCHMARK_VENV_PYTHON_EXECUTABLE} -m pip install -r ${LIFETIME_BENCHMARK_REQUIREMENTS}33    DEPENDS ${LIFETIME_BENCHMARK_REQUIREMENTS}34    COMMENT "Creating Python virtual environment and installing dependencies for benchmark..."35  )36  add_custom_target(benchmark_venv_setup37    DEPENDS ${LIFETIME_BENCHMARK_VENV_DIR}/pyvenv.cfg38  )39 40  # Main benchmark target41  add_custom_target(benchmark_lifetime_safety_analysis42    COMMAND ${LIFETIME_BENCHMARK_VENV_PYTHON_EXECUTABLE} ${LIFETIME_BENCHMARK_SCRIPT}43            --clang-binary ${LLVM_BINARY_DIR}/bin/clang44            --output-dir ${LIFETIME_BENCHMARK_OUTPUT_DIR}45 46    DEPENDS clang benchmark_venv_setup47 48    # Display the output directly in the console.49    USES_TERMINAL50    51    COMMENT "Running Lifetime Analysis performance benchmarks..."52  )53 54  set_target_properties(benchmark_lifetime_safety_analysis 55    PROPERTIES FOLDER "Clang/Benchmarks")56endif()57