chore(thirdparty): mark third-party include paths as SYSTEM (#413)
Add SYSTEM to target_include_directories in vendored CMake wrappers and set INTERFACE_SYSTEM_INCLUDE_DIRECTORIES on imported / sub-project targets so warnings from third-party headers no longer surface in our build output. Introduces a mark_target_includes_system() helper in cmake/utils.cmake (resolves aliases, skips missing targets) used by the upstream-add_subdirectory wrappers (glog, gflags, googletest, yaml-cpp, protobuf, antlr).
This commit is contained in:
parent
d580c08187
commit
51c6d9e0ec
|
|
@ -1,3 +1,22 @@
|
|||
# Promote a target's INTERFACE_INCLUDE_DIRECTORIES to be treated as SYSTEM
|
||||
# includes by consumers, suppressing warnings from third-party headers.
|
||||
function(mark_target_includes_system)
|
||||
foreach(_target ${ARGN})
|
||||
if(NOT TARGET ${_target})
|
||||
continue()
|
||||
endif()
|
||||
get_target_property(_aliased ${_target} ALIASED_TARGET)
|
||||
if(_aliased)
|
||||
set(_target ${_aliased})
|
||||
endif()
|
||||
get_target_property(_inc ${_target} INTERFACE_INCLUDE_DIRECTORIES)
|
||||
if(_inc)
|
||||
set_target_properties(${_target} PROPERTIES
|
||||
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_inc}")
|
||||
endif()
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
function(apply_patch_once patch_name target_dir patch_file)
|
||||
set(mark_file "${target_dir}/.${patch_name}_patched")
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ set_target_properties(roaring PROPERTIES
|
|||
# Two include roots:
|
||||
# - CRoaring-2.0.4/ -> <roaring.h>, <roaring.hh>, <roaring64map.hh>
|
||||
# - CRoaring-2.0.4/include/ -> <roaring/roaring.h> (legacy path used in code)
|
||||
target_include_directories(roaring PUBLIC
|
||||
target_include_directories(roaring SYSTEM PUBLIC
|
||||
$<BUILD_INTERFACE:${_ROARING_AMAL_DIR}>
|
||||
$<BUILD_INTERFACE:${_ROARING_AMAL_DIR}/include>
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
add_library(rabitqlib INTERFACE)
|
||||
target_include_directories(
|
||||
rabitqlib INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/RaBitQ-Library-0.1/include"
|
||||
rabitqlib SYSTEM INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/RaBitQ-Library-0.1/include"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -7,9 +7,10 @@ if(MSVC)
|
|||
endif()
|
||||
add_subdirectory(antlr4/runtime/Cpp/)
|
||||
|
||||
target_include_directories(antlr4_static INTERFACE
|
||||
target_include_directories(antlr4_static SYSTEM INTERFACE
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/antlr4/runtime/Cpp/runtime/src/"
|
||||
)
|
||||
mark_target_includes_system(antlr4_static)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
target_compile_options(antlr4_static PRIVATE -Wno-unknown-pragmas -Wno-unqualified-std-cast-call)
|
||||
|
|
|
|||
|
|
@ -149,6 +149,7 @@ add_library(Arrow::arrow_depends UNKNOWN IMPORTED GLOBAL)
|
|||
set_target_properties(
|
||||
Arrow::arrow_depends PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES ${EXTERNAL_INC_DIR}
|
||||
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES ${EXTERNAL_INC_DIR}
|
||||
IMPORTED_LOCATION "${LIB_ARROW_DEPENDS}"
|
||||
)
|
||||
add_dependencies(Arrow::arrow_depends ARROW.BUILD)
|
||||
|
|
@ -158,6 +159,7 @@ add_library(Arrow::arrow_static UNKNOWN IMPORTED GLOBAL)
|
|||
set_target_properties(
|
||||
Arrow::arrow_static PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES ${EXTERNAL_INC_DIR}
|
||||
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES ${EXTERNAL_INC_DIR}
|
||||
IMPORTED_LOCATION "${LIB_ARROW}"
|
||||
INTERFACE_LINK_LIBRARIES "Arrow::arrow_depends"
|
||||
INTERFACE_COMPILE_DEFINITIONS "ARROW_STATIC" #TODO(windows): see if this can be removed
|
||||
|
|
@ -168,6 +170,7 @@ add_library(Arrow::parquet_static UNKNOWN IMPORTED GLOBAL)
|
|||
set_target_properties(
|
||||
Arrow::parquet_static PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES ${EXTERNAL_INC_DIR}
|
||||
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES ${EXTERNAL_INC_DIR}
|
||||
IMPORTED_LOCATION "${LIB_PARQUET}"
|
||||
INTERFACE_LINK_LIBRARIES "Arrow::arrow_depends;Arrow::arrow_static"
|
||||
INTERFACE_COMPILE_DEFINITIONS "PARQUET_STATIC"
|
||||
|
|
@ -178,6 +181,7 @@ add_library(Arrow::arrow_compute UNKNOWN IMPORTED GLOBAL)
|
|||
set_target_properties(
|
||||
Arrow::arrow_compute PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES ${EXTERNAL_INC_DIR}
|
||||
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES ${EXTERNAL_INC_DIR}
|
||||
IMPORTED_LOCATION "${LIB_COMPUTE}"
|
||||
INTERFACE_LINK_LIBRARIES "Arrow::arrow_depends;Arrow::arrow_static"
|
||||
INTERFACE_COMPILE_DEFINITIONS "ARROW_COMPUTE_STATIC"
|
||||
|
|
@ -188,6 +192,7 @@ add_library(Arrow::arrow_acero UNKNOWN IMPORTED GLOBAL)
|
|||
set_target_properties(
|
||||
Arrow::arrow_acero PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES ${EXTERNAL_INC_DIR}
|
||||
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES ${EXTERNAL_INC_DIR}
|
||||
IMPORTED_LOCATION "${LIB_ACERO}"
|
||||
INTERFACE_LINK_LIBRARIES "Arrow::arrow_depends;Arrow::arrow_static;Arrow::arrow_compute"
|
||||
INTERFACE_COMPILE_DEFINITIONS "ARROW_ACERO_STATIC"
|
||||
|
|
@ -198,6 +203,7 @@ add_library(Arrow::arrow_dataset UNKNOWN IMPORTED GLOBAL)
|
|||
set_target_properties(
|
||||
Arrow::arrow_dataset PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES ${EXTERNAL_INC_DIR}
|
||||
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES ${EXTERNAL_INC_DIR}
|
||||
IMPORTED_LOCATION "${LIB_ARROW_DATASET}"
|
||||
INTERFACE_LINK_LIBRARIES "Arrow::arrow_depends;Arrow::arrow_static;Arrow::arrow_compute;Arrow::arrow_acero"
|
||||
INTERFACE_COMPILE_DEFINITIONS "ARROW_DS_STATIC"
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@ add_subdirectory(gflags-2.2.2)
|
|||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
|
||||
unset(_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
|
||||
|
||||
mark_target_includes_system(gflags gflags_static gflags_nothreads_static)
|
||||
|
||||
get_target_property(gflags_OUTPUT_NAME gflags OUTPUT_NAME)
|
||||
get_target_property(gflags_BINARY_DIR gflags BINARY_DIR)
|
||||
get_target_property(gflags_SOURCE_DIR gflags SOURCE_DIR)
|
||||
|
|
|
|||
|
|
@ -24,6 +24,8 @@ unset(_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
|
|||
|
||||
add_dependencies(glog gflags)
|
||||
|
||||
mark_target_includes_system(glog)
|
||||
|
||||
if(MSVC)
|
||||
# Modern MSVC (1900+/VS2015+) provides snprintf in the CRT.
|
||||
# Suppress glog's own declaration which conflicts with the SDK header.
|
||||
|
|
|
|||
|
|
@ -20,6 +20,8 @@ add_subdirectory(googletest-1.10.0)
|
|||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
|
||||
unset(_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
|
||||
|
||||
mark_target_includes_system(gtest gtest_main gmock gmock_main)
|
||||
|
||||
get_target_property(GTEST_INCLUDE_DIRS gtest INTERFACE_INCLUDE_DIRECTORIES)
|
||||
|
||||
set(GTEST_FOUND TRUE PARENT_SCOPE)
|
||||
|
|
|
|||
|
|
@ -130,6 +130,7 @@ add_library(lz4 STATIC IMPORTED GLOBAL)
|
|||
set_target_properties(
|
||||
lz4 PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${lz4_INCLUDE_DIR}"
|
||||
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${lz4_INCLUDE_DIR}"
|
||||
IMPORTED_LOCATION "${lz4_LIBRARY_DIR}/${LZ4_LIB_NAME}"
|
||||
)
|
||||
add_dependencies(lz4 Lz4.BUILD)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
add_library(magic_enum INTERFACE)
|
||||
target_include_directories(
|
||||
magic_enum INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/magic_enum-0.9.7/include/"
|
||||
magic_enum SYSTEM INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/magic_enum-0.9.7/include/"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -10,6 +10,8 @@ add_subdirectory(protobuf-3.21.12/cmake protobuf-3.21.12)
|
|||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
|
||||
unset(_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
|
||||
|
||||
mark_target_includes_system(libprotobuf libprotobuf-lite libprotoc)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
target_compile_options(libprotobuf PRIVATE
|
||||
-Wno-deprecated-declarations
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@ if(NOT TARGET lz4::lz4)
|
|||
IMPORTED_LOCATION_MINSIZEREL "${lz4_LIBRARY}"
|
||||
IMPORTED_LOCATION_RELWITHDEBINFO "${lz4_LIBRARY}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${lz4_INCLUDE_DIR}"
|
||||
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${lz4_INCLUDE_DIR}"
|
||||
)
|
||||
add_dependencies(lz4::lz4 Lz4.BUILD)
|
||||
endif()
|
||||
|
|
@ -71,6 +72,7 @@ unset(_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
|
|||
get_target_property(rocksdb_SOURCE_DIR rocksdb SOURCE_DIR)
|
||||
set(ROCKSDB_INCLUDE_DIR ${rocksdb_SOURCE_DIR}/include)
|
||||
|
||||
target_include_directories(rocksdb PUBLIC $<BUILD_INTERFACE:${ROCKSDB_INCLUDE_DIR}>)
|
||||
target_include_directories(rocksdb PRIVATE ${lz4_INCLUDE_DIR})
|
||||
target_include_directories(rocksdb SYSTEM PUBLIC $<BUILD_INTERFACE:${ROCKSDB_INCLUDE_DIR}>)
|
||||
target_include_directories(rocksdb SYSTEM PRIVATE ${lz4_INCLUDE_DIR})
|
||||
mark_target_includes_system(rocksdb)
|
||||
add_dependencies(rocksdb Lz4.BUILD)
|
||||
|
|
|
|||
|
|
@ -12,5 +12,5 @@ endif()
|
|||
|
||||
add_library(sparsehash INTERFACE)
|
||||
target_include_directories(
|
||||
sparsehash INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/sparsehash-2.0.4/src/"
|
||||
sparsehash SYSTEM INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/sparsehash-2.0.4/src/"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -8,6 +8,8 @@ add_subdirectory(yaml-cpp-0.6.3)
|
|||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
|
||||
unset(_SAVED_CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
|
||||
|
||||
mark_target_includes_system(yaml-cpp)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
target_compile_options(yaml-cpp PRIVATE -Wno-shadow)
|
||||
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
|
|
|
|||
Loading…
Reference in New Issue