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

Adrien Mazarguil adrien.mazarguil at 6wind.com
Tue Apr 5 16:08:00 CEST 2016


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 use workarounds for compilation issues.

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

Adrien Mazarguil (10):
  lib: add extension keyword to braced-groups within expressions
  lib: add extension keyword to large enum values
  lib: use C99 syntax for zero-size arrays
  lib: add extension keyword to nonstandard bit-fields
  lib: add extension keyword to structs with no members
  lib: add extension keyword to unnamed structs/unions
  lib: fix missing include dependencies
  lib: add extension keyword to forward reference to enum types
  lib: remove named variadic macros in exported headers
  lib: hide static functions that are never defined

 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                  |  3 ++
 lib/librte_cryptodev/rte_crypto_sym.h              |  4 +++
 lib/librte_cryptodev/rte_cryptodev.h               | 41 ++++++++++++++--------
 lib/librte_cryptodev/rte_cryptodev_pmd.h           |  6 ++--
 .../common/include/arch/arm/rte_byteorder.h        |  3 ++
 .../common/include/arch/arm/rte_memcpy_32.h        |  3 +-
 .../common/include/arch/arm/rte_prefetch_32.h      |  2 ++
 .../common/include/arch/arm/rte_prefetch_64.h      |  2 ++
 lib/librte_eal/common/include/arch/arm/rte_vect.h  |  1 +
 .../common/include/arch/ppc_64/rte_atomic.h        |  2 ++
 .../common/include/arch/ppc_64/rte_byteorder.h     |  2 ++
 .../common/include/arch/ppc_64/rte_cycles.h        |  3 ++
 .../common/include/arch/ppc_64/rte_memcpy.h        |  3 +-
 .../common/include/arch/ppc_64/rte_prefetch.h      |  2 ++
 .../common/include/arch/x86/rte_atomic.h           |  3 ++
 .../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        |  3 ++
 .../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           |  3 ++
 .../common/include/arch/x86/rte_memcpy.h           |  4 +--
 .../common/include/arch/x86/rte_prefetch.h         |  2 ++
 lib/librte_eal/common/include/arch/x86/rte_rtm.h   |  1 +
 lib/librte_eal/common/include/arch/x86/rte_vect.h  |  8 +++--
 lib/librte_eal/common/include/generic/rte_atomic.h |  1 +
 .../common/include/generic/rte_byteorder.h         |  2 ++
 .../common/include/generic/rte_cpuflags.h          |  3 ++
 lib/librte_eal/common/include/generic/rte_memcpy.h |  7 ++--
 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 +
 .../linuxapp/eal/include/exec-env/rte_interrupts.h |  1 +
 .../linuxapp/eal/include/exec-env/rte_kni_common.h |  2 +-
 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                        |  4 +++
 lib/librte_ip_frag/rte_ip_frag.h                   |  2 +-
 lib/librte_lpm/rte_lpm.h                           |  7 +++-
 lib/librte_lpm/rte_lpm6.h                          |  2 ++
 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                   |  1 +
 lib/librte_pipeline/rte_pipeline.h                 |  5 ++-
 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                |  2 ++
 lib/librte_timer/rte_timer.h                       |  2 ++
 lib/librte_vhost/rte_virtio_net.h                  |  2 +-
 64 files changed, 221 insertions(+), 36 deletions(-)

-- 
2.1.4



More information about the dev mailing list