From abf3a67dd070e138c0f1a20b913abf003193cb79 Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Tue, 19 Apr 2022 07:11:51 -0400 Subject: [PATCH] meson: fix regression that broke extracting version (#1253) * meson: fix regression that broke extracting version In commit 33f67386fec8040a36a26b2038b39dd8dcf2814d the code that heuristically parsed the version broke due to the version being moved around into a more easily accessible define. While we are at it, pass the exact path of httplib.h to un-break usage as a meson subproject. This was broken in commit 8ecdb1197967dea050fd38a8e9b5020e02320b31 which checked the return code of trying to get the version; it was always broken, but formerly failed in silence and resulted in no version number. * meson: use the compiler builtins to extract the version from the header As a convenient string define, it is now possible to ask the preprocessor what the version of cpp-httplib is. This can be used from meson too, in order to avoid encoding C++ file structure into python regexes. --- meson.build | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/meson.build b/meson.build index 66f0097..1854685 100644 --- a/meson.build +++ b/meson.build @@ -21,12 +21,11 @@ project( version = meson.project_version() python3 = find_program('python3') if version == 'undefined' - # Meson doesn't have regular expressions, but since it is implemented - # in python we can be sure we can use it to parse the file manually - version = run_command( - python3, '-c', 'import re; raw_version = re.search("User\-Agent.*cpp\-httplib/([0-9]+\.?)+", open("httplib.h").read()).group(0); print(re.search("([0-9]+\\.?)+", raw_version).group(0))', - check: true - ).stdout().strip() + cxx = meson.get_compiler('cpp') + version = cxx.get_define('CPPHTTPLIB_VERSION', + prefix: '#include ', + include_directories: include_directories('.')).strip('"') + assert(version != '', 'failed to get version from httplib.h') endif message('cpp-httplib version ' + version)