From c533b0ba4527f9b072234b42764b0b11a22e1944 Mon Sep 17 00:00:00 2001
From: Konstantinos Sideris <sideris.konstantin@gmail.com>
Date: Sun, 29 Apr 2018 14:08:57 +0300
Subject: [PATCH] Add include-what-you-use

---
 CMakeLists.txt | 10 ++++++++++
 src/utils.cpp  |  6 +++++-
 src/utils.hpp  |  5 +++--
 3 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7e82ba721..c46e918eb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -6,6 +6,7 @@ option(ASAN "Compile with address sanitizers" OFF)
 option(BUILD_LIB_TESTS "Build tests" ON)
 option(BUILD_LIB_EXAMPLES "Build examples" ON)
 option(COVERAGE "Calculate test coverage" OFF)
+option(IWYU "Check headers with include-what-you-use" OFF)
 
 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
 set(CMAKE_INCLUDE_CURRENT_DIR ON)
@@ -132,6 +133,15 @@ add_dependencies(matrix_client ${MTXCLIENT_DEPS})
 target_link_libraries(matrix_client ${MTXCLIENT_LIBS})
 target_include_directories(matrix_client SYSTEM PRIVATE $ENV{INCLUDE})
 
+if (IWYU)
+    find_program(iwyu_path NAMES include-what-you-use iwyu)
+    if (iwyu_path)
+        set_property(TARGET matrix_client PROPERTY CXX_INCLUDE_WHAT_YOU_USE ${iwyu_path})
+    else()
+        message(WARNING "Could not find the program include-what-you-use")
+    endif()
+endif()
+
 if (BUILD_LIB_EXAMPLES)
     add_executable(room_feed examples/room_feed.cpp)
     target_link_libraries(room_feed matrix_client ${MATRIX_STRUCTS_LIBRARY})
diff --git a/src/utils.cpp b/src/utils.cpp
index ade630cde..bfd52a99e 100644
--- a/src/utils.cpp
+++ b/src/utils.cpp
@@ -1,12 +1,16 @@
 #include "utils.hpp"
 
-#include <iostream>
 #include <sstream>
+#include <string>
+#include <utility>
 
 #include <boost/iostreams/copy.hpp>
+#include <boost/iostreams/detail/error.hpp>
+#include <boost/iostreams/detail/forward.hpp>
 #include <boost/iostreams/filter/gzip.hpp>
 #include <boost/iostreams/filter/zlib.hpp>
 #include <boost/iostreams/filtering_stream.hpp>
+#include <boost/iostreams/traits.hpp>
 #include <boost/random/random_device.hpp>
 #include <boost/random/uniform_int_distribution.hpp>
 
diff --git a/src/utils.hpp b/src/utils.hpp
index 54047db81..2e61d78c9 100644
--- a/src/utils.hpp
+++ b/src/utils.hpp
@@ -1,8 +1,9 @@
 #pragma once
 
-#include <boost/iostreams/stream.hpp>
+#include <_types/_uint8_t.h>
+#include <boost/iostreams/device/array.hpp>
+#include <iosfwd>
 #include <map>
-#include <string>
 
 namespace mtx {
 namespace client {
-- 
GitLab