[dpdk-dev] [PATCH v2 00/11] Fix build errors related to exported headers

Adrien Mazarguil adrien.mazarguil at 6wind.com
Tue Jul 5 13:35:03 CEST 2016


Hi Jan,

On Tue, Jul 05, 2016 at 01:15:23PM +0200, Jan Viktorin wrote:
> Hi Adrien,
> 
> I am the only one in CC and only in the 00/11 patch. Is it a mistake? Or what is the purpose?

It was on purpose to draw your attention to my comment regarding #includes
within extern "C" blocks.

> Regards‎
> Jan Viktorin
> RehiveTech
> Sent from a mobile device
>   Původní zpráva  
> Od: Adrien Mazarguil
> Odesláno: úterý, 5. července 2016 12:45
> Komu: dev at dpdk.org
> Kopie: Jan Viktorin
> Předmět: [PATCH v2 00/11] Fix build errors related to exported headers
> 
> DPDK uses GNU C language extensions in most of its code base. This is fine
> for internal source files whose compilation flags are controlled by DPDK,
> however user applications that use exported "public" headers may experience
> compilation failures when enabling strict error/standard checks (-std and
> -pedantic for instance).
> 
> Exported headers are installed system-wide and must be as clean as possible
> so applications do not have to resort to workarounds.
> 
> This patchset affects exported headers only, compilation problems are
> addressed as follows:
> 
> - Adding the __extension__ keyword to nonstandard constructs (same method
> as existing libraries when there is no other choice).
> - Adding the __extension__ keyword to C11 constructs to remain compatible
> with pure C99.
> - Adding missing includes so exported files can be included out of order
> and on their own.
> - Fixing GNU printf-like variadic macros as there is no magic keyword for
> these.
> 
> Changes in v2:
> 
> - Rebased on top of the current HEAD.
> - Added script to check headers automatically (check-includes.sh), for both
> C and C++ compilation.
> - Updated test-build.sh to use it.
> - Fixed consistency of new #include directives, now inside extern "C"
> blocks for files that already do that (Jan, fixing these was too much
> work for this patchset so I settled on this solution in the meantime).
> - Updated headlines to address check-git-log.sh complaints.
> 
> Adrien Mazarguil (11):
> lib: work around braced-groups within expressions
> lib: work around large enum values
> lib: use C99 syntax for zero-size arrays
> lib: work around nonstandard bit-fields
> lib: work around structs with no members
> lib: work around unnamed structs/unions
> lib: add missing include dependencies
> lib: work around forward reference to enum types
> lib: remove named variadic macros in exported headers
> lib: hide static functions never defined
> scripts: check compilation of exported header files
> 
> MAINTAINERS | 1 +
> lib/librte_acl/rte_acl.h | 2 +-
> lib/librte_cfgfile/rte_cfgfile.h | 2 +
> lib/librte_cmdline/cmdline.h | 1 +
> lib/librte_cmdline/cmdline_parse_portlist.h | 1 +
> lib/librte_cmdline/cmdline_socket.h | 3 +
> lib/librte_cryptodev/rte_crypto.h | 2 +
> lib/librte_cryptodev/rte_crypto_sym.h | 3 +
> lib/librte_cryptodev/rte_cryptodev.h | 40 ++-
> lib/librte_cryptodev/rte_cryptodev_pmd.h | 6 +-
> .../common/include/arch/arm/rte_byteorder.h | 2 +
> .../common/include/arch/arm/rte_memcpy_32.h | 3 +-
> .../common/include/arch/arm/rte_prefetch_32.h | 1 +
> .../common/include/arch/arm/rte_prefetch_64.h | 1 +
> .../common/include/arch/arm/rte_vect.h | 1 +
> .../common/include/arch/ppc_64/rte_atomic.h | 1 +
> .../common/include/arch/ppc_64/rte_byteorder.h | 1 +
> .../common/include/arch/ppc_64/rte_cycles.h | 2 +
> .../common/include/arch/ppc_64/rte_memcpy.h | 3 +-
> .../common/include/arch/ppc_64/rte_prefetch.h | 1 +
> .../common/include/arch/x86/rte_atomic.h | 2 +
> .../common/include/arch/x86/rte_atomic_32.h | 9 +
> .../common/include/arch/x86/rte_atomic_64.h | 8 +
> .../common/include/arch/x86/rte_byteorder.h | 2 +
> .../common/include/arch/x86/rte_byteorder_32.h | 7 +
> .../common/include/arch/x86/rte_byteorder_64.h | 7 +
> .../common/include/arch/x86/rte_cycles.h | 2 +
> .../common/include/arch/x86/rte_memcpy.h | 4 +-
> .../common/include/arch/x86/rte_prefetch.h | 1 +
> .../common/include/arch/x86/rte_rtm.h | 1 +
> .../common/include/arch/x86/rte_vect.h | 8 +-
> .../common/include/generic/rte_atomic.h | 1 +
> .../common/include/generic/rte_byteorder.h | 2 +
> .../common/include/generic/rte_cpuflags.h | 3 +
> .../common/include/generic/rte_memcpy.h | 4 +
> lib/librte_eal/common/include/rte_common.h | 22 +-
> lib/librte_eal/common/include/rte_devargs.h | 1 +
> lib/librte_eal/common/include/rte_eal.h | 1 +
> lib/librte_eal/common/include/rte_interrupts.h | 2 +
> lib/librte_eal/common/include/rte_memory.h | 4 +
> lib/librte_eal/common/include/rte_memzone.h | 2 +
> lib/librte_eal/common/include/rte_time.h | 8 +
> lib/librte_eal/common/include/rte_version.h | 1 +
> .../eal/include/exec-env/rte_interrupts.h | 1 +
> .../eal/include/exec-env/rte_kni_common.h | 6 +-
> lib/librte_ether/rte_dev_info.h | 2 +
> lib/librte_ether/rte_eth_ctrl.h | 4 +
> lib/librte_ether/rte_ethdev.h | 4 +
> lib/librte_hash/rte_fbk_hash.h | 2 +-
> lib/librte_hash/rte_thash.h | 3 +
> lib/librte_ip_frag/rte_ip_frag.h | 2 +-
> lib/librte_lpm/rte_lpm.h | 7 +-
> lib/librte_lpm/rte_lpm_neon.h | 1 +
> lib/librte_lpm/rte_lpm_sse.h | 1 +
> lib/librte_mbuf/rte_mbuf.h | 9 +
> lib/librte_mempool/rte_mempool.h | 3 +
> lib/librte_pdump/rte_pdump.h | 4 +
> lib/librte_pipeline/rte_pipeline.h | 4 +-
> lib/librte_reorder/rte_reorder.h | 2 +
> lib/librte_ring/rte_ring.h | 2 +-
> lib/librte_sched/rte_bitmap.h | 3 +-
> lib/librte_sched/rte_reciprocal.h | 2 +
> lib/librte_sched/rte_sched_common.h | 1 +
> lib/librte_timer/rte_timer.h | 2 +
> scripts/check-includes.sh | 286 +++++++++++++++++++
> scripts/test-build.sh | 14 +
> 66 files changed, 511 insertions(+), 33 deletions(-)
> create mode 100755 scripts/check-includes.sh
> 
> -- 
> 2.1.4
> 

-- 
Adrien Mazarguil
6WIND


More information about the dev mailing list