mirror of https://code.videolan.org/videolan/vlc
chromecast: meson.build: check both x.y and x.y.z for protoc
Protobuf and protoc version naming changed starting after version 21.7.11.x, at version 22.x.y[^2]. Other versioning changes during the 21.* cycle were made right before[^1]. The new versioning is described on the specific page from protocol buffers website[^3]. For instance, protoc from archlinux currently outputs version 25.3, leading to the following message if checking a 3-number version number like the version in the contribs: Program protoc found: NO found 25.3 but need: '25.3.0' (/usr/bin/protoc) After this patch we have the following with version 25.3: Program protoc found: YES 25.3 25.3 (/usr/bin/protoc) and with version 21.1 from contrib: Program protoc found: YES 3.21.1 3.21.1 [^1]: https://protobuf.dev/news/2022-05-06/ [^2]: https://protobuf.dev/news/2022-07-06/ [^3]: https://protobuf.dev/support/version-support/
This commit is contained in:
parent
e53da4bf08
commit
b77311d307
|
@ -4,10 +4,27 @@ protoc = disabler()
|
||||||
chromecast_proto = []
|
chromecast_proto = []
|
||||||
|
|
||||||
if protobuf_dep.found()
|
if protobuf_dep.found()
|
||||||
|
# Protoc can output either a 2-number version or a 3-number version...
|
||||||
|
# Protobuf switched from version naming 3.20.12.z to version 21.7.z, and
|
||||||
|
# protoc provide compatibility with version x.y now. But version 21.y.z
|
||||||
|
# still outputs the previous kind of version naming up until 3.21.12.z
|
||||||
|
# included, so the first version with the x.y format is 22.0.
|
||||||
protobuf_version_list = protobuf_dep.version().split('.')
|
protobuf_version_list = protobuf_dep.version().split('.')
|
||||||
|
if protobuf_dep.version().version_compare('< 3.22.0.0')
|
||||||
|
protoc_version = '@0@.@1@.@2@'.format(
|
||||||
|
protobuf_version_list[0],
|
||||||
|
protobuf_version_list[1],
|
||||||
|
protobuf_version_list[2])
|
||||||
|
else
|
||||||
|
# Protobuf version is x.y.z and protoc version is x.y
|
||||||
|
protoc_version = '@0@.@1@'.format(protobuf_version_list[0], protobuf_version_list[1])
|
||||||
|
endif
|
||||||
protoc = find_program('protoc',
|
protoc = find_program('protoc',
|
||||||
version: '@0@.@1@'.format(protobuf_version_list[0], protobuf_version_list[1]),
|
version: protoc_version,
|
||||||
required: get_option('chromecast'))
|
required: get_option('chromecast'))
|
||||||
|
endif
|
||||||
|
|
||||||
|
if protoc.found()
|
||||||
protobuf_gen = generator(protoc,
|
protobuf_gen = generator(protoc,
|
||||||
output: [
|
output: [
|
||||||
'@BASENAME@.pb.cc'.format(protobuf_dep.version()),
|
'@BASENAME@.pb.cc'.format(protobuf_dep.version()),
|
||||||
|
|
Loading…
Reference in New Issue