From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f43.google.com (mail-wm0-f43.google.com [74.125.82.43]) by dpdk.org (Postfix) with ESMTP id CB03F2B91 for ; Wed, 13 Jul 2016 15:03:20 +0200 (CEST) Received: by mail-wm0-f43.google.com with SMTP id i5so68177280wmg.0 for ; Wed, 13 Jul 2016 06:03:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=2etkBCf3/9tuLEBi08629XtY8Wa6pzIPJdOC2jx/iU8=; b=LTm4EH0QMHxaXCggyDTCj1gsq9gYoJ7JFkrPGd+hNNRM8OQ+gi4AaXutFfNUlfAmzG EBy996qf1JJ53p9rTYu2w/azwWlixMMtvxNcPO7ZrjcaYh/32iW8zuW3ktAZN7wIIS48 4yL4Vcvo1JMMGAhrZmqJA2vBe+wypIuz9JhYKDb4IcbC8kwVHX2P97wMEXM3PuO4OcCw nKay7S1DE37MNFtT7aDiJPLOHFhnSZsN6CbxneyAngbg0KoJ8Dq+oNv0mVHX7Y3nE65p a09+Ahdw7LOkSLlozhKR184E7GsNWOZhXZLWR+ADk3IG+r3T136+RnYR7/9fVKVyoVzV fN/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=2etkBCf3/9tuLEBi08629XtY8Wa6pzIPJdOC2jx/iU8=; b=eYuWtqkz+26fftNHWFoP05JnfmFxiSabmoj4ABBR/W8F4tgMLVZynIdyQQ77CsupcT o5L92UivjUwtB6J5wRY9o8zTXDi/t5T2KVdUS07W5baGScWBvP7cxVWZM14xyWBYxHZn 1OSwW9w1CtOUZqKaY0F/s11PGD6sP6FANTCmoliaIvZA1JSkcUu2CTHZfCQfYqwX/f8s avnu3i8tzyExVQaASzMmx7Wodgxrn/ErEIamPmL8J0hm8MCiq7FF1AdP/HanztQx1Yuw oturXYDBJ62Crlg1V1zloyF0Y74d5n2/gGO1BjLManO3tbxXoI8z51tk/zp/kRztGWWc CDew== X-Gm-Message-State: ALyK8tIkFcQ3v97K7dwjvYJeVwh95/tfZJg6zRNbbEoVorXy343a10UuI7FnrTGLdz1AKtDt X-Received: by 10.194.15.170 with SMTP id y10mr836546wjc.163.1468415000253; Wed, 13 Jul 2016 06:03:20 -0700 (PDT) Received: from 6wind.com (guy78-3-82-239-227-177.fbx.proxad.net. [82.239.227.177]) by smtp.gmail.com with ESMTPSA id zf10sm825744wjb.5.2016.07.13.06.03.18 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Wed, 13 Jul 2016 06:03:19 -0700 (PDT) From: Adrien Mazarguil To: dev@dpdk.org Cc: Ferruh Yigit Date: Wed, 13 Jul 2016 15:02:37 +0200 Message-Id: X-Mailer: git-send-email 2.1.4 In-Reply-To: References: Subject: [dpdk-dev] [PATCH v4 00/10] Fix build errors related to exported headers X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Jul 2016 13:03:21 -0000 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 v4: - Dropped "lib: work around structs with no members" patch, now addressed as a separate issue outside of this patchset by "mempool: fix empty structure definition". - Fixed remaining compilation error with ICC reported by Ferruh. Finally settled on using the __extension__ keyword directly in struct rte_pipeline_table_entry as converting it to a standard flexible array may break existing programs. Changes in v3: - Fixed compilation issue on ARM and POWER8 due to missing parenthesis. - Added bit-field fix for rte_kni.h. 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 (10): 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 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 | 7 +- 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_kni/rte_kni.h | 1 + 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 | 2 + 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 + 67 files changed, 512 insertions(+), 33 deletions(-) create mode 100755 scripts/check-includes.sh -- 2.1.4