Home GnuPG
Diffusion GnuPG 6aff8a132815

build: Always use EXTERN_UNLESS_MAIN_MODULE pattern.

Description

build: Always use EXTERN_UNLESS_MAIN_MODULE pattern.

* common/util.h (EXTERN_UNLESS_MAIN_MODULE): Add the definion only
here but now without the Norcroft-C.  Change all other places where it
gets defined.
* common/iobuf.h (iobuf_debug_mode): Declare unconditionally as
extern.
* common/iobuf.c (iobuf_debug_mode): Define it here.
* agent/gpg-agent.c (INCLUDED_BY_MAIN_MODULE): Define here and also in
all main modules of all other programs.
* g10/main.h: Put util.h before the local header files.

This change is required for use with gcc/ld's LTO feature which does
not allow common blocks. Further gcc 10 will make -fno-common the
default and thus this chnage is always needed. What a pitty.

(cherry picked from commit 21d9bd8b87a9f793a106095e3838eb71825189d7)

  • Applied respective chnages also to gpg-card and keyboxd.
  • Co-authored-by: Tomáš Mráz
  • GnuPG-bug-id: T4831
  • Signed-off-by: Werner Koch <wk@gnupg.org>