From 21d78a4267017b2beafbe33c03faab3f22b02a18 Mon Sep 17 00:00:00 2001 From: Arun Raghavan Date: Tue, 20 Oct 2020 17:22:26 -0400 Subject: build: Make packages versioned Since we cannot rely on the API to be stable upstream, let's start making the pkg-config, library, and include dir have a version suffix. This will allow different downstream projects depending on us to independently switch versions without packagers having to jump through hoops. --- meson.build | 41 +++++++++++++++++++++-------- webrtc/api/meson.build | 2 +- webrtc/modules/audio_coding/meson.build | 12 ++++----- webrtc/modules/audio_processing/meson.build | 8 +++--- webrtc/rtc_base/meson.build | 2 +- webrtc/system_wrappers/meson.build | 2 +- 6 files changed, 43 insertions(+), 24 deletions(-) diff --git a/meson.build b/meson.build index a15f2c6..6284262 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ -project('webrtc-audio-processing', 'c', 'cpp', - version : '0.4.0', +project('webrtc-audio-processing-1', 'c', 'cpp', + version : '1.0', meson_version : '>= 0.52', default_options : [ 'warning_level=1', 'buildtype=debugoptimized', @@ -8,7 +8,26 @@ project('webrtc-audio-processing', 'c', 'cpp', ] ) -soversion = 0 +version_split = meson.project_version().split('.') +# This will be incremented each time a breaking API change occurs +major_version = version_split[0] +# This will be incremented when there are backwards-compatible changes +minor_version = version_split[1] + +# We maintain per-package versions to not have to break API for one if only the +# other has breaking changes + +apm_major_version = major_version +apm_minor_version = minor_version +apm_version = apm_major_version + '.' + apm_minor_version +apm_project_name = 'webrtc-audio-processing-' + apm_major_version + +ac_major_version = major_version +ac_minor_version = minor_version +ac_version = ac_major_version + '.' + ac_minor_version +ac_project_name = 'webrtc-audio-coding-' + ac_major_version + +include_subdir = meson.project_name() cc = meson.get_compiler('c') cpp = meson.get_compiler('cpp') @@ -131,11 +150,11 @@ subdir('webrtc') pkgconfig = import('pkgconfig') pkgconfig.generate( - name: 'webrtc-audio-processing', + name: apm_project_name, description: 'WebRTC Audio Processing library', - version: meson.project_version(), - filebase: 'webrtc-audio-processing', - subdirs: 'webrtc_audio_processing', + version: apm_major_version + '.' + apm_minor_version, + filebase: apm_project_name, + subdirs: include_subdir, extra_cflags: [ '-DWEBRTC_LIBRARY_IMPL', ] + platform_cflags, @@ -143,11 +162,11 @@ pkgconfig.generate( ) pkgconfig.generate( - name: 'webrtc-audio-coding', + name: ac_project_name, description: 'WebRTC Audio Coding library', - version: meson.project_version(), - filebase: 'webrtc-audio-coding', - subdirs: 'webrtc_audio_processing', + version: ac_major_version + '.' + ac_minor_version, + filebase: ac_project_name, + subdirs: include_subdir, extra_cflags: [ '-DWEBRTC_LIBRARY_IMPL', ] + platform_cflags, diff --git a/webrtc/api/meson.build b/webrtc/api/meson.build index 1d26709..6db5400 100644 --- a/webrtc/api/meson.build +++ b/webrtc/api/meson.build @@ -28,7 +28,7 @@ api_headers = [ foreach h : api_headers install_headers( join_paths(h[0], h[1]), - subdir: join_paths('webrtc_audio_processing', 'api', h[0]) + subdir: join_paths(include_subdir, 'api', h[0]) ) endforeach diff --git a/webrtc/modules/audio_coding/meson.build b/webrtc/modules/audio_coding/meson.build index 983d3fb..00e503d 100644 --- a/webrtc/modules/audio_coding/meson.build +++ b/webrtc/modules/audio_coding/meson.build @@ -30,30 +30,30 @@ webrtc_audio_coding_sources = [ 'codecs/isac/main/source/transform.c', ] -libwebrtc_audio_coding = library('webrtc_audio_coding', +libwebrtc_audio_coding = library(ac_project_name, webrtc_audio_coding_sources, dependencies: [base_dep, api_dep, common_audio_dep, system_wrappers_dep, fft_dep] + common_deps, include_directories: webrtc_inc, c_args: common_cflags, cpp_args: common_cxxflags, - soversion: soversion, + soversion: ac_minor_version, install: true ) webrtc_audio_coding_dep = declare_dependency( link_with: libwebrtc_audio_coding, include_directories: webrtc_inc, - version: meson.project_version() + version: ac_version ) install_headers(['codecs/isac/bandwidth_info.h'], - subdir: 'webrtc_audio_processing/modules/audio_coding/codecs/isac' + subdir: join_paths(include_subdir, 'modules', 'audio_coding', 'codecs', 'isac') ) install_headers(['codecs/isac/main/source/settings.h'], - subdir: 'webrtc_audio_processing/modules/audio_coding/codecs/isac/main/source' + subdir: join_paths(include_subdir, 'modules', 'audio_coding', 'codecs', 'isac', 'main', 'source') ) install_headers(['codecs/isac/main/include/isac.h'], - subdir: 'webrtc_audio_processing/modules/audio_coding/codecs/isac/main/include' + subdir: join_paths(include_subdir, 'modules', 'audio_coding', 'codecs', 'isac', 'main', 'include') ) diff --git a/webrtc/modules/audio_processing/meson.build b/webrtc/modules/audio_processing/meson.build index 8229eb3..6e17942 100644 --- a/webrtc/modules/audio_processing/meson.build +++ b/webrtc/modules/audio_processing/meson.build @@ -191,10 +191,10 @@ if have_neon endif install_headers(webrtc_audio_processing_include_headers, - subdir: 'webrtc_audio_processing/modules/audio_processing/include' + subdir: join_paths(include_subdir, 'modules', 'audio_processing', 'include') ) -libwebrtc_audio_processing = library('webrtc_audio_processing', +libwebrtc_audio_processing = library(apm_project_name, webrtc_audio_processing_sources, dependencies: [ base_dep, @@ -209,12 +209,12 @@ libwebrtc_audio_processing = library('webrtc_audio_processing', include_directories: webrtc_inc, c_args: common_cflags + apm_flags, cpp_args: common_cxxflags + apm_flags, - soversion: soversion, + soversion: apm_minor_version, install: true ) webrtc_audio_processing_dep = declare_dependency( link_with: libwebrtc_audio_processing, include_directories: webrtc_inc, - version: meson.project_version() + version: apm_version ) diff --git a/webrtc/rtc_base/meson.build b/webrtc/rtc_base/meson.build index 5977c7e..28526e9 100644 --- a/webrtc/rtc_base/meson.build +++ b/webrtc/rtc_base/meson.build @@ -47,7 +47,7 @@ endif foreach h : base_headers install_headers( join_paths(h[0], h[1]), - subdir: join_paths('webrtc_audio_processing', 'rtc_base', h[0]) + subdir: join_paths(include_subdir, 'rtc_base', h[0]) ) endforeach diff --git a/webrtc/system_wrappers/meson.build b/webrtc/system_wrappers/meson.build index 22a9a1b..b969413 100644 --- a/webrtc/system_wrappers/meson.build +++ b/webrtc/system_wrappers/meson.build @@ -12,7 +12,7 @@ system_headers = [ ] install_headers(system_headers, - subdir: 'webrtc_audio_processing/system_wrappers/include' + subdir: join_paths(include_subdir, 'system_wrappers', 'include') ) libsystem_wrappers = static_library('system_wrappers', -- cgit v1.2.1