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