13
0
Commit Graph

686 Commits

Author SHA1 Message Date
c53b19c039
Add zeroconf/mdns support 2022-12-02 17:32:11 +01:00
2f68e0df5b
Remove unused define CANVAS_COMPATIBILITY (3/3) 2022-11-19 21:49:32 +01:00
d521c2ede6
src-tree cleanup: separate surfaces from libraries
libardourcp and now libardour_midisurface are not control
surfaces, but helper libraries for those.
They need to be deployed to the library folder (shared between
ctrl surfaces) and not scanned as ctrl surfaces at runtime.
2022-11-19 00:09:17 +01:00
Mads Kiilerich
e1e8207486
configure: consistently use capitalization of help texts 2022-11-04 19:20:19 +01:00
Mads Kiilerich
8e7ef0d42c
PulseAudio: use correct casing
This will also change the internal backend name, so it will miss the
previous 'config' setting '<State backend="Pulseaudio" ...'` and the
session file's '<EngineHints backend="Pulseaudio" ...'. But that is no
big deal after upgrading. Especially after the backend has been broken
for some users for a while.
2022-11-04 13:44:55 +01:00
6904a86576 Allow to compile on macOS ventura 2022-10-25 03:34:14 +02:00
ae6bf4bc7d
Deploy LRDF presets (if any) 2022-10-11 17:07:33 +02:00
ddec1a9a98 Silence some clang warnings 2022-10-07 00:31:48 +02:00
80ef73f48b Py3 compatible build-stack version parser 2022-09-14 00:05:43 +02:00
a009307a3d
Detect rubberband 3.0.0 2022-09-13 06:44:20 +02:00
076ad9a9b6
NO-OP: simplify wscript 2022-08-02 00:22:44 +02:00
f18803e19f fix boost warnings when *not* using --cxx11
Ultimately we should probably move to std::bind and std::placeholders
2022-07-29 09:42:18 -06:00
60db5a827f
Use SYS_futex instead of __NR_futex
Use the C library definition for portability; also test
for support instead of unconditionally enabling it.
2022-05-30 21:56:49 +02:00
cfe2ca9bf2 add configure-time check for __int128 support in the compiler 2022-05-27 12:47:44 -06:00
c7150e81b0
Fix waf dist (create stored version file, set global vars) 2022-05-19 02:45:28 +02:00
6f7adbda59
Do not invoke git when installing a build (amend f935324) 2022-05-17 17:49:03 +02:00
f849f3ce2c
Use futex semaphores on Linux only 2022-05-12 00:56:33 +02:00
f9353243c2
Do not unconditionally query git revision
Set version for configure, build and dist only.
This fixes an issue with `sudo ./waf install` where
`sudo git describe` can fail.


See also
 https://discourse.ardour.org/t/waf-error-when-buliding-on-linux-ubuntu/107201/11
 https://github.blog/2022-04-12-git-security-vulnerability-announced/
2022-05-10 16:43:29 +02:00
ardour
edf1f55781 Add Monterey as a mac build target 2022-04-25 08:08:50 -05:00
Mads Kiilerich
705de9389b wscript: address some pyflake warnings
gtk2_ardour/wscript:15:1 redefinition of unused 'TaskGen' from line 3
wscript:102:9 dictionary key 'sse' repeated with different values
wscript:104:9 dictionary key 'sse' repeated with different values
2022-04-09 12:16:41 +02:00
Mads Kiilerich
5b7431f243 wscript: drop unnecessary trailing ";" 2022-04-09 12:16:41 +02:00
Mads Kiilerich
49855e52aa wscript: consistently have at most one empty separator line 2022-04-09 12:16:40 +02:00
Mads Kiilerich
bac32a8c2d wscript: consistently use 4 spaces for indentation 2022-04-09 12:16:40 +02:00
luz paz
3d395585c1
Fix various typos
Found via `codespell -q 3 -S *.po,./share/patchfiles,./libs -L ba,buss,busses,doubleclick,hsi,ontop,ro,seh,siz,sord,sur,te,trough,ue`  
Follow-up to 364f2f078
2022-04-08 19:51:02 +02:00
luz paz
59320b378f
wscript: fix 'testing equality is none' issue
ref: https://lgtm.com/rules/7900090/
2022-04-08 18:27:10 +02:00
a1batross
f26257d6e4
wscript: fix Apple-specific flag being added on non-Apple platforms
Although GCC and Clang completely ignore this flag on non-Apple platforms, some "GCC-compatible" compilers may not, like EDG frontend based compilers.
2022-04-08 18:19:54 +02:00
Mads Kiilerich
6ff1d86cad wscript: improve configure messages slightly 2022-01-22 22:19:07 +01:00
97439d8777
Flip option, disable compile-database by default 2022-01-20 20:13:46 +01:00
9886d6c19e
Allow to disable clang_compilation_database
See also af69061644 and b8e1cd53c. This can be useful in
some cases where running a dry-run build will fail.
e.g. with --freedesktop files that are not generated before the
actual build.
2022-01-19 17:12:36 +01:00
af69061644
Do not create clang-db when cross-compiling w/mingw
This breaks windows builds, since apparently build(bld) is
evaluated twice (once to write compile_commands.json and once
to compile), even though `obj` is reset.

eg. in libs/pbd/wscript

```
if bld.env['build_target'] == 'mingw':
  obj.source += [ 'windows_special_dirs.cc' ]
