From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from youngberry.canonical.com (youngberry.canonical.com [91.189.89.112]) by dpdk.org (Postfix) with ESMTP id D9F1A4C8D for ; Thu, 30 Aug 2018 14:00:00 +0200 (CEST) Received: from 1.general.paelzer.uk.vpn ([10.172.196.172] helo=lap.fritz.box) by youngberry.canonical.com with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.76) (envelope-from ) id 1fvLcG-0006Bo-MD; Thu, 30 Aug 2018 12:00:00 +0000 From: Christian Ehrhardt To: adrien.mazarguil@6wind.com, dev , Gowrishankar Muthukrishnan , Chao Zhu Cc: Luca Boccassi , Thomas Monjalon , Christian Ehrhardt Date: Thu, 30 Aug 2018 13:59:59 +0200 Message-Id: <20180830115959.28935-1-christian.ehrhardt@canonical.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH v3] ppc64: fix compilation of when AltiVec is enabled X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 30 Aug 2018 12:00:01 -0000 The definition of almost any newer standard like --stc=c11 will drop __APPLCE_ALTIVEC__ which otherwise would be defined. If that is the case then altivec.h will redefine bool to a type conflicting with those defined by stdbool.h. This breaks compilation of 18.08 on ppc64 like: mlx5_nl_flow.c:407:17: error: incompatible types when assigning to type ‘__vector __bool int’ {aka ‘__vector(4) __bool int’} from type ‘int’ in_port_id_set = false; Other alternatives were pursued on [1] but they always ended up being more complex than what would be appropriate for the issue we face. [1]: http://mails.dpdk.org/archives/dev/2018-August/109926.html Tested-by: Takeshi T Yoshimura Reviewed-by: Adrien Mazarguil Signed-off-by: Christian Ehrhardt --- .../common/include/arch/ppc_64/rte_memcpy.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/librte_eal/common/include/arch/ppc_64/rte_memcpy.h b/lib/librte_eal/common/include/arch/ppc_64/rte_memcpy.h index 75f74897b..0b3b89b56 100644 --- a/lib/librte_eal/common/include/arch/ppc_64/rte_memcpy.h +++ b/lib/librte_eal/common/include/arch/ppc_64/rte_memcpy.h @@ -37,6 +37,17 @@ #include /*To include altivec.h, GCC version must >= 4.8 */ #include +/* + * Compilation workaround for PPC64 targets when AltiVec is fully + * enabled e.g. with std=c11. Otherwise there would be a type conflict + * of "bool" between stdbool and altivec. + */ +#if defined(__PPC64__) && !defined(__APPLE_ALTIVEC__) + #undef bool + /* redefine as in stdbool.h */ + #define bool _Bool +#endif + #ifdef __cplusplus extern "C" { -- 2.17.1