Commit Graph

135 Commits

Author SHA1 Message Date
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 b6392f23d8.

Easy way didn't work out...must look for alternative.
2021-01-19 10:59:50 -06:00
Leland Lucius b6392f23d8 Force opening in low resolution on the Mac 2021-01-18 13:53:50 -06:00
Paul Licameli 8c8e4cdb7d Add debug.c to libid3tag sources in CMakeLists.txt 2020-11-26 17:01:24 -05:00
Leland Lucius 1f23e82155 Fix Xcode 12.0 build 2020-09-23 22:47:19 -05:00
Leland Lucius 90a69a0173 Bug 2535 - Audacity fails to build on 32-bit Linux 2020-09-06 03:13:16 -05:00
Leland Lucius 8943494f8a AUP3: Better space usage calculations
Several improvements in determining how much actual disk space a
sampleblock uses. This allows us to provide how much space will
be recovered when using File -> Compact Project.

In addition, the History window now provides better space estimates.
2020-08-01 04:25:42 -05:00
Leland Lucius 6fef14dd08 AUP3: Rework Compact Project menu item and AutoRecoverDialog
Plus a couple of fixes that prevent leaving temporary files
after a project is loaded.
2020-07-26 02:01:37 -05:00
Leland Lucius e07320be9e Fix Windows build 2020-07-25 13:04:48 -05:00
Leland Lucius 71b4e932ad Fix debug/release builds on Mac 2020-07-25 03:40:15 -05:00
Leland Lucius d2b4a0e488 AUP3: Put checkpointing in a separate thread
This is highly experimental.  It's defers most checkpointing
to a separate thread to see if we get better throughput and
less choppiness when applying effects.
2020-07-19 03:28:02 -05:00
Leland Lucius 93d9303c3d AUP3: Many corrections and (safe) speed ups
This reenables synchronous mode by default.  However, for processing
where a power cut or crash can be tolerated, synchronous and journaling
are disabled.  Once the processing is complete, they are reenabled.

Types of processing that are like this are "Save As", "Backup Project",
and "Vacuuming". They all write to a separate project file while
running, so the real project file is safe.

Unfortunately, effects are back to be slow and sluggish.

I believe I've address all of the weird file corruption issues and
I'll continue to continue testing for these.
2020-07-17 16:17:42 -05:00
Michael Pannekoek c0ec20a641
fix asio build on windows (#615)
fix check for if ASIOSDK_DIR is defined, according to https://cmake.org/cmake/help/latest/variable/ENV.html
2020-07-17 01:52:24 -05:00
Leland Lucius 5bc3ae659c AUP3: Added AUP3 importer and improved progress dialogs 2020-07-15 01:32:48 -05:00
Leland Lucius 1ec7fd56c1 Re-add ASIO build option 2020-07-13 23:37:26 -05:00
Leland Lucius 5b41115bd0 AUP3: Mostly rework of CopyTo()
It now uses VACUUM INTO instead of the SQLite backup API
in hopes that the copies will be smaller. And VACUUM INTO
is "supposed" to be faster, but time will tell.  It's easy
to put the backup API usage back in.

This also fixes a bit I missed with redoing the orphan block
handling that was reported by Paul.

And finally, it renames the AutoRecovery.cpp/.h files and AutoSaveFile
class to ProjectSerializer since the AutoSaveFile class is being
used for regular project documents now and it doesn't write to a
file anymore.

If anyone has a better idea for a name other than ProjectSerializer
feel free to change it.  I hate naming things.
2020-07-10 00:50:52 -05:00
Leland Lucius 1405f3a41e AUP3: Add aup3 to the Info.plist for the Mac 2020-07-06 18:59:22 -05:00
Leland Lucius 6c2cd2057c Maybe fix the Action build for Linux 2020-07-06 02:48:33 -05:00
Leland Lucius 2084c39046 Fix build Mac and Linux 2020-07-05 19:25:06 -05:00
Leland Lucius c1407cdca9 Force use of our wxWidgets and fix RPATH handling 2020-07-05 13:39:57 -05:00