```

results in

[  65/1159] Compiling libs/pbd/windows_special_dirs.cc
[  69/1159] Compiling libs/pbd/windows_special_dirs.cc

which then produces an error when linking:
```
/usr/bin/x86_64-w64-mingw32-ld: libs/pbd/windows_special_dirs.cc.2.o:libs/pbd/windows_special_dirs.cc:28: multiple definition of `PBD::get_win_special_folder_path[abi:cxx11](int)'; libs/pbd/windows_special_dirs.cc.2.o:libs/pbd/windows_special_dirs.cc:28: first defined here
```
2022-01-10 17:10:49 +01:00
Remi Thebault
b8e1cd53ce
Prepare waf update to 2.0.23 and enable 'clang_compilation_database'
This enables the generation of build/compile_commands.json
which is a compilation database recognized by some IDE/editors
to provide compiler quality linting.
To name a few:
 - Visual Studio Code
 - VIM (with ALE plugin)
2022-01-09 18:45:50 +01:00
ddc03bbc5e
Bundle some media-files 2021-12-16 19:08:03 +01:00
baf5a13f17
Update atomic/volatile compat
With glib 2.64, volatile gint produce annoying Wcast-qual
compiler warnings with mingw/gcc-8.

Even though the the build succeeds, and only glib 2.68+
requires non-volatile atomics this results in a much
cleaner build-log.
2021-08-16 04:26:55 +02:00
322bca7fb3 remove -ansi from c++ flag used when configuring with --strict (forces C++98) 2021-08-13 12:51:34 -06:00
10473ab3a6 build gtk2_ardour again 2021-08-13 12:51:27 -06:00
f0323c2f1b temporarily do not build gtk2_ardour while working on canvas layout support 2021-08-13 12:51:26 -06:00
ed959c2708
Remove outdated configuration warning 2021-07-03 20:17:19 +02:00
d4212da693
AU: standalone scanner tool 2021-07-03 19:07:26 +02:00
a74b4e8ef0
No more wine 2021-07-03 19:07:25 +02:00
44c0535b10
Fix gprof builds
`-pg` needs is both a compiler and linker flag.
2021-05-23 01:05:22 +02:00
ea01ec5988
Correctly detect glib volatile atomic
see also https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1919
2021-03-30 15:29:53 +02:00
046d7d01f5
Fix boost 1.74 + gcc 10.2 warnings
bind.hpp:36:1: note: ‘#pragma message: The practice of declaring the
Bind placeholders (_1, _2, ...) in the global namespace is deprecated.
Please use <boost/bind/bind.hpp> + using namespace boost::placeholders,
or define BOOST_BIND_GLOBAL_PLACEHOLDERS to retain the current behavior.
2021-01-26 01:54:37 +01:00
cbd2cc7b2e
Enable FMA support for windows 64bit 2021-01-20 14:23:53 +01:00
344d163875 Use libc++/clang on OSX 10.10.x 2021-01-10 14:05:09 +01:00
caf55e105e
Dynamically load Dr.Mingw
This improves compatibility with older systems, notably 32bit WinXP.
2021-01-02 23:19:40 +01:00
cd72bbb2d4
Make AVX/FMA support optional
Older compilers do not yet have fmaintrin.h. This fixes compile errors:
```
x86_functions_fma.cc:51:39: error: '_mm_fmadd_ss' was not declared in this scope
x86_functions_fma.cc:85:35: error: '_mm256_fmadd_ps' was not declared in this scope
x86_functions_fma.cc:106:35: error: '_mm256_fmadd_ps' was not declared in this scope
x86_functions_fma.cc:129:39: error: '_mm_fmadd_ss' was not declared in this scope
```
2021-01-02 16:41:43 +01:00
Ayan Shafqat
407882d23d
Add support for Intel/AMD's FMA extension
By supporting FMA extension, the number of instruction needed
for multiply accumulate to mix channels are reduced. Since,
this extension has been around since middle of 2012, more
computers have this instruction set available.
2021-01-01 21:05:16 +01:00
4f62726193
Set BigSur version compatibility 2020-12-18 14:51:07 +01:00
35c9b08154
Prepare for Apple/ARM cross-compile on Intel macOS 2020-12-12 04:47:21 +01:00
9cb9e58b31
Fix min OSX deplyoment target
mmacosx-version-min also needs to be set during linking, otherwise
the Finder will not allow to launch the application on older systems
  "The application requires os X 10.XX or later"
