Preliminary tests show it to be a bit faster than the default
4KB. For a simple example, generate 2-hour chirp dropped from
11 seconds to 7 seconds. Not a lot, but...
If you try to build local SBSMS with CMake for i686, you get many error messages like this one:
audacity/lib-src/sbsms/src/fft.h:346:29: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
The solution is to add the option provided by SSE_FLAGS.
So, I replicated in this PR the same fix made for local soundtouch and LAME library.
The last commit resolved this requirement. I'd really like to
remove ALL of the old dynamic loading code from ExportMP3 as well,
but a task for another day...
* [CMAKE] Portaudio: do not activate OSS on Windows
I had a strange error when building the local portaudio library with MinGW under msys2.
The error was caused by the file sys/soundcard.h that was found somewhere in the path, because use_pa_oss is always activated regardless the platform.
So, in my opinion it is better to not activate this option if the platform is Windows.
Afterall, it is useless in this case.
* [CMAKE] Portaudio: move also remaining OSS code
As you can see from the original CMakeLists.txt into the sources of Portaudio, the file pa_x86_plain_converters.c can be compiled only with Visual C++, so it should not be include if there is not the Microsoft Compiler.
After compiling Audacity with MinGW, a strange message appeared on the console after the executable was launched:
# ./Audacity.exe
Usage: C:\msys64\home\Carlo\a\bin\Audacity.exe [OPTION]... INPUT...
Validate RDF data
-h Display this help and exit
-l Print errors on a single line.
-v Display version information and exit
Validate RDF data. This is a simple validator which checks
that all used properties are actually defined. It does not do
any fancy file retrieval, the files passed on the command line
are the only data that is read. In other words, you must pass
the definition of all vocabularies used on the command line.
The problem happens because the file lv2/sord/src/sord_validate.c contains a main() function that was called by crt startup code instead of the one in the main sources of Audacity. The solution is to not include this unneeded file.
If you try to build local LAME with CMake for i686, you get many error messages like this one:
C:/cygwin64/home/Carlo/audacity/lib-src/libmp3lame/vector/xmm_quantize_sub.c: In function 'init_xrpow_core_sse':
C:/cygwin64/home/Carlo/audacity/lib-src/libmp3lame/vector/xmm_quantize_sub.c:72:18: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
The solution is to add the option provided by SSE_FLAGS.
So, I replicated in this PR the same fix made for local soundtouch library.
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.
When doing the final link of Audacity executable on Cygwin, many errors like this one were printed on the console:
ld: ../lib/audacity/libportmidi.a(portmidi.c.o):portmidi.c:(.text+0x3f): undefined reference to `pm_alloc'
This happened because some files were missing since Cygwin name was not included together with other unix platforms.
* [CMAKE] Portaudio: add unix paths for Cygwin
When building on Cygwin, I got this error:
/home/carlo/audacity/lib-src/portaudio-v19/src/hostapi/oss/pa_unix_oss.c:90:10: fatal error: pa_unix_util.h: No such file or directory
90 | #include "pa_unix_util.h"
this happened because some additional search path was not included.
* [CMAKE] Portaudio: add missing Unix files in Cygwin
When doing the final link of Audacity executable on Cygwin, many errors like this one were printed on the console.
/usr/lib/gcc/x86_64-pc-cygwin/9.2.0/../../../../x86_64-pc-cygwin/bin/ld: CMakeFiles/Audacity.dir/AudioIO.cpp.o:AudioIO.cpp:(.text+0x17a): undefined reference to `PaUtil_GetTime'
This happened because some files were missing since Cygwin name was not included together with other unix platforms.
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.
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.
Forgot to actually exclude mod-null and mod-nyq-bench from the
build.
Fixed a few typos.
And removed "zip" from the package install on Ubuntu since it's
not needed anymore.