1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-17 08:30:06 +02:00

48 Commits

Author SHA1 Message Date
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
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
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
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
Leland Lucius
b6392f23d8 Force opening in low resolution on the Mac 2021-01-18 13:53:50 -06: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
1405f3a41e AUP3: Add aup3 to the Info.plist for the Mac 2020-07-06 18:59:22 -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
Paul Licameli
04a0eb4370 Fix comments 2020-06-14 13:44:52 -04:00
Leland Lucius
4b1d5c376d Bug 2400 - Mac: Zoomed in, playback meters slow to respond. 2020-05-10 02:36:28 -05:00
Leland Lucius
4b8f923fd1 Fix GIT revision when build directory is outside source tree 2020-04-24 23:39:12 -05:00
Leland Lucius
f14a3dd90f Don't need to show the command any longer
Seems to be working just fine after several pulls
so don't need to see it anymore.
2020-03-11 23:50:32 -05:00
Leland Lucius
66aae0900b Ease CMake and legacy build coexistence
Cliff noticed that the CMake git ident was not being updated when
pulling new changes.  This was because it was getting captured at
configuration time and, even if you pull more changes, the CMake
configuration may not be redone automatically if the build files
weren't also changed.

So, this adds a new target to get the information at build time
instead.
2020-03-11 22:31:19 -05:00
Leland Lucius
caab2a56c9 Remove gettext download for Mac in CMake build
And added a python version that will be used on all platforms
when a suitable msgfmt isn't installed.  (As long as python
is installed.)

Extracted all the Audacity specific functions from main cmake
list and moved them to their own module.

Rearrange the main cmake module a bit and misc. cleanup.
2020-02-29 01:49:55 -06:00
Leland Lucius
3545097fe9 Fix CMake/wxWidgets link issue
This corrects linking of the wxWidgets libraries when there's multiple
copies and the desired one is later in the search path.  This can affect
any non-Windows system that doesn't have it's wxWidgets in "standard"
libraries (like our wxWidgets builds on the Mac).

The wrong wxWidgets libraries can be picked up by the linker if other
"-L" arguments appear before the wxWidgets specific on.  This can happen
if you have something like Homebrew installed and CMake finds one of the
libraries (like libogg) installed.  It will put a "-L/usr/local/lib" in
the linker arguments before the "-L/usr/local/x86_64" wxWidgets flag,
and if there happens to be wxWidgets libs in /usr/local/lib, the linker
will pull the wxWidgets libs from /usr/local/lib...not what was wanted.
2020-02-24 13:45:16 -06:00
Leland Lucius
2ec12c150b Fix multi-config builds
Hopefully, this corrects the handling of the different
configs like Debug, Release, etc, when dealing with
multi-config generators.
2020-02-06 20:10:29 -06:00
Leland Lucius
2e113ba0a5 More cmake updates
Uses system libraries by default with a fallback to local
Adds the Wrapper build on OSX
Adds mod_script_pipe
Adds ffmpeg
Some additional cleanup
2020-02-05 11:10:22 -06:00
Leland Lucius
e2a7204403 Provides to use the system wxWidgets install
The default is to use the system one if found.  If the
WXWIN environment variable is set and points to a valid
wxWidgets tree, that will be used.  Otherwise, it will
search the platform specific locations.

You can use a local library instead with:

   cmake -Duse_system_wxwigets=no ...

In this case it will look for the WXWIN environment variable
and use that or it will download the Audacity specific wxWidgets
source.  In both cases, wxWidgets will be built as part of the
Audacity project.
2020-02-03 19:05:32 -06:00
Leland Lucius
6217351a12 Updates the cmake build system
It's still has some work, but it successfully builds on
all 3 main platforms.  Some of the outstanding items
include:

   Install target testing (mostly important for Linux)
   CMakeList clean up and comments
   Debug and Release build verification
   Audit of compile/link options
   Need a Mac signed and notarized build
   (and probably more)
2020-02-03 00:39:43 -06:00
James Crook
94a731982d Add cotire (compile time reducer) to CMake
https://github.com/sakra/cotire

Currently we only use it for precompiled headers for Audacity src.
There is a 'unity' build, but it needs work by us to fix it for duplicate
definition.
2018-04-01 09:23:11 +01:00