(with XX being the build-host's OS version), even though
Ardour can be started from a terminal on target due to correct
c/cxxflags.
2020-12-02 01:04:25 +01:00
ee1434f47d
Fix macOS High Sierra build-target naming 2020-12-02 00:59:55 +01:00
3c25281203
Increase taglib version requirement
taglib-1.9 (Oct 2013) added support for INFO tags in WAV files.
2020-11-15 15:04:44 +01:00
921caac00f
Apple Big Sur build support 2020-11-10 23:28:54 +01:00
5ebb016544
Add support for Dr.Mingw 2020-09-29 06:06:11 +02:00
0ca0b4f335
VST3 skeleton 2020-09-16 22:49:19 +02:00
773a1a0725
Fix optimized armhf builds
Apparently gcc-6.2 with -O3 and -mfpu=neon can use ARM instructions
that requires 64bit alignment (here vst1.64) with data that
is not 64bit aligned (g->strcache) https://i.imgur.com/vYktsUn.png

So we need to be able to build "arm_neon_functions.cc" with
-mfpu=neon, while not automatically using NEON for the rest
of the codebase, unless explicitly asked for.
2020-08-22 02:35:19 +02:00
422d65ad17
Override FPU auto-detection for ARM builds 2020-08-21 06:21:09 +02:00
cfae218b8a
Amend prev. commit (ARM FPU optimization configuration) 2020-08-21 03:48:03 +02:00
fb5abde677
Use specific build-target for ARM/NEON routines 2020-08-21 03:39:56 +02:00
58a5e256a9
GNU libc 2.31 compatibility part two
This fixes underlinking against -lm and reverts the
prior workaround 83cd796a47.
2020-05-12 12:23:26 +02:00
Nils Philippsen
845d7d3a3b Recognize dist, distcheck better to set app name
Previously, `dist` had to be the first argument to waf. If it came in a
different position (e.g. `APPNAME=Ardour ./waf tarball dist`) or
`distcheck` was used instead of `dist`, the resulting archive was named
`noname-....tar.bz2`.

Signed-off-by: Nils Philippsen <nils@tiptoe.de>
2020-04-25 10:39:29 -06:00
Luciano Iam
d694ee97c7
Update waf scripts 2020-04-09 20:56:46 +02:00
83cd796a47
GNU libc 2.31 compatibility
Optimized builds of Ardour use various _finite math methods
(due to -ffast-math). Those functions have apparently been
removed, and replaced with macros and are no longer available
in libm/libc++.

see also
https://discourse.ardour.org/t/a-eq-and-a-comp-fail-on-manjaro-xfce/103122
https://lists.gnu.org/archive/html/info-gnu/2020-02/msg00001.html
2020-03-30 22:41:11 +02:00
34e68fe5e2
Automatic backend selection, and fix backend option parsing
python ''.split(',') returns an array with an empty string,
it does not evaluate to false.
2020-03-28 14:56:29 +01:00
e219a6cd1e
Source-tree consistency (headless tools at top-level)
This move ardour-lua session tool to top-level, next to
headless/hardev.
2020-03-26 19:00:41 +01:00
nia
9be75befbe Add support for NetBSD by generalizing BSD OS tests. 2020-03-26 09:39:44 -06:00
a254ce22a8
Fix optimized mingw/gcc-8.2 builds
gcc-8.2 -O3 optimization enables -finline-functions.
For reasons yet unknown this causes issues with Glib::Threads::Private
when loading sessions (creating new ones is fine) and likely some
other operations.

Without this change the following happens (5.12 as well as current git)
when loading an existing session:

---
[Switching to Thread 6092.0x12fc]
Breakpoint 1, ARDOUR::SessionEvent::create_per_thread_pool (name=..., nitems=4096)
    at ../libs/ardour/session_events.cc:60
60      in ../libs/ardour/session_events.cc
$6 = (const std::__cxx11::string &) @0x210dfc60: {static npos = 18446744073709551615,
  _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
    _M_p = 0x210dfc70 "GUI"}, _M_string_length = 3, {_M_local_buf = "GUI\000\000\000\000\000<E0>P<DA>:\000\000\000",
    _M_allocated_capacity = 4805959}}
