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.
This commit is contained in:
Alexey Rochev 2022-01-06 02:08:32 +03:00
parent 4afd9e705b
commit 0ecc788797
6 changed files with 14 additions and 163 deletions

View File

@ -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])

1
libtool_version_info.txt Normal file
View File

@ -0,0 +1 @@
8:3:3

View File

@ -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')

View File

@ -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'))

View File

@ -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,
)

1
version.txt Normal file
View File

@ -0,0 +1 @@
0.21.1