diff --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt --- a/clang/CMakeLists.txt +++ b/clang/CMakeLists.txt @@ -876,13 +876,10 @@ if (CLANG_BOLT_INSTRUMENT AND NOT LLVM_BUILD_INSTRUMENTED) set(CLANG_PATH ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang) - set(CLANGXX_PATH ${CLANG_PATH}++) - set(CLANG_INSTRUMENTED ${CLANG_PATH}-bolt.inst) - set(CLANGXX_INSTRUMENTED ${CLANGXX_PATH}-bolt.inst) - set(CLANG_OPTIMIZED ${CLANG_PATH}-bolt) - set(CLANGXX_OPTIMIZED ${CLANGXX_PATH}-bolt) # Instrument clang with BOLT + set(BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/bolt-instr-bins/) + set(CLANG_INSTRUMENTED ${BINARY_DIR}/clang) add_custom_target(clang-instrumented DEPENDS ${CLANG_INSTRUMENTED} ) @@ -895,18 +892,8 @@ VERBATIM ) - # Make a symlink from clang-bolt.inst to clang++-bolt.inst - add_custom_target(clang++-instrumented - DEPENDS ${CLANGXX_INSTRUMENTED} - ) - add_custom_command(OUTPUT ${CLANGXX_INSTRUMENTED} - DEPENDS clang-instrumented - COMMAND ${CMAKE_COMMAND} -E create_symlink - ${CLANG_INSTRUMENTED} - ${CLANGXX_INSTRUMENTED} - COMMENT "Creating symlink from BOLT instrumented clang to clang++" - VERBATIM - ) + # Make a symlink from instrumented clang to clang++ + add_clang_symlink(clang++ clang) # Build specified targets with instrumented Clang to collect the profile set(STAMP_DIR ${CMAKE_CURRENT_BINARY_DIR}/bolt-instrumented-clang-stamps/) @@ -958,6 +945,8 @@ ) # Optimize original (pre-bolt) Clang using the collected profile + set(BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/bolt-optimized-bins/) + set(CLANG_OPTIMIZED ${BINARY_DIR}/clang) add_custom_target(clang-bolt DEPENDS ${CLANG_OPTIMIZED} ) @@ -973,17 +962,10 @@ ) # Make a symlink from clang-bolt to clang++-bolt - add_custom_target(clang++-bolt - DEPENDS ${CLANGXX_OPTIMIZED} - ) - add_custom_command(OUTPUT ${CLANGXX_OPTIMIZED} - DEPENDS clang-bolt - COMMAND ${CMAKE_COMMAND} -E create_symlink - ${CLANG_OPTIMIZED} - ${CLANGXX_OPTIMIZED} - COMMENT "Creating symlink from BOLT optimized clang to clang++" - VERBATIM - ) + add_clang_symlink(clang++ clang) + add_llvm_install_targets(install-clang-bolt + DEPENDS clang-bolt + COMPONENT clang-bolt) endif() if (LLVM_ADD_NATIVE_VISUALIZERS_TO_SOLUTION) diff --git a/clang/cmake/caches/BOLT-PGO.cmake b/clang/cmake/caches/BOLT-PGO.cmake --- a/clang/cmake/caches/BOLT-PGO.cmake +++ b/clang/cmake/caches/BOLT-PGO.cmake @@ -1,10 +1,12 @@ set(LLVM_ENABLE_PROJECTS "bolt;clang;lld" CACHE STRING "") set(CLANG_BOOTSTRAP_TARGETS - stage2-clang++-bolt + stage2-clang-bolt + stage2-install-clang-bolt CACHE STRING "") set(BOOTSTRAP_CLANG_BOOTSTRAP_TARGETS - clang++-bolt + clang-bolt + install-clang-bolt CACHE STRING "") set(PGO_BUILD_CONFIGURATION ${CMAKE_CURRENT_LIST_DIR}/BOLT.cmake CACHE STRING "")