#0  ARDOUR::SessionEvent::create_per_thread_pool (name=..., nitems=4096) at ../libs/ardour/session_events.cc:60
#1  0x0000000000434e77 in ?? ()

[..]

Thread 1 (Thread 6092.0x12fc):
#0  0x0000000061f152ef in PBD::RingBuffer<void*>::write (this=this@entry=0x50, src=src@entry=0x210dcdc8,
    cnt=cnt@entry=1) at ../libs/pbd/pbd/ringbuffer.h:170
#1  0x0000000061ee954d in push (t=<optimized out>, this=0x0) at ../libs/pbd/pool.cc:290
#2  CrossThreadPool::flush_pending_with_ev (this=0x0, ptr=<optimized out>) at ../libs/pbd/pool.cc:254
#3  0x00000000218d5b01 in operator() (a0=0x210dcdc8, this=0x48)
    at /home/ardour/win-stack-w64/include/boost/function/function_template.hpp:682
#4  operator()<boost::function<void(ARDOUR::SessionEvent*)>, boost::_bi::list0> (a=<synthetic pointer>, f=...,
    this=0x68) at /home/ardour/win-stack-w64/include/boost/bind/bind.hpp:259
#5  operator() (this=0x48) at /home/ardour/win-stack-w64/include/boost/bind/bind.hpp:1294
#6  boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<boost::_bi::unspecified, boost::function<void (ARDOUR::SessionEvent*)>, boost::_bi::list1<boost::_bi::value<ARDOUR::SessionEvent*> > >, void>::invoke(boost::detail::function::function_buffer&) (function_obj_ptr=...)
    at /home/ardour/win-stack-w64/include/boost/function/function_template.hpp:159
#7  0x0000000063e2dc39 in operator() (this=0x210dcf70)
    at /home/ardour/win-stack-w64/include/boost/function/function_template.hpp:682
#8  AbstractUI<Gtkmm2ext::UIRequest>::call_slot(PBD::EventLoop::InvalidationRecord*, boost::function<void ()> const&)
    (this=0x3ada50e0, invalidation=0x0, f=...) at ../libs/pbd/pbd/abstract_ui.cc:434
