Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
CMake
CMake
Commits
d2b0a47c
Commit
d2b0a47c
authored
Apr 11, 2017
by
Daniel Pfeifer
1
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add include-what-you-use mapping
parent
e155fba6
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
147 additions
and
0 deletions
+147
-0
CMakeLists.txt
CMakeLists.txt
+11
-0
Utilities/IWYU/mapping.imp
Utilities/IWYU/mapping.imp
+136
-0
No files found.
CMakeLists.txt
View file @
d2b0a47c
...
@@ -226,6 +226,17 @@ option(CMAKE_USE_FOLDERS "Enable folder grouping of projects in IDEs." ON)
...
@@ -226,6 +226,17 @@ option(CMAKE_USE_FOLDERS "Enable folder grouping of projects in IDEs." ON)
mark_as_advanced
(
CMAKE_USE_FOLDERS
)
mark_as_advanced
(
CMAKE_USE_FOLDERS
)
option
(
CMake_RUN_IWYU
"Run include-what-you-use with the compiler."
OFF
)
if
(
CMake_RUN_IWYU
)
find_program
(
IWYU_COMMAND NAMES include-what-you-use iwyu
)
if
(
NOT IWYU_COMMAND
)
message
(
FATAL_ERROR
"CMake_RUN_IWYU is ON but include-what-you-use is not found!"
)
endif
()
set
(
CMAKE_CXX_INCLUDE_WHAT_YOU_USE
"
${
IWYU_COMMAND
}
;-Xiwyu;--mapping_file=
${
CMake_SOURCE_DIR
}
/Utilities/IWYU/mapping.imp"
)
endif
()
#-----------------------------------------------------------------------
#-----------------------------------------------------------------------
# a macro that only sets the FOLDER target property if it's
# a macro that only sets the FOLDER target property if it's
# "appropriate"
# "appropriate"
...
...
Utilities/IWYU/mapping.imp
0 → 100644
View file @
d2b0a47c
[
# C++ alternatives to C standard headers
{
include:
[
"<assert.h>",
public,
"<cassert>",
public
]
},
{
include:
[
"<complex.h>",
public,
"<ccomplex>",
public
]
},
{
include:
[
"<ctype.h>",
public,
"<cctype>",
public
]
},
{
include:
[
"<errno.h>",
public,
"<cerrno>",
public
]
},
{
include:
[
"<float.h>",
public,
"<cfloat>",
public
]
},
{
include:
[
"<iso
646.
h>",
public,
"<ciso
646
>",
public
]
},
{
include:
[
"<limits.h>",
public,
"<climits>",
public
]
},
{
include:
[
"<locale.h>",
public,
"<clocale>",
public
]
},
{
include:
[
"<math.h>",
public,
"<cmath>",
public
]
},
{
include:
[
"<setjmp.h>",
public,
"<csetjmp>",
public
]
},
{
include:
[
"<signal.h>",
public,
"<csignal>",
public
]
},
{
include:
[
"<stdarg.h>",
public,
"<cstdarg>",
public
]
},
{
include:
[
"<stddef.h>",
public,
"<cstddef>",
public
]
},
{
include:
[
"<stdio.h>",
public,
"<cstdio>",
public
]
},
{
include:
[
"<stdlib.h>",
public,
"<cstdlib>",
public
]
},
{
include:
[
"<string.h>",
public,
"<cstring>",
public
]
},
{
include:
[
"<time.h>",
public,
"<ctime>",
public
]
},
{
include:
[
"<wchar.h>",
public,
"<cwchar>",
public
]
},
{
include:
[
"<wctype.h>",
public,
"<cwctype>",
public
]
},
# HACK: check whether this can be removed with next iwyu release.
{
include:
[
"<bits/time.h>",
private,
"<time.h>",
public
]
},
{
include:
[
"<bits/types/clock_t.h>",
private,
"<time.h>",
public
]
},
{
include:
[
"<bits/types/struct_timespec.h>",
private,
"<time.h>",
public
]
},
{
include:
[
"<bits/types/struct_timeval.h>",
private,
"<time.h>",
public
]
},
{
include:
[
"<bits/types/struct_tm.h>",
private,
"<time.h>",
public
]
},
{
include:
[
"<bits/types/time_t.h>",
private,
"<time.h>",
public
]
},
# HACK: check whether this can be removed with next iwyu release.
{
symbol:
[
"__GLIBC__",
private,
"<stdlib.h>",
public
]
},
{
symbol:
[
"_Noreturn",
private,
"<stdlib.h>",
public
]
},
# HACK: iwyu wrongly thinks that including <iosfwd> is sufficient.
{
symbol:
[
"std::stringstream",
private,
"<sstream>",
public
]
},
{
symbol:
[
"std::istringstream",
private,
"<sstream>",
public
]
},
{
symbol:
[
"std::ostringstream",
private,
"<sstream>",
public
]
},
# HACK: iwyu suggests those two files each time vector[] is used.
# https://github.com/include-what-you-use/include-what-you-use/issues/166
{
include:
[
"<ext/alloc_traits.h>",
private,
"<vector>",
public
]
},
{
include:
[
"<memory>",
public,
"<vector>",
public
]
},
# TODO: enable this block and remove some <utility> includes?
#{ symbol: [ "std::pair", private, "<utility>", public ] },
#{ symbol: [ "std::pair", private, "<map>", public ] },
#{ symbol: [ "std::pair", private, "<set>", public ] },
# Wrappers for headers added in TR1 / C++11
# { include: [ "<array>", public, "\"cm_array.hxx\"", public ] },
# { include: [ "<functional>", public, "\"cm_functional.hxx\"", public ] },
# { include: [ "<memory>", public, "\"cm_memory.hxx\"", public ] },
{
include:
[
"<unordered_map>",
public,
"\"cm_unordered_map.hxx\"",
public
]
},
{
include:
[
"<unordered_set>",
public,
"\"cm_unordered_set.hxx\"",
public
]
},
# { include: [ "<tr1/array>", public, "\"cm_array.hxx\"", public ] },
# { include: [ "<tr1/functional>", public, "\"cm_functional.hxx\"", public ] },
# { include: [ "<tr1/memory>", public, "\"cm_memory.hxx\"", public ] },
{
include:
[
"<tr
1
/unordered_map>",
public,
"\"cm_unordered_map.hxx\"",
public
]
},
{
include:
[
"<tr
1
/unordered_set>",
public,
"\"cm_unordered_set.hxx\"",
public
]
},
# KWIML
{
include:
[
"<stdint.h>",
public,
"\"cm_kwiml.h\"",
public
]
},
{
include:
[
"<inttypes.h>",
public,
"\"cm_kwiml.h\"",
public
]
},
# Self-sufficient wrapper for <sys/stat.h>
{
include:
[
"<sys/stat.h>",
public,
"\"cm_sys_stat.h\"",
public
]
},
{
symbol:
[
"mode_t",
private,
"\"cm_sys_stat.h\"",
public
]
},
# TODO: remove once TR1 / C++11 is required.
{
include:
[
"\"cmsys/hash_fun.hxx\"",
private,
"\"cm_unordered_map.hxx\"",
public
]
},
{
include:
[
"\"cmsys/hash_fun.hxx\"",
private,
"\"cm_unordered_set.hxx\"",
public
]
},
{
include:
[
"\"cmsys/hash_map.hxx\"",
private,
"\"cm_unordered_map.hxx\"",
public
]
},
{
include:
[
"\"cmsys/hash_set.hxx\"",
private,
"\"cm_unordered_set.hxx\"",
public
]
},
{
include:
[
"\"cmsys/hashtable.hxx\"",
private,
"\"cm_unordered_map.hxx\"",
public
]
},
{
include:
[
"\"cmsys/hashtable.hxx\"",
private,
"\"cm_unordered_set.hxx\"",
public
]
},
# Wrappers for 3rd-party libraries used from the system.
{
include:
[
"<archive.h>",
private,
"\"cm_libarchive.h\"",
public
]
},
{
include:
[
"<archive_entry.h>",
private,
"\"cm_libarchive.h\"",
public
]
},
{
include:
[
"@<curl/.+\\.h>",
private,
"\"cm_curl.h\"",
public
]
},
{
include:
[
"<expat.h>",
private,
"\"cm_expat.h\"",
public
]
},
{
include:
[
"<expat_external.h>",
private,
"\"cm_expat.h\"",
public
]
},
{
include:
[
"<json/reader.h>",
private,
"\"cm_jsoncpp_reader.h\"",
public
]
},
{
include:
[
"<json/value.h>",
private,
"\"cm_jsoncpp_value.h\"",
public
]
},
{
include:
[
"<json/writer.h>",
private,
"\"cm_jsoncpp_writer.h\"",
public
]
},
{
include:
[
"<rhash.h>",
private,
"\"cm_rhash.h\"",
public
]
},
{
include:
[
"<uv.h>",
private,
"\"cm_uv.h\"",
public
]
},
{
include:
[
"@<uv-.+\\.h>",
private,
"\"cm_uv.h\"",
public
]
},
{
include:
[
"<kwiml/abi.h>",
private,
"\"cm_kwiml.h\"",
public
]
},
{
include:
[
"<kwiml/int.h>",
private,
"\"cm_kwiml.h\"",
public
]
},
{
include:
[
"<xmlrpc.h>",
private,
"\"cm_xmlrpc.h\"",
public
]
},
{
include:
[
"<xmlrpc_client.h>",
private,
"\"cm_xmlrpc.h\"",
public
]
},
{
include:
[
"@<xmlrpc-c/.+\\.h>",
private,
"\"cm_xmlrpc.h\"",
public
]
},
{
include:
[
"<zconf.h>",
private,
"\"cm_zlib.h\"",
public
]
},
{
include:
[
"<zlib.h>",
private,
"\"cm_zlib.h\"",
public
]
},
# Wrappers for bundled 3rd-party libraries.
{
include:
[
"\"cmlibarchive/libarchive/archive.h\"",
private,
"\"cm_libarchive.h\"",
public
]
},
{
include:
[
"\"cmlibarchive/libarchive/archive_entry.h\"",
private,
"\"cm_libarchive.h\"",
public
]
},
{
include:
[
"@\"cmcurl/include/curl/.+\\.h\"",
private,
"\"cm_curl.h\"",
public
]
},
{
include:
[
"\"cmexpat/lib/expat.h\"",
private,
"\"cm_expat.h\"",
public
]
},
{
include:
[
"\"cmexpat/lib/expat_external.h\"",
private,
"\"cm_expat.h\"",
public
]
},
{
include:
[
"\"cmjsoncpp/include/json/reader.h\"",
private,
"\"cm_jsoncpp_reader.h\"",
public
]
},
{
include:
[
"\"cmjsoncpp/include/json/value.h\"",
private,
"\"cm_jsoncpp_value.h\"",
public
]
},
{
include:
[
"\"cmjsoncpp/include/json/writer.h\"",
private,
"\"cm_jsoncpp_writer.h\"",
public
]
},
{
include:
[
"\"cmlibrhash/librhash/rhash.h\"",
private,
"\"cm_rhash.h\"",
public
]
},
{
include:
[
"\"cmlibuv/include/uv.h\"",
private,
"\"cm_uv.h\"",
public
]
},
{
include:
[
"@\"cmlibuv/include/uv-.+\\.h\"",
private,
"\"cm_uv.h\"",
public
]
},
{
include:
[
"\"KWIML/include/kwiml/abi.h\"",
private,
"\"cm_kwiml.h\"",
public
]
},
{
include:
[
"\"KWIML/include/kwiml/int.h\"",
private,
"\"cm_kwiml.h\"",
public
]
},
{
include:
[
"\"cmzlib/cm_zlib_mangle.h\"",
private,
"\"cm_zlib.h\"",
public
]
},
{
include:
[
"\"cmzlib/zconf.h\"",
private,
"\"cm_zlib.h\"",
public
]
},
{
include:
[
"\"cmzlib/zlib.h\"",
private,
"\"cm_zlib.h\"",
public
]
},
{
symbol:
[
"std::ifstream",
private,
"\"cmsys/FStream.hxx\"",
public
]
},
{
symbol:
[
"std::ofstream",
private,
"\"cmsys/FStream.hxx\"",
public
]
},
{
symbol:
[
"cmsys::ifstream",
private,
"\"cmsys/FStream.hxx\"",
public
]
},
{
symbol:
[
"cmsys::ofstream",
private,
"\"cmsys/FStream.hxx\"",
public
]
},
{
include:
[
"<istream>",
public,
"\"cmsys/FStream.hxx\"",
public
]
},
{
include:
[
"<ostream>",
public,
"\"cmsys/FStream.hxx\"",
public
]
},
{
include:
[
"<fstream>",
public,
"\"cmsys/FStream.hxx\"",
public
]
},
# major and minor are used as macro arguments. Those are false matches.
{
symbol:
[
"major",
private,
"\"cm_kwiml.h\"",
public
]
},
{
symbol:
[
"minor",
private,
"\"cm_kwiml.h\"",
public
]
},
{
symbol:
[
"major",
private,
"\"cmVersion.h\"",
public
]
},
{
symbol:
[
"minor",
private,
"\"cmVersion.h\"",
public
]
},
{
include:
[
"<curses.h>",
private,
"\"cmCursesStandardIncludes.h\"",
public
]
},
{
include:
[
"\"form.h\"",
private,
"\"cmCursesStandardIncludes.h\"",
public
]
},
{
include:
[
"<form.h>",
private,
"\"cmCursesStandardIncludes.h\"",
public
]
},
]
# vim: set ft=toml:
Brad King
@brad.king
mentioned in commit
ddd2b024
·
Apr 17, 2017
mentioned in commit
ddd2b024
mentioned in commit ddd2b02455db9b0ef3604af1b9b10c22af56bff9
Toggle commit list
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment