From 0ecc7887971972d8c3952d8c998fac7d9b4592d2 Mon Sep 17 00:00:00 2001 From: Alexey Rochev Date: Thu, 6 Jan 2022 02:08:32 +0300 Subject: [PATCH] Remove meson.build generation and separate project and library versions in their own files Project and library version are now stored in version.txt and libtool_version_info.txt files respectively. Both autotools and meson get their versioning information from this files. Meson additionally automatically transforms library version from libtool's own format. Also raise meson version requirement from 0.47 to 0.57 which is required by these changes. --- configure.ac | 6 +- libtool_version_info.txt | 1 + meson.build | 7 +- meson.build.in | 153 --------------------------------------- src/meson.build | 9 ++- version.txt | 1 + 6 files changed, 14 insertions(+), 163 deletions(-) create mode 100644 libtool_version_info.txt delete mode 100644 meson.build.in create mode 100644 version.txt diff --git a/configure.ac b/configure.ac index 769e9a6..a597188 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,4 @@ - -AC_INIT([libpsl], [0.21.1], [tim.ruehsen@gmx.de], [libpsl], [https://github.com/rockdaboot/libpsl]) +AC_INIT([libpsl], m4_normalize(m4_include([version.txt])), [tim.ruehsen@gmx.de], [libpsl], [https://github.com/rockdaboot/libpsl]) AC_PREREQ([2.59]) AC_CONFIG_AUX_DIR([build-aux]) AM_INIT_AUTOMAKE([1.10 no-define foreign dist-lzip]) @@ -115,7 +114,7 @@ AC_ARG_ENABLE([asan], # 4. If any interfaces have been added, removed, or changed since the last update, increment current, and set revision to 0. # 5. If any interfaces have been added since the last public release, then increment age. # 6. If any existing interfaces have been removed or changed since the last public release, then set age to 0. -AC_SUBST([LIBPSL_SO_VERSION], [8:3:3]) +AC_SUBST([LIBPSL_SO_VERSION], m4_normalize(m4_include([libtool_version_info.txt]))) AC_SUBST([LIBPSL_VERSION], $VERSION) # Check for enable/disable runtime PSL data @@ -387,7 +386,6 @@ AC_CONFIG_FILES([Makefile tests/Makefile docs/libpsl/Makefile docs/libpsl/version.xml libpsl.pc:libpsl.pc.in - meson.build msvc/Makefile msvc/config.h.win32 msvc/config-msvc.mak]) diff --git a/libtool_version_info.txt b/libtool_version_info.txt new file mode 100644 index 0000000..fc0a817 --- /dev/null +++ b/libtool_version_info.txt @@ -0,0 +1 @@ +8:3:3 diff --git a/meson.build b/meson.build index 7cc2bb5..ccb3d48 100644 --- a/meson.build +++ b/meson.build @@ -1,9 +1,6 @@ project('libpsl', 'c', - version : '0.21.1', - meson_version : '>=0.47.0') - -# Derived from LIBPSL_SO_VERSION in configure.ac -lt_version = '5.3.2' + version : files('version.txt'), + meson_version : '>=0.57.0') cc = meson.get_compiler('c') diff --git a/meson.build.in b/meson.build.in deleted file mode 100644 index 41166a4..0000000 --- a/meson.build.in +++ /dev/null @@ -1,153 +0,0 @@ -project('libpsl', 'c', - version : '@LIBPSL_VERSION_MAJOR@.@LIBPSL_VERSION_MINOR@.@LIBPSL_VERSION_PATCH@', - meson_version : '>=0.47.0') - -# Derived from LIBPSL_SO_VERSION in configure.ac -lt_version = '5.3.2' - -cc = meson.get_compiler('c') - -enable_runtime = get_option('runtime') -enable_builtin = get_option('builtin') - -# We need to know the build type to determine what .lib files we need on Visual Studio -# for dependencies that don't normally come with pkg-config files for Visual Studio builds -buildtype = get_option('buildtype') - -notfound = dependency('', required : false) -libidn2_dep = notfound -libicu_dep = notfound -libidn_dep = notfound -libunistring = notfound -networking_deps = notfound - -# FIXME: Cleanup this when Meson gets 'feature-combo': -# https://github.com/mesonbuild/meson/issues/4566 -# Dependency fallbacks would help too: -# https://github.com/mesonbuild/meson/pull/4595 -if ['libidn2', 'auto'].contains(enable_runtime) or ['libidn2', 'auto'].contains(enable_builtin) - libidn2_dep = dependency('libidn2', required : false) - if not libidn2_dep.found() and cc.has_header('idn2.h') - libidn2_dep = cc.find_library('idn2', required : false) - endif - if libidn2_dep.found() - if enable_runtime == 'auto' - enable_runtime = 'libidn2' - endif - if enable_builtin == 'auto' - enable_builtin = 'libidn2' - endif - elif [enable_runtime, enable_builtin].contains('libidn2') - error('You requested libidn2 but it is not installed.') - endif -endif - -if ['libicu', 'auto'].contains(enable_runtime) or ['libicu', 'auto'].contains(enable_builtin) - libicu_dep = dependency('icu-uc', required : false) - if not libicu_dep.found() and cc.has_header('unicode/ustring.h') - # MSVC: the debug configuration of ICU generated the libraries with d suffix - # we must handle this and search for the right library depending on the - # build type. Note debugoptimized is just a release build with .pdb files enabled - if cc.get_id() == 'msvc' and buildtype == 'debug' - libicu_dep = cc.find_library('icuucd', required : false) - else - libicu_dep = cc.find_library('icuuc', required : false) - endif - endif - if libicu_dep.found() - if enable_runtime == 'auto' - enable_runtime = 'libicu' - endif - if enable_builtin == 'auto' - enable_builtin = 'libicu' - endif - elif [enable_runtime, enable_builtin].contains('libicu') - error('You requested libicu but it is not installed.') - endif -endif - -if ['libidn', 'auto'].contains(enable_runtime) or ['libidn', 'auto'].contains(enable_builtin) - libidn_dep = dependency('libidn', required : false) - if not libidn_dep.found() and cc.has_header('idna.h') - libidn_dep = cc.find_library('idn', required : false) - endif - if libidn_dep.found() - if enable_runtime == 'auto' - enable_runtime = 'libidn' - endif - if enable_builtin == 'auto' - enable_builtin = 'libidn' - endif - elif [enable_runtime, enable_builtin].contains('libidn') - error('You requested libidn but it is not installed.') - endif -endif - -if libidn2_dep.found() or libidn_dep.found() - # Check for libunistring, we need it for psl_str_to_utf8lower() - libunistring = cc.find_library('unistring') -endif - -if host_machine.system() == 'windows' - networking_deps = cc.find_library('ws2_32') -endif - -if enable_runtime == 'auto' - enable_runtime = 'no' -endif -if enable_builtin == 'auto' - enable_builtin = 'no' -endif - -config = configuration_data() -config.set_quoted('PACKAGE_VERSION', meson.project_version()) -config.set('WITH_LIBIDN2', enable_runtime == 'libidn2') -config.set('WITH_LIBICU', enable_runtime == 'libicu') -config.set('WITH_LIBIDN', enable_runtime == 'libidn') -config.set('BUILTIN_GENERATOR_LIBIDN2', enable_builtin == 'libidn2') -config.set('BUILTIN_GENERATOR_LIBICU', enable_builtin == 'libicu') -config.set('BUILTIN_GENERATOR_LIBIDN', enable_builtin == 'libidn') -config.set('HAVE_UNISTD_H', cc.check_header('unistd.h')) -config.set('HAVE_STDINT_H', cc.check_header('stdint.h')) -config.set('HAVE_ALLOCA_H', cc.check_header('alloca.h')) -config.set('HAVE_DIRENT_H', cc.check_header('dirent.h')) -config.set('HAVE_ALLOCA', cc.has_function('alloca')) -config.set('HAVE_STRNDUP', cc.has_function('strndup')) -config.set('HAVE_CLOCK_GETTIME', cc.has_function('clock_gettime')) -config.set('HAVE_FMEMOPEN', cc.has_function('fmemopen')) -config.set('HAVE_NL_LANGINFO', cc.has_function('nl_langinfo')) -configure_file(output : 'config.h', configuration : config) - -configinc = include_directories('.') -includedir = include_directories('include') - -psl_distfile = get_option('psl_distfile') -psl_file = get_option('psl_file') -if psl_file == '' - psl_file = join_paths(meson.current_source_dir(), 'list', 'public_suffix_list.dat') -endif -psl_test_file = get_option('psl_testfile') -if psl_test_file == '' - psl_test_file = join_paths(meson.current_source_dir(), 'list', 'tests', 'tests.txt') -endif - -python = import('python').find_installation() -pkgconfig = import('pkgconfig') - -if cc.get_id() == 'msvc' - if not cc.has_header_symbol('stdio.h', 'snprintf') - if cc.has_header_symbol('stdio.h', '_snprintf') - add_project_arguments('-Dsnprintf=_snprintf', language: 'c') - endif - endif - if cc.has_header_symbol('malloc.h', '_alloca') - add_project_arguments('-Dalloca=_alloca', language: 'c') - endif -endif - -subdir('include') -subdir('src') -subdir('tools') -subdir('tests') -subdir('fuzz') -subdir(join_paths('docs', 'libpsl')) diff --git a/src/meson.build b/src/meson.build index 00cbb61..1d2b38f 100644 --- a/src/meson.build +++ b/src/meson.build @@ -16,11 +16,18 @@ cargs = [ '-DPSL_DISTFILE="@0@"'.format(psl_distfile), ] +fs = import('fs') +libtool_version_info = fs.read(meson.project_source_root() / 'libtool_version_info.txt').strip().split(':') +libtool_version_current = libtool_version_info[0].to_int() +libtool_version_revision = libtool_version_info[1].to_int() +libtool_version_age = libtool_version_info[2].to_int() +library_version = '@0@.@1@.@2@'.format(libtool_version_current - libtool_version_age, libtool_version_age, libtool_version_revision) + libpsl = library('psl', sources, suffixes_dafsa_h, include_directories : [configinc, includedir], c_args : cargs, dependencies : [libidn2_dep, libidn_dep, libicu_dep, libunistring, networking_deps, libiconv_dep], - version: lt_version, + version: library_version, install: true, ) diff --git a/version.txt b/version.txt new file mode 100644 index 0000000..a67ceba --- /dev/null +++ b/version.txt @@ -0,0 +1 @@ +0.21.1