#9  0x00000000216cbb96 in ARDOUR::SessionEventManager::merge_event (this=<optimized out>, ev=<optimized out>)
    at /home/ardour/win-stack-w64/include/boost/function/function_template.hpp:507
#10 0x00000000216e3861 in non-virtual thunk to ARDOUR::Session::queue_event(ARDOUR::SessionEvent*) ()
    at ../../win-stack-w64/include/glibmm-2.4/glibmm/threads.h:709
#11 0x00000000216c91bf in ARDOUR::SessionEventManager::clear_events(ARDOUR::SessionEvent::Type, boost::function<void ()>) (this=this@entry=0x4256cc08, type=type@entry=ARDOUR::SessionEvent::Skip, after=...)
    at ../libs/ardour/session_events.cc:156
#12 0x000000002168874a in ARDOUR::Session::sync_locations_to_skips (this=this@entry=0x4256ca90)
    at /usr/lib/gcc/x86_64-w64-mingw32/8.3-posix/include/c++/new:169
#13 0x0000000021688802 in ARDOUR::Session::update_skips (this=this@entry=0x4256ca90, loc=loc@entry=0x0,
    consolidate=consolidate@entry=false) at ../libs/ardour/session.cc:1683
#14 0x0000000021699649 in _locations_changed (locations=..., this=0x4256ca90) at ../libs/ardour/session.cc:1859
#15 apply<ARDOUR::Session> (method=
    (void (ARDOUR::Session::*)(ARDOUR::Session * const, const ARDOUR::Locations::LocationList &)) 0x216994f0 <ARDOUR::Session::_locations_changed(std::__cxx11::list<ARDOUR::Location*, std::allocator<ARDOUR::Location*> > const&)>,
    obj=..., this=0x40ff4c60) at ../libs/ardour/ardour/location.h:240
#16 ARDOUR::Session::locations_changed (this=this@entry=0x4256ca90) at ../libs/ardour/session.cc:1840
#17 0x0000000021700abd in ARDOUR::Session::set_state (this=0x4256ca90, node=..., version=6000)
    at ../libs/ardour/session_state.cc:1657
#18 0x0000000021713456 in ARDOUR::Session::post_engine_init (this=this@entry=0x4256ca90) at ../libs/pbd/pbd/xml++.h:81
#19 0x00000000216ad5cd in ARDOUR::Session::Session (this=0x4256ca90, eng=..., fullpath=..., snapshot_name=...,
    bus_profile=<optimized out>, mix_template=...) at ../libs/ardour/session.cc:383
#20 0x000000000046db8b in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)

---

Note that in the trace starting at #19 the source-file references
are offset :post_engine_init() isn't in xml++.h
(likely debug symbols are incorrect due to inline functions)

The application crashes due to #2 ::flush_pending_with_ev (this=0x0 ..)
But the earlier breakpoint above shows that the ThreadPool was
created, and this #11 ::clear_events() should not assign NULL.

(This happens on a single-core CPU, too)
2020-03-10 20:55:50 +01:00
6f29f45c81
Fix typo in f265bbbf82 2020-03-08 04:23:45 +01:00
f265bbbf82
mingw/gcc-8.2 compat: _xgetbv() needs -mxsave
Otherwise this causes PBD::FPU to fail with
error: inlining failed in call to always_inline ‘long long int _xgetbv(unsigned int)’
2020-03-08 02:41:15 +01:00
b0e7ba1262
Fix for modern boost + updated buildstack
Ardour's boost is not compiled --with-system, this causes issues
with modern compilers (gcc 8.2) when linking.
2020-03-08 02:38:30 +01:00
ede853d791
NO-OP: whitespace 2020-03-08 02:32:07 +01:00
6fd27f89b3
Remove debug message 2020-03-06 01:44:32 +01:00
09d45eff42
Update boost-ptr debug patch for boost 1.67 2020-02-25 02:29:03 +01:00
f79ae05a93
Amend 180843f9 - move scripts 2020-02-23 21:21:33 +01:00
54c4d3adc5
Clean up top-level source tree
Collect architecture independent data in 'share' subfolder.
This also matches the install path
2020-02-23 16:21:55 +01:00
674116b156
Fix configuration with gcc-9
Libraries need to be specified in order as last argument,
not as linkflag.
2020-01-26 01:11:23 +01:00
5a841ef462
Tweaks to build/package scripts for new waf
* Windows: delete waf installed .dll.a files
* Windows: override waf's conf.env.LIBDIR = conf.env.BINDIR
  with explicit --libdir
