File autofdo-system-llvm.patch of Package llvm-god-mlgo

--- CMakeLists.txt
+++ CMakeLists.txt
@@ -4,6 +4,15 @@
 
 project(autofdo)
 
+# System glog headers require these visibility/configuration defines to be set
+# when not building glog via add_subdirectory.
+add_compile_definitions(
+  GLOG_USE_GLOG_EXPORT
+  GFLAGS_IS_A_DLL=0
+  GLOG_USE_GFLAGS
+)
+add_compile_options(-include ${CMAKE_HOME_DIRECTORY}/absl_nonnull_compat.h)
+
 if (NOT DEFINED BUILD_SHARED)
   set(BUILD_SHARED FALSE)
 endif()
@@ -98,8 +107,6 @@
     third_party/perf_data_converter/src/quipper/perf_parser.cc
     third_party/perf_data_converter/src/quipper/sample_info_reader.cc
     third_party/perf_data_converter/src/quipper/string_utils.cc)
-  target_include_directories(quipper_perf PRIVATE
-    third_party/abseil)
   target_include_directories(quipper_perf BEFORE
     PUBLIC
     third_party/perf_data_converter/src
@@ -202,7 +209,7 @@
      if ("${CLANG_GIT_COMMIT_HASH}" STREQUAL ${CLANG_KNOWN_GIT_COMMIT_HASH})
        message(STATUS "Found known git commit hash of clang (" ${CLANG_GIT_COMMIT_HASH} ") - Success")
      else()
-       message(FATAL_ERROR "Unverified git commit hash of llvm source - ${CLANG_GIT_COMMIT_HASH}. Do not modify or update third_party/llvm-project")
+       message(WARNING "Unverified git commit hash of llvm source - ${CLANG_GIT_COMMIT_HASH}. Using external LLVM toolchain")
      endif()
   endif()
 
@@ -231,10 +238,31 @@
   set (LLVM_ENABLE_TERMINFO OFF CACHE BOOL "enable terminfo")
   ###
 
-  add_subdirectory(third_party/abseil)
-  add_subdirectory(third_party/glog)
-  add_subdirectory(third_party/googletest)
-  add_subdirectory(third_party/llvm-project/llvm)
+  find_package(absl REQUIRED CONFIG)
+  find_package(glog REQUIRED CONFIG)
+  find_package(GTest REQUIRED CONFIG)
+  find_package(LLVM REQUIRED CONFIG)
+
+  if (TARGET glog::glog AND NOT TARGET glog)
+    add_library(glog INTERFACE IMPORTED)
+    target_link_libraries(glog INTERFACE glog::glog)
+  endif()
+  if (TARGET GTest::gtest AND NOT TARGET gtest)
+    add_library(gtest INTERFACE IMPORTED)
+    target_link_libraries(gtest INTERFACE GTest::gtest)
+  endif()
+  if (TARGET GTest::gtest_main AND NOT TARGET gtest_main)
+    add_library(gtest_main INTERFACE IMPORTED)
+    target_link_libraries(gtest_main INTERFACE GTest::gtest_main)
+  endif()
+  if (TARGET GTest::gmock AND NOT TARGET gmock)
+    add_library(gmock INTERFACE IMPORTED)
+    target_link_libraries(gmock INTERFACE GTest::gmock)
+  endif()
+  if (TARGET GTest::gmock_main AND NOT TARGET gmock_main)
+    add_library(gmock_main INTERFACE IMPORTED)
+    target_link_libraries(gmock_main INTERFACE GTest::gmock_main)
+  endif()
 
   add_custom_target(exclude_extlib_tests ALL
     COMMAND rm -f ${gtest_BINARY_DIR}/CTestTestfile.cmake
@@ -245,19 +273,12 @@
 
   add_definitions(-DHAVE_LLVM=1)
   include_directories(${CMAKE_HOME_DIRECTORY}
-    third_party/glog/src
-    third_party/abseil
-    third_party/llvm-project/llvm/include
     third_party/perf_data_converter/src
     third_party/perf_data_converter/src/quipper
     ${PROJECT_BINARY_DIR}
-    ${PROJECT_BINARY_DIR}/third_party/glog
-    ${PROJECT_BINARY_DIR}/third_party/llvm-project/llvm/include
-    ${gtest_SOURCE_DIR}/include
-    ${gmock_SOURCE_DIR}/include
-    third_party/perf_data_converter/src
-    third_party/perf_data_converter/src/quipper
-    util/regexp)
+    ${PROJECT_BINARY_DIR}/third_party/perf_data_converter/src/quipper
+    util/regexp
+    ${LLVM_INCLUDE_DIRS})
 
   add_library(llvm_propeller_cfg_proto llvm_propeller_cfg.proto)
   protobuf_generate(TARGET llvm_propeller_cfg_proto LANGUAGE cpp)
@@ -841,8 +862,6 @@
     third_party/perf_data_converter/src/quipper/sample_info_reader.cc
     third_party/perf_data_converter/src/quipper/string_utils.cc)
 
-  target_include_directories(quipper_perf PRIVATE
-    third_party/abseil)
   target_include_directories(quipper_perf BEFORE
     PUBLIC
     third_party/perf_data_converter/src
openSUSE Build Service is sponsored by