1*4882a593SmuzhiyunFrom 45ef4455a60929932d1499cf718c1c9f59af9f26 Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com> 3*4882a593SmuzhiyunDate: Tue, 26 May 2020 22:57:05 +0200 4*4882a593SmuzhiyunSubject: [PATCH] build: Always use EXTERN_UNLESS_MAIN_MODULE pattern 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunThis patch is loosely based on upstream commit 7*4882a593Smuzhiyun6aff8a132815a84bab69401c1e7de96ec549fbf2 ("build: Always use 8*4882a593SmuzhiyunEXTERN_UNLESS_MAIN_MODULE pattern."). However, this upstream commit 9*4882a593Smuzhiyunapplies to gnupg2, and the code base has changed quite significantly 10*4882a593Smuzhiyuncompared to gnupg 1.x, so upstream's patch cannot be applied 11*4882a593Smuzhiyunas-is. The goal of the patch is to make sure each variable is only 12*4882a593Smuzhiyundefined once, ass gcc 10 now default to -fno-common. 13*4882a593Smuzhiyun 14*4882a593SmuzhiyunEssentially, this patch mainly fixes the EXTERN_UNLESS_MAIN_MODULE 15*4882a593Smuzhiyundefine so that it really expands to "extern" when 16*4882a593SmuzhiyunINCLUDED_BY_MAIN_MODULE is not defined, even on non-RiscOS 17*4882a593Smuzhiyunsystems. Contrary to upstream's patch we however do not factorize the 18*4882a593Smuzhiyunmultiple EXTERN_UNLESS_MAIN_MODULE definitions into a single place as 19*4882a593Smuzhiyunit requires too many changes: instead we simply fix the few 20*4882a593Smuzhiyundefinitions of this macro. 21*4882a593Smuzhiyun 22*4882a593SmuzhiyunOnce the macro is fixed, two places need to define 23*4882a593SmuzhiyunINCLUDED_BY_MAIN_MODULE: tools/bftest.c and tools/mpicalc.c so that 24*4882a593Smuzhiyunwhen they include the common headers, their variables are at least 25*4882a593Smuzhiyundefined once. 26*4882a593Smuzhiyun 27*4882a593SmuzhiyunThe iobuf.{c,h} case is handled differently: iobuf.h gains an 28*4882a593Smuzhiyununconditional "extern", with the variable being added to iobuf.c. This 29*4882a593Smuzhiyunis identical to what upstream's 30*4882a593Smuzhiyun6aff8a132815a84bab69401c1e7de96ec549fbf2 is doing. 31*4882a593Smuzhiyun 32*4882a593SmuzhiyunSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> 33*4882a593Smuzhiyun--- 34*4882a593Smuzhiyun g10/options.h | 3 +-- 35*4882a593Smuzhiyun include/cipher.h | 2 +- 36*4882a593Smuzhiyun include/iobuf.h | 9 +-------- 37*4882a593Smuzhiyun include/memory.h | 2 +- 38*4882a593Smuzhiyun include/mpi.h | 2 +- 39*4882a593Smuzhiyun tools/bftest.c | 1 + 40*4882a593Smuzhiyun tools/mpicalc.c | 1 + 41*4882a593Smuzhiyun util/iobuf.c | 2 ++ 42*4882a593Smuzhiyun 8 files changed, 9 insertions(+), 13 deletions(-) 43*4882a593Smuzhiyun 44*4882a593Smuzhiyundiff --git a/g10/options.h b/g10/options.h 45*4882a593Smuzhiyunindex 0ac6e7755..bae19e9e3 100644 46*4882a593Smuzhiyun--- a/g10/options.h 47*4882a593Smuzhiyun+++ b/g10/options.h 48*4882a593Smuzhiyun@@ -26,8 +26,7 @@ 49*4882a593Smuzhiyun #include "packet.h" 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun #ifndef EXTERN_UNLESS_MAIN_MODULE 52*4882a593Smuzhiyun-/* Norcraft can't cope with common symbols */ 53*4882a593Smuzhiyun-#if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE) 54*4882a593Smuzhiyun+#if !defined (INCLUDED_BY_MAIN_MODULE) 55*4882a593Smuzhiyun #define EXTERN_UNLESS_MAIN_MODULE extern 56*4882a593Smuzhiyun #else 57*4882a593Smuzhiyun #define EXTERN_UNLESS_MAIN_MODULE 58*4882a593Smuzhiyundiff --git a/include/cipher.h b/include/cipher.h 59*4882a593Smuzhiyunindex dd4af18cb..6ef6e6829 100644 60*4882a593Smuzhiyun--- a/include/cipher.h 61*4882a593Smuzhiyun+++ b/include/cipher.h 62*4882a593Smuzhiyun@@ -115,7 +115,7 @@ struct gcry_md_context { 63*4882a593Smuzhiyun typedef struct gcry_md_context *MD_HANDLE; 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun #ifndef EXTERN_UNLESS_MAIN_MODULE 66*4882a593Smuzhiyun-#if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE) 67*4882a593Smuzhiyun+#if !defined (INCLUDED_BY_MAIN_MODULE) 68*4882a593Smuzhiyun #define EXTERN_UNLESS_MAIN_MODULE extern 69*4882a593Smuzhiyun #else 70*4882a593Smuzhiyun #define EXTERN_UNLESS_MAIN_MODULE 71*4882a593Smuzhiyundiff --git a/include/iobuf.h b/include/iobuf.h 72*4882a593Smuzhiyunindex 030f8c8e9..b4d26b7e1 100644 73*4882a593Smuzhiyun--- a/include/iobuf.h 74*4882a593Smuzhiyun+++ b/include/iobuf.h 75*4882a593Smuzhiyun@@ -69,14 +69,7 @@ struct iobuf_struct { 76*4882a593Smuzhiyun } unget; 77*4882a593Smuzhiyun }; 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun-#ifndef EXTERN_UNLESS_MAIN_MODULE 80*4882a593Smuzhiyun-#if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE) 81*4882a593Smuzhiyun-#define EXTERN_UNLESS_MAIN_MODULE extern 82*4882a593Smuzhiyun-#else 83*4882a593Smuzhiyun-#define EXTERN_UNLESS_MAIN_MODULE 84*4882a593Smuzhiyun-#endif 85*4882a593Smuzhiyun-#endif 86*4882a593Smuzhiyun-EXTERN_UNLESS_MAIN_MODULE int iobuf_debug_mode; 87*4882a593Smuzhiyun+extern int iobuf_debug_mode; 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun void iobuf_enable_special_filenames ( int yes ); 90*4882a593Smuzhiyun int iobuf_is_pipe_filename (const char *fname); 91*4882a593Smuzhiyundiff --git a/include/memory.h b/include/memory.h 92*4882a593Smuzhiyunindex d414a9b2e..6698337e3 100644 93*4882a593Smuzhiyun--- a/include/memory.h 94*4882a593Smuzhiyun+++ b/include/memory.h 95*4882a593Smuzhiyun@@ -91,7 +91,7 @@ unsigned secmem_get_flags(void); 96*4882a593Smuzhiyun #define DBG_MEMSTAT memory_stat_debug_mode 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun #ifndef EXTERN_UNLESS_MAIN_MODULE 99*4882a593Smuzhiyun-#if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE) 100*4882a593Smuzhiyun+#if !defined (INCLUDED_BY_MAIN_MODULE) 101*4882a593Smuzhiyun #define EXTERN_UNLESS_MAIN_MODULE extern 102*4882a593Smuzhiyun #else 103*4882a593Smuzhiyun #define EXTERN_UNLESS_MAIN_MODULE 104*4882a593Smuzhiyundiff --git a/include/mpi.h b/include/mpi.h 105*4882a593Smuzhiyunindex a4c16f5af..7a45ff805 100644 106*4882a593Smuzhiyun--- a/include/mpi.h 107*4882a593Smuzhiyun+++ b/include/mpi.h 108*4882a593Smuzhiyun@@ -36,7 +36,7 @@ 109*4882a593Smuzhiyun #include "memory.h" 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun #ifndef EXTERN_UNLESS_MAIN_MODULE 112*4882a593Smuzhiyun-#if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE) 113*4882a593Smuzhiyun+#if !defined (INCLUDED_BY_MAIN_MODULE) 114*4882a593Smuzhiyun #define EXTERN_UNLESS_MAIN_MODULE extern 115*4882a593Smuzhiyun #else 116*4882a593Smuzhiyun #define EXTERN_UNLESS_MAIN_MODULE 117*4882a593Smuzhiyundiff --git a/tools/bftest.c b/tools/bftest.c 118*4882a593Smuzhiyunindex 8a1572c2b..5afd7e125 100644 119*4882a593Smuzhiyun--- a/tools/bftest.c 120*4882a593Smuzhiyun+++ b/tools/bftest.c 121*4882a593Smuzhiyun@@ -26,6 +26,7 @@ 122*4882a593Smuzhiyun #include <fcntl.h> 123*4882a593Smuzhiyun #endif 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun+#define INCLUDED_BY_MAIN_MODULE 126*4882a593Smuzhiyun #include "util.h" 127*4882a593Smuzhiyun #include "cipher.h" 128*4882a593Smuzhiyun #include "i18n.h" 129*4882a593Smuzhiyundiff --git a/tools/mpicalc.c b/tools/mpicalc.c 130*4882a593Smuzhiyunindex 46e5fc824..31acd82a4 100644 131*4882a593Smuzhiyun--- a/tools/mpicalc.c 132*4882a593Smuzhiyun+++ b/tools/mpicalc.c 133*4882a593Smuzhiyun@@ -31,6 +31,7 @@ 134*4882a593Smuzhiyun #include <stdlib.h> 135*4882a593Smuzhiyun #include <ctype.h> 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun+#define INCLUDED_BY_MAIN_MODULE 138*4882a593Smuzhiyun #include "util.h" 139*4882a593Smuzhiyun #include "mpi.h" 140*4882a593Smuzhiyun #include "i18n.h" 141*4882a593Smuzhiyundiff --git a/util/iobuf.c b/util/iobuf.c 142*4882a593Smuzhiyunindex c8442929a..0d9ee4cec 100644 143*4882a593Smuzhiyun--- a/util/iobuf.c 144*4882a593Smuzhiyun+++ b/util/iobuf.c 145*4882a593Smuzhiyun@@ -113,6 +113,8 @@ typedef struct { 146*4882a593Smuzhiyun static CLOSE_CACHE close_cache; 147*4882a593Smuzhiyun #endif 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun+int iobuf_debug_mode; 150*4882a593Smuzhiyun+ 151*4882a593Smuzhiyun #ifdef _WIN32 152*4882a593Smuzhiyun typedef struct { 153*4882a593Smuzhiyun int sock; 154*4882a593Smuzhiyun-- 155*4882a593Smuzhiyun2.26.2 156*4882a593Smuzhiyun 157