After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 784864 - Remove some #define constants from glibmmconfig.h.in
Remove some #define constants from glibmmconfig.h.in
Status: RESOLVED OBSOLETE
Product: glibmm
Classification: Bindings
Component: build
2.53.x
Other All
: Normal normal
: ---
Assigned To: gtkmm-forge
gtkmm-forge
Depends on:
Blocks:
 
 
Reported: 2017-07-12 17:17 UTC by Kjell Ahlstedt
Modified: 2018-05-22 12:14 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Kjell Ahlstedt 2017-07-12 17:17:11 UTC
Configuration of glibmm defines many preprocessor constants in glibmmconfig.h.
Some of these are obsolete, and IMO should be removed. Similar constants have
been removed from libsigc++3.

I have examined the use in glibmm, atkmm, pangomm, gtkmm, gtkmm-documentation
and libxml++, git master branches.

M4 macros called from glibmm/configure.ac:

File       M4 macro, #define constant
----       --------------------------
c_std.m4   GLIBMM_C_STD_TIME_T_IS_NOT_INT32
             #define GLIBMM_HAVE_C_STD_TIME_T_IS_NOT_INT32
           Not used in glibmm, gtkmm

cxx.m4     GLIBMM_CXX_MEMBER_FUNCTIONS_MEMBER_TEMPLATES
             #define GLIBMM_MEMBER_FUNCTIONS_MEMBER_TEMPLATES
           Not used in glibmm, gtkmm

           GLIBMM_CXX_CAN_DISAMBIGUATE_CONST_TEMPLATE_SPECIALIZATIONS
             #define GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS
           Not used in gtkmm
           *** Used in glibmm

           GLIBMM_CXX_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION
             #define
               GLIBMM_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION
           Not used in gtkmm
           *** Used in glibmm

           GLIBMM_CXX_CAN_ASSIGN_NON_EXTERN_C_FUNCTIONS_TO_EXTERN_C_CALLBACKS
             #define
               GLIBMM_CAN_ASSIGN_NON_EXTERN_C_FUNCTIONS_TO_EXTERN_C_CALLBACKS
           Not used in glibmm, gtkmm

           GLIBMM_CXX_CAN_USE_NAMESPACES_INSIDE_EXTERNC
             #define GLIBMM_CAN_USE_NAMESPACES_INSIDE_EXTERNC
           Not used in glibmm, gtkmm

           GLIBMM_CXX_CAN_USE_THREAD_LOCAL
             #define GLIBMM_CAN_USE_THREAD_LOCAL
           Not used in glibmm, gtkmm

cxx_std.m4 GLIBMM_CXX_HAS_STD_ITERATOR_TRAITS
             #define GLIBMM_HAVE_STD_ITERATOR_TRAITS
           Not used in gtkmm
           *** Used in glibmm

           GLIBMM_CXX_HAS_SUN_REVERSE_ITERATOR 
             #define GLIBMM_HAVE_SUN_REVERSE_ITERATOR
           *** Used in glibmm, gtkmm

           GLIBMM_CXX_HAS_TEMPLATE_SEQUENCE_CTORS
             #define GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS
           Not used in gtkmm
           *** Used in glibmm

           GLIBMM_CXX_ALLOWS_STATIC_INLINE_NPOS
             #define GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS
           Not used in gtkmm
           *** Used in glibmm

           GLIBMM_CXX_HAS_NAMESPACE_STD
             #define GLIBMM_HAVE_NAMESPACE_STD
           Called indirectly, via other m4 macros in cxx_std.m4.
           Not used in glibmm, gtkmm

debug.m4   GLIBMM_ARG_ENABLE_DEBUG_REFCOUNTING
             #define GLIBMM_DEBUG_REFCOUNTING
           *** Used in glibmm, gtkmm

sun.m4     GLIBMM_PROG_CXX_SUN
             #define GLIBMM_COMPILER_SUN_FORTE
           Not used in glibmm, gtkmm

None of these #define constants are used in atkmm, pangomm, libxml++ or
gtkmm-documentation.

7 out of these 14 #define constants are not used in glibmm or gtkmm.

  GLIBMM_EXCEPTIONS_ENABLED,
  GLIBMM_PROPERTIES_ENABLED,
  GLIBMM_VFUNCS_ENABLED and
  GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
are always defined. Can they be removed? Only GLIBMM_EXCEPTIONS_ENABLED is used
in any of the examined modules. It's only used in pangomm/pango/src/fontset.ccg,
and it should be removed from there.


glibmm/glib/glibmmconfig.h.in contains
  /* Dummy macro definition for compatibility with old code that expects
   * it to be defined.  Remove after grace period. */
  #define GLIBMM_USING_STD(Symbol)
Has the grace period ended?
GLIBMM_USING_STD is not used in any of the examined modules.
Comment 1 GNOME Infrastructure Team 2018-05-22 12:14:18 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to GNOME's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.gnome.org/GNOME/glibmm/issues/22.