[asterisk-bugs] [JIRA] (ASTERISK-25591) [patch] Complete List of Header Files (#include): iwyu
Alexander Traud (JIRA)
noreply at issues.asterisk.org
Wed Nov 25 07:29:33 CST 2015
Alexander Traud created ASTERISK-25591:
------------------------------------------
Summary: [patch] Complete List of Header Files (#include): iwyu
Key: ASTERISK-25591
URL: https://issues.asterisk.org/jira/browse/ASTERISK-25591
Project: Asterisk
Issue Type: New Feature
Security Level: None
Reporter: Alexander Traud
Severity: Trivial
Recently, I had to add a new module. Therefore, I had to list all its header files. Thanks to the Clang support added in May 2015, one can use the Google project include-what-you-use ([iwyu|http://include-what-you-use.org/]) with Asterisk now.
For example, in Ubuntu 14.04 LTS:
{{sudo apt-get -y install build-essential libssl-dev libncurses-dev libnewt-dev libxml2-dev libsqlite3-dev uuid-dev libjansson-dev libblocksruntime-dev git iwyu}}
{{cd /usr/src/}}
{{git clone http://gerrit.asterisk.org/asterisk}}
{{cd asterisk/}}
{{./configure}}
{{make}}
{{include-what-you-use -fblocks -DAST_MODULE=NULL -DAST_MODULE_SELF=NULL -I$PWD/include res/res_format_attr_opus.c}}
Asterisk uses the two proxy/wrapper headers {{asterisk/compat.h}} and {{asterisk/astmm.h}} which should never be included. Instead, {{asterisk.h}} should be used. To automate this, I had to add three pragma statements. With the attached patch, iwyu works out of the box. If more headers should never be included, Asterisk team, please say so!
Thanks to iwyu, the list of header files was a simple copy-and-paste experience. Hopefully, this helps others to create better lists of header files, too. Therefore, please, consider this change/feature for inclusion.
--
This message was sent by Atlassian JIRA
(v6.2#6252)
More information about the asterisk-bugs
mailing list