================
@@ -0,0 +1,140 @@
+include(LLVMExternalProjectUtils)
+
+set(FLANG_PGO_TRAINING_DATA "${CMAKE_CURRENT_SOURCE_DIR}" CACHE PATH
+  "The path to a lit testsuite containing samples for PGO and order file 
generation"
+  )
+set(FLANG_PGO_TRAINING_DATA_SOURCE_DIR OFF CACHE STRING "Path to source 
directory containing cmake project with source files to use for generating 
flang pgo data")
+set(FLANG_PGO_TRAINING_DATA_SOURCE_CMAKE_ARGS "" CACHE STRING "Extra CMake 
flags to pass to the cmake project with source files to use for generating 
flang pgo data")
+set(FLANG_PGO_TRAINING_DEPS "" CACHE STRING "Extra dependencies needed to 
build the PGO training data.")
+set(FLANG_PGO_TRAINING_CLANG_COUPLING ON CACHE BOOL "Train clang and flang 
together")
+if(FLANG_PGO_TRAINING_CLANG_COUPLING)
+  set(CLANG_PGO_TRAINING_DATA_SOURCE_DIR OFF CACHE STRING "Path to source 
directory containing cmake project with source files to use for generating 
clang pgo data")
+  set(CLANG_PGO_TRAINING_DATA_SOURCE_CMAKE_ARGS "" CACHE STRING "Extra CMake 
flags to pass to the cmake project with source files to use for generating 
clang pgo data")
+endif()
+
+set(CLANG_CURRENT_BINARY_DIR 
${CMAKE_CURRENT_BINARY_DIR}/../../../clang/utils/perf-training)
+
+set(PERF_HELPER 
${LLVM_MAIN_SRC_DIR}/../clang/utils/perf-training/perf-helper.py)
+
+add_custom_target(clear-flang-perf-data
+  COMMAND "${Python3_EXECUTABLE}" ${PERF_HELPER} clean 
${CMAKE_CURRENT_BINARY_DIR} perf.data
+  COMMENT "Clearing old flang perf data")
+
+option(FLANG_PGO_TRAINING_USE_LLVM_BUILD "Use LLVM build for generating PGO 
data" ON)
+
+llvm_canonicalize_cmake_booleans(
+  FLANG_PGO_TRAINING_USE_LLVM_BUILD
+)
+
+if(LLVM_BUILD_INSTRUMENTED)
+  configure_lit_site_cfg(
+    ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
+    ${CMAKE_CURRENT_BINARY_DIR}/pgo-data/lit.site.cfg
+    )
+
+  add_lit_testsuite(generate-flang-profraw "Generating flang PGO data"
+    ${CMAKE_CURRENT_BINARY_DIR}/pgo-data/
+    EXCLUDE_FROM_CHECK_ALL
+    DEPENDS flang flang-rt
+    )
+  if(FLANG_PGO_TRAINING_CLANG_COUPLING)
+    add_lit_testsuite(generate-clang-profraw "Generating clang PGO data"
+      ${CLANG_CURRENT_BINARY_DIR}/pgo-data/
+      EXCLUDE_FROM_CHECK_ALL
+      DEPENDS clang
+      )
+  endif()
+
+  add_custom_target(clear-flang-profraw
+    COMMAND "${Python3_EXECUTABLE}" ${PERF_HELPER} clean 
${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR}/profiles/ profraw
+    COMMENT "Clearing old flang profraw data")
+  if (FLANG_PGO_TRAINING_CLANG_COUPLING)
+    add_dependencies(clear-flang-profraw clear-profraw)
+  endif()
+
+  if(NOT LLVM_PROFDATA)
+    find_program(LLVM_PROFDATA llvm-profdata)
+  endif()
+
+  if(NOT LLVM_PROFDATA)
+    message(STATUS "To enable merging PGO data LLVM_PROFDATA has to point to 
llvm-profdata")
+  else()
+    set(PROFDATA ${CMAKE_BINARY_DIR}/flang.profdata)
+    set(PROFRAW_TARGETS "")
+    set(PROFRAW_DIRS "")
+    set(PROFRAW_DEPS "")
+    if(FLANG_PGO_TRAINING_CLANG_COUPLING)
+      list(APPEND PROFRAW_TARGETS generate-clang-profraw)
+      list(APPEND PROFRAW_DIRS ${CLANG_CURRENT_BINARY_DIR})
+      list(APPEND PROFRAW_DEPS clang)
+      if (CLANG_PGO_TRAINING_DATA_SOURCE_DIR)
+        llvm_ExternalProject_Add(generate-clang-profraw-external
+                                 ${CLANG_PGO_TRAINING_DATA_SOURCE_DIR}
+                                 USE_TOOLCHAIN
+                                 EXLUDE_FROM_ALL
----------------
pawosm-arm wrote:

Fixed

https://github.com/llvm/llvm-project/pull/197947
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to