xref: /aosp_15_r20/external/lz4/build/meson/GetLz4LibraryVersion.py (revision 27162e4e17433d5aa7cb38e7b6a433a09405fc7f)
1*27162e4eSAndroid Build Coastguard Worker#!/usr/bin/env python3
2*27162e4eSAndroid Build Coastguard Worker# #############################################################################
3*27162e4eSAndroid Build Coastguard Worker# Copyright (c) 2018-present    lzutao <taolzu(at)gmail.com>
4*27162e4eSAndroid Build Coastguard Worker# All rights reserved.
5*27162e4eSAndroid Build Coastguard Worker#
6*27162e4eSAndroid Build Coastguard Worker# This source code is licensed under both the BSD-style license (found in the
7*27162e4eSAndroid Build Coastguard Worker# LICENSE file in the root directory of this source tree) and the GPLv2 (found
8*27162e4eSAndroid Build Coastguard Worker# in the COPYING file in the root directory of this source tree).
9*27162e4eSAndroid Build Coastguard Worker# #############################################################################
10*27162e4eSAndroid Build Coastguard Workerimport re
11*27162e4eSAndroid Build Coastguard Worker
12*27162e4eSAndroid Build Coastguard Worker
13*27162e4eSAndroid Build Coastguard Workerdef find_version_tuple(filepath):
14*27162e4eSAndroid Build Coastguard Worker  version_file_data = None
15*27162e4eSAndroid Build Coastguard Worker  with open(filepath) as fd:
16*27162e4eSAndroid Build Coastguard Worker    version_file_data = fd.read()
17*27162e4eSAndroid Build Coastguard Worker
18*27162e4eSAndroid Build Coastguard Worker  patterns = r"""\s*#\s*define\s+LZ4_VERSION_MAJOR\s+([0-9]+).*$
19*27162e4eSAndroid Build Coastguard Worker\s*#\s*define\s+LZ4_VERSION_MINOR\s+([0-9]+).*$
20*27162e4eSAndroid Build Coastguard Worker\s*#\s*define\s+LZ4_VERSION_RELEASE\s+([0-9]+).*$
21*27162e4eSAndroid Build Coastguard Worker"""
22*27162e4eSAndroid Build Coastguard Worker  regex = re.compile(patterns, re.MULTILINE)
23*27162e4eSAndroid Build Coastguard Worker  version_match = regex.search(version_file_data)
24*27162e4eSAndroid Build Coastguard Worker  if version_match:
25*27162e4eSAndroid Build Coastguard Worker    return version_match.groups()
26*27162e4eSAndroid Build Coastguard Worker  raise Exception("Unable to find version string.")
27*27162e4eSAndroid Build Coastguard Worker
28*27162e4eSAndroid Build Coastguard Worker
29*27162e4eSAndroid Build Coastguard Workerdef main():
30*27162e4eSAndroid Build Coastguard Worker  import argparse
31*27162e4eSAndroid Build Coastguard Worker  parser = argparse.ArgumentParser(description='Print lz4 version from lib/lz4.h')
32*27162e4eSAndroid Build Coastguard Worker  parser.add_argument('file', help='path to lib/lz4.h')
33*27162e4eSAndroid Build Coastguard Worker  args = parser.parse_args()
34*27162e4eSAndroid Build Coastguard Worker  version_tuple = find_version_tuple(args.file)
35*27162e4eSAndroid Build Coastguard Worker  print('.'.join(version_tuple))
36*27162e4eSAndroid Build Coastguard Worker
37*27162e4eSAndroid Build Coastguard Worker
38*27162e4eSAndroid Build Coastguard Workerif __name__ == '__main__':
39*27162e4eSAndroid Build Coastguard Worker  main()
40