diff options
author | Patrick Griffis <pgriffis@igalia.com> | 2020-10-30 14:58:35 -0500 |
---|---|---|
committer | Patrick Griffis <pgriffis@igalia.com> | 2020-10-30 14:58:49 -0500 |
commit | d1fea9a31f38899e16c0aef0f129d9b21a0473ed (patch) | |
tree | 6fc27710c4f64d54fbcec594585b8c5087f9563f | |
parent | 04e63757e8c783e7779985dc29a34155cb1deab5 (diff) | |
download | libsoup-d1fea9a31f38899e16c0aef0f129d9b21a0473ed.tar.gz |
Automatically generate soup-version.h macros
-rwxr-xr-x | libsoup/generate-version-header.py | 68 | ||||
-rw-r--r-- | libsoup/meson.build | 6 | ||||
-rw-r--r-- | libsoup/soup-version.h.in | 337 |
3 files changed, 77 insertions, 334 deletions
diff --git a/libsoup/generate-version-header.py b/libsoup/generate-version-header.py new file mode 100755 index 00000000..486a9e9b --- /dev/null +++ b/libsoup/generate-version-header.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] +output_file = sys.argv[2] +current_version = sys.argv[3] +major, minor, micro = (int(v) for v in current_version.split('.')) + +def is_stable(version): + return not version % 2 + +with open(input_file) as i: + template = i.read() + +versions = [] +for i in range(24, 73): + if is_stable(i): + versions.append((2, i)) + +if major == 2: + # Specific to 3.x dev releases + versions.append((3, 0)) +else: + minor_max = minor if minor != 0 and is_stable(minor) else minor + 1 + for i in range(0, minor_max): + if is_stable(i): + versions.append((3, i)) + +version_macros = '' +version_attributes = '' + +for version in versions: + version_macros += '''/** + * SOUP_VERSION_{major_version}_{minor_version}: + * + * A macro that evaluates to the {major_version}.{minor_version} version of libsoup, in a format + * that can be used by the C pre-processor. + * + * Since: {major_version}.{minor_version} + */ +#define SOUP_VERSION_{major_version}_{minor_version} (G_ENCODE_VERSION ({major_version}, {minor_version})) + +'''.format(major_version=version[0], minor_version=version[1]) + + version_attributes += '''#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_{major_version}_{minor_version} +# define SOUP_DEPRECATED_IN_{major_version}_{minor_version} G_DEPRECATED +# define SOUP_DEPRECATED_IN_{major_version}_{minor_version}_FOR(f) G_DEPRECATED_FOR(f) +#else +# define SOUP_DEPRECATED_IN_{major_version}_{minor_version} +# define SOUP_DEPRECATED_IN_{major_version}_{minor_version}_FOR(f) +#endif + +#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_{major_version}_{minor_version} +# define SOUP_AVAILABLE_IN_{major_version}_{minor_version} G_UNAVAILABLE({major_version}, {minor_version}) _SOUP_EXTERN +#else +# define SOUP_AVAILABLE_IN_{major_version}_{minor_version} _SOUP_EXTERN +#endif +'''.format(major_version=version[0], minor_version=version[1]) + +header = template.format(version_macros=version_macros, + version_attributes=version_attributes, + major_version=major, + minor_version=minor, + micro_version=micro) + +with open(output_file, 'w+') as o: + o.write(header) diff --git a/libsoup/meson.build b/libsoup/meson.build index e9756508..6b37f4c8 100644 --- a/libsoup/meson.build +++ b/libsoup/meson.build @@ -150,10 +150,12 @@ version_cdata.set('SOUP_MAJOR_VERSION', soup_version_major) version_cdata.set('SOUP_MINOR_VERSION', soup_version_minor) version_cdata.set('SOUP_MICRO_VERSION', soup_version_micro) -soup_version_h = configure_file(input : 'soup-version.h.in', +soup_version_h = configure_file( + input : 'soup-version.h.in', output : 'soup-version.h', install_dir : join_paths(get_option('includedir'), includedir), - configuration : version_cdata) + command : [find_program('generate-version-header.py'), '@INPUT@', '@OUTPUT@', meson.project_version()] +) enum_types = 'soup-enum-types' soup_enums = gnome.mkenums('soup-enum-types', diff --git a/libsoup/soup-version.h.in b/libsoup/soup-version.h.in index 308c2f27..10b5330d 100644 --- a/libsoup/soup-version.h.in +++ b/libsoup/soup-version.h.in @@ -11,9 +11,9 @@ G_BEGIN_DECLS -#define SOUP_MAJOR_VERSION (@SOUP_MAJOR_VERSION@) -#define SOUP_MINOR_VERSION (@SOUP_MINOR_VERSION@) -#define SOUP_MICRO_VERSION (@SOUP_MICRO_VERSION@) +#define SOUP_MAJOR_VERSION ({major_version}) +#define SOUP_MINOR_VERSION ({minor_version}) +#define SOUP_MICRO_VERSION ({micro_version}) #define SOUP_CHECK_VERSION(major, minor, micro) \ (SOUP_MAJOR_VERSION > (major) || \ @@ -45,30 +45,7 @@ G_BEGIN_DECLS #endif /* SOUP_VAR */ /* Deprecation / Availability macros */ - -#define SOUP_VERSION_2_24 (G_ENCODE_VERSION (2, 24)) -#define SOUP_VERSION_2_26 (G_ENCODE_VERSION (2, 26)) -#define SOUP_VERSION_2_28 (G_ENCODE_VERSION (2, 28)) -#define SOUP_VERSION_2_30 (G_ENCODE_VERSION (2, 30)) -#define SOUP_VERSION_2_32 (G_ENCODE_VERSION (2, 32)) -#define SOUP_VERSION_2_34 (G_ENCODE_VERSION (2, 34)) -#define SOUP_VERSION_2_36 (G_ENCODE_VERSION (2, 36)) -#define SOUP_VERSION_2_38 (G_ENCODE_VERSION (2, 38)) -#define SOUP_VERSION_2_40 (G_ENCODE_VERSION (2, 40)) -#define SOUP_VERSION_2_42 (G_ENCODE_VERSION (2, 42)) -#define SOUP_VERSION_2_44 (G_ENCODE_VERSION (2, 44)) -#define SOUP_VERSION_2_46 (G_ENCODE_VERSION (2, 46)) -#define SOUP_VERSION_2_48 (G_ENCODE_VERSION (2, 48)) -#define SOUP_VERSION_2_50 (G_ENCODE_VERSION (2, 50)) -#define SOUP_VERSION_2_52 (G_ENCODE_VERSION (2, 52)) -#define SOUP_VERSION_2_54 (G_ENCODE_VERSION (2, 54)) -#define SOUP_VERSION_2_56 (G_ENCODE_VERSION (2, 56)) -#define SOUP_VERSION_2_58 (G_ENCODE_VERSION (2, 58)) -#define SOUP_VERSION_2_62 (G_ENCODE_VERSION (2, 62)) -#define SOUP_VERSION_2_66 (G_ENCODE_VERSION (2, 66)) -#define SOUP_VERSION_2_68 (G_ENCODE_VERSION (2, 68)) -#define SOUP_VERSION_2_70 (G_ENCODE_VERSION (2, 70)) -#define SOUP_VERSION_2_72 (G_ENCODE_VERSION (2, 72)) +{version_macros} /* evaluates to the current stable version; for development cycles, * this means the next stable target @@ -112,311 +89,7 @@ G_BEGIN_DECLS #define SOUP_AVAILABLE_IN_ALL _SOUP_EXTERN #define SOUP_AVAILABLE_IN_2_4 _SOUP_EXTERN -#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_24 -# define SOUP_DEPRECATED_IN_2_24 G_DEPRECATED -# define SOUP_DEPRECATED_IN_2_24_FOR(f) G_DEPRECATED_FOR(f) -#else -# define SOUP_DEPRECATED_IN_2_24 -# define SOUP_DEPRECATED_IN_2_24_FOR(f) -#endif - -#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_24 -# define SOUP_AVAILABLE_IN_2_24 G_UNAVAILABLE(2, 24) _SOUP_EXTERN -#else -# define SOUP_AVAILABLE_IN_2_24 _SOUP_EXTERN -#endif - -#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_26 -# define SOUP_DEPRECATED_IN_2_26 G_DEPRECATED -# define SOUP_DEPRECATED_IN_2_26_FOR(f) G_DEPRECATED_FOR(f) -#else -# define SOUP_DEPRECATED_IN_2_26 -# define SOUP_DEPRECATED_IN_2_26_FOR(f) -#endif - -#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_26 -# define SOUP_AVAILABLE_IN_2_26 G_UNAVAILABLE(2, 26) _SOUP_EXTERN -#else -# define SOUP_AVAILABLE_IN_2_26 _SOUP_EXTERN -#endif - -#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_28 -# define SOUP_DEPRECATED_IN_2_28 G_DEPRECATED -# define SOUP_DEPRECATED_IN_2_28_FOR(f) G_DEPRECATED_FOR(f) -#else -# define SOUP_DEPRECATED_IN_2_28 -# define SOUP_DEPRECATED_IN_2_28_FOR(f) -#endif - -#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_28 -# define SOUP_AVAILABLE_IN_2_28 G_UNAVAILABLE(2, 28) _SOUP_EXTERN -#else -# define SOUP_AVAILABLE_IN_2_28 _SOUP_EXTERN -#endif - -#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_30 -# define SOUP_DEPRECATED_IN_2_30 G_DEPRECATED -# define SOUP_DEPRECATED_IN_2_30_FOR(f) G_DEPRECATED_FOR(f) -#else -# define SOUP_DEPRECATED_IN_2_30 -# define SOUP_DEPRECATED_IN_2_30_FOR(f) -#endif - -#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_30 -# define SOUP_AVAILABLE_IN_2_30 G_UNAVAILABLE(2, 30) _SOUP_EXTERN -#else -# define SOUP_AVAILABLE_IN_2_30 _SOUP_EXTERN -#endif - -#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_32 -# define SOUP_DEPRECATED_IN_2_32 G_DEPRECATED -# define SOUP_DEPRECATED_IN_2_32_FOR(f) G_DEPRECATED_FOR(f) -#else -# define SOUP_DEPRECATED_IN_2_32 -# define SOUP_DEPRECATED_IN_2_32_FOR(f) -#endif - -#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_32 -# define SOUP_AVAILABLE_IN_2_32 G_UNAVAILABLE(2, 32) _SOUP_EXTERN -#else -# define SOUP_AVAILABLE_IN_2_32 _SOUP_EXTERN -#endif - -#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_34 -# define SOUP_DEPRECATED_IN_2_34 G_DEPRECATED -# define SOUP_DEPRECATED_IN_2_34_FOR(f) G_DEPRECATED_FOR(f) -#else -# define SOUP_DEPRECATED_IN_2_34 -# define SOUP_DEPRECATED_IN_2_34_FOR(f) -#endif - -#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_34 -# define SOUP_AVAILABLE_IN_2_34 G_UNAVAILABLE(2, 34) _SOUP_EXTERN -#else -# define SOUP_AVAILABLE_IN_2_34 _SOUP_EXTERN -#endif - -#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_36 -# define SOUP_DEPRECATED_IN_2_36 G_DEPRECATED -# define SOUP_DEPRECATED_IN_2_36_FOR(f) G_DEPRECATED_FOR(f) -#else -# define SOUP_DEPRECATED_IN_2_36 -# define SOUP_DEPRECATED_IN_2_36_FOR(f) -#endif - -#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_36 -# define SOUP_AVAILABLE_IN_2_36 G_UNAVAILABLE(2, 36) _SOUP_EXTERN -#else -# define SOUP_AVAILABLE_IN_2_36 _SOUP_EXTERN -#endif - -#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_38 -# define SOUP_DEPRECATED_IN_2_38 G_DEPRECATED -# define SOUP_DEPRECATED_IN_2_38_FOR(f) G_DEPRECATED_FOR(f) -#else -# define SOUP_DEPRECATED_IN_2_38 -# define SOUP_DEPRECATED_IN_2_38_FOR(f) -#endif - -#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_38 -# define SOUP_AVAILABLE_IN_2_38 G_UNAVAILABLE(2, 38) _SOUP_EXTERN -#else -# define SOUP_AVAILABLE_IN_2_38 _SOUP_EXTERN -#endif - -#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_40 -# define SOUP_DEPRECATED_IN_2_40 G_DEPRECATED -# define SOUP_DEPRECATED_IN_2_40_FOR(f) G_DEPRECATED_FOR(f) -#else -# define SOUP_DEPRECATED_IN_2_40 -# define SOUP_DEPRECATED_IN_2_40_FOR(f) -#endif - -#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_40 -# define SOUP_AVAILABLE_IN_2_40 G_UNAVAILABLE(2, 40) _SOUP_EXTERN -#else -# define SOUP_AVAILABLE_IN_2_40 _SOUP_EXTERN -#endif - -#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_42 -# define SOUP_DEPRECATED_IN_2_42 G_DEPRECATED -# define SOUP_DEPRECATED_IN_2_42_FOR(f) G_DEPRECATED_FOR(f) -#else -# define SOUP_DEPRECATED_IN_2_42 -# define SOUP_DEPRECATED_IN_2_42_FOR(f) -#endif - -#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_42 -# define SOUP_AVAILABLE_IN_2_42 G_UNAVAILABLE(2, 42) _SOUP_EXTERN -#else -# define SOUP_AVAILABLE_IN_2_42 _SOUP_EXTERN -#endif - -#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_44 -# define SOUP_DEPRECATED_IN_2_44 G_DEPRECATED -# define SOUP_DEPRECATED_IN_2_44_FOR(f) G_DEPRECATED_FOR(f) -#else -# define SOUP_DEPRECATED_IN_2_44 -# define SOUP_DEPRECATED_IN_2_44_FOR(f) -#endif - -#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_44 -# define SOUP_AVAILABLE_IN_2_44 G_UNAVAILABLE(2, 44) _SOUP_EXTERN -#else -# define SOUP_AVAILABLE_IN_2_44 _SOUP_EXTERN -#endif - -#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_46 -# define SOUP_DEPRECATED_IN_2_46 G_DEPRECATED -# define SOUP_DEPRECATED_IN_2_46_FOR(f) G_DEPRECATED_FOR(f) -#else -# define SOUP_DEPRECATED_IN_2_46 -# define SOUP_DEPRECATED_IN_2_46_FOR(f) -#endif - -#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_46 -# define SOUP_AVAILABLE_IN_2_46 G_UNAVAILABLE(2, 46) _SOUP_EXTERN -#else -# define SOUP_AVAILABLE_IN_2_46 _SOUP_EXTERN -#endif - -#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_48 -# define SOUP_DEPRECATED_IN_2_48 G_DEPRECATED -# define SOUP_DEPRECATED_IN_2_48_FOR(f) G_DEPRECATED_FOR(f) -#else -# define SOUP_DEPRECATED_IN_2_48 -# define SOUP_DEPRECATED_IN_2_48_FOR(f) -#endif - -#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_48 -# define SOUP_AVAILABLE_IN_2_48 G_UNAVAILABLE(2, 48) _SOUP_EXTERN -#else -# define SOUP_AVAILABLE_IN_2_48 _SOUP_EXTERN -#endif - -#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_50 -# define SOUP_DEPRECATED_IN_2_50 G_DEPRECATED -# define SOUP_DEPRECATED_IN_2_50_FOR(f) G_DEPRECATED_FOR(f) -#else -# define SOUP_DEPRECATED_IN_2_50 -# define SOUP_DEPRECATED_IN_2_50_FOR(f) -#endif - -#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_50 -# define SOUP_AVAILABLE_IN_2_50 G_UNAVAILABLE(2, 50) _SOUP_EXTERN -#else -# define SOUP_AVAILABLE_IN_2_50 _SOUP_EXTERN -#endif - -#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_52 -# define SOUP_DEPRECATED_IN_2_52 G_DEPRECATED -# define SOUP_DEPRECATED_IN_2_52_FOR(f) G_DEPRECATED_FOR(f) -#else -# define SOUP_DEPRECATED_IN_2_52 -# define SOUP_DEPRECATED_IN_2_52_FOR(f) -#endif - -#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_52 -# define SOUP_AVAILABLE_IN_2_52 G_UNAVAILABLE(2, 52) _SOUP_EXTERN -#else -# define SOUP_AVAILABLE_IN_2_52 _SOUP_EXTERN -#endif - -#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_54 -# define SOUP_DEPRECATED_IN_2_54 G_DEPRECATED -# define SOUP_DEPRECATED_IN_2_54_FOR(f) G_DEPRECATED_FOR(f) -#else -# define SOUP_DEPRECATED_IN_2_54 -# define SOUP_DEPRECATED_IN_2_54_FOR(f) -#endif - -#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_54 -# define SOUP_AVAILABLE_IN_2_54 G_UNAVAILABLE(2, 54) _SOUP_EXTERN -#else -# define SOUP_AVAILABLE_IN_2_54 _SOUP_EXTERN -#endif - -#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_56 -# define SOUP_DEPRECATED_IN_2_56 G_DEPRECATED -# define SOUP_DEPRECATED_IN_2_56_FOR(f) G_DEPRECATED_FOR(f) -#else -# define SOUP_DEPRECATED_IN_2_56 -# define SOUP_DEPRECATED_IN_2_56_FOR(f) -#endif - -#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_56 -# define SOUP_AVAILABLE_IN_2_56 G_UNAVAILABLE(2, 56) _SOUP_EXTERN -#else -# define SOUP_AVAILABLE_IN_2_56 _SOUP_EXTERN -#endif - -#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_58 -# define SOUP_DEPRECATED_IN_2_58 G_DEPRECATED -# define SOUP_DEPRECATED_IN_2_58_FOR(f) G_DEPRECATED_FOR(f) -#else -# define SOUP_DEPRECATED_IN_2_58 -# define SOUP_DEPRECATED_IN_2_58_FOR(f) -#endif - -#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_58 -# define SOUP_AVAILABLE_IN_2_58 G_UNAVAILABLE(2, 58) _SOUP_EXTERN -#else -# define SOUP_AVAILABLE_IN_2_58 _SOUP_EXTERN -#endif - -#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_62 -# define SOUP_DEPRECATED_IN_2_62 G_DEPRECATED -# define SOUP_DEPRECATED_IN_2_62_FOR(f) G_DEPRECATED_FOR(f) -#else -# define SOUP_DEPRECATED_IN_2_62 -# define SOUP_DEPRECATED_IN_2_62_FOR(f) -#endif - -#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_62 -# define SOUP_AVAILABLE_IN_2_62 G_UNAVAILABLE(2, 62) _SOUP_EXTERN -#else -# define SOUP_AVAILABLE_IN_2_62 _SOUP_EXTERN -#endif - -#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_66 -# define SOUP_DEPRECATED_IN_2_66 G_DEPRECATED -# define SOUP_DEPRECATED_IN_2_66_FOR(f) G_DEPRECATED_FOR(f) -#else -# define SOUP_DEPRECATED_IN_2_66 -# define SOUP_DEPRECATED_IN_2_66_FOR(f) -#endif - -#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_66 -# define SOUP_AVAILABLE_IN_2_66 G_UNAVAILABLE(2, 66) _SOUP_EXTERN -#else -# define SOUP_AVAILABLE_IN_2_66 _SOUP_EXTERN -#endif - -#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_68 -# define SOUP_AVAILABLE_IN_2_68 G_UNAVAILABLE(2, 68) _SOUP_EXTERN -#else -# define SOUP_AVAILABLE_IN_2_68 _SOUP_EXTERN -#endif - -#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_70 -# define SOUP_DEPRECATED_IN_2_70 G_DEPRECATED -# define SOUP_DEPRECATED_IN_2_70_FOR(f) G_DEPRECATED_FOR(f) -#else -# define SOUP_DEPRECATED_IN_2_70 -# define SOUP_DEPRECATED_IN_2_70_FOR(f) -#endif - -#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_70 -# define SOUP_AVAILABLE_IN_2_70 G_UNAVAILABLE(2, 70) _SOUP_EXTERN -#else -# define SOUP_AVAILABLE_IN_2_70 _SOUP_EXTERN -#endif - -#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_72 -# define SOUP_AVAILABLE_IN_2_72 G_UNAVAILABLE(2, 72) _SOUP_EXTERN -#else -# define SOUP_AVAILABLE_IN_2_72 _SOUP_EXTERN -#endif +{version_attributes} SOUP_AVAILABLE_IN_2_42 guint soup_get_major_version (void); |