1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-05-02 16:49:41 +02:00

153 Commits

Author SHA1 Message Date
Dmitry Vedenko
cb1f8b6c34 Adds lib-sentry-report 2021-06-08 08:08:26 -07:00
Dmitry Vedenko
185d1d5ecc Adds audacity_header_only_library 2021-06-08 08:08:26 -07:00
Paul Licameli
e785c77226 CopyLibs.cmake, for macOS: visit unique EDGES (not nodes)...
... 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.
2021-06-06 22:45:28 -04:00
Paul Licameli
e83c66ee50 Improve CopyLibs.cmake fix from 7d30537 for nonrecursive cases...
... 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!)
2021-06-05 22:07:37 -04:00
Paul Licameli
7d30537374 Fix build time infinite recursion in CopyLibs.cmake 2021-06-03 09:40:48 -04:00
Dmitry Vedenko
37fba65d1b Adds lib-uuid
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
2021-06-02 07:41:54 -07:00
Dmitry Vedenko
1cd4bef4db Adds a workaround for Conan issue 8025, affecting libjpeg-turbo compilation on AppleSilicon Macs 2021-05-31 14:03:24 +03:00
Dmitry Vedenko
7c1f843322 Use libjpeg-turbo as a wxWidgets dependecy
Turns out, libjpeg is downloaded over plain HTTP from the official IJG site. It is now replaced with libjpeg-turbo.
2021-05-31 02:08:17 -07:00
Dmitry Vedenko
68bd49da87 Copy the library to the desired location after the build 2021-05-28 04:04:40 -07:00
Dmitry Vedenko
6e11fdaf14 Use expat version that builds with autotools 2021-05-26 09:45:20 -07:00
Dmitry Vedenko
4dc4e86863 Make lib-network-manager an opt-in library 2021-05-26 07:41:47 -07:00
Paul Licameli
fdd20452ea macOS builds: otool -D should not give absolute path of libraries 2021-05-26 06:18:42 -07:00
Dmitry Vedenko
4e6a1a81a9 Updates the way shared libraries are hadled
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
2021-05-26 12:46:45 +03:00
Dmitry Vedenko
733cf89cff Adds curl to the list of system libraries
Fixes macOS build with system libcurl
2021-05-26 12:46:45 +03:00
Dmitry Vedenko
45e4627ac9 Fixes PKG_CONFIG spelling 2021-05-26 12:46:45 +03:00
Dmitry Vedenko
851d8b2272 Add wxwidgets::base to a list of base modules 2021-05-26 12:46:45 +03:00
Dmitry Vedenko
3a04034d84
Use Audacity patched versions of libmad and libid3tag (#928)
* Use Audacity versions of libmad and libid3tag

* Properly setup zlib in libid3tag

* Fixes the wxBase target for system wxWidgets
2021-05-24 23:11:05 +03:00
Dmitry Vedenko
ad7faee418 Add wxBase, so the master will build fine 2021-05-24 06:53:53 -07:00
Dmitry Vedenko
f66381b967 Removes previously vendored libraries from the source tree 2021-05-24 06:53:53 -07:00
Dmitry Vedenko
8aca9d02de Add the first Conan-based dependecies
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
2021-05-24 06:53:53 -07:00
Dmitry Vedenko
9c8185545d Adds an environment to check, how well Linux builds with system packages
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`.
2021-05-24 06:53:53 -07:00
Paul Licameli
26217c22f1 Distinguish nodes in modules.dot.svg that depend directly on wxBase 2021-05-21 22:09:57 -04:00
Paul Licameli
1f71ef4300 New interface library target wxBase restricts view of wxWidgets...
... 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.
2021-05-21 21:51:58 -04:00
Paul Licameli
5a362c308c Correct the placement of extension modules in the Windows build tree 2021-05-18 20:51:55 -04:00
Paul Licameli
42bddca151 Fix transitive dependencies via interface libaries 2021-05-18 00:21:48 -04:00
Paul Licameli
7cf78c15dc non-Win, non-Debug builds: strip module file symbols to save space...
... This only strips the symbols that do not have external linkage
2021-05-18 00:16:44 -04:00
Paul Licameli
dfbf3d25c1 Support for our own libraries, distinct from modules 2021-05-18 00:12:44 -04:00
Paul Licameli
b52192c4c4 Fix builds with precompiled headers, which broke at 794f4e5 2021-05-12 13:02:29 -05:00
Paul Licameli
d51f505cd9 Define Audacity version constants in CMake not Audacity.h 2021-05-10 00:05:23 -05:00
Paul Licameli
794f4e5877 Inclusion of the correct config header on command line using CMake 2021-05-10 00:05:23 -05:00
Paul Licameli
229b82a502 Move definitions of safenew, PROHIBITED, _DEBUG into CMake 2021-05-10 00:05:23 -05:00
Paul Licameli
29a657bc77 CMake function addlib can be called multiply for the same library 2021-05-06 09:15:22 -05:00
Paul Licameli
ec3d2424a5 addlib supplies absolute path to add_subdirectory...
... not assuming that it is invoked from cmake-proxies/CMakeLists.txt

This will allow modules to use lib-src libraries, and even for a module to be
the sole user of one of them.

So addlib lines may be moved out of cmake-proxies/CMakeLists.txt, when no
longer needed to build the reduced executable without the modules.
2021-05-06 09:15:22 -05:00
Paul Licameli
dd1ce8dd63 Move definition of CMake function addlib, unchanged 2021-05-06 09:15:22 -05:00
Paul Licameli
9fb32528d6 Generate *_API compiler definitions for modules...
... So mod-foo defines FOO_API properly on the command line, for use in its
public header files; on Windows, appropriately expanding one way when compiling
the library, another way when compiling other code that uses it, so that all
will link correctly.
2021-05-06 09:15:22 -05:00
Paul Licameli
5844b2090a Generate a picture of module dependencies at configure time 2021-05-06 09:15:22 -05:00
Paul Licameli
1f6efefdf6 Fix math constants on Windows, such as M_PI, and min and max 2021-05-06 09:15:22 -05:00
Paul Licameli
fe8659f435 Separate CMake function for pervasive C++ flags, reuse it in modules 2021-05-06 09:15:22 -05:00
Paul Licameli
3943d1479f Each module defines an interface target that other modules may use...
... Solving some problems of linking modules dependent on other modules in
Unix
2021-05-06 09:15:22 -05:00
Paul Licameli
ee344aa6c9 Modules expose transitive link dependencies...
... which will simplify CMakeLists when modules depend on other modules
2021-05-06 09:15:22 -05:00
Paul Licameli
ca7d96f20a Transitive link dependencies via Audacity simplify module CMakeLists 2021-05-06 09:15:22 -05:00
Paul Licameli
938bbeb4f9 cmake function audacity_module abstracts common module setup steps...
... But leaving the wxDEBUG definition in each.  It should not be in the reused
function.
2021-05-06 09:15:22 -05:00
Paul Licameli
e653b4aaf8 Eliminate Experimental.h, configure compile options instead...
... This makes it impossible to forget to include the EXPERIMENTAL definitions
(such as when cutting and pasting code) and so get unintended quiet changes of
behavior.

The EXPERIMENTAL flags are now specified instead in new file Experimental.cmake
2021-04-27 12:40:07 -04:00
SteveDaulton
b4b5cc8124 Bug 2757 - No support for Jack Audio System 2021-04-26 15:45:40 +01:00
John Colket
5b4cd040eb Update Windows build instructions 2021-03-17 16:53:51 +00:00
Leland Lucius
c9a8eb0771 Fix suil library names for Linux/macOS 2021-02-26 00:52:31 -06:00
Leland Lucius
9543dd36c4 Update libsbsms to 2.2.0
Just a minor change that just bumps the libsbsms version.
2021-02-01 13:21:02 -06:00
Leland Lucius
a5609e44d0 Use version 2.1.0 of libsbsms
This is actually the exact code we already use, but Clayton has
set up a github repo for the release to make it available to
distros.
2021-02-01 10:12:06 -06:00
luzpaz
7a3bdcf3f2
Fix typos (user facing and non-user facing) (#727)
Found via `codespell v2.1.dev0`  
`codespell -q 3 -S *.po,./lib-src -L parm,parms,toke`
2021-01-24 09:46:08 +00:00
Leland Lucius
dbd517751a Revert "Force opening in low resolution on the Mac"
This reverts commit b6392f23d88d729add9d152c82c6db13e1125f9a.

Easy way didn't work out...must look for alternative.
2021-01-19 10:59:50 -06:00