On Mon, Nov 06, 2023 at 02:49:07PM +0100, Ahmad Fatoum wrote:
> Makefile.am has following defines for libtool versioning:
> 
>   LIBDT_CURRENT=6
>   LIBDT_REVISION=0
>   LIBDT_AGE=0
> 
> along with a comment on how the values were chosen. Copy the comment and
> the values into the meson.build as well, so appropriate symlinks
> pointing at the versioned library are created. We forego the extra
> complexity of having a common file that's read from both build systems
> as we are intent on phasing out autotools anyway, once wrinkles such as
> what's fixed here are ironed out.
> 
> The translation from libtool versioning to major/minor/revision as
> expected by meson is taken from GNOME's gcab[1]. More information
> about libtool versioning is available in its documentation[2].
> 
> [1]: https://gitlab.gnome.org/GNOME/gcab/-/commit/2c8048f74ec8c088397
> [2]: 
> https://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html
> 
> Reported-by: Enrico Jörns <e.joe...@pengutronix.de>
> Signed-off-by: Ahmad Fatoum <a.fat...@pengutronix.de>

Thanks, this patch is now released in v2023.11.0.

 - Roland

> ---
> v1 -> v2:
>   - set library version major as current - age
> ---
>  meson.build | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/meson.build b/meson.build
> index 9579e712dfea..6489e4c4d52e 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -122,6 +122,18 @@ versiondep = declare_dependency(sources: version_h)
>  
>  meson.add_dist_script('version-gen', meson.project_version())
>  
> +# If the library source code has changed at all since the last release,
> +#   then increment revision (‘c:r:a’ becomes ‘c:r+1:a’).
> +# If any interfaces have been added/removed/changed since the last release,
> +#   then increment current, and set revision to 0.
> +# If any public interfaces have been added since the last public release,
> +#   then increment age.
> +# If any interfaces have been removed or changed since the last release,
> +#   then set age to 0.
> +lt_current = 6
> +lt_revision = 0
> +lt_age = 0
> +
>  mapfile = 'src/libdt-utils.sym'
>  libdt_ld_flags = 
> '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), mapfile)
>  
> @@ -133,6 +145,7 @@ libdt = shared_library('dt-utils',
>    c_args : ['-include', meson.current_build_dir() / 'version.h'],
>    dependencies : [udevdep, versiondep],
>    gnu_symbol_visibility : 'default',
> +  version: '@0@.@1@.@2@'.format(lt_current - lt_age, lt_age, lt_revision),
>    install : true)
>  
>  executable('barebox-state',
> -- 
> 2.39.2
> 
> 
> 

-- 
Roland Hieber, Pengutronix e.K.          | r.hie...@pengutronix.de     |
Steuerwalder Str. 21                     | https://www.pengutronix.de/ |
31137 Hildesheim, Germany                | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686         | Fax:   +49-5121-206917-5555 |

Reply via email to