Skip to content

Commit

Permalink
Merge pull request #725 from jorisv/topic/modern_attribute
Browse files Browse the repository at this point in the history
Use c++11 attribute when C++11 is activated
  • Loading branch information
jorisv authored Nov 5, 2024
2 parents 3ef10b4 + cade647 commit 03d9537
Showing 1 changed file with 20 additions and 7 deletions.
27 changes: 20 additions & 7 deletions config.hh.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -50,13 +50,26 @@
# else
// On Linux, for GCC >= 4, tag symbols using GCC extension.
# if __GNUC__ >= 4
# define @LIBRARY_NAME@_DLLIMPORT __attribute__ ((visibility("default")))
# define @LIBRARY_NAME@_DLLEXPORT __attribute__ ((visibility("default")))
# define @LIBRARY_NAME@_DLLLOCAL __attribute__ ((visibility("hidden")))
# define @LIBRARY_NAME@_EXPLICIT_INSTANTIATION_DECLARATION_DLLIMPORT __attribute__ ((visibility("default")))
# define @LIBRARY_NAME@_EXPLICIT_INSTANTIATION_DECLARATION_DLLEXPORT __attribute__ ((visibility("default")))
# define @LIBRARY_NAME@_EXPLICIT_INSTANTIATION_DEFINITION_DLLIMPORT
# define @LIBRARY_NAME@_EXPLICIT_INSTANTIATION_DEFINITION_DLLEXPORT
// Use C++11 attribute if avaiable.
// This avoid issue when mixing old and C++11 attributes with GCC < 13
# if defined(__cplusplus) && (__cplusplus >= 201103L)
# define @LIBRARY_NAME@_DLLIMPORT [[gnu::visibility("default")]]
# define @LIBRARY_NAME@_DLLEXPORT [[gnu::visibility("default")]]
# define @LIBRARY_NAME@_DLLLOCAL [[gnu::visibility("hidden")]]
// gnu::visibility is not working with clang and explicit template instantiation
# define @LIBRARY_NAME@_EXPLICIT_INSTANTIATION_DECLARATION_DLLIMPORT __attribute__ ((visibility("default")))
# define @LIBRARY_NAME@_EXPLICIT_INSTANTIATION_DECLARATION_DLLEXPORT __attribute__ ((visibility("default")))
# define @LIBRARY_NAME@_EXPLICIT_INSTANTIATION_DEFINITION_DLLIMPORT
# define @LIBRARY_NAME@_EXPLICIT_INSTANTIATION_DEFINITION_DLLEXPORT
# else
# define @LIBRARY_NAME@_DLLIMPORT __attribute__ ((visibility("default")))
# define @LIBRARY_NAME@_DLLEXPORT __attribute__ ((visibility("default")))
# define @LIBRARY_NAME@_DLLLOCAL __attribute__ ((visibility("hidden")))
# define @LIBRARY_NAME@_EXPLICIT_INSTANTIATION_DECLARATION_DLLIMPORT __attribute__ ((visibility("default")))
# define @LIBRARY_NAME@_EXPLICIT_INSTANTIATION_DECLARATION_DLLEXPORT __attribute__ ((visibility("default")))
# define @LIBRARY_NAME@_EXPLICIT_INSTANTIATION_DEFINITION_DLLIMPORT
# define @LIBRARY_NAME@_EXPLICIT_INSTANTIATION_DEFINITION_DLLEXPORT
# endif
# else
// Otherwise (GCC < 4 or another compiler is used), export everything.
# define @LIBRARY_NAME@_DLLIMPORT
Expand Down

0 comments on commit 03d9537

Please sign in to comment.