diff --git a/cmake/utils.cmake b/cmake/utils.cmake index cda8a05..30195c6 100644 --- a/cmake/utils.cmake +++ b/cmake/utils.cmake @@ -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") diff --git a/thirdparty/CRoaring/CMakeLists.txt b/thirdparty/CRoaring/CMakeLists.txt index f819ee2..49b6f5c 100644 --- a/thirdparty/CRoaring/CMakeLists.txt +++ b/thirdparty/CRoaring/CMakeLists.txt @@ -31,7 +31,7 @@ set_target_properties(roaring PROPERTIES # Two include roots: # - CRoaring-2.0.4/ -> , , # - CRoaring-2.0.4/include/ -> (legacy path used in code) -target_include_directories(roaring PUBLIC +target_include_directories(roaring SYSTEM PUBLIC $ $ ) diff --git a/thirdparty/RaBitQ-Library/CMakeLists.txt b/thirdparty/RaBitQ-Library/CMakeLists.txt index 43ceaba..6f0ee93 100644 --- a/thirdparty/RaBitQ-Library/CMakeLists.txt +++ b/thirdparty/RaBitQ-Library/CMakeLists.txt @@ -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" ) diff --git a/thirdparty/antlr/CMakeLists.txt b/thirdparty/antlr/CMakeLists.txt index 6a296eb..e176996 100644 --- a/thirdparty/antlr/CMakeLists.txt +++ b/thirdparty/antlr/CMakeLists.txt @@ -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) diff --git a/thirdparty/arrow/CMakeLists.txt b/thirdparty/arrow/CMakeLists.txt index e9860e1..0c4603b 100644 --- a/thirdparty/arrow/CMakeLists.txt +++ b/thirdparty/arrow/CMakeLists.txt @@ -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" diff --git a/thirdparty/gflags/CMakeLists.txt b/thirdparty/gflags/CMakeLists.txt index 917fc49..48948ec 100644 --- a/thirdparty/gflags/CMakeLists.txt +++ b/thirdparty/gflags/CMakeLists.txt @@ -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) diff --git a/thirdparty/glog/CMakeLists.txt b/thirdparty/glog/CMakeLists.txt index 38083bf..dce0e69 100644 --- a/thirdparty/glog/CMakeLists.txt +++ b/thirdparty/glog/CMakeLists.txt @@ -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. diff --git a/thirdparty/googletest/CMakeLists.txt b/thirdparty/googletest/CMakeLists.txt index 0ba5ddf..4a4badf 100644 --- a/thirdparty/googletest/CMakeLists.txt +++ b/thirdparty/googletest/CMakeLists.txt @@ -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) diff --git a/thirdparty/lz4/CMakeLists.txt b/thirdparty/lz4/CMakeLists.txt index 5e73245..66c31f1 100644 --- a/thirdparty/lz4/CMakeLists.txt +++ b/thirdparty/lz4/CMakeLists.txt @@ -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) diff --git a/thirdparty/magic_enum/CMakeLists.txt b/thirdparty/magic_enum/CMakeLists.txt index 9178019..a36c84c 100644 --- a/thirdparty/magic_enum/CMakeLists.txt +++ b/thirdparty/magic_enum/CMakeLists.txt @@ -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/" ) diff --git a/thirdparty/protobuf/CMakeLists.txt b/thirdparty/protobuf/CMakeLists.txt index 0eebf94..a9041d4 100644 --- a/thirdparty/protobuf/CMakeLists.txt +++ b/thirdparty/protobuf/CMakeLists.txt @@ -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 diff --git a/thirdparty/rocksdb/CMakeLists.txt b/thirdparty/rocksdb/CMakeLists.txt index 5f1bc3c..1844aeb 100644 --- a/thirdparty/rocksdb/CMakeLists.txt +++ b/thirdparty/rocksdb/CMakeLists.txt @@ -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 $) -target_include_directories(rocksdb PRIVATE ${lz4_INCLUDE_DIR}) +target_include_directories(rocksdb SYSTEM PUBLIC $) +target_include_directories(rocksdb SYSTEM PRIVATE ${lz4_INCLUDE_DIR}) +mark_target_includes_system(rocksdb) add_dependencies(rocksdb Lz4.BUILD) diff --git a/thirdparty/sparsehash/CMakeLists.txt b/thirdparty/sparsehash/CMakeLists.txt index c389505..a588e0e 100644 --- a/thirdparty/sparsehash/CMakeLists.txt +++ b/thirdparty/sparsehash/CMakeLists.txt @@ -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/" ) diff --git a/thirdparty/yaml-cpp/CMakeLists.txt b/thirdparty/yaml-cpp/CMakeLists.txt index d237d6f..7643541 100644 --- a/thirdparty/yaml-cpp/CMakeLists.txt +++ b/thirdparty/yaml-cpp/CMakeLists.txt @@ -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")