123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- From 45ef4455a60929932d1499cf718c1c9f59af9f26 Mon Sep 17 00:00:00 2001
- From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
- Date: Tue, 26 May 2020 22:57:05 +0200
- Subject: [PATCH] build: Always use EXTERN_UNLESS_MAIN_MODULE pattern
- This patch is loosely based on upstream commit
- 6aff8a132815a84bab69401c1e7de96ec549fbf2 ("build: Always use
- EXTERN_UNLESS_MAIN_MODULE pattern."). However, this upstream commit
- applies to gnupg2, and the code base has changed quite significantly
- compared to gnupg 1.x, so upstream's patch cannot be applied
- as-is. The goal of the patch is to make sure each variable is only
- defined once, ass gcc 10 now default to -fno-common.
- Essentially, this patch mainly fixes the EXTERN_UNLESS_MAIN_MODULE
- define so that it really expands to "extern" when
- INCLUDED_BY_MAIN_MODULE is not defined, even on non-RiscOS
- systems. Contrary to upstream's patch we however do not factorize the
- multiple EXTERN_UNLESS_MAIN_MODULE definitions into a single place as
- it requires too many changes: instead we simply fix the few
- definitions of this macro.
- Once the macro is fixed, two places need to define
- INCLUDED_BY_MAIN_MODULE: tools/bftest.c and tools/mpicalc.c so that
- when they include the common headers, their variables are at least
- defined once.
- The iobuf.{c,h} case is handled differently: iobuf.h gains an
- unconditional "extern", with the variable being added to iobuf.c. This
- is identical to what upstream's
- 6aff8a132815a84bab69401c1e7de96ec549fbf2 is doing.
- Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
- ---
- g10/options.h | 3 +--
- include/cipher.h | 2 +-
- include/iobuf.h | 9 +--------
- include/memory.h | 2 +-
- include/mpi.h | 2 +-
- tools/bftest.c | 1 +
- tools/mpicalc.c | 1 +
- util/iobuf.c | 2 ++
- 8 files changed, 9 insertions(+), 13 deletions(-)
- diff --git a/g10/options.h b/g10/options.h
- index 0ac6e7755..bae19e9e3 100644
- --- a/g10/options.h
- +++ b/g10/options.h
- @@ -26,8 +26,7 @@
- #include "packet.h"
-
- #ifndef EXTERN_UNLESS_MAIN_MODULE
- -/* Norcraft can't cope with common symbols */
- -#if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE)
- +#if !defined (INCLUDED_BY_MAIN_MODULE)
- #define EXTERN_UNLESS_MAIN_MODULE extern
- #else
- #define EXTERN_UNLESS_MAIN_MODULE
- diff --git a/include/cipher.h b/include/cipher.h
- index dd4af18cb..6ef6e6829 100644
- --- a/include/cipher.h
- +++ b/include/cipher.h
- @@ -115,7 +115,7 @@ struct gcry_md_context {
- typedef struct gcry_md_context *MD_HANDLE;
-
- #ifndef EXTERN_UNLESS_MAIN_MODULE
- -#if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE)
- +#if !defined (INCLUDED_BY_MAIN_MODULE)
- #define EXTERN_UNLESS_MAIN_MODULE extern
- #else
- #define EXTERN_UNLESS_MAIN_MODULE
- diff --git a/include/iobuf.h b/include/iobuf.h
- index 030f8c8e9..b4d26b7e1 100644
- --- a/include/iobuf.h
- +++ b/include/iobuf.h
- @@ -69,14 +69,7 @@ struct iobuf_struct {
- } unget;
- };
-
- -#ifndef EXTERN_UNLESS_MAIN_MODULE
- -#if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE)
- -#define EXTERN_UNLESS_MAIN_MODULE extern
- -#else
- -#define EXTERN_UNLESS_MAIN_MODULE
- -#endif
- -#endif
- -EXTERN_UNLESS_MAIN_MODULE int iobuf_debug_mode;
- +extern int iobuf_debug_mode;
-
- void iobuf_enable_special_filenames ( int yes );
- int iobuf_is_pipe_filename (const char *fname);
- diff --git a/include/memory.h b/include/memory.h
- index d414a9b2e..6698337e3 100644
- --- a/include/memory.h
- +++ b/include/memory.h
- @@ -91,7 +91,7 @@ unsigned secmem_get_flags(void);
- #define DBG_MEMSTAT memory_stat_debug_mode
-
- #ifndef EXTERN_UNLESS_MAIN_MODULE
- -#if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE)
- +#if !defined (INCLUDED_BY_MAIN_MODULE)
- #define EXTERN_UNLESS_MAIN_MODULE extern
- #else
- #define EXTERN_UNLESS_MAIN_MODULE
- diff --git a/include/mpi.h b/include/mpi.h
- index a4c16f5af..7a45ff805 100644
- --- a/include/mpi.h
- +++ b/include/mpi.h
- @@ -36,7 +36,7 @@
- #include "memory.h"
-
- #ifndef EXTERN_UNLESS_MAIN_MODULE
- -#if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE)
- +#if !defined (INCLUDED_BY_MAIN_MODULE)
- #define EXTERN_UNLESS_MAIN_MODULE extern
- #else
- #define EXTERN_UNLESS_MAIN_MODULE
- diff --git a/tools/bftest.c b/tools/bftest.c
- index 8a1572c2b..5afd7e125 100644
- --- a/tools/bftest.c
- +++ b/tools/bftest.c
- @@ -26,6 +26,7 @@
- #include <fcntl.h>
- #endif
-
- +#define INCLUDED_BY_MAIN_MODULE
- #include "util.h"
- #include "cipher.h"
- #include "i18n.h"
- diff --git a/tools/mpicalc.c b/tools/mpicalc.c
- index 46e5fc824..31acd82a4 100644
- --- a/tools/mpicalc.c
- +++ b/tools/mpicalc.c
- @@ -31,6 +31,7 @@
- #include <stdlib.h>
- #include <ctype.h>
-
- +#define INCLUDED_BY_MAIN_MODULE
- #include "util.h"
- #include "mpi.h"
- #include "i18n.h"
- diff --git a/util/iobuf.c b/util/iobuf.c
- index c8442929a..0d9ee4cec 100644
- --- a/util/iobuf.c
- +++ b/util/iobuf.c
- @@ -113,6 +113,8 @@ typedef struct {
- static CLOSE_CACHE close_cache;
- #endif
-
- +int iobuf_debug_mode;
- +
- #ifdef _WIN32
- typedef struct {
- int sock;
- --
- 2.26.2
|