~vcs-imports/libiconv/trunk

« back to all changes in this revision

Viewing changes to lib/relocatable.h

  • Committer: Bruno Haible
  • Date: 2023-09-06 16:08:35 UTC
  • Revision ID: git-v1:bacf33185644481aced2d0c6c57f466b8267a3cb
Don't export symbols from static MSVC .obj files.

Suggested by Dmitry Bely <dmitry.bely@gmail.com> in
<https://lists.gnu.org/archive/html/bug-gnu-libiconv/2023-08/msg00002.html>.

* include/export.h: Add a copyright notice. Set LIBICONV_DLL_EXPORTED to
empty on MSVC when DLL_EXPORT is not defined.
* Makefile.devel (include/iconv.h.build.in): Filter out the second
copyright notice.
* configure.ac (DLL_VARIABLE): Test DLL_EXPORT, not _DLL.
* lib/relocatable.h: From gnulib:
(RELOCATABLE_DLL_EXPORTED): Don't use __declspec(dllexport) when
creating static .obj files with MSVC.
* libcharset/include/export.h: Add a copyright notice. Set
LIBCHARSET_DLL_EXPORTED to empty on MSVC when DLL_EXPORT is not defined.
* libcharset/Makefile.devel (include/libcharset.h.build.in,
include/localcharset.h.build.in): Filter out the second copyright
notice.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* Provide relocatable packages.
2
 
   Copyright (C) 2003, 2005, 2008-2017 Free Software Foundation, Inc.
 
2
   Copyright (C) 2003, 2005, 2008-2023 Free Software Foundation, Inc.
3
3
   Written by Bruno Haible <bruno@clisp.org>, 2003.
4
4
 
5
5
   This program is free software; you can redistribute it and/or modify it
32
32
#if HAVE_VISIBILITY && BUILDING_DLL
33
33
# define RELOCATABLE_DLL_EXPORTED __attribute__((__visibility__("default")))
34
34
#elif defined _MSC_VER && BUILDING_DLL
35
 
# define RELOCATABLE_DLL_EXPORTED __declspec(dllexport)
 
35
/* When building with MSVC, exporting a symbol means that the object file
 
36
   contains a "linker directive" of the form /EXPORT:symbol.  This can be
 
37
   inspected through the 'objdump -s --section=.drectve FILE' or
 
38
   'dumpbin /directives FILE' commands.
 
39
   The symbols from this file should be exported if and only if the object
 
40
   file gets included in a DLL.  Libtool, on Windows platforms, defines
 
41
   the C macro DLL_EXPORT (together with PIC) when compiling for a DLL
 
42
   and does not define it when compiling an object file meant to be linked
 
43
   statically into some executable.  */
 
44
# if defined DLL_EXPORT
 
45
#  define RELOCATABLE_DLL_EXPORTED __declspec(dllexport)
 
46
# else
 
47
#  define RELOCATABLE_DLL_EXPORTED
 
48
# endif
36
49
#else
37
50
# define RELOCATABLE_DLL_EXPORTED
38
51
#endif