When `audacity_conan_allow_prebuilt_binaries` is turned on,
the dependecies that are managed by Conan
will be built from the source code every time
cmake configuartion changes
Fixes configure.sh
Fixes Windows code signing
Fixes an issue with conan cache on windows
Fixes build manual script
Fixes build manual
Remove unused props
Use long options
Yet another manual fix
Fixes iss
Break the workflow into smaller stages (Configure, Build, Install,
Package, etc.) so that you can see exactly which stage failed in the
GitHub Actions run log.
Create a separate Bash CI script for each job stage (configure.sh,
build.sh, install.sh, package.sh, etc.) to reduce the size of the main
YAML workflow file and enable Bash syntax highlighting.
Close#917
... This broke at commit 938bbeb with changes in CMake scripts.
This can be fixed by invoking CopyLibs.cmake for modules too.
This affects only the macOS build.
... in the graph of library dependencies.
Necessary to avoid crashes on startup loading dynamic libraries, but sufficient
to avoid excessive build times with many libraries.
... When the graph of library dependencies is not recursive but complicated,
a combinatorial explosion of paths could make the post-build step not infinite
but very long (80 minutes in one of my experimental refactoring branches!)
Adds a small library to generate UUID values. This library will be used in Sentry error reporting
Replace constructor cast with static_cast
Removes a noexcept sneaked in
Adds documentation and some code review fixes
Fixes doxygen
1. We put all shared libraries into one place. Both conan and locally built
2. We invoke CopyLibs to copy the libraries to a proper location and to correctly set the RPATH
Fixes CopyLibs script on Windows
Fixes CopyLibs.cmake for Linux
Fixes CopyLibs on macOS
Fixes CopyLibs on macOS
add_conan_lib cmake function is defined, that allows to add a dependency using Conan with two possible system fallbacks:
1. pkg_check_modules is invoked, if `PGK_CONFIG ...` is present
2. find_package is invoked if `FIND_PACKAGE_OPTIONS` is present and `pkg_check_modules` has failed
If `ALWAYS_ALLOW_CONAN_FALLBACK` is present - `obey_system_dependencies` will be ignored for the package
Currently, the following dependencies are retrieved using Conan:
* zlib
* expat
* wxwidgets
* libmp3lame
* libid3tag
* libmad
The last three libraries are included in this commit, as they depend on zlib.
Properly pass **arch** and **os.version** to Conan
A special mode `audacity_obey_system_dependencies` is added, so the build will fail if we could not build against a system package for some reason.
The following packages are marked for the local build now:
* **wxWidgets**: Ubuntu lacks support for 3.1.3. We can't build against 3.0 branch.
* **portaudio**: there are issues, that prevent using a system version of portaudio.
* **sqlite3**: Ubuntu package is very dated; we care about the performance and stability.
* **nyquist**: Ubuntu has no package available.
* **vamp**: Ubuntu has no development package available.
* **portmixer**: Ubuntu has no package available.
* **sbsms**: Ubuntu package is very dated; we care about the performance and stability.
We use docker to create a clean build environment. Currently, `pkg-config` is used to locate the system libraries. There are few issues with `pkg-config` on Ubuntu:
* It does not work with `lame` and `portmidi`.
* The packaged files for `id3tag` and `mad` have wrong version.
We fix such cases by copying the
into `/usr/local/lib`.
... It will be used as a target link library of some lower level Audacity
libraries, to be separated from the executable.
These libraries will have link time dependency only on the wxBase subset of
non-monolithic wxWidgets builds.
More, they are restricted to use only a proper subset of wxBase functionality:
they are prevented, at compile time, not only from using any graphical user
interface, but also from using the main event loop or global application object
-- though these things are also in wxBase.
They may still use things like strings, files, threads, atomics, and other
utilities that may have modern C++ standard library equivalents.
It would be preferable to use those, but it is not a priority to make those
rewrites.