libgpg-error: Disallow undefined symbols by design.
Open, LowPublic


libgpg-error is not designed to require undefined symbols in general, nor in the shared library in particular.
Consequently, libtool should be told to disallow undefined symbols, independent of whether the target platform is some Win32 system.
In particular, Cygwin is not recognized as Win32 (which is correct by itself), but does require all symbols to be defined in shared libraries, so libtool needs to be told that the library does not need undefined symbols at all.
Please consider the patch from D478.

haubi created this task.Apr 30 2019, 10:59 AM
werner triaged this task as Low priority.Apr 30 2019, 11:37 AM
werner added projects: Cygwin, gpgrt.
werner added a subscriber: werner.

Please explain in more detail what the problem with Cygwin is.

Without -no-undefined, libtool refuses to create the shared library (dll) on Cygwin, because libtool knows that creating a shared library (dll) on Cygwin does require all symbols to be defined.
Unfortunately but traditionally, by default libtool has to assume a library being created will have undefined symbols.
Hence, if the library to be created is designed to have all symbols defined, libtool needs to be informed about this fact using the -no-undefined flag.
This flag does allow libtool to create a shared library even on platforms known to require all symbols to be defined for shared libraries.