From 8a808aa493980e212b4d5f5465330905c8294e59 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Mon, 14 Sep 2020 21:35:44 +0200 Subject: meson: remove meson-dist script Unfortunately meson subprojects do not support add_dist_script, so we cannot generate the .tarball-version file at "meson dist" time. Include the version in the meson project declaration, and use build-aux/git-version-gen only to determine SLIRP_VERSION_STRING. Instead of the dist script, we check that the version in the project declaration matches the latest tag. If they do not match it will be impossible to run "ninja dist" successfully. Signed-off-by: Paolo Bonzini --- build-aux/meson-dist | 16 ---------------- meson.build | 16 ++++++++++++---- 2 files changed, 12 insertions(+), 20 deletions(-) delete mode 100755 build-aux/meson-dist diff --git a/build-aux/meson-dist b/build-aux/meson-dist deleted file mode 100755 index 80d534f..0000000 --- a/build-aux/meson-dist +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -set -e -set -o pipefail - -if test "$1" = ""; then - echo "Version not provided" >&2 - exit 1 -fi -if ! test -d "$2"; then - echo "Source directory not provided" >&2 - exit 1 -fi - -# generate tarball version -echo "$1" > "$MESON_DIST_ROOT/.tarball-version" diff --git a/meson.build b/meson.build index 922d602..65bc6cb 100644 --- a/meson.build +++ b/meson.build @@ -1,12 +1,10 @@ project('libslirp', 'c', - version : run_command('build-aux/git-version-gen', '@0@/.tarball-version'.format(meson.source_root()), check : true).stdout().strip(), + version : '4.3.1', license : 'BSD-3-Clause', default_options : ['warning_level=1', 'c_std=gnu99'], meson_version : '>= 0.49', ) -meson.add_dist_script('build-aux/meson-dist', meson.project_version(), meson.source_root()) - version = meson.project_version() varr = version.split('.') major_version = varr[0] @@ -17,7 +15,17 @@ conf = configuration_data() conf.set('SLIRP_MAJOR_VERSION', major_version) conf.set('SLIRP_MINOR_VERSION', minor_version) conf.set('SLIRP_MICRO_VERSION', micro_version) -conf.set_quoted('SLIRP_VERSION_STRING', version) + +full_version = run_command('build-aux/git-version-gen', + '@0@/.tarball-version'.format(meson.source_root()), + check : true).stdout().strip() +if full_version.startswith('UNKNOWN') + full_version = meson.project_version() +elif not full_version.startswith(meson.project_version()) + error('meson.build project version @0@ does not match git-describe output @1@' + .format(meson.project_version(), full_version)) +endif +conf.set_quoted('SLIRP_VERSION_STRING', full_version) # libtool versioning - this applies to libslirp # -- cgit v1.1 From 0b669b5fbe4d3c25a682a67f1059d8633c963b3d Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Mon, 14 Sep 2020 21:37:50 +0200 Subject: meson: support compiling as subproject Skip installation of devel files if compiling as a subproject, including the library if a static version is available; the parent project can force usage of the (installed) shared library using default_library=shared. An option can also be used to customize the SLIRP_VERSION_STRING and ascertain if the parent project is using the embedded version of slirp. Signed-off-by: Paolo Bonzini --- meson.build | 54 +++++++++++++++++++++++++++++++----------------------- meson_options.txt | 2 ++ 2 files changed, 33 insertions(+), 23 deletions(-) create mode 100644 meson_options.txt diff --git a/meson.build b/meson.build index 65bc6cb..c777dff 100644 --- a/meson.build +++ b/meson.build @@ -2,7 +2,7 @@ project('libslirp', 'c', version : '4.3.1', license : 'BSD-3-Clause', default_options : ['warning_level=1', 'c_std=gnu99'], - meson_version : '>= 0.49', + meson_version : '>= 0.50', ) version = meson.project_version() @@ -17,7 +17,7 @@ conf.set('SLIRP_MINOR_VERSION', minor_version) conf.set('SLIRP_MICRO_VERSION', micro_version) full_version = run_command('build-aux/git-version-gen', - '@0@/.tarball-version'.format(meson.source_root()), + '@0@/.tarball-version'.format(meson.current_source_dir()), check : true).stdout().strip() if full_version.startswith('UNKNOWN') full_version = meson.project_version() @@ -25,7 +25,7 @@ elif not full_version.startswith(meson.project_version()) error('meson.build project version @0@ does not match git-describe output @1@' .format(meson.project_version(), full_version)) endif -conf.set_quoted('SLIRP_VERSION_STRING', full_version) +conf.set_quoted('SLIRP_VERSION_STRING', full_version + get_option('version_suffix')) # libtool versioning - this applies to libslirp # @@ -105,9 +105,12 @@ sources = [ mapfile = 'src/libslirp.map' vflag = '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), mapfile) +install_devel = not meson.is_subproject() + configure_file( input : 'src/libslirp-version.h.in', output : 'libslirp-version.h', + install : install_devel, install_dir : join_paths(get_option('includedir'), 'slirp'), configuration : conf ) @@ -118,25 +121,30 @@ lib = library('slirp', sources, link_args : vflag, link_depends : mapfile, dependencies : [glib_dep, platform_deps], - install : true + install : install_devel or get_option('default_library') == 'shared', ) -libslirp_dep = declare_dependency( - include_directories: include_directories('.', 'src'), - link_with: lib) - -install_headers(['src/libslirp.h'], subdir : 'slirp') - -pkg = import('pkgconfig') - -pkg.generate( - version : version, - libraries : lib, - requires : [ - 'glib-2.0', - ], - name : 'slirp', - description : 'User-space network stack', - filebase : 'slirp', - subdirs : 'slirp', -) +if install_devel + install_headers(['src/libslirp.h'], subdir : 'slirp') + + pkg = import('pkgconfig') + + pkg.generate( + version : version, + libraries : lib, + requires : [ + 'glib-2.0', + ], + name : 'slirp', + description : 'User-space network stack', + filebase : 'slirp', + subdirs : 'slirp', + ) +else + if get_option('default_library') == 'both' + lib = lib.get_static_lib() + endif + libslirp_dep = declare_dependency( + include_directories: include_directories('.', 'src'), + link_with: lib) +endif diff --git a/meson_options.txt b/meson_options.txt new file mode 100644 index 0000000..27e7c80 --- /dev/null +++ b/meson_options.txt @@ -0,0 +1,2 @@ +option('version_suffix', type: 'string', value: '', + description: 'Suffix to append to SLIRP_VERSION_STRING') -- cgit v1.1