* Windows: fix asm (`x86_64-w64-mingw32-as` -D flag is for
  debug messages, -D defines are not available)
* Mac: override waf adding -install_name (and
  -Wl,-compatibility_version -Wl,-current_version)
  by moving -dynamiclib from linkflags to ldflags
* Mac: Allow libs with compat version number suffix
  (not needed anymore, but may help in the future)
2020-01-25 04:07:42 +01:00
1d2cfd6f2d
Change waf/darwin default compiler to prefer gcc (if available) 2020-01-25 04:07:41 +01:00
David Runge
2e9ac80e99
Towards waf python 2+3 support 2020-01-25 04:07:37 +01:00
8be727114c
Add tsan option to trace data-races 2019-12-07 00:46:33 +01:00
216492c60c
Bump boost version requirement
1.56 is needed for boost::optional::value_or
2019-11-21 17:43:32 +01:00
7e10eec3c2 Use conf.fatal for fatal configuration errors 2019-10-19 02:22:59 +02:00
84efcb2534 Fix Python3 incompatible syntax 2019-10-19 02:22:59 +02:00
a1d5499f40 Fix typo 2019-10-19 02:22:59 +02:00
68ec0d23c9 changes required to get build-stack to run on a Mojave VM. 2019-10-02 18:04:40 -06:00
5ec5bc4523 goodbye USE_TRACKS_CODE_FEATURES and is_tracks_build 2019-09-25 12:16:13 -06:00
b9ff3b1e77
Cleanup configuration stage
* use print() only for errors
* use write_config_text() for normal operation
* fail if lld was requested, but not found
2019-09-25 14:13:51 +02:00
d48e916ef1 add configure-time option to use lld as the linker (on linux)
this cuts about 15 seconds off the total linker time on a 16 core ryzen threadripper
2019-09-24 17:36:45 -06:00
4992c69108 remove compiler flags required only by boost::msm and a large transition table 2019-09-19 22:34:18 -06:00
bd229936ec add finite state machine to control/manage transport state 2019-09-17 18:26:03 -06:00
65268bae5b
Report whether arlua is being built 2019-09-09 04:15:20 +02:00
63994f3b82
Include vamp-pyin
In preparation for captainMorgan's pitch analysis script.
2019-09-02 03:12:22 +02:00
8775087ea6
Remove explicit pulse version check (debian/wheezy builds) 2019-08-17 00:18:39 +02:00
384c97e12d
Puls der Zeit
Prototype a basic stereo-playback only pulseaudio backend.
2019-07-25 17:49:42 +02:00
e0e5ee0b44
Unify build-system customization (Ardour/Mixbus) 2019-04-09 13:17:15 +02:00
754591e2ee remove dangling --lv2 waf configure option 2019-01-02 08:11:09 -05:00
04ccd328dc remove configure-time --no-lv2 option. LV2 is integral to what we do 2018-12-28 09:47:55 -05:00
e554d1fad5 Add upstream libzita-convolver 4.0.3 2018-10-20 00:24:38 +02:00
df2a18ec1c Fix --no-nls (1/5): ENABLE_NLS = 1/0 config
system-wide gettext uses `#if ENABLE_NLS`, not #ifdef
2018-09-21 19:00:33 +02:00
Guido Aulisi
5ffd2078da AppData: 'revision' in revision.cc is expected in the 2nd line
Signed-off-by: Nils Philippsen <nils@tiptoe.de>
2018-09-19 19:14:02 -04:00