# make-version.py # # This file is part of LilyPond, the GNU music typesetter. # # Copyright (C) 1999--2020 Han-Wen Nienhuys # # LilyPond is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # LilyPond is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with LilyPond. If not, see . import re import sys PROGRAM = sys.argv[0] VERSION = sys.argv[1] defs = [] for i in open(VERSION, encoding='utf8').readlines(): i = re.sub('#.*', '', i) m = re.search('([^ =]*)[\t ]*=[ \t]*([^ \t]*)[ \t]*\n', i) if m: defs.append((m.group(1), m.group(2))) sys.stdout.write(r''' /* Automatically generated from %(VERSION)s by %(PROGRAM)s. */ #ifndef VERSION_HH #define VERSION_HH ''' % vars()) for name, expansion in defs: # GUILE leaks autoconf data into userspace. sys.stdout.write(r''' #ifdef %(name)s #undef %(name)s #endif /* %(name)s */ #define %(name)s "%(expansion)s" ''' % vars()) if ('MY_PATCH_LEVEL', '') in defs: sys.stdout.write(r''' #define NO_MY_PATCHLEVEL #define TOPLEVEL_VERSION MAJOR_VERSION "." MINOR_VERSION "." PATCH_LEVEL ''') else: sys.stdout.write(r''' #define TOPLEVEL_VERSION MAJOR_VERSION "." MINOR_VERSION "." PATCH_LEVEL "." MY_PATCH_LEVEL ''') sys.stdout.write(r''' #endif /* VERSION_HH */ ''')