Github messages for voidlinux
 help / color / mirror / Atom feed
* [PR PATCH] New package: lsp-plugins-1.1.30
@ 2021-06-26 15:59 Logarithmus
  2021-06-26 16:43 ` [PR PATCH] [Updated] " Logarithmus
                   ` (67 more replies)
  0 siblings, 68 replies; 69+ messages in thread
From: Logarithmus @ 2021-06-26 15:59 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1579 bytes --]

There is a new pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 2099 bytes --]

From 2206d453a34a5977b118f2b99ca3d395e40c792c Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH] New package: lsp-plugins-1.1.30

---
 .../00-makefile-test-remove-cflags.patch        | 11 +++++++++++
 srcpkgs/lsp-plugins/template                    | 17 +++++++++++++++++
 2 files changed, 28 insertions(+)
 create mode 100644 srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
 create mode 100644 srcpkgs/lsp-plugins/template

diff --git a/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
new file mode 100644
index 000000000000..fa8e2aad6e6d
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
@@ -0,0 +1,11 @@
+--- Makefile
++++ Makefile
+@@ -108,8 +108,6 @@ trace: export EXE_FLAGS     += -g3
+ trace: compile
+ 
+ test: OBJDIR                 = $(TESTDIR)
+-test: export CFLAGS         += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-test: export CXXFLAGS       += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
diff --git a/srcpkgs/lsp-plugins/template b/srcpkgs/lsp-plugins/template
new file mode 100644
index 000000000000..74ba89b2f84b
--- /dev/null
+++ b/srcpkgs/lsp-plugins/template
@@ -0,0 +1,17 @@
+# Template file for 'lsp-plugins'
+pkgname=lsp-plugins
+version=1.1.30
+revision=1
+build_style=gnu-makefile
+hostmakedepends="pkgconf php"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel ladspa-sdk jack-devel"
+short_desc="Collection of free plugins compatible with LADSPA, LV2 and LinuxVST"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/"
+distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+pre_build() {
+	CXXFLAGS="$CXXFLAGS -std=c++98"
+}

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Updated] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
@ 2021-06-26 16:43 ` Logarithmus
  2021-06-26 19:32 ` [PR REVIEW] " paper42
                   ` (66 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-06-26 16:43 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1701 bytes --]

There is an updated pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 2103 bytes --]

From abbdefca562c2eb51034b1d32994018bac16af9f Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH] New package: lsp-plugins-1.1.30

---
 .../00-makefile-test-remove-cflags.patch        | 11 +++++++++++
 srcpkgs/lsp-plugins/template                    | 17 +++++++++++++++++
 2 files changed, 28 insertions(+)
 create mode 100644 srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
 create mode 100644 srcpkgs/lsp-plugins/template

diff --git a/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
new file mode 100644
index 000000000000..3d56fddad164
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
@@ -0,0 +1,11 @@
+--- a/Makefile
++++ b/Makefile
+@@ -108,8 +108,6 @@ trace: export EXE_FLAGS     += -g3
+ trace: compile
+ 
+ test: OBJDIR                 = $(TESTDIR)
+-test: export CFLAGS         += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-test: export CXXFLAGS       += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
diff --git a/srcpkgs/lsp-plugins/template b/srcpkgs/lsp-plugins/template
new file mode 100644
index 000000000000..74ba89b2f84b
--- /dev/null
+++ b/srcpkgs/lsp-plugins/template
@@ -0,0 +1,17 @@
+# Template file for 'lsp-plugins'
+pkgname=lsp-plugins
+version=1.1.30
+revision=1
+build_style=gnu-makefile
+hostmakedepends="pkgconf php"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel ladspa-sdk jack-devel"
+short_desc="Collection of free plugins compatible with LADSPA, LV2 and LinuxVST"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/"
+distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+pre_build() {
+	CXXFLAGS="$CXXFLAGS -std=c++98"
+}

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
  2021-06-26 16:43 ` [PR PATCH] [Updated] " Logarithmus
@ 2021-06-26 19:32 ` paper42
  2021-06-26 19:32 ` ericonr
                   ` (65 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: paper42 @ 2021-06-26 19:32 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 219 bytes --]

New review comment by paper42 on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r659215149

Comment:
`CXXFLAGS=-std=c++98` instead of the pre_build function should be enough

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (2 preceding siblings ...)
  2021-06-26 19:32 ` ericonr
@ 2021-06-26 19:32 ` ericonr
  2021-06-27 17:03 ` Logarithmus
                   ` (63 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: ericonr @ 2021-06-26 19:32 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 151 bytes --]

New review comment by ericonr on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r659214988

Comment:
Why?

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
  2021-06-26 16:43 ` [PR PATCH] [Updated] " Logarithmus
  2021-06-26 19:32 ` [PR REVIEW] " paper42
@ 2021-06-26 19:32 ` ericonr
  2021-06-26 19:32 ` ericonr
                   ` (64 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: ericonr @ 2021-06-26 19:32 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 184 bytes --]

New review comment by ericonr on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r659215151

Comment:
Where is this requirement documented?

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (3 preceding siblings ...)
  2021-06-26 19:32 ` ericonr
@ 2021-06-27 17:03 ` Logarithmus
  2021-06-27 17:05 ` Logarithmus
                   ` (62 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-06-27 17:03 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 209 bytes --]

New review comment by Logarithmus on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r659349590

Comment:
See https://github.com/void-linux/void-packages/pull/29932

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (4 preceding siblings ...)
  2021-06-27 17:03 ` Logarithmus
@ 2021-06-27 17:05 ` Logarithmus
  2021-06-27 17:06 ` Logarithmus
                   ` (61 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-06-27 17:05 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 231 bytes --]

New review comment by Logarithmus on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r659349590

Comment:
See https://github.com/void-linux/void-packages/pull/29932#discussion_r605695858

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (5 preceding siblings ...)
  2021-06-27 17:05 ` Logarithmus
@ 2021-06-27 17:06 ` Logarithmus
  2021-06-27 17:27 ` [PR PATCH] [Updated] " Logarithmus
                   ` (60 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-06-27 17:06 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 223 bytes --]

New review comment by Logarithmus on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r659349877

Comment:
https://github.com/sadko4u/lsp-plugins/issues/191#issuecomment-812847630

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Updated] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (6 preceding siblings ...)
  2021-06-27 17:06 ` Logarithmus
@ 2021-06-27 17:27 ` Logarithmus
  2021-06-27 18:57 ` Logarithmus
                   ` (59 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-06-27 17:27 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1773 bytes --]

There is an updated pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.
Continuation of https://github.com/void-linux/void-packages/pull/29932

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 2141 bytes --]

From 97bd1efb5e05d0057962cf08c276a8b06fd3cd2d Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH] New package: lsp-plugins-1.1.30

---
 .../patches/00-makefile-test-remove-cflags.patch | 11 +++++++++++
 srcpkgs/lsp-plugins/template                     | 16 ++++++++++++++++
 2 files changed, 27 insertions(+)
 create mode 100644 srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
 create mode 100644 srcpkgs/lsp-plugins/template

diff --git a/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
new file mode 100644
index 000000000000..3d56fddad164
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
@@ -0,0 +1,11 @@
+--- a/Makefile
++++ b/Makefile
+@@ -108,8 +108,6 @@ trace: export EXE_FLAGS     += -g3
+ trace: compile
+ 
+ test: OBJDIR                 = $(TESTDIR)
+-test: export CFLAGS         += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-test: export CXXFLAGS       += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
diff --git a/srcpkgs/lsp-plugins/template b/srcpkgs/lsp-plugins/template
new file mode 100644
index 000000000000..7a155ee2262f
--- /dev/null
+++ b/srcpkgs/lsp-plugins/template
@@ -0,0 +1,16 @@
+# Template file for 'lsp-plugins'
+pkgname=lsp-plugins
+version=1.1.30
+revision=1
+build_style=gnu-makefile
+make_build_args="BUILD_PROFILE=${XBPS_TARGET_MACHINE}"
+hostmakedepends="pkgconf php"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel ladspa-sdk jack-devel"
+short_desc="Collection of free plugins compatible with LADSPA, LV2 and LinuxVST"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/"
+distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+CXXFLAGS="$CXXFLAGS -std=c++98"

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Updated] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (7 preceding siblings ...)
  2021-06-27 17:27 ` [PR PATCH] [Updated] " Logarithmus
@ 2021-06-27 18:57 ` Logarithmus
  2021-06-27 19:27 ` Logarithmus
                   ` (58 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-06-27 18:57 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1773 bytes --]

There is an updated pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.
Continuation of https://github.com/void-linux/void-packages/pull/29932

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 2257 bytes --]

From 63e57d7637e5bb92b506a0b78bdd43cf28b5a54d Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH] New package: lsp-plugins-1.1.30

---
 .../00-makefile-test-remove-cflags.patch      | 11 ++++++++++
 srcpkgs/lsp-plugins/template                  | 21 +++++++++++++++++++
 2 files changed, 32 insertions(+)
 create mode 100644 srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
 create mode 100644 srcpkgs/lsp-plugins/template

diff --git a/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
new file mode 100644
index 000000000000..3d56fddad164
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
@@ -0,0 +1,11 @@
+--- a/Makefile
++++ b/Makefile
+@@ -108,8 +108,6 @@ trace: export EXE_FLAGS     += -g3
+ trace: compile
+ 
+ test: OBJDIR                 = $(TESTDIR)
+-test: export CFLAGS         += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-test: export CXXFLAGS       += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
diff --git a/srcpkgs/lsp-plugins/template b/srcpkgs/lsp-plugins/template
new file mode 100644
index 000000000000..03ab1fa94be4
--- /dev/null
+++ b/srcpkgs/lsp-plugins/template
@@ -0,0 +1,21 @@
+# Template file for 'lsp-plugins'
+pkgname=lsp-plugins
+version=1.1.30
+revision=1
+build_style=gnu-makefile
+hostmakedepends="pkgconf php"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel ladspa-sdk jack-devel"
+short_desc="Collection of free plugins compatible with LADSPA, LV2 and LinuxVST"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/"
+distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+_arch=$(echo $XBPS_TARGET_MACHINE | sed "s/-musl$//")
+case _arch in
+	i686)	make_build_args="BUILD_PROFILE=i586" ;;
+	*)		make_build_args="BUILD_PROFILE=${_arch}" ;;
+esac
+
+CXXFLAGS="$CXXFLAGS -std=c++98"

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Updated] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (8 preceding siblings ...)
  2021-06-27 18:57 ` Logarithmus
@ 2021-06-27 19:27 ` Logarithmus
  2021-07-27 22:53 ` Logarithmus
                   ` (57 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-06-27 19:27 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1773 bytes --]

There is an updated pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.
Continuation of https://github.com/void-linux/void-packages/pull/29932

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 2260 bytes --]

From 1e209340d06c11893f156138e22b3244fca3ef01 Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH] New package: lsp-plugins-1.1.30

---
 .../00-makefile-test-remove-cflags.patch      | 11 ++++++++++
 srcpkgs/lsp-plugins/template                  | 21 +++++++++++++++++++
 2 files changed, 32 insertions(+)
 create mode 100644 srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
 create mode 100644 srcpkgs/lsp-plugins/template

diff --git a/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
new file mode 100644
index 000000000000..3d56fddad164
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
@@ -0,0 +1,11 @@
+--- a/Makefile
++++ b/Makefile
+@@ -108,8 +108,6 @@ trace: export EXE_FLAGS     += -g3
+ trace: compile
+ 
+ test: OBJDIR                 = $(TESTDIR)
+-test: export CFLAGS         += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-test: export CXXFLAGS       += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
diff --git a/srcpkgs/lsp-plugins/template b/srcpkgs/lsp-plugins/template
new file mode 100644
index 000000000000..1e6af979e3f7
--- /dev/null
+++ b/srcpkgs/lsp-plugins/template
@@ -0,0 +1,21 @@
+# Template file for 'lsp-plugins'
+pkgname=lsp-plugins
+version=1.1.30
+revision=1
+build_style=gnu-makefile
+hostmakedepends="pkgconf php"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel ladspa-sdk jack-devel"
+short_desc="Collection of free plugins compatible with LADSPA, LV2 and LinuxVST"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/"
+distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+_arch=$(echo $XBPS_TARGET_MACHINE | sed "s/-musl$//")
+case "$_arch" in
+	i686)	make_build_args="BUILD_PROFILE=i586" ;;
+	*)		make_build_args="BUILD_PROFILE=${_arch}" ;;
+esac
+
+CXXFLAGS="$CXXFLAGS -std=c++98"

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Updated] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (9 preceding siblings ...)
  2021-06-27 19:27 ` Logarithmus
@ 2021-07-27 22:53 ` Logarithmus
  2021-07-28 18:29 ` Logarithmus
                   ` (56 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-27 22:53 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1773 bytes --]

There is an updated pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.
Continuation of https://github.com/void-linux/void-packages/pull/29932

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 5851 bytes --]

From 6e20a6bfdb7f40ac44080034fdb24e3c8028b036 Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH] New package: lsp-plugins-1.1.30

---
 .../00-makefile-test-remove-cflags.patch      |  12 ++
 srcpkgs/lsp-plugins/patches/01-musl.patch     | 103 ++++++++++++++++++
 srcpkgs/lsp-plugins/template                  |  27 +++++
 3 files changed, 142 insertions(+)
 create mode 100644 srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
 create mode 100644 srcpkgs/lsp-plugins/patches/01-musl.patch
 create mode 100644 srcpkgs/lsp-plugins/template

diff --git a/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
new file mode 100644
index 000000000000..fd82f25d4a25
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
@@ -0,0 +1,12 @@
+https://github.com/void-linux/void-packages/pull/29932#discussion_r605695858
+--- a/Makefile
++++ b/Makefile
+@@ -108,8 +108,6 @@ trace: export EXE_FLAGS     += -g3
+ trace: compile
+ 
+ test: OBJDIR                 = $(TESTDIR)
+-test: export CFLAGS         += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-test: export CXXFLAGS       += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
diff --git a/srcpkgs/lsp-plugins/patches/01-musl.patch b/srcpkgs/lsp-plugins/patches/01-musl.patch
new file mode 100644
index 000000000000..58f57161eb62
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/01-musl.patch
@@ -0,0 +1,103 @@
+diff --git a/include/data/cvector.h b/include/data/cvector.h
+index eccc94a..17fe119 100644
+--- a/include/data/cvector.h
++++ b/include/data/cvector.h
+@@ -25,6 +25,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <sys/types.h>
+ 
+ #define CVECTOR_GROW        16
+ 
+diff --git a/include/test/main/executor.h b/include/test/main/executor.h
+index 0faf73f..b37cbf2 100644
+--- a/include/test/main/executor.h
++++ b/include/test/main/executor.h
+@@ -633,7 +633,7 @@ namespace lsp
+     }
+ #endif /* PLATFORM_WINDOWS */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(__GLIBC__)
+     void TestExecutor::start_memcheck(test::Test *v)
+     {
+         if (!pCfg->mtrace)
+diff --git a/include/test/main/types.h b/include/test/main/types.h
+index ef15800..c833379 100644
+--- a/include/test/main/types.h
++++ b/include/test/main/types.h
+@@ -42,7 +42,7 @@
+     #include <fcntl.h>
+ #endif /* PLATFORM_UNIX_COMPATIBLE */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(__GLIBC__)
+     #include <mcheck.h>
+ #endif /* PLATFORM_LINUX */
+ 
+diff --git a/include/testing/mtest/3d/common/X11Renderer.h b/include/testing/mtest/3d/common/X11Renderer.h
+index e8ec205..f0a51e2 100644
+--- a/include/testing/mtest/3d/common/X11Renderer.h
++++ b/include/testing/mtest/3d/common/X11Renderer.h
+@@ -30,7 +30,7 @@
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include <rendering/backend.h>
+ #include <core/ipc/Library.h>
+diff --git a/src/testing/mtest/3d/boolean3d.cpp b/src/testing/mtest/3d/boolean3d.cpp
+index 636dce1..f92c63e 100644
+--- a/src/testing/mtest/3d/boolean3d.cpp
++++ b/src/testing/mtest/3d/boolean3d.cpp
+@@ -41,7 +41,7 @@
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+ #include <GL/glu.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/bsp_context.cpp b/src/testing/mtest/3d/bsp_context.cpp
+index de54427..ea9ab36 100644
+--- a/src/testing/mtest/3d/bsp_context.cpp
++++ b/src/testing/mtest/3d/bsp_context.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/reflections3d.cpp b/src/testing/mtest/3d/reflections3d.cpp
+index e250444..367f86c 100644
+--- a/src/testing/mtest/3d/reflections3d.cpp
++++ b/src/testing/mtest/3d/reflections3d.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/ui/ws/x11/X11Display.cpp b/src/ui/ws/x11/X11Display.cpp
+index d85db51..1bf7ff2 100644
+--- a/src/ui/ws/x11/X11Display.cpp
++++ b/src/ui/ws/x11/X11Display.cpp
+@@ -23,7 +23,7 @@
+ 
+ #ifdef USE_X11_DISPLAY
+ 
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ 
diff --git a/srcpkgs/lsp-plugins/template b/srcpkgs/lsp-plugins/template
new file mode 100644
index 000000000000..71529c9d245d
--- /dev/null
+++ b/srcpkgs/lsp-plugins/template
@@ -0,0 +1,27 @@
+# Template file for 'lsp-plugins'
+pkgname=lsp-plugins
+version=1.1.30
+revision=1
+build_style=gnu-makefile
+hostmakedepends="pkgconf php"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel ladspa-sdk jack-devel"
+make_check_target="test"
+short_desc="Collection of free plugins compatible with LADSPA, LV2 and LinuxVST"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/"
+distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+_arch=$(echo $XBPS_TARGET_MACHINE | sed "s/-musl$//")
+case "$_arch" in
+	i686)	make_build_args="BUILD_PROFILE=i586" ;;
+	*)		make_build_args="BUILD_PROFILE=${_arch}" ;;
+esac
+
+# https://github.com/sadko4u/lsp-plugins/issues/191#issuecomment-812847630
+CXXFLAGS="$CXXFLAGS -std=c++98"
+
+pre_check() {
+	export CXXFLAGS="$CXXFLAGS -DLSP_TESTING -DLSP_TRACE"
+}

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Updated] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (10 preceding siblings ...)
  2021-07-27 22:53 ` Logarithmus
@ 2021-07-28 18:29 ` Logarithmus
  2021-07-28 19:44 ` Logarithmus
                   ` (55 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-28 18:29 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1877 bytes --]

There is an updated pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.
Continuation of https://github.com/void-linux/void-packages/pull/29932

TODO:
- [ ] wait for https://github.com/sadko4u/lsp-plugins/pull/198
- [ ] fix i686
- [ ] fix arm

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 10138 bytes --]

From bf49eb62bdfde84ffb7b483d792377df13aec039 Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH 1/2] New package: lsp-plugins-1.1.30

---
 .../00-makefile-test-remove-cflags.patch      |  12 ++
 srcpkgs/lsp-plugins/patches/01-musl.patch     | 104 ++++++++++++++++++
 srcpkgs/lsp-plugins/template                  |  36 ++++++
 3 files changed, 152 insertions(+)
 create mode 100644 srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
 create mode 100644 srcpkgs/lsp-plugins/patches/01-musl.patch
 create mode 100644 srcpkgs/lsp-plugins/template

diff --git a/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
new file mode 100644
index 000000000000..fd82f25d4a25
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
@@ -0,0 +1,12 @@
+https://github.com/void-linux/void-packages/pull/29932#discussion_r605695858
+--- a/Makefile
++++ b/Makefile
+@@ -108,8 +108,6 @@ trace: export EXE_FLAGS     += -g3
+ trace: compile
+ 
+ test: OBJDIR                 = $(TESTDIR)
+-test: export CFLAGS         += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-test: export CXXFLAGS       += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
diff --git a/srcpkgs/lsp-plugins/patches/01-musl.patch b/srcpkgs/lsp-plugins/patches/01-musl.patch
new file mode 100644
index 000000000000..de8c1ca275c3
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/01-musl.patch
@@ -0,0 +1,104 @@
+https://github.com/sadko4u/lsp-plugins/pull/198
+diff --git a/include/data/cvector.h b/include/data/cvector.h
+index eccc94a..17fe119 100644
+--- a/include/data/cvector.h
++++ b/include/data/cvector.h
+@@ -25,6 +25,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <sys/types.h>
+ 
+ #define CVECTOR_GROW        16
+ 
+diff --git a/include/test/main/executor.h b/include/test/main/executor.h
+index 0faf73f..b37cbf2 100644
+--- a/include/test/main/executor.h
++++ b/include/test/main/executor.h
+@@ -633,7 +633,7 @@ namespace lsp
+     }
+ #endif /* PLATFORM_WINDOWS */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(__GLIBC__)
+     void TestExecutor::start_memcheck(test::Test *v)
+     {
+         if (!pCfg->mtrace)
+diff --git a/include/test/main/types.h b/include/test/main/types.h
+index ef15800..c833379 100644
+--- a/include/test/main/types.h
++++ b/include/test/main/types.h
+@@ -42,7 +42,7 @@
+     #include <fcntl.h>
+ #endif /* PLATFORM_UNIX_COMPATIBLE */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(__GLIBC__)
+     #include <mcheck.h>
+ #endif /* PLATFORM_LINUX */
+ 
+diff --git a/include/testing/mtest/3d/common/X11Renderer.h b/include/testing/mtest/3d/common/X11Renderer.h
+index e8ec205..f0a51e2 100644
+--- a/include/testing/mtest/3d/common/X11Renderer.h
++++ b/include/testing/mtest/3d/common/X11Renderer.h
+@@ -30,7 +30,7 @@
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include <rendering/backend.h>
+ #include <core/ipc/Library.h>
+diff --git a/src/testing/mtest/3d/boolean3d.cpp b/src/testing/mtest/3d/boolean3d.cpp
+index 636dce1..f92c63e 100644
+--- a/src/testing/mtest/3d/boolean3d.cpp
++++ b/src/testing/mtest/3d/boolean3d.cpp
+@@ -41,7 +41,7 @@
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+ #include <GL/glu.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/bsp_context.cpp b/src/testing/mtest/3d/bsp_context.cpp
+index de54427..ea9ab36 100644
+--- a/src/testing/mtest/3d/bsp_context.cpp
++++ b/src/testing/mtest/3d/bsp_context.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/reflections3d.cpp b/src/testing/mtest/3d/reflections3d.cpp
+index e250444..367f86c 100644
+--- a/src/testing/mtest/3d/reflections3d.cpp
++++ b/src/testing/mtest/3d/reflections3d.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/ui/ws/x11/X11Display.cpp b/src/ui/ws/x11/X11Display.cpp
+index d85db51..1bf7ff2 100644
+--- a/src/ui/ws/x11/X11Display.cpp
++++ b/src/ui/ws/x11/X11Display.cpp
+@@ -23,7 +23,7 @@
+ 
+ #ifdef USE_X11_DISPLAY
+ 
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ 
diff --git a/srcpkgs/lsp-plugins/template b/srcpkgs/lsp-plugins/template
new file mode 100644
index 000000000000..25372d82d221
--- /dev/null
+++ b/srcpkgs/lsp-plugins/template
@@ -0,0 +1,36 @@
+# Template file for 'lsp-plugins'
+pkgname=lsp-plugins
+version=1.1.30
+revision=1
+build_style=gnu-makefile
+make_check_target="test"
+make_check_args="VERBOSE=1"
+hostmakedepends="pkg-config php"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel ladspa-sdk jack-devel"
+short_desc="Collection of free plugins compatible with LADSPA, LV2 and LinuxVST"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/"
+distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+_arch=$(echo $XBPS_TARGET_MACHINE | sed "s/-musl$//")
+case "$_arch" in
+	i686)
+		make_build_args="BUILD_PROFILE=i586"
+		make_check_args="BUILD_PROFILE=i586"
+		;;
+	*)
+		make_build_args="BUILD_PROFILE=${_arch}"
+		make_check_args="BUILD_PROFILE=${_arch}"
+		;;
+esac
+
+# https://github.com/sadko4u/lsp-plugins/issues/191#issuecomment-812847630
+CXXFLAGS="$CXXFLAGS -std=c++98"
+
+do_check() {
+	export CXXFLAGS="$CXXFLAGS -DLSP_TESTING -DLSP_TRACE"
+	make test
+	.test/lsp-plugins-test utest
+}

From e3174018608b20d177e0ed10c3e449397718554b Mon Sep 17 00:00:00 2001
From: Artur Sinila <freesoftware@logarithmus.dev>
Date: Mon, 5 Jul 2021 03:44:08 +0300
Subject: [PATCH 2/2] common/build-style/: enable running tests in parallel

---
 common/build-style/cmake.sh           | 6 +++++-
 common/build-style/configure.sh       | 6 +++++-
 common/build-style/gnu-configure.sh   | 6 +++++-
 common/build-style/gnu-makefile.sh    | 6 +++++-
 common/build-style/perl-module.sh     | 6 +++++-
 common/environment/setup/sourcepkg.sh | 3 ++-
 6 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/common/build-style/cmake.sh b/common/build-style/cmake.sh
index 401dabad31c8..c7ffd16fee21 100644
--- a/common/build-style/cmake.sh
+++ b/common/build-style/cmake.sh
@@ -113,7 +113,11 @@ do_check() {
 
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/configure.sh b/common/build-style/configure.sh
index 0963fc347934..b846a1a77572 100644
--- a/common/build-style/configure.sh
+++ b/common/build-style/configure.sh
@@ -29,7 +29,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-configure.sh b/common/build-style/gnu-configure.sh
index 8121136cd121..b09de442b05b 100644
--- a/common/build-style/gnu-configure.sh
+++ b/common/build-style/gnu-configure.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-makefile.sh b/common/build-style/gnu-makefile.sh
index d7ea148fc483..0f7afa7d3695 100644
--- a/common/build-style/gnu-makefile.sh
+++ b/common/build-style/gnu-makefile.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/perl-module.sh b/common/build-style/perl-module.sh
index b9a01b13cfa9..d47945b33d36 100644
--- a/common/build-style/perl-module.sh
+++ b/common/build-style/perl-module.sh
@@ -79,7 +79,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/environment/setup/sourcepkg.sh b/common/environment/setup/sourcepkg.sh
index bc06f745b78a..1fd541f1e715 100644
--- a/common/environment/setup/sourcepkg.sh
+++ b/common/environment/setup/sourcepkg.sh
@@ -13,7 +13,8 @@ unset -v cmake_builddir meson_builddir
 unset -v meson_crossfile
 unset -v gemspec
 unset -v go_import_path go_package go_mod_mode
-unset -v patch_args disable_parallel_build keep_libtool_archives make_use_env
+unset -v patch_args disable_parallel_build disable_parallel_check
+unset -v keep_libtool_archives make_use_env
 unset -v reverts subpackages makedepends hostmakedepends checkdepends depends restricted
 unset -v nopie build_options build_options_default bootstrap repository reverts
 unset -v CFLAGS CXXFLAGS FFLAGS CPPFLAGS LDFLAGS LD_LIBRARY_PATH

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Updated] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (11 preceding siblings ...)
  2021-07-28 18:29 ` Logarithmus
@ 2021-07-28 19:44 ` Logarithmus
  2021-07-28 19:48 ` Logarithmus
                   ` (54 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-28 19:44 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1877 bytes --]

There is an updated pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.
Continuation of https://github.com/void-linux/void-packages/pull/29932

TODO:
- [ ] wait for https://github.com/sadko4u/lsp-plugins/pull/198
- [ ] fix i686
- [ ] fix arm

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 9956 bytes --]

From d78da70f9ecacf153c18447c5af29f494ce7f954 Mon Sep 17 00:00:00 2001
From: Artur Sinila <freesoftware@logarithmus.dev>
Date: Mon, 5 Jul 2021 03:44:08 +0300
Subject: [PATCH 1/2] common/build-style/: enable running tests in parallel

---
 common/build-style/cmake.sh           | 6 +++++-
 common/build-style/configure.sh       | 6 +++++-
 common/build-style/gnu-configure.sh   | 6 +++++-
 common/build-style/gnu-makefile.sh    | 6 +++++-
 common/build-style/perl-module.sh     | 6 +++++-
 common/environment/setup/sourcepkg.sh | 3 ++-
 6 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/common/build-style/cmake.sh b/common/build-style/cmake.sh
index 401dabad31c8..c7ffd16fee21 100644
--- a/common/build-style/cmake.sh
+++ b/common/build-style/cmake.sh
@@ -113,7 +113,11 @@ do_check() {
 
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/configure.sh b/common/build-style/configure.sh
index 0963fc347934..b846a1a77572 100644
--- a/common/build-style/configure.sh
+++ b/common/build-style/configure.sh
@@ -29,7 +29,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-configure.sh b/common/build-style/gnu-configure.sh
index 8121136cd121..b09de442b05b 100644
--- a/common/build-style/gnu-configure.sh
+++ b/common/build-style/gnu-configure.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-makefile.sh b/common/build-style/gnu-makefile.sh
index d7ea148fc483..0f7afa7d3695 100644
--- a/common/build-style/gnu-makefile.sh
+++ b/common/build-style/gnu-makefile.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/perl-module.sh b/common/build-style/perl-module.sh
index b9a01b13cfa9..d47945b33d36 100644
--- a/common/build-style/perl-module.sh
+++ b/common/build-style/perl-module.sh
@@ -79,7 +79,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/environment/setup/sourcepkg.sh b/common/environment/setup/sourcepkg.sh
index bc06f745b78a..1fd541f1e715 100644
--- a/common/environment/setup/sourcepkg.sh
+++ b/common/environment/setup/sourcepkg.sh
@@ -13,7 +13,8 @@ unset -v cmake_builddir meson_builddir
 unset -v meson_crossfile
 unset -v gemspec
 unset -v go_import_path go_package go_mod_mode
-unset -v patch_args disable_parallel_build keep_libtool_archives make_use_env
+unset -v patch_args disable_parallel_build disable_parallel_check
+unset -v keep_libtool_archives make_use_env
 unset -v reverts subpackages makedepends hostmakedepends checkdepends depends restricted
 unset -v nopie build_options build_options_default bootstrap repository reverts
 unset -v CFLAGS CXXFLAGS FFLAGS CPPFLAGS LDFLAGS LD_LIBRARY_PATH

From 8c10448588798e4ad7e07b1fb9e7022f867f85ee Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH 2/2] New package: lsp-plugins-1.1.30

---
 .../00-makefile-test-remove-cflags.patch      |  12 ++
 srcpkgs/lsp-plugins/patches/01-musl.patch     | 104 ++++++++++++++++++
 srcpkgs/lsp-plugins/template                  |  28 +++++
 3 files changed, 144 insertions(+)
 create mode 100644 srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
 create mode 100644 srcpkgs/lsp-plugins/patches/01-musl.patch
 create mode 100644 srcpkgs/lsp-plugins/template

diff --git a/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
new file mode 100644
index 000000000000..fd82f25d4a25
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
@@ -0,0 +1,12 @@
+https://github.com/void-linux/void-packages/pull/29932#discussion_r605695858
+--- a/Makefile
++++ b/Makefile
+@@ -108,8 +108,6 @@ trace: export EXE_FLAGS     += -g3
+ trace: compile
+ 
+ test: OBJDIR                 = $(TESTDIR)
+-test: export CFLAGS         += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-test: export CXXFLAGS       += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
diff --git a/srcpkgs/lsp-plugins/patches/01-musl.patch b/srcpkgs/lsp-plugins/patches/01-musl.patch
new file mode 100644
index 000000000000..de8c1ca275c3
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/01-musl.patch
@@ -0,0 +1,104 @@
+https://github.com/sadko4u/lsp-plugins/pull/198
+diff --git a/include/data/cvector.h b/include/data/cvector.h
+index eccc94a..17fe119 100644
+--- a/include/data/cvector.h
++++ b/include/data/cvector.h
+@@ -25,6 +25,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <sys/types.h>
+ 
+ #define CVECTOR_GROW        16
+ 
+diff --git a/include/test/main/executor.h b/include/test/main/executor.h
+index 0faf73f..b37cbf2 100644
+--- a/include/test/main/executor.h
++++ b/include/test/main/executor.h
+@@ -633,7 +633,7 @@ namespace lsp
+     }
+ #endif /* PLATFORM_WINDOWS */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(__GLIBC__)
+     void TestExecutor::start_memcheck(test::Test *v)
+     {
+         if (!pCfg->mtrace)
+diff --git a/include/test/main/types.h b/include/test/main/types.h
+index ef15800..c833379 100644
+--- a/include/test/main/types.h
++++ b/include/test/main/types.h
+@@ -42,7 +42,7 @@
+     #include <fcntl.h>
+ #endif /* PLATFORM_UNIX_COMPATIBLE */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(__GLIBC__)
+     #include <mcheck.h>
+ #endif /* PLATFORM_LINUX */
+ 
+diff --git a/include/testing/mtest/3d/common/X11Renderer.h b/include/testing/mtest/3d/common/X11Renderer.h
+index e8ec205..f0a51e2 100644
+--- a/include/testing/mtest/3d/common/X11Renderer.h
++++ b/include/testing/mtest/3d/common/X11Renderer.h
+@@ -30,7 +30,7 @@
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include <rendering/backend.h>
+ #include <core/ipc/Library.h>
+diff --git a/src/testing/mtest/3d/boolean3d.cpp b/src/testing/mtest/3d/boolean3d.cpp
+index 636dce1..f92c63e 100644
+--- a/src/testing/mtest/3d/boolean3d.cpp
++++ b/src/testing/mtest/3d/boolean3d.cpp
+@@ -41,7 +41,7 @@
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+ #include <GL/glu.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/bsp_context.cpp b/src/testing/mtest/3d/bsp_context.cpp
+index de54427..ea9ab36 100644
+--- a/src/testing/mtest/3d/bsp_context.cpp
++++ b/src/testing/mtest/3d/bsp_context.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/reflections3d.cpp b/src/testing/mtest/3d/reflections3d.cpp
+index e250444..367f86c 100644
+--- a/src/testing/mtest/3d/reflections3d.cpp
++++ b/src/testing/mtest/3d/reflections3d.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/ui/ws/x11/X11Display.cpp b/src/ui/ws/x11/X11Display.cpp
+index d85db51..1bf7ff2 100644
+--- a/src/ui/ws/x11/X11Display.cpp
++++ b/src/ui/ws/x11/X11Display.cpp
+@@ -23,7 +23,7 @@
+ 
+ #ifdef USE_X11_DISPLAY
+ 
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ 
diff --git a/srcpkgs/lsp-plugins/template b/srcpkgs/lsp-plugins/template
new file mode 100644
index 000000000000..08bca192939a
--- /dev/null
+++ b/srcpkgs/lsp-plugins/template
@@ -0,0 +1,28 @@
+# Template file for 'lsp-plugins'
+pkgname=lsp-plugins
+version=1.1.30
+revision=1
+build_style=gnu-makefile
+hostmakedepends="pkg-config php"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel ladspa-sdk jack-devel"
+short_desc="Collection of free plugins compatible with LADSPA, LV2 and LinuxVST"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/"
+distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+_arch=$(echo $XBPS_TARGET_MACHINE | sed "s/-musl$//")
+case "$_arch" in
+	i686) export BUILD_PROFILE=i586 ;;
+	*)    export BUILD_PROFILE=${_arch}" ;;
+esac
+
+# https://github.com/sadko4u/lsp-plugins/issues/191#issuecomment-812847630
+CXXFLAGS="$CXXFLAGS -std=c++98"
+
+do_check() {
+	export CXXFLAGS="$CXXFLAGS -DLSP_TESTING"
+	make test
+	.test/lsp-plugins-test utest
+}

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Updated] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (12 preceding siblings ...)
  2021-07-28 19:44 ` Logarithmus
@ 2021-07-28 19:48 ` Logarithmus
  2021-07-28 19:59 ` Logarithmus
                   ` (53 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-28 19:48 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1877 bytes --]

There is an updated pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.
Continuation of https://github.com/void-linux/void-packages/pull/29932

TODO:
- [ ] wait for https://github.com/sadko4u/lsp-plugins/pull/198
- [ ] fix i686
- [ ] fix arm

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 9955 bytes --]

From d78da70f9ecacf153c18447c5af29f494ce7f954 Mon Sep 17 00:00:00 2001
From: Artur Sinila <freesoftware@logarithmus.dev>
Date: Mon, 5 Jul 2021 03:44:08 +0300
Subject: [PATCH 1/2] common/build-style/: enable running tests in parallel

---
 common/build-style/cmake.sh           | 6 +++++-
 common/build-style/configure.sh       | 6 +++++-
 common/build-style/gnu-configure.sh   | 6 +++++-
 common/build-style/gnu-makefile.sh    | 6 +++++-
 common/build-style/perl-module.sh     | 6 +++++-
 common/environment/setup/sourcepkg.sh | 3 ++-
 6 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/common/build-style/cmake.sh b/common/build-style/cmake.sh
index 401dabad31c8..c7ffd16fee21 100644
--- a/common/build-style/cmake.sh
+++ b/common/build-style/cmake.sh
@@ -113,7 +113,11 @@ do_check() {
 
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/configure.sh b/common/build-style/configure.sh
index 0963fc347934..b846a1a77572 100644
--- a/common/build-style/configure.sh
+++ b/common/build-style/configure.sh
@@ -29,7 +29,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-configure.sh b/common/build-style/gnu-configure.sh
index 8121136cd121..b09de442b05b 100644
--- a/common/build-style/gnu-configure.sh
+++ b/common/build-style/gnu-configure.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-makefile.sh b/common/build-style/gnu-makefile.sh
index d7ea148fc483..0f7afa7d3695 100644
--- a/common/build-style/gnu-makefile.sh
+++ b/common/build-style/gnu-makefile.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/perl-module.sh b/common/build-style/perl-module.sh
index b9a01b13cfa9..d47945b33d36 100644
--- a/common/build-style/perl-module.sh
+++ b/common/build-style/perl-module.sh
@@ -79,7 +79,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/environment/setup/sourcepkg.sh b/common/environment/setup/sourcepkg.sh
index bc06f745b78a..1fd541f1e715 100644
--- a/common/environment/setup/sourcepkg.sh
+++ b/common/environment/setup/sourcepkg.sh
@@ -13,7 +13,8 @@ unset -v cmake_builddir meson_builddir
 unset -v meson_crossfile
 unset -v gemspec
 unset -v go_import_path go_package go_mod_mode
-unset -v patch_args disable_parallel_build keep_libtool_archives make_use_env
+unset -v patch_args disable_parallel_build disable_parallel_check
+unset -v keep_libtool_archives make_use_env
 unset -v reverts subpackages makedepends hostmakedepends checkdepends depends restricted
 unset -v nopie build_options build_options_default bootstrap repository reverts
 unset -v CFLAGS CXXFLAGS FFLAGS CPPFLAGS LDFLAGS LD_LIBRARY_PATH

From 05b355f8402e0c952842c52913c0617e810da7f4 Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH 2/2] New package: lsp-plugins-1.1.30

---
 .../00-makefile-test-remove-cflags.patch      |  12 ++
 srcpkgs/lsp-plugins/patches/01-musl.patch     | 104 ++++++++++++++++++
 srcpkgs/lsp-plugins/template                  |  28 +++++
 3 files changed, 144 insertions(+)
 create mode 100644 srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
 create mode 100644 srcpkgs/lsp-plugins/patches/01-musl.patch
 create mode 100644 srcpkgs/lsp-plugins/template

diff --git a/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
new file mode 100644
index 000000000000..fd82f25d4a25
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
@@ -0,0 +1,12 @@
+https://github.com/void-linux/void-packages/pull/29932#discussion_r605695858
+--- a/Makefile
++++ b/Makefile
+@@ -108,8 +108,6 @@ trace: export EXE_FLAGS     += -g3
+ trace: compile
+ 
+ test: OBJDIR                 = $(TESTDIR)
+-test: export CFLAGS         += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-test: export CXXFLAGS       += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
diff --git a/srcpkgs/lsp-plugins/patches/01-musl.patch b/srcpkgs/lsp-plugins/patches/01-musl.patch
new file mode 100644
index 000000000000..de8c1ca275c3
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/01-musl.patch
@@ -0,0 +1,104 @@
+https://github.com/sadko4u/lsp-plugins/pull/198
+diff --git a/include/data/cvector.h b/include/data/cvector.h
+index eccc94a..17fe119 100644
+--- a/include/data/cvector.h
++++ b/include/data/cvector.h
+@@ -25,6 +25,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <sys/types.h>
+ 
+ #define CVECTOR_GROW        16
+ 
+diff --git a/include/test/main/executor.h b/include/test/main/executor.h
+index 0faf73f..b37cbf2 100644
+--- a/include/test/main/executor.h
++++ b/include/test/main/executor.h
+@@ -633,7 +633,7 @@ namespace lsp
+     }
+ #endif /* PLATFORM_WINDOWS */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(__GLIBC__)
+     void TestExecutor::start_memcheck(test::Test *v)
+     {
+         if (!pCfg->mtrace)
+diff --git a/include/test/main/types.h b/include/test/main/types.h
+index ef15800..c833379 100644
+--- a/include/test/main/types.h
++++ b/include/test/main/types.h
+@@ -42,7 +42,7 @@
+     #include <fcntl.h>
+ #endif /* PLATFORM_UNIX_COMPATIBLE */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(__GLIBC__)
+     #include <mcheck.h>
+ #endif /* PLATFORM_LINUX */
+ 
+diff --git a/include/testing/mtest/3d/common/X11Renderer.h b/include/testing/mtest/3d/common/X11Renderer.h
+index e8ec205..f0a51e2 100644
+--- a/include/testing/mtest/3d/common/X11Renderer.h
++++ b/include/testing/mtest/3d/common/X11Renderer.h
+@@ -30,7 +30,7 @@
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include <rendering/backend.h>
+ #include <core/ipc/Library.h>
+diff --git a/src/testing/mtest/3d/boolean3d.cpp b/src/testing/mtest/3d/boolean3d.cpp
+index 636dce1..f92c63e 100644
+--- a/src/testing/mtest/3d/boolean3d.cpp
++++ b/src/testing/mtest/3d/boolean3d.cpp
+@@ -41,7 +41,7 @@
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+ #include <GL/glu.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/bsp_context.cpp b/src/testing/mtest/3d/bsp_context.cpp
+index de54427..ea9ab36 100644
+--- a/src/testing/mtest/3d/bsp_context.cpp
++++ b/src/testing/mtest/3d/bsp_context.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/reflections3d.cpp b/src/testing/mtest/3d/reflections3d.cpp
+index e250444..367f86c 100644
+--- a/src/testing/mtest/3d/reflections3d.cpp
++++ b/src/testing/mtest/3d/reflections3d.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/ui/ws/x11/X11Display.cpp b/src/ui/ws/x11/X11Display.cpp
+index d85db51..1bf7ff2 100644
+--- a/src/ui/ws/x11/X11Display.cpp
++++ b/src/ui/ws/x11/X11Display.cpp
+@@ -23,7 +23,7 @@
+ 
+ #ifdef USE_X11_DISPLAY
+ 
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ 
diff --git a/srcpkgs/lsp-plugins/template b/srcpkgs/lsp-plugins/template
new file mode 100644
index 000000000000..49347ca2e0be
--- /dev/null
+++ b/srcpkgs/lsp-plugins/template
@@ -0,0 +1,28 @@
+# Template file for 'lsp-plugins'
+pkgname=lsp-plugins
+version=1.1.30
+revision=1
+build_style=gnu-makefile
+hostmakedepends="pkg-config php"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel ladspa-sdk jack-devel"
+short_desc="Collection of free plugins compatible with LADSPA, LV2 and LinuxVST"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/"
+distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+_arch=$(echo $XBPS_TARGET_MACHINE | sed "s/-musl$//")
+case "$_arch" in
+	i686) export BUILD_PROFILE=i586 ;;
+	*)    export BUILD_PROFILE=${_arch} ;;
+esac
+
+# https://github.com/sadko4u/lsp-plugins/issues/191#issuecomment-812847630
+CXXFLAGS="$CXXFLAGS -std=c++98"
+
+do_check() {
+	export CXXFLAGS="$CXXFLAGS -DLSP_TESTING"
+	make test
+	.test/lsp-plugins-test utest
+}

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Updated] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (13 preceding siblings ...)
  2021-07-28 19:48 ` Logarithmus
@ 2021-07-28 19:59 ` Logarithmus
  2021-07-28 20:04 ` [PR REVIEW] " paper42
                   ` (52 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-28 19:59 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1877 bytes --]

There is an updated pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.
Continuation of https://github.com/void-linux/void-packages/pull/29932

TODO:
- [ ] wait for https://github.com/sadko4u/lsp-plugins/pull/198
- [ ] fix i686
- [ ] fix arm

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 9967 bytes --]

From d78da70f9ecacf153c18447c5af29f494ce7f954 Mon Sep 17 00:00:00 2001
From: Artur Sinila <freesoftware@logarithmus.dev>
Date: Mon, 5 Jul 2021 03:44:08 +0300
Subject: [PATCH 1/2] common/build-style/: enable running tests in parallel

---
 common/build-style/cmake.sh           | 6 +++++-
 common/build-style/configure.sh       | 6 +++++-
 common/build-style/gnu-configure.sh   | 6 +++++-
 common/build-style/gnu-makefile.sh    | 6 +++++-
 common/build-style/perl-module.sh     | 6 +++++-
 common/environment/setup/sourcepkg.sh | 3 ++-
 6 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/common/build-style/cmake.sh b/common/build-style/cmake.sh
index 401dabad31c8..c7ffd16fee21 100644
--- a/common/build-style/cmake.sh
+++ b/common/build-style/cmake.sh
@@ -113,7 +113,11 @@ do_check() {
 
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/configure.sh b/common/build-style/configure.sh
index 0963fc347934..b846a1a77572 100644
--- a/common/build-style/configure.sh
+++ b/common/build-style/configure.sh
@@ -29,7 +29,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-configure.sh b/common/build-style/gnu-configure.sh
index 8121136cd121..b09de442b05b 100644
--- a/common/build-style/gnu-configure.sh
+++ b/common/build-style/gnu-configure.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-makefile.sh b/common/build-style/gnu-makefile.sh
index d7ea148fc483..0f7afa7d3695 100644
--- a/common/build-style/gnu-makefile.sh
+++ b/common/build-style/gnu-makefile.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/perl-module.sh b/common/build-style/perl-module.sh
index b9a01b13cfa9..d47945b33d36 100644
--- a/common/build-style/perl-module.sh
+++ b/common/build-style/perl-module.sh
@@ -79,7 +79,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/environment/setup/sourcepkg.sh b/common/environment/setup/sourcepkg.sh
index bc06f745b78a..1fd541f1e715 100644
--- a/common/environment/setup/sourcepkg.sh
+++ b/common/environment/setup/sourcepkg.sh
@@ -13,7 +13,8 @@ unset -v cmake_builddir meson_builddir
 unset -v meson_crossfile
 unset -v gemspec
 unset -v go_import_path go_package go_mod_mode
-unset -v patch_args disable_parallel_build keep_libtool_archives make_use_env
+unset -v patch_args disable_parallel_build disable_parallel_check
+unset -v keep_libtool_archives make_use_env
 unset -v reverts subpackages makedepends hostmakedepends checkdepends depends restricted
 unset -v nopie build_options build_options_default bootstrap repository reverts
 unset -v CFLAGS CXXFLAGS FFLAGS CPPFLAGS LDFLAGS LD_LIBRARY_PATH

From 0da27cc76d0765677b4f7dc2c8ce3937489bfe3b Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH 2/2] New package: lsp-plugins-1.1.30

---
 .../00-makefile-test-remove-cflags.patch      |  12 ++
 srcpkgs/lsp-plugins/patches/01-musl.patch     | 104 ++++++++++++++++++
 srcpkgs/lsp-plugins/template                  |  28 +++++
 3 files changed, 144 insertions(+)
 create mode 100644 srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
 create mode 100644 srcpkgs/lsp-plugins/patches/01-musl.patch
 create mode 100644 srcpkgs/lsp-plugins/template

diff --git a/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
new file mode 100644
index 000000000000..fd82f25d4a25
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
@@ -0,0 +1,12 @@
+https://github.com/void-linux/void-packages/pull/29932#discussion_r605695858
+--- a/Makefile
++++ b/Makefile
+@@ -108,8 +108,6 @@ trace: export EXE_FLAGS     += -g3
+ trace: compile
+ 
+ test: OBJDIR                 = $(TESTDIR)
+-test: export CFLAGS         += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-test: export CXXFLAGS       += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
diff --git a/srcpkgs/lsp-plugins/patches/01-musl.patch b/srcpkgs/lsp-plugins/patches/01-musl.patch
new file mode 100644
index 000000000000..de8c1ca275c3
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/01-musl.patch
@@ -0,0 +1,104 @@
+https://github.com/sadko4u/lsp-plugins/pull/198
+diff --git a/include/data/cvector.h b/include/data/cvector.h
+index eccc94a..17fe119 100644
+--- a/include/data/cvector.h
++++ b/include/data/cvector.h
+@@ -25,6 +25,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <sys/types.h>
+ 
+ #define CVECTOR_GROW        16
+ 
+diff --git a/include/test/main/executor.h b/include/test/main/executor.h
+index 0faf73f..b37cbf2 100644
+--- a/include/test/main/executor.h
++++ b/include/test/main/executor.h
+@@ -633,7 +633,7 @@ namespace lsp
+     }
+ #endif /* PLATFORM_WINDOWS */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(__GLIBC__)
+     void TestExecutor::start_memcheck(test::Test *v)
+     {
+         if (!pCfg->mtrace)
+diff --git a/include/test/main/types.h b/include/test/main/types.h
+index ef15800..c833379 100644
+--- a/include/test/main/types.h
++++ b/include/test/main/types.h
+@@ -42,7 +42,7 @@
+     #include <fcntl.h>
+ #endif /* PLATFORM_UNIX_COMPATIBLE */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(__GLIBC__)
+     #include <mcheck.h>
+ #endif /* PLATFORM_LINUX */
+ 
+diff --git a/include/testing/mtest/3d/common/X11Renderer.h b/include/testing/mtest/3d/common/X11Renderer.h
+index e8ec205..f0a51e2 100644
+--- a/include/testing/mtest/3d/common/X11Renderer.h
++++ b/include/testing/mtest/3d/common/X11Renderer.h
+@@ -30,7 +30,7 @@
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include <rendering/backend.h>
+ #include <core/ipc/Library.h>
+diff --git a/src/testing/mtest/3d/boolean3d.cpp b/src/testing/mtest/3d/boolean3d.cpp
+index 636dce1..f92c63e 100644
+--- a/src/testing/mtest/3d/boolean3d.cpp
++++ b/src/testing/mtest/3d/boolean3d.cpp
+@@ -41,7 +41,7 @@
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+ #include <GL/glu.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/bsp_context.cpp b/src/testing/mtest/3d/bsp_context.cpp
+index de54427..ea9ab36 100644
+--- a/src/testing/mtest/3d/bsp_context.cpp
++++ b/src/testing/mtest/3d/bsp_context.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/reflections3d.cpp b/src/testing/mtest/3d/reflections3d.cpp
+index e250444..367f86c 100644
+--- a/src/testing/mtest/3d/reflections3d.cpp
++++ b/src/testing/mtest/3d/reflections3d.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/ui/ws/x11/X11Display.cpp b/src/ui/ws/x11/X11Display.cpp
+index d85db51..1bf7ff2 100644
+--- a/src/ui/ws/x11/X11Display.cpp
++++ b/src/ui/ws/x11/X11Display.cpp
+@@ -23,7 +23,7 @@
+ 
+ #ifdef USE_X11_DISPLAY
+ 
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ 
diff --git a/srcpkgs/lsp-plugins/template b/srcpkgs/lsp-plugins/template
new file mode 100644
index 000000000000..fd20c04a5beb
--- /dev/null
+++ b/srcpkgs/lsp-plugins/template
@@ -0,0 +1,28 @@
+# Template file for 'lsp-plugins'
+pkgname=lsp-plugins
+version=1.1.30
+revision=1
+build_style=gnu-makefile
+hostmakedepends="pkg-config php"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel ladspa-sdk jack-devel"
+short_desc="Collection of free plugins compatible with LADSPA, LV2 and LinuxVST"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/"
+distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+_arch=$(echo $XBPS_TARGET_MACHINE | sed "s/-musl$//")
+case "$_arch" in
+	i686) export BUILD_PROFILE=i586 ;;
+	*)    export BUILD_PROFILE=${_arch} ;;
+esac
+
+# https://github.com/sadko4u/lsp-plugins/issues/191#issuecomment-812847630
+CXXFLAGS="$CXXFLAGS -std=c++98"
+
+do_check() {
+	export CXXFLAGS="$CXXFLAGS -DLSP_TESTING -DLSP_TRACE"
+	make test
+	.test/lsp-plugins-test utest
+}

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (14 preceding siblings ...)
  2021-07-28 19:59 ` Logarithmus
@ 2021-07-28 20:04 ` paper42
  2021-07-28 20:04 ` paper42
                   ` (51 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: paper42 @ 2021-07-28 20:04 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 310 bytes --]

New review comment by paper42 on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r678611083

Comment:
Are only some architectures supported or is there a generic profile for the rest? If there is no generic profile, do you think this package should specify archs=""

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (15 preceding siblings ...)
  2021-07-28 20:04 ` [PR REVIEW] " paper42
@ 2021-07-28 20:04 ` paper42
  2021-07-28 20:04 ` paper42
                   ` (50 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: paper42 @ 2021-07-28 20:04 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 309 bytes --]

New review comment by paper42 on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r678614254

Comment:
I think it would be nice to avoid exporting CXXFLAGS with `CXXFLAGS="..." make test` or even override the variable in the Makefile with `make test CXXFLAGS="..."`

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (16 preceding siblings ...)
  2021-07-28 20:04 ` paper42
@ 2021-07-28 20:04 ` paper42
  2021-07-28 20:05 ` paper42
                   ` (49 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: paper42 @ 2021-07-28 20:04 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 194 bytes --]

New review comment by paper42 on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r678610217

Comment:
```
_arch="${XBPS_TARGET_MACHINE%%-musl}"
```

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (17 preceding siblings ...)
  2021-07-28 20:04 ` paper42
@ 2021-07-28 20:05 ` paper42
  2021-07-28 20:06 ` Logarithmus
                   ` (48 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: paper42 @ 2021-07-28 20:05 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 224 bytes --]

New comment by paper42 on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#issuecomment-888585700

Comment:
please remove the parallel tests commit from this PR, it is confusing for reviewers

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (18 preceding siblings ...)
  2021-07-28 20:05 ` paper42
@ 2021-07-28 20:06 ` Logarithmus
  2021-07-28 20:08 ` [PR REVIEW] " paper42
                   ` (47 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-28 20:06 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 311 bytes --]

New comment by Logarithmus on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#issuecomment-888586655

Comment:
> please remove the parallel tests commit from this PR, it is confusing for reviewers

I'll remove it when I get all the archs working, it's very useful for me now.

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (19 preceding siblings ...)
  2021-07-28 20:06 ` Logarithmus
@ 2021-07-28 20:08 ` paper42
  2021-07-28 20:10 ` Logarithmus
                   ` (46 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: paper42 @ 2021-07-28 20:08 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 402 bytes --]

New review comment by paper42 on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r678617275

Comment:
The issue is straightforward, so I don't think you have to link it, just mention that lsp-plugins needs C++98+.

`CXXFLAGS="-std=c++98"` is enough. After the template is imported, the value of default CXXFLAGGS is merged with CXXFLAGS from the template.

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (20 preceding siblings ...)
  2021-07-28 20:08 ` [PR REVIEW] " paper42
@ 2021-07-28 20:10 ` Logarithmus
  2021-07-28 20:10 ` Logarithmus
                   ` (45 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-28 20:10 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 496 bytes --]

New review comment by Logarithmus on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r678618350

Comment:
> The issue is straightforward, so I don't think you have to link it, just mention that lsp-plugins needs C++98+.
> 
> `CXXFLAGS="-std=c++98"` is enough. After the template is imported, the value of default CXXFLAGGS is merged with CXXFLAGS from the template.

See https://github.com/void-linux/void-packages/pull/31664#discussion_r659215151

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (21 preceding siblings ...)
  2021-07-28 20:10 ` Logarithmus
@ 2021-07-28 20:10 ` Logarithmus
  2021-07-28 20:11 ` Logarithmus
                   ` (44 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-28 20:10 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 348 bytes --]

New review comment by Logarithmus on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r678618350

Comment:
> The issue is straightforward, so I don't think you have to link it, just mention that lsp-plugins needs C++98+.

See https://github.com/void-linux/void-packages/pull/31664#discussion_r659215151

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (22 preceding siblings ...)
  2021-07-28 20:10 ` Logarithmus
@ 2021-07-28 20:11 ` Logarithmus
  2021-07-28 20:11 ` Logarithmus
                   ` (43 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-28 20:11 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 212 bytes --]

New comment by Logarithmus on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#issuecomment-888589439

Comment:
@paper42 BTW, will this package be still usefull for `easyeffects`?

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (23 preceding siblings ...)
  2021-07-28 20:11 ` Logarithmus
@ 2021-07-28 20:11 ` Logarithmus
  2021-07-28 20:19 ` [PR REVIEW] " Logarithmus
                   ` (42 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-28 20:11 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 211 bytes --]

New comment by Logarithmus on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#issuecomment-888589439

Comment:
@paper42 BTW, will this package be still useful for `easyeffects`?

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (24 preceding siblings ...)
  2021-07-28 20:11 ` Logarithmus
@ 2021-07-28 20:19 ` Logarithmus
  2021-07-28 20:19 ` Logarithmus
                   ` (41 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-28 20:19 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 289 bytes --]

New review comment by Logarithmus on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r678623571

Comment:
@paper42 looks like `lsp-plugins/scripts/make/configure.mk` doesn't contain a generic profile, so you are probably right about `archs=""`.

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (25 preceding siblings ...)
  2021-07-28 20:19 ` [PR REVIEW] " Logarithmus
@ 2021-07-28 20:19 ` Logarithmus
  2021-07-28 20:21 ` Logarithmus
                   ` (40 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-28 20:19 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 287 bytes --]

New review comment by Logarithmus on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r678623571

Comment:
@paper42 looks like `lsp-plugins/scripts/make/configure.mk` doesn't contain a generic profile, so you are probably right about `archs=`.

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (26 preceding siblings ...)
  2021-07-28 20:19 ` Logarithmus
@ 2021-07-28 20:21 ` Logarithmus
  2021-07-28 20:33 ` paper42
                   ` (39 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-28 20:21 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 502 bytes --]

New review comment by Logarithmus on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r678624788

Comment:
> I think it would be nice to avoid exporting CXXFLAGS with `CXXFLAGS="..." make test` or even override the variable in the Makefile with `make test CXXFLAGS="..."`

I'm afraid it's not possible https://github.com/void-linux/void-packages/blob/0da27cc76d0765677b4f7dc2c8ce3937489bfe3b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (27 preceding siblings ...)
  2021-07-28 20:21 ` Logarithmus
@ 2021-07-28 20:33 ` paper42
  2021-07-28 20:52 ` [PR PATCH] [Updated] " Logarithmus
                   ` (38 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: paper42 @ 2021-07-28 20:33 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 247 bytes --]

New comment by paper42 on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#issuecomment-888602526

Comment:
> @paper42 BTW, will this package be still useful for `easyeffects`?

yes, nothing changes on that front

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Updated] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (28 preceding siblings ...)
  2021-07-28 20:33 ` paper42
@ 2021-07-28 20:52 ` Logarithmus
  2021-07-28 20:57 ` Logarithmus
                   ` (37 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-28 20:52 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1877 bytes --]

There is an updated pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.
Continuation of https://github.com/void-linux/void-packages/pull/29932

TODO:
- [ ] wait for https://github.com/sadko4u/lsp-plugins/pull/198
- [ ] fix i686
- [ ] fix arm

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 9996 bytes --]

From d78da70f9ecacf153c18447c5af29f494ce7f954 Mon Sep 17 00:00:00 2001
From: Artur Sinila <freesoftware@logarithmus.dev>
Date: Mon, 5 Jul 2021 03:44:08 +0300
Subject: [PATCH 1/2] common/build-style/: enable running tests in parallel

---
 common/build-style/cmake.sh           | 6 +++++-
 common/build-style/configure.sh       | 6 +++++-
 common/build-style/gnu-configure.sh   | 6 +++++-
 common/build-style/gnu-makefile.sh    | 6 +++++-
 common/build-style/perl-module.sh     | 6 +++++-
 common/environment/setup/sourcepkg.sh | 3 ++-
 6 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/common/build-style/cmake.sh b/common/build-style/cmake.sh
index 401dabad31c8..c7ffd16fee21 100644
--- a/common/build-style/cmake.sh
+++ b/common/build-style/cmake.sh
@@ -113,7 +113,11 @@ do_check() {
 
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/configure.sh b/common/build-style/configure.sh
index 0963fc347934..b846a1a77572 100644
--- a/common/build-style/configure.sh
+++ b/common/build-style/configure.sh
@@ -29,7 +29,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-configure.sh b/common/build-style/gnu-configure.sh
index 8121136cd121..b09de442b05b 100644
--- a/common/build-style/gnu-configure.sh
+++ b/common/build-style/gnu-configure.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-makefile.sh b/common/build-style/gnu-makefile.sh
index d7ea148fc483..0f7afa7d3695 100644
--- a/common/build-style/gnu-makefile.sh
+++ b/common/build-style/gnu-makefile.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/perl-module.sh b/common/build-style/perl-module.sh
index b9a01b13cfa9..d47945b33d36 100644
--- a/common/build-style/perl-module.sh
+++ b/common/build-style/perl-module.sh
@@ -79,7 +79,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/environment/setup/sourcepkg.sh b/common/environment/setup/sourcepkg.sh
index bc06f745b78a..1fd541f1e715 100644
--- a/common/environment/setup/sourcepkg.sh
+++ b/common/environment/setup/sourcepkg.sh
@@ -13,7 +13,8 @@ unset -v cmake_builddir meson_builddir
 unset -v meson_crossfile
 unset -v gemspec
 unset -v go_import_path go_package go_mod_mode
-unset -v patch_args disable_parallel_build keep_libtool_archives make_use_env
+unset -v patch_args disable_parallel_build disable_parallel_check
+unset -v keep_libtool_archives make_use_env
 unset -v reverts subpackages makedepends hostmakedepends checkdepends depends restricted
 unset -v nopie build_options build_options_default bootstrap repository reverts
 unset -v CFLAGS CXXFLAGS FFLAGS CPPFLAGS LDFLAGS LD_LIBRARY_PATH

From 61e7ecd1b23de77e6dabee1592e5ab5d850f264b Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH 2/2] New package: lsp-plugins-1.1.30

---
 .../00-makefile-test-remove-cflags.patch      |  12 ++
 srcpkgs/lsp-plugins/patches/01-musl.patch     | 104 ++++++++++++++++++
 srcpkgs/lsp-plugins/template                  |  29 +++++
 3 files changed, 145 insertions(+)
 create mode 100644 srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
 create mode 100644 srcpkgs/lsp-plugins/patches/01-musl.patch
 create mode 100644 srcpkgs/lsp-plugins/template

diff --git a/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
new file mode 100644
index 000000000000..fd82f25d4a25
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
@@ -0,0 +1,12 @@
+https://github.com/void-linux/void-packages/pull/29932#discussion_r605695858
+--- a/Makefile
++++ b/Makefile
+@@ -108,8 +108,6 @@ trace: export EXE_FLAGS     += -g3
+ trace: compile
+ 
+ test: OBJDIR                 = $(TESTDIR)
+-test: export CFLAGS         += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-test: export CXXFLAGS       += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
diff --git a/srcpkgs/lsp-plugins/patches/01-musl.patch b/srcpkgs/lsp-plugins/patches/01-musl.patch
new file mode 100644
index 000000000000..de8c1ca275c3
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/01-musl.patch
@@ -0,0 +1,104 @@
+https://github.com/sadko4u/lsp-plugins/pull/198
+diff --git a/include/data/cvector.h b/include/data/cvector.h
+index eccc94a..17fe119 100644
+--- a/include/data/cvector.h
++++ b/include/data/cvector.h
+@@ -25,6 +25,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <sys/types.h>
+ 
+ #define CVECTOR_GROW        16
+ 
+diff --git a/include/test/main/executor.h b/include/test/main/executor.h
+index 0faf73f..b37cbf2 100644
+--- a/include/test/main/executor.h
++++ b/include/test/main/executor.h
+@@ -633,7 +633,7 @@ namespace lsp
+     }
+ #endif /* PLATFORM_WINDOWS */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(__GLIBC__)
+     void TestExecutor::start_memcheck(test::Test *v)
+     {
+         if (!pCfg->mtrace)
+diff --git a/include/test/main/types.h b/include/test/main/types.h
+index ef15800..c833379 100644
+--- a/include/test/main/types.h
++++ b/include/test/main/types.h
+@@ -42,7 +42,7 @@
+     #include <fcntl.h>
+ #endif /* PLATFORM_UNIX_COMPATIBLE */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(__GLIBC__)
+     #include <mcheck.h>
+ #endif /* PLATFORM_LINUX */
+ 
+diff --git a/include/testing/mtest/3d/common/X11Renderer.h b/include/testing/mtest/3d/common/X11Renderer.h
+index e8ec205..f0a51e2 100644
+--- a/include/testing/mtest/3d/common/X11Renderer.h
++++ b/include/testing/mtest/3d/common/X11Renderer.h
+@@ -30,7 +30,7 @@
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include <rendering/backend.h>
+ #include <core/ipc/Library.h>
+diff --git a/src/testing/mtest/3d/boolean3d.cpp b/src/testing/mtest/3d/boolean3d.cpp
+index 636dce1..f92c63e 100644
+--- a/src/testing/mtest/3d/boolean3d.cpp
++++ b/src/testing/mtest/3d/boolean3d.cpp
+@@ -41,7 +41,7 @@
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+ #include <GL/glu.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/bsp_context.cpp b/src/testing/mtest/3d/bsp_context.cpp
+index de54427..ea9ab36 100644
+--- a/src/testing/mtest/3d/bsp_context.cpp
++++ b/src/testing/mtest/3d/bsp_context.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/reflections3d.cpp b/src/testing/mtest/3d/reflections3d.cpp
+index e250444..367f86c 100644
+--- a/src/testing/mtest/3d/reflections3d.cpp
++++ b/src/testing/mtest/3d/reflections3d.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/ui/ws/x11/X11Display.cpp b/src/ui/ws/x11/X11Display.cpp
+index d85db51..1bf7ff2 100644
+--- a/src/ui/ws/x11/X11Display.cpp
++++ b/src/ui/ws/x11/X11Display.cpp
+@@ -23,7 +23,7 @@
+ 
+ #ifdef USE_X11_DISPLAY
+ 
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ 
diff --git a/srcpkgs/lsp-plugins/template b/srcpkgs/lsp-plugins/template
new file mode 100644
index 000000000000..18a1b402181b
--- /dev/null
+++ b/srcpkgs/lsp-plugins/template
@@ -0,0 +1,29 @@
+# Template file for 'lsp-plugins'
+pkgname=lsp-plugins
+version=1.1.30
+revision=1
+build_style=gnu-makefile
+hostmakedepends="pkg-config php"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel ladspa-sdk jack-devel"
+make_build_args='SHELL="sh -x"'
+short_desc="Collection of free plugins compatible with LADSPA, LV2 and LinuxVST"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/"
+distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+_arch="${XBPS_TARGET_MACHINE%%-musl}"
+# case "$_arch" in
+# 	i686) export BUILD_PROFILE=i586 ;;
+# 	*)    export BUILD_PROFILE=${_arch} ;;
+# esac
+
+# https://github.com/sadko4u/lsp-plugins/issues/191#issuecomment-812847630
+CXXFLAGS="-std=c++98"
+
+do_check() {
+	export CXXFLAGS="$CXXFLAGS -DLSP_TESTING -DLSP_TRACE"
+	make SHELL="sh -x" test
+	.test/lsp-plugins-test utest
+}

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Updated] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (29 preceding siblings ...)
  2021-07-28 20:52 ` [PR PATCH] [Updated] " Logarithmus
@ 2021-07-28 20:57 ` Logarithmus
  2021-07-28 21:27 ` [PR REVIEW] " paper42
                   ` (36 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-28 20:57 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1877 bytes --]

There is an updated pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.
Continuation of https://github.com/void-linux/void-packages/pull/29932

TODO:
- [ ] wait for https://github.com/sadko4u/lsp-plugins/pull/198
- [ ] fix i686
- [ ] fix arm

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 9963 bytes --]

From d78da70f9ecacf153c18447c5af29f494ce7f954 Mon Sep 17 00:00:00 2001
From: Artur Sinila <freesoftware@logarithmus.dev>
Date: Mon, 5 Jul 2021 03:44:08 +0300
Subject: [PATCH 1/2] common/build-style/: enable running tests in parallel

---
 common/build-style/cmake.sh           | 6 +++++-
 common/build-style/configure.sh       | 6 +++++-
 common/build-style/gnu-configure.sh   | 6 +++++-
 common/build-style/gnu-makefile.sh    | 6 +++++-
 common/build-style/perl-module.sh     | 6 +++++-
 common/environment/setup/sourcepkg.sh | 3 ++-
 6 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/common/build-style/cmake.sh b/common/build-style/cmake.sh
index 401dabad31c8..c7ffd16fee21 100644
--- a/common/build-style/cmake.sh
+++ b/common/build-style/cmake.sh
@@ -113,7 +113,11 @@ do_check() {
 
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/configure.sh b/common/build-style/configure.sh
index 0963fc347934..b846a1a77572 100644
--- a/common/build-style/configure.sh
+++ b/common/build-style/configure.sh
@@ -29,7 +29,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-configure.sh b/common/build-style/gnu-configure.sh
index 8121136cd121..b09de442b05b 100644
--- a/common/build-style/gnu-configure.sh
+++ b/common/build-style/gnu-configure.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-makefile.sh b/common/build-style/gnu-makefile.sh
index d7ea148fc483..0f7afa7d3695 100644
--- a/common/build-style/gnu-makefile.sh
+++ b/common/build-style/gnu-makefile.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/perl-module.sh b/common/build-style/perl-module.sh
index b9a01b13cfa9..d47945b33d36 100644
--- a/common/build-style/perl-module.sh
+++ b/common/build-style/perl-module.sh
@@ -79,7 +79,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/environment/setup/sourcepkg.sh b/common/environment/setup/sourcepkg.sh
index bc06f745b78a..1fd541f1e715 100644
--- a/common/environment/setup/sourcepkg.sh
+++ b/common/environment/setup/sourcepkg.sh
@@ -13,7 +13,8 @@ unset -v cmake_builddir meson_builddir
 unset -v meson_crossfile
 unset -v gemspec
 unset -v go_import_path go_package go_mod_mode
-unset -v patch_args disable_parallel_build keep_libtool_archives make_use_env
+unset -v patch_args disable_parallel_build disable_parallel_check
+unset -v keep_libtool_archives make_use_env
 unset -v reverts subpackages makedepends hostmakedepends checkdepends depends restricted
 unset -v nopie build_options build_options_default bootstrap repository reverts
 unset -v CFLAGS CXXFLAGS FFLAGS CPPFLAGS LDFLAGS LD_LIBRARY_PATH

From 7130c222b35dfd3e7d27e4fa617916c7ebfc3af6 Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH 2/2] New package: lsp-plugins-1.1.30

---
 .../00-makefile-test-remove-cflags.patch      |  12 ++
 srcpkgs/lsp-plugins/patches/01-musl.patch     | 104 ++++++++++++++++++
 srcpkgs/lsp-plugins/template                  |  28 +++++
 3 files changed, 144 insertions(+)
 create mode 100644 srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
 create mode 100644 srcpkgs/lsp-plugins/patches/01-musl.patch
 create mode 100644 srcpkgs/lsp-plugins/template

diff --git a/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
new file mode 100644
index 000000000000..fd82f25d4a25
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
@@ -0,0 +1,12 @@
+https://github.com/void-linux/void-packages/pull/29932#discussion_r605695858
+--- a/Makefile
++++ b/Makefile
+@@ -108,8 +108,6 @@ trace: export EXE_FLAGS     += -g3
+ trace: compile
+ 
+ test: OBJDIR                 = $(TESTDIR)
+-test: export CFLAGS         += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-test: export CXXFLAGS       += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
diff --git a/srcpkgs/lsp-plugins/patches/01-musl.patch b/srcpkgs/lsp-plugins/patches/01-musl.patch
new file mode 100644
index 000000000000..de8c1ca275c3
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/01-musl.patch
@@ -0,0 +1,104 @@
+https://github.com/sadko4u/lsp-plugins/pull/198
+diff --git a/include/data/cvector.h b/include/data/cvector.h
+index eccc94a..17fe119 100644
+--- a/include/data/cvector.h
++++ b/include/data/cvector.h
+@@ -25,6 +25,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <sys/types.h>
+ 
+ #define CVECTOR_GROW        16
+ 
+diff --git a/include/test/main/executor.h b/include/test/main/executor.h
+index 0faf73f..b37cbf2 100644
+--- a/include/test/main/executor.h
++++ b/include/test/main/executor.h
+@@ -633,7 +633,7 @@ namespace lsp
+     }
+ #endif /* PLATFORM_WINDOWS */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(__GLIBC__)
+     void TestExecutor::start_memcheck(test::Test *v)
+     {
+         if (!pCfg->mtrace)
+diff --git a/include/test/main/types.h b/include/test/main/types.h
+index ef15800..c833379 100644
+--- a/include/test/main/types.h
++++ b/include/test/main/types.h
+@@ -42,7 +42,7 @@
+     #include <fcntl.h>
+ #endif /* PLATFORM_UNIX_COMPATIBLE */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(__GLIBC__)
+     #include <mcheck.h>
+ #endif /* PLATFORM_LINUX */
+ 
+diff --git a/include/testing/mtest/3d/common/X11Renderer.h b/include/testing/mtest/3d/common/X11Renderer.h
+index e8ec205..f0a51e2 100644
+--- a/include/testing/mtest/3d/common/X11Renderer.h
++++ b/include/testing/mtest/3d/common/X11Renderer.h
+@@ -30,7 +30,7 @@
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include <rendering/backend.h>
+ #include <core/ipc/Library.h>
+diff --git a/src/testing/mtest/3d/boolean3d.cpp b/src/testing/mtest/3d/boolean3d.cpp
+index 636dce1..f92c63e 100644
+--- a/src/testing/mtest/3d/boolean3d.cpp
++++ b/src/testing/mtest/3d/boolean3d.cpp
+@@ -41,7 +41,7 @@
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+ #include <GL/glu.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/bsp_context.cpp b/src/testing/mtest/3d/bsp_context.cpp
+index de54427..ea9ab36 100644
+--- a/src/testing/mtest/3d/bsp_context.cpp
++++ b/src/testing/mtest/3d/bsp_context.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/reflections3d.cpp b/src/testing/mtest/3d/reflections3d.cpp
+index e250444..367f86c 100644
+--- a/src/testing/mtest/3d/reflections3d.cpp
++++ b/src/testing/mtest/3d/reflections3d.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/ui/ws/x11/X11Display.cpp b/src/ui/ws/x11/X11Display.cpp
+index d85db51..1bf7ff2 100644
+--- a/src/ui/ws/x11/X11Display.cpp
++++ b/src/ui/ws/x11/X11Display.cpp
+@@ -23,7 +23,7 @@
+ 
+ #ifdef USE_X11_DISPLAY
+ 
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ 
diff --git a/srcpkgs/lsp-plugins/template b/srcpkgs/lsp-plugins/template
new file mode 100644
index 000000000000..8362a76cd2da
--- /dev/null
+++ b/srcpkgs/lsp-plugins/template
@@ -0,0 +1,28 @@
+# Template file for 'lsp-plugins'
+pkgname=lsp-plugins
+version=1.1.30
+revision=1
+build_style=gnu-makefile
+hostmakedepends="pkg-config php"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel ladspa-sdk jack-devel"
+short_desc="Collection of free plugins compatible with LADSPA, LV2 and LinuxVST"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/"
+distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+_arch="${XBPS_TARGET_MACHINE%%-musl}"
+# case "$_arch" in
+# 	i686) export BUILD_PROFILE=i586 ;;
+# 	*)    export BUILD_PROFILE=${_arch} ;;
+# esac
+
+# https://github.com/sadko4u/lsp-plugins/issues/191#issuecomment-812847630
+CXXFLAGS="-std=c++98"
+
+do_check() {
+	export CXXFLAGS="$CXXFLAGS -DLSP_TESTING -DLSP_TRACE"
+	make SHELL="sh -x" test
+	.test/lsp-plugins-test utest
+}

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (30 preceding siblings ...)
  2021-07-28 20:57 ` Logarithmus
@ 2021-07-28 21:27 ` paper42
  2021-07-28 22:02 ` [PR PATCH] [Updated] " Logarithmus
                   ` (35 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: paper42 @ 2021-07-28 21:27 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 224 bytes --]

New review comment by paper42 on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r678664103

Comment:
If it works with exporting CXXFLAGS, I think it has to work. Did you test it?

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Updated] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (31 preceding siblings ...)
  2021-07-28 21:27 ` [PR REVIEW] " paper42
@ 2021-07-28 22:02 ` Logarithmus
  2021-07-28 22:31 ` Logarithmus
                   ` (34 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-28 22:02 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 2078 bytes --]

There is an updated pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.
Also used by `easyeffects`, `pulseeffects`' successor 
Continuation of https://github.com/void-linux/void-packages/pull/29932

TODO:
- [ ] wait for https://github.com/sadko4u/lsp-plugins/pull/198
- [ ] implement `VERBOSE` option into `lsp-plugins` Makefiles to save my sanity debugging them
https://github.com/sadko4u/lsp-plugins/pull/200
- [ ] fix i686
- [ ] fix arm

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 59123 bytes --]

From d78da70f9ecacf153c18447c5af29f494ce7f954 Mon Sep 17 00:00:00 2001
From: Artur Sinila <freesoftware@logarithmus.dev>
Date: Mon, 5 Jul 2021 03:44:08 +0300
Subject: [PATCH 1/2] common/build-style/: enable running tests in parallel

---
 common/build-style/cmake.sh           | 6 +++++-
 common/build-style/configure.sh       | 6 +++++-
 common/build-style/gnu-configure.sh   | 6 +++++-
 common/build-style/gnu-makefile.sh    | 6 +++++-
 common/build-style/perl-module.sh     | 6 +++++-
 common/environment/setup/sourcepkg.sh | 3 ++-
 6 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/common/build-style/cmake.sh b/common/build-style/cmake.sh
index 401dabad31c8..c7ffd16fee21 100644
--- a/common/build-style/cmake.sh
+++ b/common/build-style/cmake.sh
@@ -113,7 +113,11 @@ do_check() {
 
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/configure.sh b/common/build-style/configure.sh
index 0963fc347934..b846a1a77572 100644
--- a/common/build-style/configure.sh
+++ b/common/build-style/configure.sh
@@ -29,7 +29,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-configure.sh b/common/build-style/gnu-configure.sh
index 8121136cd121..b09de442b05b 100644
--- a/common/build-style/gnu-configure.sh
+++ b/common/build-style/gnu-configure.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-makefile.sh b/common/build-style/gnu-makefile.sh
index d7ea148fc483..0f7afa7d3695 100644
--- a/common/build-style/gnu-makefile.sh
+++ b/common/build-style/gnu-makefile.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/perl-module.sh b/common/build-style/perl-module.sh
index b9a01b13cfa9..d47945b33d36 100644
--- a/common/build-style/perl-module.sh
+++ b/common/build-style/perl-module.sh
@@ -79,7 +79,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/environment/setup/sourcepkg.sh b/common/environment/setup/sourcepkg.sh
index bc06f745b78a..1fd541f1e715 100644
--- a/common/environment/setup/sourcepkg.sh
+++ b/common/environment/setup/sourcepkg.sh
@@ -13,7 +13,8 @@ unset -v cmake_builddir meson_builddir
 unset -v meson_crossfile
 unset -v gemspec
 unset -v go_import_path go_package go_mod_mode
-unset -v patch_args disable_parallel_build keep_libtool_archives make_use_env
+unset -v patch_args disable_parallel_build disable_parallel_check
+unset -v keep_libtool_archives make_use_env
 unset -v reverts subpackages makedepends hostmakedepends checkdepends depends restricted
 unset -v nopie build_options build_options_default bootstrap repository reverts
 unset -v CFLAGS CXXFLAGS FFLAGS CPPFLAGS LDFLAGS LD_LIBRARY_PATH

From 4da751864f875f6a406773f5226d5f03eeb5b911 Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH 2/2] New package: lsp-plugins-1.1.30

---
 .../00-makefile-test-remove-cflags.patch      |   12 +
 srcpkgs/lsp-plugins/patches/01-musl.patch     |  104 ++
 .../lsp-plugins/patches/02-make-verbose.patch | 1127 +++++++++++++++++
 srcpkgs/lsp-plugins/template                  |   29 +
 4 files changed, 1272 insertions(+)
 create mode 100644 srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
 create mode 100644 srcpkgs/lsp-plugins/patches/01-musl.patch
 create mode 100644 srcpkgs/lsp-plugins/patches/02-make-verbose.patch
 create mode 100644 srcpkgs/lsp-plugins/template

diff --git a/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
new file mode 100644
index 000000000000..fd82f25d4a25
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
@@ -0,0 +1,12 @@
+https://github.com/void-linux/void-packages/pull/29932#discussion_r605695858
+--- a/Makefile
++++ b/Makefile
+@@ -108,8 +108,6 @@ trace: export EXE_FLAGS     += -g3
+ trace: compile
+ 
+ test: OBJDIR                 = $(TESTDIR)
+-test: export CFLAGS         += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-test: export CXXFLAGS       += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
diff --git a/srcpkgs/lsp-plugins/patches/01-musl.patch b/srcpkgs/lsp-plugins/patches/01-musl.patch
new file mode 100644
index 000000000000..de8c1ca275c3
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/01-musl.patch
@@ -0,0 +1,104 @@
+https://github.com/sadko4u/lsp-plugins/pull/198
+diff --git a/include/data/cvector.h b/include/data/cvector.h
+index eccc94a..17fe119 100644
+--- a/include/data/cvector.h
++++ b/include/data/cvector.h
+@@ -25,6 +25,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <sys/types.h>
+ 
+ #define CVECTOR_GROW        16
+ 
+diff --git a/include/test/main/executor.h b/include/test/main/executor.h
+index 0faf73f..b37cbf2 100644
+--- a/include/test/main/executor.h
++++ b/include/test/main/executor.h
+@@ -633,7 +633,7 @@ namespace lsp
+     }
+ #endif /* PLATFORM_WINDOWS */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(__GLIBC__)
+     void TestExecutor::start_memcheck(test::Test *v)
+     {
+         if (!pCfg->mtrace)
+diff --git a/include/test/main/types.h b/include/test/main/types.h
+index ef15800..c833379 100644
+--- a/include/test/main/types.h
++++ b/include/test/main/types.h
+@@ -42,7 +42,7 @@
+     #include <fcntl.h>
+ #endif /* PLATFORM_UNIX_COMPATIBLE */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(__GLIBC__)
+     #include <mcheck.h>
+ #endif /* PLATFORM_LINUX */
+ 
+diff --git a/include/testing/mtest/3d/common/X11Renderer.h b/include/testing/mtest/3d/common/X11Renderer.h
+index e8ec205..f0a51e2 100644
+--- a/include/testing/mtest/3d/common/X11Renderer.h
++++ b/include/testing/mtest/3d/common/X11Renderer.h
+@@ -30,7 +30,7 @@
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include <rendering/backend.h>
+ #include <core/ipc/Library.h>
+diff --git a/src/testing/mtest/3d/boolean3d.cpp b/src/testing/mtest/3d/boolean3d.cpp
+index 636dce1..f92c63e 100644
+--- a/src/testing/mtest/3d/boolean3d.cpp
++++ b/src/testing/mtest/3d/boolean3d.cpp
+@@ -41,7 +41,7 @@
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+ #include <GL/glu.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/bsp_context.cpp b/src/testing/mtest/3d/bsp_context.cpp
+index de54427..ea9ab36 100644
+--- a/src/testing/mtest/3d/bsp_context.cpp
++++ b/src/testing/mtest/3d/bsp_context.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/reflections3d.cpp b/src/testing/mtest/3d/reflections3d.cpp
+index e250444..367f86c 100644
+--- a/src/testing/mtest/3d/reflections3d.cpp
++++ b/src/testing/mtest/3d/reflections3d.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/ui/ws/x11/X11Display.cpp b/src/ui/ws/x11/X11Display.cpp
+index d85db51..1bf7ff2 100644
+--- a/src/ui/ws/x11/X11Display.cpp
++++ b/src/ui/ws/x11/X11Display.cpp
+@@ -23,7 +23,7 @@
+ 
+ #ifdef USE_X11_DISPLAY
+ 
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ 
diff --git a/srcpkgs/lsp-plugins/patches/02-make-verbose.patch b/srcpkgs/lsp-plugins/patches/02-make-verbose.patch
new file mode 100644
index 000000000000..2b490704ec39
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/02-make-verbose.patch
@@ -0,0 +1,1127 @@
+https://github.com/sadko4u/lsp-plugins/pull/200
+diff --git a/Makefile b/Makefile
+index 2d9cb79..8dbd689 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ # Common definitions
+ RELEASE_TEXT            = LICENSE.txt README.txt CHANGELOG.txt
+ RELEASE_SRC             = $(RELEASE_TEXT) src build-*.sh include res Makefile release.sh
+@@ -153,38 +159,38 @@ profile: compile
+ 
+ # Compilation and cleaning targets
+ compile_info:
+-	@echo "-------------------------------------------------------------------------------"
+-	@echo "Building binaries"
+-	@echo "  target architecture : $(BUILD_PROFILE)"
+-	@echo "  target platform     : $(BUILD_PLATFORM)"
+-	@echo "  target system       : $(BUILD_SYSTEM)"
+-	@echo "  compiler            : $(BUILD_COMPILER)"
+-	@echo "  modules             : $(BUILD_MODULES)"
+-	@echo "  UI                  : LV2=$(LV2_UI), VST=$(VST_UI)"
+-	@echo "  3D rendering        : $(BUILD_R3D_BACKENDS)"
+-	@echo "  build directory     : $(OBJDIR)"
+-	@echo "-------------------------------------------------------------------------------"
++	echo "-------------------------------------------------------------------------------"
++	echo "Building binaries"
++	echo "  target architecture : $(BUILD_PROFILE)"
++	echo "  target platform     : $(BUILD_PLATFORM)"
++	echo "  target system       : $(BUILD_SYSTEM)"
++	echo "  compiler            : $(BUILD_COMPILER)"
++	echo "  modules             : $(BUILD_MODULES)"
++	echo "  UI                  : LV2=$(LV2_UI), VST=$(VST_UI)"
++	echo "  3D rendering        : $(BUILD_R3D_BACKENDS)"
++	echo "  build directory     : $(OBJDIR)"
++	echo "-------------------------------------------------------------------------------"
+ 
+ compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@mkdir -p $(CFGDIR)
+-	@test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
+-	@test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
+-	@test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
+-	@test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+-	@echo "Build OK"
++	mkdir -p $(OBJDIR)/src
++	mkdir -p $(CFGDIR)
++	test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
++	test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
++	test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
++	test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++	echo "Build OK"
+ 	
+ test_compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+-	@echo "Test Build OK"
++	mkdir -p $(OBJDIR)/src
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++	echo "Test Build OK"
+ 
+ clean:
+-	@-rm -rf $(BUILDDIR)
+-	@-rm -rf $(TESTDIR)
+-	@-rm -rf $(CFGDIR)
+-	@echo "Clean OK"
++	-rm -rf $(BUILDDIR)
++	-rm -rf $(TESTDIR)
++	-rm -rf $(CFGDIR)
++	echo "Clean OK"
+ 
+ # Build targets
+ build_ladspa: export BUILD_MODULES = ladspa
+@@ -205,184 +211,184 @@ build_doc: compile
+ 
+ # Installation targets
+ install: $(INSTALLATIONS)
+-	@echo "Install OK"
++	echo "Install OK"
+ 
+ install_ladspa: all
+-	@echo "Installing LADSPA plugins to $(DESTDIR)$(LADSPA_PATH)/"
+-	@mkdir -p $(DESTDIR)$(LADSPA_PATH)
+-	@$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
++	echo "Installing LADSPA plugins to $(DESTDIR)$(LADSPA_PATH)/"
++	mkdir -p $(DESTDIR)$(LADSPA_PATH)
++	$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
+ 	
+ install_lv2: all
+-	@echo "Installing LV2 plugins to $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
+-	@$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	echo "Installing LV2 plugins to $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
++	$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+ 	
+ install_vst: all
+-	@echo "Installing VST plugins to $(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+-	@$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	echo "Installing VST plugins to $(DESTDIR)$(VST_PATH)/$(VST_ID)"
++	mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
++	$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+ 
+ install_jack: all
+-	@echo "Installing JACK core to $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+-	@echo "Installing JACK standalone plugins to $(DESTDIR)$(BIN_PATH)"
+-	@mkdir -p "$(DESTDIR)$(BIN_PATH)"
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
++	echo "Installing JACK core to $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
++	mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
++	$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	echo "Installing JACK standalone plugins to $(DESTDIR)$(BIN_PATH)"
++	mkdir -p "$(DESTDIR)$(BIN_PATH)"
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
+ 
+ install_xdg:
+-	@echo "Installing desktop icons to $(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
+-	@mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
+-	@cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
+-	@cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
+-	@cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
+-	@cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
++	echo "Installing desktop icons to $(DESTDIR)$(SHARE_PATH)/applications"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
++	mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
++	cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
++	cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
++	cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
++	cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
+ 
+ install_doc: all
+-	@echo "Installing documentation to $(DESTDIR)$(DOC_PATH)"
+-	@mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	echo "Installing documentation to $(DESTDIR)$(DOC_PATH)"
++	mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+ # Release targets
+ dbg_release: export CFLAGS        += -DLSP_TRACE -O2
+ dbg_release: export CXXFLAGS      += -DLSP_TRACE -O2
+ dbg_release: $(RELEASES)
+-	@echo "Debug Release OK"
++	echo "Debug Release OK"
+ 
+ release: INSTALL        += -s
+ release: $(RELEASES)
+-	@echo "Release OK"
++	echo "Release OK"
+ 
+ release_prepare: all
+-	@echo "Releasing plugins for architecture $(BUILD_PROFILE)"
+-	@mkdir -p $(RELEASE)
+-	@mkdir -p $(DESTDIR)
++	echo "Releasing plugins for architecture $(BUILD_PROFILE)"
++	mkdir -p $(RELEASE)
++	mkdir -p $(DESTDIR)
+ 	
+ release_ladspa: DESTDIR=$(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_ladspa: | release_prepare install_ladspa
+-	@echo "Releasing LADSPA binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	echo "Releasing LADSPA binaries"
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_lv2: DESTDIR=$(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_lv2: | release_prepare install_lv2
+-	@echo "Releasing LV2 binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	echo "Releasing LV2 binaries"
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_vst: DESTDIR=$(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_vst: | release_prepare install_vst
+-	@echo "Releasing VST binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	echo "Releasing VST binaries"
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_jack: DESTDIR=$(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_jack: | release_prepare install_jack
+-	@echo "Releasing JACK binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	echo "Releasing JACK binaries"
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 
+ release_profile: DESTDIR=$(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_profile: | release_prepare
+-	@echo "Releasing PROFILE binaries"
+-	@$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	echo "Releasing PROFILE binaries"
++	$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ 
+ release_src: DESTDIR=$(RELEASE)/$(SRC_ID)
+ release_src: | release_prepare
+-	@echo "Releasing source code binaries"
+-	@mkdir -p $(DESTDIR)
+-	@mkdir -p $(DESTDIR)/scripts
+-	@cp -R $(RELEASE_SRC) $(DESTDIR)/
+-	@cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
+-	@rm -rf $(DESTDIR)
++	echo "Releasing source code binaries"
++	mkdir -p $(DESTDIR)
++	mkdir -p $(DESTDIR)/scripts
++	cp -R $(RELEASE_SRC) $(DESTDIR)/
++	cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
++	rm -rf $(DESTDIR)
+ 
+ release_doc: DESTDIR=$(RELEASE)/$(DOC_ID)
+ release_doc: | release_prepare
+-	@echo "Releasing documentation"
+-	@mkdir -p $(DESTDIR)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
+-	@rm -rf $(DESTDIR)
++	echo "Releasing documentation"
++	mkdir -p $(DESTDIR)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
++	rm -rf $(DESTDIR)
+ 
+ # Unrelease target
+ unrelease: clean
+-	@-rm -rf $(RELEASE)
+-	@echo "Unrelease OK"
++	-rm -rf $(RELEASE)
++	echo "Unrelease OK"
+ 
+ # Uninstall target
+ uninstall: $(UNINSTALLATIONS)
+-	@echo "Uninstall OK"
++	echo "Uninstall OK"
+ 	
+ uninstall_ladspa:
+-	@echo "Uninstalling LADSPA"
+-	@-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
++	echo "Uninstalling LADSPA"
++	-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
+ 	
+ uninstall_lv2:
+-	@echo "Uninstalling LV2"
+-	@-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
++	echo "Uninstalling LV2"
++	-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
+ 	
+ uninstall_vst:
+-	@echo "Uninstalling VST"
+-	@-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
++	echo "Uninstalling VST"
++	-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
++	-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
++	-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
+ 	
+ uninstall_jack:
+-	@echo "Uninstalling JACK"
+-	@-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
+-	@-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
++	echo "Uninstalling JACK"
++	-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
++	-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
++	-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
++	-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
+ 
+ uninstall_xdg:
+-	@echo "Uninstalling desktop icons"
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
+-	@-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
++	echo "Uninstalling desktop icons"
++	-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
++	-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
++	-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
+ 
+ uninstall_doc:
+-	@echo "Uninstalling DOC"
+-	@-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	echo "Uninstalling DOC"
++	-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 1fb917e..565dbb1 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -25,7 +25,6 @@ CXX                      ?= $(TOOL_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
+ 
+-MAKE_OPTS                 = -s
+ CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+@@ -62,7 +61,6 @@ export CXX
+ export PHP
+ export LD
+ 
+-export MAKE_OPTS
+ export CFLAGS
+ export CXXFLAGS
+ export SO_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index 8546191..e3cf800 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+@@ -66,9 +72,9 @@ target: all
+ 
+ # Rules
+ $(SUBDIRS):
+-	@echo "Building $(@)"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	echo "Building $(@)"
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+@@ -92,11 +98,11 @@ $(OBJ_TEST_CORE): test
+ $(OBJ_TESTING_CORE): test testing rendering
+ 
+ $(OBJ_RES_CORE): $(OBJ_CORE) $(UTL_RESGEN)
+-	@echo "Generating builtin resources"
+-	@mkdir -p $(OBJDIR)/res
+-	@$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	echo "Generating builtin resources"
++	mkdir -p $(OBJDIR)/res
++	$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
++	-rm gmon.out >/dev/null 2>&1
++	$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ # Target dependencies
+ container: $(CONTAINER_DEPS)
+@@ -107,19 +113,19 @@ doc: utils $(PHP_PLUGINS)
+ 
+ # Additional processing
+ $(PHP_PLUGINS): $(UTL_GENPHP)
+-	@echo "Generating PHP file $(notdir $(PHP_PLUGINS))"
+-	@$(UTL_GENPHP) $(PHP_PLUGINS)
++	echo "Generating PHP file $(notdir $(PHP_PLUGINS))"
++	$(UTL_GENPHP) $(PHP_PLUGINS)
+ 
+ vst_stub: $(UTL_VSTMAKE)
+-	@echo "Building VST stub"
+-	@mkdir -p $(OBJDIR)/vst
+-	@$(UTL_VSTMAKE) $(OBJDIR)/vst
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
++	echo "Building VST stub"
++	mkdir -p $(OBJDIR)/vst
++	$(UTL_VSTMAKE) $(OBJDIR)/vst
++	-rm gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
+ 
+ jack_stub: $(UTL_JACKMAKE)
+-	@echo "Building JACK stub"
+-	@mkdir -p $(OBJDIR)/jack
+-	@$(UTL_JACKMAKE) $(OBJDIR)/jack
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
++	echo "Building JACK stub"
++	mkdir -p $(OBJDIR)/jack
++	$(UTL_JACKMAKE) $(OBJDIR)/jack
++	-rm gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
+diff --git a/src/container/Makefile b/src/container/Makefile
+index 8aa8196..74773f0 100644
+--- a/src/container/Makefile
++++ b/src/container/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ OBJ_HELPERS             = $(OBJDIR)/CairoCanvas.o
+@@ -58,41 +64,41 @@ endif
+ all: $(MODULES)
+ 
+ $(OBJ_HELPERS):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
+ 
+ $(LIB_LADSPA):
+-	@echo "  $(CXX) ladspa.cpp"
+-	@$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+-	@echo "  $(CXX) $(notdir $(LIB_LADSPA))"
+-	@$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
++	echo "  $(CXX) ladspa.cpp"
++	$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	echo "  $(CXX) $(notdir $(LIB_LADSPA))"
++	$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
+ 
+ $(LIB_LV2): $(X_LV2_DEPS)
+-	@echo "  $(CXX) lv2.cpp"
+-	@$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
+-	@echo "  $(CXX) $(notdir $(X_LIB_LV2))"
+-	@$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
++	echo "  $(CXX) lv2.cpp"
++	$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
++	echo "  $(CXX) $(notdir $(X_LIB_LV2))"
++	$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
+ 
+ $(LIB_VST):
+-	@echo "  $(CXX) vst.cpp"
+-	@$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+-	@echo "  $(CXX) $(notdir $(LIB_VST))"
+-	@$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
++	echo "  $(CXX) vst.cpp"
++	$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	echo "  $(CXX) $(notdir $(LIB_VST))"
++	$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
+ 
+ $(LIB_JACK): $(OBJ_HELPERS)
+-	@echo "  $(CXX) jack.cpp"
+-	@$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
+-	@echo "  $(CXX) $(notdir $(LIB_JACK))"
+-	@$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
++	echo "  $(CXX) jack.cpp"
++	$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
++	echo "  $(CXX) $(notdir $(LIB_JACK))"
++	$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
+ 
+ $(BIN_PROFILE): $(LIB_JACK)
+-	@echo "  $(CXX) profile.cpp"
+-	@$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+-	@echo "  $(CXX) $(notdir $(BIN_PROFILE))"
+-	@$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
++	echo "  $(CXX) profile.cpp"
++	$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	echo "  $(CXX) $(notdir $(BIN_PROFILE))"
++	$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
+ 
+ $(BIN_TEST): $(LIB_JACK)
+-	@echo "  $(CXX) test.cpp"
+-	@$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+-	@echo "  $(CXX) $(notdir $(BIN_TEST))"
+-	@$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
++	echo "  $(CXX) test.cpp"
++	$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	echo "  $(CXX) $(notdir $(BIN_TEST))"
++	$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
+diff --git a/src/core/Makefile b/src/core/Makefile
+index a9ce1a5..9ecfdf1 100644
+--- a/src/core/Makefile
++++ b/src/core/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -9,10 +15,10 @@ LIBS                    = $(PTHREAD_LIBS)
+ all: $(OBJ_CORE)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
++	echo "  $(CXX) $(FILE)"
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
+ 
+ $(OBJ_CORE): $(FILES)
+-	@echo "  $(LD) $(notdir $(OBJ_CORE))"
+-	@$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
++	echo "  $(LD) $(notdir $(OBJ_CORE))"
++	$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
+diff --git a/src/doc/Makefile b/src/doc/Makefile
+index aac73bf..39042bf 100644
+--- a/src/doc/Makefile
++++ b/src/doc/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ PHPDIR      = $(BUILDDIR)/src/doc
+ HTMLDIR     = $(BUILDDIR)/html
+ 
+@@ -7,15 +13,15 @@ target: all
+ 
+ # Common rules
+ $(PHPDIR)/Makefile:
+-	@echo "Preparing PHP documentation generator"
+-	@mkdir -p $(PHPDIR)
+-	@mkdir -p $(HTMLDIR)
+-	@cp -rf * $(PHPDIR)/
+-	@cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
+-	@cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
+-	@cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
+-	@$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
++	echo "Preparing PHP documentation generator"
++	mkdir -p $(PHPDIR)
++	mkdir -p $(HTMLDIR)
++	cp -rf * $(PHPDIR)/
++	cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
++	cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
++	cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
++	$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
+ 
+ all: $(PHPDIR)/Makefile
+-	@echo "Generating HTML documentation"
+-	@$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
++	echo "Generating HTML documentation"
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C $(PHPDIR)
+diff --git a/src/dsp/Makefile b/src/dsp/Makefile
+index f3d9ab1..f339a85 100644
+--- a/src/dsp/Makefile
++++ b/src/dsp/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ NATIVE_IMPL             = $(OBJDIR)/native.o
+ 
+ X86_IMPL                = $(OBJDIR)/x86.o
+@@ -58,42 +64,42 @@ target: all
+ all: $(OBJ_DSP)
+ 
+ $(OBJ_DSP): $(LINK_OBJECTS)
+-	@echo "  $(LD) $(notdir $(OBJ_DSP))"
+-	@$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
++	echo "  $(LD) $(notdir $(OBJ_DSP))"
++	$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
+ 
+ $(DSP_IMPL) $(BITS_IMPL) $(NATIVE_IMPL) $(X86_IMPL) $(ARM_IMPL) $(AARCH64_IMPL):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	
+ $(SSE_IMPL):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE2_IMPL):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE3_IMPL):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE4_IMPL):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX_IMPL):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX2_IMPL):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
+ 	
+ $(NEON_D32_IMPL):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
+ 	
+ $(ASIMD_IMPL):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
+ 
+diff --git a/src/metadata/Makefile b/src/metadata/Makefile
+index 201f89a..5731ef8 100644
+--- a/src/metadata/Makefile
++++ b/src/metadata/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -9,9 +15,9 @@ all: $(OBJ_METADATA)
+ target: all
+ 
+ $(OBJ_METADATA): $(FILES)
+-	@echo "  $(LD) $(notdir $(OBJ_METADATA))"
+-	@$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
++	echo "  $(LD) $(notdir $(OBJ_METADATA))"
++	$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+diff --git a/src/plugins/Makefile b/src/plugins/Makefile
+index 1f197dc..25c4ab6 100644
+--- a/src/plugins/Makefile
++++ b/src/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -7,9 +13,9 @@ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ all:  $(OBJ_PLUGINS)
+ 
+ $(OBJ_PLUGINS): $(FILES) $(SUBDIRS)
+-	@echo "  $(LD) $(notdir $(OBJ_PLUGINS))"
+-	@$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
++	echo "  $(LD) $(notdir $(OBJ_PLUGINS))"
++	$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
+diff --git a/src/rendering/Makefile b/src/rendering/Makefile
+index 897e327..257b7f7 100644
+--- a/src/rendering/Makefile
++++ b/src/rendering/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ BASE_IMPL             	= $(OBJDIR)/base_backend.o
+ 
+ GLX_IMPL                = $(OBJDIR)/glx/backend.o $(OBJDIR)/glx/factory.o
+@@ -19,16 +25,16 @@ target: all
+ all: $(MODULES)
+ 
+ $(LIB_R3D_GLX): $(BASE_IMPL) $(GLX_IMPL)
+-	@echo "  $(CXX) $(notdir $(LIB_R3D_GLX))"
+-	@$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
++	echo "  $(CXX) $(notdir $(LIB_R3D_GLX))"
++	$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
+ 
+ $(BASE_IMPL):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 	
+ $(GLX_IMPL):
+-	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $(@))
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
++	echo "  $(CXX) $(FILE)"
++	mkdir -p $(dir $(@))
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
+ 
+ 
+diff --git a/src/test/Makefile b/src/test/Makefile
+index e8016e1..6f8588b 100644
+--- a/src/test/Makefile
++++ b/src/test/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -7,11 +13,11 @@ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ all: $(OBJ_TEST_CORE)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	echo "  $(CXX) $(FILE)"
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TEST_CORE): $(FILES)
+-	@echo "  $(LD) $(notdir $(OBJ_TEST_CORE))"
+-	@$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	echo "  $(LD) $(notdir $(OBJ_TEST_CORE))"
++	$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/testing/Makefile b/src/testing/Makefile
+index 705913d..d2cbfc9 100644
+--- a/src/testing/Makefile
++++ b/src/testing/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -7,11 +13,11 @@ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ all: $(OBJ_TESTING_CORE)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	echo "  $(CXX) $(FILE)"
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TESTING_CORE): $(FILES)
+-	@echo "  $(LD) $(notdir $(OBJ_TESTING_CORE))"
+-	@$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	echo "  $(LD) $(notdir $(OBJ_TESTING_CORE))"
++	$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/ui/Makefile b/src/ui/Makefile
+index 503111d..b36de92 100644
+--- a/src/ui/Makefile
++++ b/src/ui/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= ws tk ctl plugins
+@@ -7,16 +13,16 @@ PACKAGES                = $(OBJ_WS_CORE) $(OBJ_TK_CORE) $(OBJ_CTL_CORE)
+ .PHONY: all $(SUBDIRS)
+ 
+ $(SUBDIRS):
+-	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	echo "Building $@"
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_UI_CORE): $(FILES) $(SUBDIRS)
+-	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	echo "  $(LD) $(notdir $(@))"
++	$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_UI_CORE)
+diff --git a/src/ui/ctl/Makefile b/src/ui/ctl/Makefile
+index 3f727db..b5d11c2 100644
+--- a/src/ui/ctl/Makefile
++++ b/src/ui/ctl/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -5,11 +11,11 @@ SUBDIRS					=
+ .PHONY: all
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_CTL_CORE): $(FILES)
+-	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	echo "  $(LD) $(notdir $(@))"
++	$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_CTL_CORE) $(SUBDIRS)
+diff --git a/src/ui/plugins/Makefile b/src/ui/plugins/Makefile
+index 8f8db8f..ab1277e 100644
+--- a/src/ui/plugins/Makefile
++++ b/src/ui/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -5,11 +11,11 @@ SUBDIRS					=
+ .PHONY: all
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_PLUGIN_UIS): $(FILES)
+-	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	echo "  $(LD) $(notdir $(@))"
++	$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_PLUGIN_UIS) $(SUBDIRS)
+diff --git a/src/ui/tk/Makefile b/src/ui/tk/Makefile
+index 8700f63..968487f 100644
+--- a/src/ui/tk/Makefile
++++ b/src/ui/tk/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -5,12 +11,12 @@ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ .PHONY: all
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	echo "  $(CXX) $(FILE)"
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_TK_CORE): $(FILES)
+-	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	echo "  $(LD) $(notdir $(@))"
++	$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_TK_CORE)
+diff --git a/src/ui/ws/Makefile b/src/ui/ws/Makefile
+index 1109752..95bdae1 100644
+--- a/src/ui/ws/Makefile
++++ b/src/ui/ws/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= x11
+@@ -7,16 +13,16 @@ SUBDIRS					= x11
+ all: $(OBJ_WS_CORE)
+ 
+ $(SUBDIRS):
+-	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	echo "Building $@"
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ $(OBJ_WS_CORE): $(FILES) $(OBJ_WS_X11_CORE)
+-	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
++	echo "  $(LD) $(notdir $(@))"
++	$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
+ 
+ $(OBJ_WS_X11_CORE): $(SUBDIRS)
+diff --git a/src/ui/ws/x11/Makefile b/src/ui/ws/x11/Makefile
+index b99e93d..a576121 100644
+--- a/src/ui/ws/x11/Makefile
++++ b/src/ui/ws/x11/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(XLIB_HEADERS) $(CAIRO_HEADERS)
+@@ -7,10 +13,10 @@ INCLUDE                += $(XLIB_HEADERS) $(CAIRO_HEADERS)
+ all: $(OBJ_WS_X11_CORE)
+ 
+ $(OBJ_WS_X11_CORE): $(FILES)
+-	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
++	echo "  $(LD) $(notdir $(@))"
++	$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index 88b3739..d493b88 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -43,33 +49,33 @@ target: all
+ 
+ # Common rules
+ $(SUBDIRS):
+-	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	echo "Building $@"
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+ $(UTL_GENTTL): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	@$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++	echo "  $(CXX) $(notdir $(UTL_GENTTL))"
++	$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+ $(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	@$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
++	$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	@$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++	echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
++	$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_GENPHP): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	@$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	echo "  $(CXX) $(notdir $(UTL_GENPHP))"
++	$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_RESGEN): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	@$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	echo "  $(CXX) $(notdir $(UTL_RESGEN))"
++	$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 
+-	
+\ No newline at end of file
++	
diff --git a/srcpkgs/lsp-plugins/template b/srcpkgs/lsp-plugins/template
new file mode 100644
index 000000000000..7c5096dd59a7
--- /dev/null
+++ b/srcpkgs/lsp-plugins/template
@@ -0,0 +1,29 @@
+# Template file for 'lsp-plugins'
+pkgname=lsp-plugins
+version=1.1.30
+revision=1
+build_style=gnu-makefile
+hostmakedepends="pkg-config php"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel ladspa-sdk jack-devel"
+make_build_args="VERBOSE=1"
+short_desc="Collection of free plugins compatible with LADSPA, LV2 and LinuxVST"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/"
+distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+_arch="${XBPS_TARGET_MACHINE%%-musl}"
+# case "$_arch" in
+# 	i686) export BUILD_PROFILE=i586 ;;
+# 	*)    export BUILD_PROFILE=${_arch} ;;
+# esac
+
+# https://github.com/sadko4u/lsp-plugins/issues/191#issuecomment-812847630
+CXXFLAGS="-std=c++98"
+
+do_check() {
+	export CXXFLAGS="$CXXFLAGS -DLSP_TESTING -DLSP_TRACE"
+	make VERBOSE=1 test
+	.test/lsp-plugins-test utest
+}

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Updated] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (32 preceding siblings ...)
  2021-07-28 22:02 ` [PR PATCH] [Updated] " Logarithmus
@ 2021-07-28 22:31 ` Logarithmus
  2021-07-28 23:02 ` Logarithmus
                   ` (33 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-28 22:31 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 2078 bytes --]

There is an updated pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.
Also used by `easyeffects`, `pulseeffects`' successor 
Continuation of https://github.com/void-linux/void-packages/pull/29932

TODO:
- [ ] wait for https://github.com/sadko4u/lsp-plugins/pull/198
- [ ] implement `VERBOSE` option into `lsp-plugins` Makefiles to save my sanity debugging them
https://github.com/sadko4u/lsp-plugins/pull/200
- [ ] fix i686
- [ ] fix arm

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 59025 bytes --]

From d78da70f9ecacf153c18447c5af29f494ce7f954 Mon Sep 17 00:00:00 2001
From: Artur Sinila <freesoftware@logarithmus.dev>
Date: Mon, 5 Jul 2021 03:44:08 +0300
Subject: [PATCH 1/2] common/build-style/: enable running tests in parallel

---
 common/build-style/cmake.sh           | 6 +++++-
 common/build-style/configure.sh       | 6 +++++-
 common/build-style/gnu-configure.sh   | 6 +++++-
 common/build-style/gnu-makefile.sh    | 6 +++++-
 common/build-style/perl-module.sh     | 6 +++++-
 common/environment/setup/sourcepkg.sh | 3 ++-
 6 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/common/build-style/cmake.sh b/common/build-style/cmake.sh
index 401dabad31c8..c7ffd16fee21 100644
--- a/common/build-style/cmake.sh
+++ b/common/build-style/cmake.sh
@@ -113,7 +113,11 @@ do_check() {
 
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/configure.sh b/common/build-style/configure.sh
index 0963fc347934..b846a1a77572 100644
--- a/common/build-style/configure.sh
+++ b/common/build-style/configure.sh
@@ -29,7 +29,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-configure.sh b/common/build-style/gnu-configure.sh
index 8121136cd121..b09de442b05b 100644
--- a/common/build-style/gnu-configure.sh
+++ b/common/build-style/gnu-configure.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-makefile.sh b/common/build-style/gnu-makefile.sh
index d7ea148fc483..0f7afa7d3695 100644
--- a/common/build-style/gnu-makefile.sh
+++ b/common/build-style/gnu-makefile.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/perl-module.sh b/common/build-style/perl-module.sh
index b9a01b13cfa9..d47945b33d36 100644
--- a/common/build-style/perl-module.sh
+++ b/common/build-style/perl-module.sh
@@ -79,7 +79,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/environment/setup/sourcepkg.sh b/common/environment/setup/sourcepkg.sh
index bc06f745b78a..1fd541f1e715 100644
--- a/common/environment/setup/sourcepkg.sh
+++ b/common/environment/setup/sourcepkg.sh
@@ -13,7 +13,8 @@ unset -v cmake_builddir meson_builddir
 unset -v meson_crossfile
 unset -v gemspec
 unset -v go_import_path go_package go_mod_mode
-unset -v patch_args disable_parallel_build keep_libtool_archives make_use_env
+unset -v patch_args disable_parallel_build disable_parallel_check
+unset -v keep_libtool_archives make_use_env
 unset -v reverts subpackages makedepends hostmakedepends checkdepends depends restricted
 unset -v nopie build_options build_options_default bootstrap repository reverts
 unset -v CFLAGS CXXFLAGS FFLAGS CPPFLAGS LDFLAGS LD_LIBRARY_PATH

From 457c2e1c11f054fb47280416c5a3cfeb3284ea65 Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH 2/2] New package: lsp-plugins-1.1.30

---
 .../00-makefile-test-remove-cflags.patch      |   12 +
 srcpkgs/lsp-plugins/patches/01-musl.patch     |  104 ++
 .../lsp-plugins/patches/02-make-verbose.patch | 1127 +++++++++++++++++
 srcpkgs/lsp-plugins/template                  |   25 +
 4 files changed, 1268 insertions(+)
 create mode 100644 srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
 create mode 100644 srcpkgs/lsp-plugins/patches/01-musl.patch
 create mode 100644 srcpkgs/lsp-plugins/patches/02-make-verbose.patch
 create mode 100644 srcpkgs/lsp-plugins/template

diff --git a/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
new file mode 100644
index 000000000000..fd82f25d4a25
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
@@ -0,0 +1,12 @@
+https://github.com/void-linux/void-packages/pull/29932#discussion_r605695858
+--- a/Makefile
++++ b/Makefile
+@@ -108,8 +108,6 @@ trace: export EXE_FLAGS     += -g3
+ trace: compile
+ 
+ test: OBJDIR                 = $(TESTDIR)
+-test: export CFLAGS         += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-test: export CXXFLAGS       += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
diff --git a/srcpkgs/lsp-plugins/patches/01-musl.patch b/srcpkgs/lsp-plugins/patches/01-musl.patch
new file mode 100644
index 000000000000..de8c1ca275c3
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/01-musl.patch
@@ -0,0 +1,104 @@
+https://github.com/sadko4u/lsp-plugins/pull/198
+diff --git a/include/data/cvector.h b/include/data/cvector.h
+index eccc94a..17fe119 100644
+--- a/include/data/cvector.h
++++ b/include/data/cvector.h
+@@ -25,6 +25,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <sys/types.h>
+ 
+ #define CVECTOR_GROW        16
+ 
+diff --git a/include/test/main/executor.h b/include/test/main/executor.h
+index 0faf73f..b37cbf2 100644
+--- a/include/test/main/executor.h
++++ b/include/test/main/executor.h
+@@ -633,7 +633,7 @@ namespace lsp
+     }
+ #endif /* PLATFORM_WINDOWS */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(__GLIBC__)
+     void TestExecutor::start_memcheck(test::Test *v)
+     {
+         if (!pCfg->mtrace)
+diff --git a/include/test/main/types.h b/include/test/main/types.h
+index ef15800..c833379 100644
+--- a/include/test/main/types.h
++++ b/include/test/main/types.h
+@@ -42,7 +42,7 @@
+     #include <fcntl.h>
+ #endif /* PLATFORM_UNIX_COMPATIBLE */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(__GLIBC__)
+     #include <mcheck.h>
+ #endif /* PLATFORM_LINUX */
+ 
+diff --git a/include/testing/mtest/3d/common/X11Renderer.h b/include/testing/mtest/3d/common/X11Renderer.h
+index e8ec205..f0a51e2 100644
+--- a/include/testing/mtest/3d/common/X11Renderer.h
++++ b/include/testing/mtest/3d/common/X11Renderer.h
+@@ -30,7 +30,7 @@
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include <rendering/backend.h>
+ #include <core/ipc/Library.h>
+diff --git a/src/testing/mtest/3d/boolean3d.cpp b/src/testing/mtest/3d/boolean3d.cpp
+index 636dce1..f92c63e 100644
+--- a/src/testing/mtest/3d/boolean3d.cpp
++++ b/src/testing/mtest/3d/boolean3d.cpp
+@@ -41,7 +41,7 @@
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+ #include <GL/glu.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/bsp_context.cpp b/src/testing/mtest/3d/bsp_context.cpp
+index de54427..ea9ab36 100644
+--- a/src/testing/mtest/3d/bsp_context.cpp
++++ b/src/testing/mtest/3d/bsp_context.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/reflections3d.cpp b/src/testing/mtest/3d/reflections3d.cpp
+index e250444..367f86c 100644
+--- a/src/testing/mtest/3d/reflections3d.cpp
++++ b/src/testing/mtest/3d/reflections3d.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/ui/ws/x11/X11Display.cpp b/src/ui/ws/x11/X11Display.cpp
+index d85db51..1bf7ff2 100644
+--- a/src/ui/ws/x11/X11Display.cpp
++++ b/src/ui/ws/x11/X11Display.cpp
+@@ -23,7 +23,7 @@
+ 
+ #ifdef USE_X11_DISPLAY
+ 
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ 
diff --git a/srcpkgs/lsp-plugins/patches/02-make-verbose.patch b/srcpkgs/lsp-plugins/patches/02-make-verbose.patch
new file mode 100644
index 000000000000..2b490704ec39
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/02-make-verbose.patch
@@ -0,0 +1,1127 @@
+https://github.com/sadko4u/lsp-plugins/pull/200
+diff --git a/Makefile b/Makefile
+index 2d9cb79..8dbd689 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ # Common definitions
+ RELEASE_TEXT            = LICENSE.txt README.txt CHANGELOG.txt
+ RELEASE_SRC             = $(RELEASE_TEXT) src build-*.sh include res Makefile release.sh
+@@ -153,38 +159,38 @@ profile: compile
+ 
+ # Compilation and cleaning targets
+ compile_info:
+-	@echo "-------------------------------------------------------------------------------"
+-	@echo "Building binaries"
+-	@echo "  target architecture : $(BUILD_PROFILE)"
+-	@echo "  target platform     : $(BUILD_PLATFORM)"
+-	@echo "  target system       : $(BUILD_SYSTEM)"
+-	@echo "  compiler            : $(BUILD_COMPILER)"
+-	@echo "  modules             : $(BUILD_MODULES)"
+-	@echo "  UI                  : LV2=$(LV2_UI), VST=$(VST_UI)"
+-	@echo "  3D rendering        : $(BUILD_R3D_BACKENDS)"
+-	@echo "  build directory     : $(OBJDIR)"
+-	@echo "-------------------------------------------------------------------------------"
++	echo "-------------------------------------------------------------------------------"
++	echo "Building binaries"
++	echo "  target architecture : $(BUILD_PROFILE)"
++	echo "  target platform     : $(BUILD_PLATFORM)"
++	echo "  target system       : $(BUILD_SYSTEM)"
++	echo "  compiler            : $(BUILD_COMPILER)"
++	echo "  modules             : $(BUILD_MODULES)"
++	echo "  UI                  : LV2=$(LV2_UI), VST=$(VST_UI)"
++	echo "  3D rendering        : $(BUILD_R3D_BACKENDS)"
++	echo "  build directory     : $(OBJDIR)"
++	echo "-------------------------------------------------------------------------------"
+ 
+ compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@mkdir -p $(CFGDIR)
+-	@test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
+-	@test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
+-	@test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
+-	@test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+-	@echo "Build OK"
++	mkdir -p $(OBJDIR)/src
++	mkdir -p $(CFGDIR)
++	test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
++	test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
++	test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
++	test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++	echo "Build OK"
+ 	
+ test_compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+-	@echo "Test Build OK"
++	mkdir -p $(OBJDIR)/src
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++	echo "Test Build OK"
+ 
+ clean:
+-	@-rm -rf $(BUILDDIR)
+-	@-rm -rf $(TESTDIR)
+-	@-rm -rf $(CFGDIR)
+-	@echo "Clean OK"
++	-rm -rf $(BUILDDIR)
++	-rm -rf $(TESTDIR)
++	-rm -rf $(CFGDIR)
++	echo "Clean OK"
+ 
+ # Build targets
+ build_ladspa: export BUILD_MODULES = ladspa
+@@ -205,184 +211,184 @@ build_doc: compile
+ 
+ # Installation targets
+ install: $(INSTALLATIONS)
+-	@echo "Install OK"
++	echo "Install OK"
+ 
+ install_ladspa: all
+-	@echo "Installing LADSPA plugins to $(DESTDIR)$(LADSPA_PATH)/"
+-	@mkdir -p $(DESTDIR)$(LADSPA_PATH)
+-	@$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
++	echo "Installing LADSPA plugins to $(DESTDIR)$(LADSPA_PATH)/"
++	mkdir -p $(DESTDIR)$(LADSPA_PATH)
++	$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
+ 	
+ install_lv2: all
+-	@echo "Installing LV2 plugins to $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
+-	@$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	echo "Installing LV2 plugins to $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
++	$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+ 	
+ install_vst: all
+-	@echo "Installing VST plugins to $(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+-	@$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	echo "Installing VST plugins to $(DESTDIR)$(VST_PATH)/$(VST_ID)"
++	mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
++	$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+ 
+ install_jack: all
+-	@echo "Installing JACK core to $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+-	@echo "Installing JACK standalone plugins to $(DESTDIR)$(BIN_PATH)"
+-	@mkdir -p "$(DESTDIR)$(BIN_PATH)"
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
++	echo "Installing JACK core to $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
++	mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
++	$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	echo "Installing JACK standalone plugins to $(DESTDIR)$(BIN_PATH)"
++	mkdir -p "$(DESTDIR)$(BIN_PATH)"
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
+ 
+ install_xdg:
+-	@echo "Installing desktop icons to $(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
+-	@mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
+-	@cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
+-	@cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
+-	@cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
+-	@cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
++	echo "Installing desktop icons to $(DESTDIR)$(SHARE_PATH)/applications"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
++	mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
++	cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
++	cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
++	cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
++	cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
+ 
+ install_doc: all
+-	@echo "Installing documentation to $(DESTDIR)$(DOC_PATH)"
+-	@mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	echo "Installing documentation to $(DESTDIR)$(DOC_PATH)"
++	mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+ # Release targets
+ dbg_release: export CFLAGS        += -DLSP_TRACE -O2
+ dbg_release: export CXXFLAGS      += -DLSP_TRACE -O2
+ dbg_release: $(RELEASES)
+-	@echo "Debug Release OK"
++	echo "Debug Release OK"
+ 
+ release: INSTALL        += -s
+ release: $(RELEASES)
+-	@echo "Release OK"
++	echo "Release OK"
+ 
+ release_prepare: all
+-	@echo "Releasing plugins for architecture $(BUILD_PROFILE)"
+-	@mkdir -p $(RELEASE)
+-	@mkdir -p $(DESTDIR)
++	echo "Releasing plugins for architecture $(BUILD_PROFILE)"
++	mkdir -p $(RELEASE)
++	mkdir -p $(DESTDIR)
+ 	
+ release_ladspa: DESTDIR=$(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_ladspa: | release_prepare install_ladspa
+-	@echo "Releasing LADSPA binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	echo "Releasing LADSPA binaries"
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_lv2: DESTDIR=$(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_lv2: | release_prepare install_lv2
+-	@echo "Releasing LV2 binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	echo "Releasing LV2 binaries"
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_vst: DESTDIR=$(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_vst: | release_prepare install_vst
+-	@echo "Releasing VST binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	echo "Releasing VST binaries"
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_jack: DESTDIR=$(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_jack: | release_prepare install_jack
+-	@echo "Releasing JACK binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	echo "Releasing JACK binaries"
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 
+ release_profile: DESTDIR=$(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_profile: | release_prepare
+-	@echo "Releasing PROFILE binaries"
+-	@$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	echo "Releasing PROFILE binaries"
++	$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ 
+ release_src: DESTDIR=$(RELEASE)/$(SRC_ID)
+ release_src: | release_prepare
+-	@echo "Releasing source code binaries"
+-	@mkdir -p $(DESTDIR)
+-	@mkdir -p $(DESTDIR)/scripts
+-	@cp -R $(RELEASE_SRC) $(DESTDIR)/
+-	@cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
+-	@rm -rf $(DESTDIR)
++	echo "Releasing source code binaries"
++	mkdir -p $(DESTDIR)
++	mkdir -p $(DESTDIR)/scripts
++	cp -R $(RELEASE_SRC) $(DESTDIR)/
++	cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
++	rm -rf $(DESTDIR)
+ 
+ release_doc: DESTDIR=$(RELEASE)/$(DOC_ID)
+ release_doc: | release_prepare
+-	@echo "Releasing documentation"
+-	@mkdir -p $(DESTDIR)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
+-	@rm -rf $(DESTDIR)
++	echo "Releasing documentation"
++	mkdir -p $(DESTDIR)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
++	rm -rf $(DESTDIR)
+ 
+ # Unrelease target
+ unrelease: clean
+-	@-rm -rf $(RELEASE)
+-	@echo "Unrelease OK"
++	-rm -rf $(RELEASE)
++	echo "Unrelease OK"
+ 
+ # Uninstall target
+ uninstall: $(UNINSTALLATIONS)
+-	@echo "Uninstall OK"
++	echo "Uninstall OK"
+ 	
+ uninstall_ladspa:
+-	@echo "Uninstalling LADSPA"
+-	@-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
++	echo "Uninstalling LADSPA"
++	-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
+ 	
+ uninstall_lv2:
+-	@echo "Uninstalling LV2"
+-	@-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
++	echo "Uninstalling LV2"
++	-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
+ 	
+ uninstall_vst:
+-	@echo "Uninstalling VST"
+-	@-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
++	echo "Uninstalling VST"
++	-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
++	-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
++	-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
+ 	
+ uninstall_jack:
+-	@echo "Uninstalling JACK"
+-	@-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
+-	@-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
++	echo "Uninstalling JACK"
++	-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
++	-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
++	-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
++	-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
+ 
+ uninstall_xdg:
+-	@echo "Uninstalling desktop icons"
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
+-	@-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
++	echo "Uninstalling desktop icons"
++	-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
++	-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
++	-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
+ 
+ uninstall_doc:
+-	@echo "Uninstalling DOC"
+-	@-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	echo "Uninstalling DOC"
++	-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 1fb917e..565dbb1 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -25,7 +25,6 @@ CXX                      ?= $(TOOL_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
+ 
+-MAKE_OPTS                 = -s
+ CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+@@ -62,7 +61,6 @@ export CXX
+ export PHP
+ export LD
+ 
+-export MAKE_OPTS
+ export CFLAGS
+ export CXXFLAGS
+ export SO_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index 8546191..e3cf800 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+@@ -66,9 +72,9 @@ target: all
+ 
+ # Rules
+ $(SUBDIRS):
+-	@echo "Building $(@)"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	echo "Building $(@)"
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+@@ -92,11 +98,11 @@ $(OBJ_TEST_CORE): test
+ $(OBJ_TESTING_CORE): test testing rendering
+ 
+ $(OBJ_RES_CORE): $(OBJ_CORE) $(UTL_RESGEN)
+-	@echo "Generating builtin resources"
+-	@mkdir -p $(OBJDIR)/res
+-	@$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	echo "Generating builtin resources"
++	mkdir -p $(OBJDIR)/res
++	$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
++	-rm gmon.out >/dev/null 2>&1
++	$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ # Target dependencies
+ container: $(CONTAINER_DEPS)
+@@ -107,19 +113,19 @@ doc: utils $(PHP_PLUGINS)
+ 
+ # Additional processing
+ $(PHP_PLUGINS): $(UTL_GENPHP)
+-	@echo "Generating PHP file $(notdir $(PHP_PLUGINS))"
+-	@$(UTL_GENPHP) $(PHP_PLUGINS)
++	echo "Generating PHP file $(notdir $(PHP_PLUGINS))"
++	$(UTL_GENPHP) $(PHP_PLUGINS)
+ 
+ vst_stub: $(UTL_VSTMAKE)
+-	@echo "Building VST stub"
+-	@mkdir -p $(OBJDIR)/vst
+-	@$(UTL_VSTMAKE) $(OBJDIR)/vst
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
++	echo "Building VST stub"
++	mkdir -p $(OBJDIR)/vst
++	$(UTL_VSTMAKE) $(OBJDIR)/vst
++	-rm gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
+ 
+ jack_stub: $(UTL_JACKMAKE)
+-	@echo "Building JACK stub"
+-	@mkdir -p $(OBJDIR)/jack
+-	@$(UTL_JACKMAKE) $(OBJDIR)/jack
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
++	echo "Building JACK stub"
++	mkdir -p $(OBJDIR)/jack
++	$(UTL_JACKMAKE) $(OBJDIR)/jack
++	-rm gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
+diff --git a/src/container/Makefile b/src/container/Makefile
+index 8aa8196..74773f0 100644
+--- a/src/container/Makefile
++++ b/src/container/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ OBJ_HELPERS             = $(OBJDIR)/CairoCanvas.o
+@@ -58,41 +64,41 @@ endif
+ all: $(MODULES)
+ 
+ $(OBJ_HELPERS):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
+ 
+ $(LIB_LADSPA):
+-	@echo "  $(CXX) ladspa.cpp"
+-	@$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+-	@echo "  $(CXX) $(notdir $(LIB_LADSPA))"
+-	@$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
++	echo "  $(CXX) ladspa.cpp"
++	$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	echo "  $(CXX) $(notdir $(LIB_LADSPA))"
++	$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
+ 
+ $(LIB_LV2): $(X_LV2_DEPS)
+-	@echo "  $(CXX) lv2.cpp"
+-	@$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
+-	@echo "  $(CXX) $(notdir $(X_LIB_LV2))"
+-	@$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
++	echo "  $(CXX) lv2.cpp"
++	$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
++	echo "  $(CXX) $(notdir $(X_LIB_LV2))"
++	$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
+ 
+ $(LIB_VST):
+-	@echo "  $(CXX) vst.cpp"
+-	@$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+-	@echo "  $(CXX) $(notdir $(LIB_VST))"
+-	@$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
++	echo "  $(CXX) vst.cpp"
++	$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	echo "  $(CXX) $(notdir $(LIB_VST))"
++	$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
+ 
+ $(LIB_JACK): $(OBJ_HELPERS)
+-	@echo "  $(CXX) jack.cpp"
+-	@$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
+-	@echo "  $(CXX) $(notdir $(LIB_JACK))"
+-	@$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
++	echo "  $(CXX) jack.cpp"
++	$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
++	echo "  $(CXX) $(notdir $(LIB_JACK))"
++	$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
+ 
+ $(BIN_PROFILE): $(LIB_JACK)
+-	@echo "  $(CXX) profile.cpp"
+-	@$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+-	@echo "  $(CXX) $(notdir $(BIN_PROFILE))"
+-	@$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
++	echo "  $(CXX) profile.cpp"
++	$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	echo "  $(CXX) $(notdir $(BIN_PROFILE))"
++	$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
+ 
+ $(BIN_TEST): $(LIB_JACK)
+-	@echo "  $(CXX) test.cpp"
+-	@$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+-	@echo "  $(CXX) $(notdir $(BIN_TEST))"
+-	@$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
++	echo "  $(CXX) test.cpp"
++	$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	echo "  $(CXX) $(notdir $(BIN_TEST))"
++	$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
+diff --git a/src/core/Makefile b/src/core/Makefile
+index a9ce1a5..9ecfdf1 100644
+--- a/src/core/Makefile
++++ b/src/core/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -9,10 +15,10 @@ LIBS                    = $(PTHREAD_LIBS)
+ all: $(OBJ_CORE)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
++	echo "  $(CXX) $(FILE)"
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
+ 
+ $(OBJ_CORE): $(FILES)
+-	@echo "  $(LD) $(notdir $(OBJ_CORE))"
+-	@$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
++	echo "  $(LD) $(notdir $(OBJ_CORE))"
++	$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
+diff --git a/src/doc/Makefile b/src/doc/Makefile
+index aac73bf..39042bf 100644
+--- a/src/doc/Makefile
++++ b/src/doc/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ PHPDIR      = $(BUILDDIR)/src/doc
+ HTMLDIR     = $(BUILDDIR)/html
+ 
+@@ -7,15 +13,15 @@ target: all
+ 
+ # Common rules
+ $(PHPDIR)/Makefile:
+-	@echo "Preparing PHP documentation generator"
+-	@mkdir -p $(PHPDIR)
+-	@mkdir -p $(HTMLDIR)
+-	@cp -rf * $(PHPDIR)/
+-	@cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
+-	@cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
+-	@cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
+-	@$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
++	echo "Preparing PHP documentation generator"
++	mkdir -p $(PHPDIR)
++	mkdir -p $(HTMLDIR)
++	cp -rf * $(PHPDIR)/
++	cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
++	cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
++	cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
++	$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
+ 
+ all: $(PHPDIR)/Makefile
+-	@echo "Generating HTML documentation"
+-	@$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
++	echo "Generating HTML documentation"
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C $(PHPDIR)
+diff --git a/src/dsp/Makefile b/src/dsp/Makefile
+index f3d9ab1..f339a85 100644
+--- a/src/dsp/Makefile
++++ b/src/dsp/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ NATIVE_IMPL             = $(OBJDIR)/native.o
+ 
+ X86_IMPL                = $(OBJDIR)/x86.o
+@@ -58,42 +64,42 @@ target: all
+ all: $(OBJ_DSP)
+ 
+ $(OBJ_DSP): $(LINK_OBJECTS)
+-	@echo "  $(LD) $(notdir $(OBJ_DSP))"
+-	@$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
++	echo "  $(LD) $(notdir $(OBJ_DSP))"
++	$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
+ 
+ $(DSP_IMPL) $(BITS_IMPL) $(NATIVE_IMPL) $(X86_IMPL) $(ARM_IMPL) $(AARCH64_IMPL):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	
+ $(SSE_IMPL):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE2_IMPL):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE3_IMPL):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE4_IMPL):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX_IMPL):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX2_IMPL):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
+ 	
+ $(NEON_D32_IMPL):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
+ 	
+ $(ASIMD_IMPL):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
+ 
+diff --git a/src/metadata/Makefile b/src/metadata/Makefile
+index 201f89a..5731ef8 100644
+--- a/src/metadata/Makefile
++++ b/src/metadata/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -9,9 +15,9 @@ all: $(OBJ_METADATA)
+ target: all
+ 
+ $(OBJ_METADATA): $(FILES)
+-	@echo "  $(LD) $(notdir $(OBJ_METADATA))"
+-	@$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
++	echo "  $(LD) $(notdir $(OBJ_METADATA))"
++	$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+diff --git a/src/plugins/Makefile b/src/plugins/Makefile
+index 1f197dc..25c4ab6 100644
+--- a/src/plugins/Makefile
++++ b/src/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -7,9 +13,9 @@ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ all:  $(OBJ_PLUGINS)
+ 
+ $(OBJ_PLUGINS): $(FILES) $(SUBDIRS)
+-	@echo "  $(LD) $(notdir $(OBJ_PLUGINS))"
+-	@$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
++	echo "  $(LD) $(notdir $(OBJ_PLUGINS))"
++	$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
+diff --git a/src/rendering/Makefile b/src/rendering/Makefile
+index 897e327..257b7f7 100644
+--- a/src/rendering/Makefile
++++ b/src/rendering/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ BASE_IMPL             	= $(OBJDIR)/base_backend.o
+ 
+ GLX_IMPL                = $(OBJDIR)/glx/backend.o $(OBJDIR)/glx/factory.o
+@@ -19,16 +25,16 @@ target: all
+ all: $(MODULES)
+ 
+ $(LIB_R3D_GLX): $(BASE_IMPL) $(GLX_IMPL)
+-	@echo "  $(CXX) $(notdir $(LIB_R3D_GLX))"
+-	@$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
++	echo "  $(CXX) $(notdir $(LIB_R3D_GLX))"
++	$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
+ 
+ $(BASE_IMPL):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 	
+ $(GLX_IMPL):
+-	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $(@))
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
++	echo "  $(CXX) $(FILE)"
++	mkdir -p $(dir $(@))
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
+ 
+ 
+diff --git a/src/test/Makefile b/src/test/Makefile
+index e8016e1..6f8588b 100644
+--- a/src/test/Makefile
++++ b/src/test/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -7,11 +13,11 @@ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ all: $(OBJ_TEST_CORE)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	echo "  $(CXX) $(FILE)"
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TEST_CORE): $(FILES)
+-	@echo "  $(LD) $(notdir $(OBJ_TEST_CORE))"
+-	@$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	echo "  $(LD) $(notdir $(OBJ_TEST_CORE))"
++	$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/testing/Makefile b/src/testing/Makefile
+index 705913d..d2cbfc9 100644
+--- a/src/testing/Makefile
++++ b/src/testing/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -7,11 +13,11 @@ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ all: $(OBJ_TESTING_CORE)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	echo "  $(CXX) $(FILE)"
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TESTING_CORE): $(FILES)
+-	@echo "  $(LD) $(notdir $(OBJ_TESTING_CORE))"
+-	@$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	echo "  $(LD) $(notdir $(OBJ_TESTING_CORE))"
++	$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/ui/Makefile b/src/ui/Makefile
+index 503111d..b36de92 100644
+--- a/src/ui/Makefile
++++ b/src/ui/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= ws tk ctl plugins
+@@ -7,16 +13,16 @@ PACKAGES                = $(OBJ_WS_CORE) $(OBJ_TK_CORE) $(OBJ_CTL_CORE)
+ .PHONY: all $(SUBDIRS)
+ 
+ $(SUBDIRS):
+-	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	echo "Building $@"
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_UI_CORE): $(FILES) $(SUBDIRS)
+-	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	echo "  $(LD) $(notdir $(@))"
++	$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_UI_CORE)
+diff --git a/src/ui/ctl/Makefile b/src/ui/ctl/Makefile
+index 3f727db..b5d11c2 100644
+--- a/src/ui/ctl/Makefile
++++ b/src/ui/ctl/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -5,11 +11,11 @@ SUBDIRS					=
+ .PHONY: all
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_CTL_CORE): $(FILES)
+-	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	echo "  $(LD) $(notdir $(@))"
++	$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_CTL_CORE) $(SUBDIRS)
+diff --git a/src/ui/plugins/Makefile b/src/ui/plugins/Makefile
+index 8f8db8f..ab1277e 100644
+--- a/src/ui/plugins/Makefile
++++ b/src/ui/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -5,11 +11,11 @@ SUBDIRS					=
+ .PHONY: all
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_PLUGIN_UIS): $(FILES)
+-	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	echo "  $(LD) $(notdir $(@))"
++	$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_PLUGIN_UIS) $(SUBDIRS)
+diff --git a/src/ui/tk/Makefile b/src/ui/tk/Makefile
+index 8700f63..968487f 100644
+--- a/src/ui/tk/Makefile
++++ b/src/ui/tk/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -5,12 +11,12 @@ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ .PHONY: all
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	echo "  $(CXX) $(FILE)"
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_TK_CORE): $(FILES)
+-	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	echo "  $(LD) $(notdir $(@))"
++	$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_TK_CORE)
+diff --git a/src/ui/ws/Makefile b/src/ui/ws/Makefile
+index 1109752..95bdae1 100644
+--- a/src/ui/ws/Makefile
++++ b/src/ui/ws/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= x11
+@@ -7,16 +13,16 @@ SUBDIRS					= x11
+ all: $(OBJ_WS_CORE)
+ 
+ $(SUBDIRS):
+-	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	echo "Building $@"
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ $(OBJ_WS_CORE): $(FILES) $(OBJ_WS_X11_CORE)
+-	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
++	echo "  $(LD) $(notdir $(@))"
++	$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
+ 
+ $(OBJ_WS_X11_CORE): $(SUBDIRS)
+diff --git a/src/ui/ws/x11/Makefile b/src/ui/ws/x11/Makefile
+index b99e93d..a576121 100644
+--- a/src/ui/ws/x11/Makefile
++++ b/src/ui/ws/x11/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(XLIB_HEADERS) $(CAIRO_HEADERS)
+@@ -7,10 +13,10 @@ INCLUDE                += $(XLIB_HEADERS) $(CAIRO_HEADERS)
+ all: $(OBJ_WS_X11_CORE)
+ 
+ $(OBJ_WS_X11_CORE): $(FILES)
+-	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
++	echo "  $(LD) $(notdir $(@))"
++	$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index 88b3739..d493b88 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -43,33 +49,33 @@ target: all
+ 
+ # Common rules
+ $(SUBDIRS):
+-	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	echo "Building $@"
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	echo "  $(CXX) $(FILE)"
++	$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+ $(UTL_GENTTL): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	@$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++	echo "  $(CXX) $(notdir $(UTL_GENTTL))"
++	$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+ $(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	@$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
++	$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	@$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++	echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
++	$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_GENPHP): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	@$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	echo "  $(CXX) $(notdir $(UTL_GENPHP))"
++	$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_RESGEN): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	@$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	echo "  $(CXX) $(notdir $(UTL_RESGEN))"
++	$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 
+-	
+\ No newline at end of file
++	
diff --git a/srcpkgs/lsp-plugins/template b/srcpkgs/lsp-plugins/template
new file mode 100644
index 000000000000..10fbcee0aedb
--- /dev/null
+++ b/srcpkgs/lsp-plugins/template
@@ -0,0 +1,25 @@
+# Template file for 'lsp-plugins'
+pkgname=lsp-plugins
+version=1.1.30
+revision=1
+build_style=gnu-makefile
+hostmakedepends="pkg-config php"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel ladspa-sdk jack-devel"
+make_build_args="VERBOSE=1"
+short_desc="Collection of free plugins compatible with LADSPA, LV2 and LinuxVST"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/"
+distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+export BUILD_ARCH="${XBPS_TARGET_MACHINE%%-musl}"
+
+# https://github.com/sadko4u/lsp-plugins/issues/191#issuecomment-812847630
+CXXFLAGS="-std=c++98"
+
+do_check() {
+	export CXXFLAGS="$CXXFLAGS -DLSP_TESTING -DLSP_TRACE"
+	make VERBOSE=1 test
+	.test/lsp-plugins-test utest
+}

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Updated] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (33 preceding siblings ...)
  2021-07-28 22:31 ` Logarithmus
@ 2021-07-28 23:02 ` Logarithmus
  2021-07-31  8:43 ` [PR REVIEW] " paper42
                   ` (32 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-28 23:02 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 2078 bytes --]

There is an updated pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.
Also used by `easyeffects`, `pulseeffects`' successor 
Continuation of https://github.com/void-linux/void-packages/pull/29932

TODO:
- [ ] wait for https://github.com/sadko4u/lsp-plugins/pull/198
- [ ] implement `VERBOSE` option into `lsp-plugins` Makefiles to save my sanity debugging them
https://github.com/sadko4u/lsp-plugins/pull/200
- [ ] fix i686
- [ ] fix arm

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 53755 bytes --]

From d78da70f9ecacf153c18447c5af29f494ce7f954 Mon Sep 17 00:00:00 2001
From: Artur Sinila <freesoftware@logarithmus.dev>
Date: Mon, 5 Jul 2021 03:44:08 +0300
Subject: [PATCH 1/2] common/build-style/: enable running tests in parallel

---
 common/build-style/cmake.sh           | 6 +++++-
 common/build-style/configure.sh       | 6 +++++-
 common/build-style/gnu-configure.sh   | 6 +++++-
 common/build-style/gnu-makefile.sh    | 6 +++++-
 common/build-style/perl-module.sh     | 6 +++++-
 common/environment/setup/sourcepkg.sh | 3 ++-
 6 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/common/build-style/cmake.sh b/common/build-style/cmake.sh
index 401dabad31c8..c7ffd16fee21 100644
--- a/common/build-style/cmake.sh
+++ b/common/build-style/cmake.sh
@@ -113,7 +113,11 @@ do_check() {
 
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/configure.sh b/common/build-style/configure.sh
index 0963fc347934..b846a1a77572 100644
--- a/common/build-style/configure.sh
+++ b/common/build-style/configure.sh
@@ -29,7 +29,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-configure.sh b/common/build-style/gnu-configure.sh
index 8121136cd121..b09de442b05b 100644
--- a/common/build-style/gnu-configure.sh
+++ b/common/build-style/gnu-configure.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-makefile.sh b/common/build-style/gnu-makefile.sh
index d7ea148fc483..0f7afa7d3695 100644
--- a/common/build-style/gnu-makefile.sh
+++ b/common/build-style/gnu-makefile.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/perl-module.sh b/common/build-style/perl-module.sh
index b9a01b13cfa9..d47945b33d36 100644
--- a/common/build-style/perl-module.sh
+++ b/common/build-style/perl-module.sh
@@ -79,7 +79,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/environment/setup/sourcepkg.sh b/common/environment/setup/sourcepkg.sh
index bc06f745b78a..1fd541f1e715 100644
--- a/common/environment/setup/sourcepkg.sh
+++ b/common/environment/setup/sourcepkg.sh
@@ -13,7 +13,8 @@ unset -v cmake_builddir meson_builddir
 unset -v meson_crossfile
 unset -v gemspec
 unset -v go_import_path go_package go_mod_mode
-unset -v patch_args disable_parallel_build keep_libtool_archives make_use_env
+unset -v patch_args disable_parallel_build disable_parallel_check
+unset -v keep_libtool_archives make_use_env
 unset -v reverts subpackages makedepends hostmakedepends checkdepends depends restricted
 unset -v nopie build_options build_options_default bootstrap repository reverts
 unset -v CFLAGS CXXFLAGS FFLAGS CPPFLAGS LDFLAGS LD_LIBRARY_PATH

From da7c48065564a2c484e825cb633f22162a690e5e Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH 2/2] New package: lsp-plugins-1.1.30

---
 .../00-makefile-test-remove-cflags.patch      |  12 +
 srcpkgs/lsp-plugins/patches/01-musl.patch     | 104 ++
 .../lsp-plugins/patches/02-make-verbose.patch | 978 ++++++++++++++++++
 srcpkgs/lsp-plugins/template                  |  25 +
 4 files changed, 1119 insertions(+)
 create mode 100644 srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
 create mode 100644 srcpkgs/lsp-plugins/patches/01-musl.patch
 create mode 100644 srcpkgs/lsp-plugins/patches/02-make-verbose.patch
 create mode 100644 srcpkgs/lsp-plugins/template

diff --git a/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
new file mode 100644
index 000000000000..fd82f25d4a25
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
@@ -0,0 +1,12 @@
+https://github.com/void-linux/void-packages/pull/29932#discussion_r605695858
+--- a/Makefile
++++ b/Makefile
+@@ -108,8 +108,6 @@ trace: export EXE_FLAGS     += -g3
+ trace: compile
+ 
+ test: OBJDIR                 = $(TESTDIR)
+-test: export CFLAGS         += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-test: export CXXFLAGS       += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
diff --git a/srcpkgs/lsp-plugins/patches/01-musl.patch b/srcpkgs/lsp-plugins/patches/01-musl.patch
new file mode 100644
index 000000000000..de8c1ca275c3
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/01-musl.patch
@@ -0,0 +1,104 @@
+https://github.com/sadko4u/lsp-plugins/pull/198
+diff --git a/include/data/cvector.h b/include/data/cvector.h
+index eccc94a..17fe119 100644
+--- a/include/data/cvector.h
++++ b/include/data/cvector.h
+@@ -25,6 +25,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <sys/types.h>
+ 
+ #define CVECTOR_GROW        16
+ 
+diff --git a/include/test/main/executor.h b/include/test/main/executor.h
+index 0faf73f..b37cbf2 100644
+--- a/include/test/main/executor.h
++++ b/include/test/main/executor.h
+@@ -633,7 +633,7 @@ namespace lsp
+     }
+ #endif /* PLATFORM_WINDOWS */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(__GLIBC__)
+     void TestExecutor::start_memcheck(test::Test *v)
+     {
+         if (!pCfg->mtrace)
+diff --git a/include/test/main/types.h b/include/test/main/types.h
+index ef15800..c833379 100644
+--- a/include/test/main/types.h
++++ b/include/test/main/types.h
+@@ -42,7 +42,7 @@
+     #include <fcntl.h>
+ #endif /* PLATFORM_UNIX_COMPATIBLE */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(__GLIBC__)
+     #include <mcheck.h>
+ #endif /* PLATFORM_LINUX */
+ 
+diff --git a/include/testing/mtest/3d/common/X11Renderer.h b/include/testing/mtest/3d/common/X11Renderer.h
+index e8ec205..f0a51e2 100644
+--- a/include/testing/mtest/3d/common/X11Renderer.h
++++ b/include/testing/mtest/3d/common/X11Renderer.h
+@@ -30,7 +30,7 @@
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include <rendering/backend.h>
+ #include <core/ipc/Library.h>
+diff --git a/src/testing/mtest/3d/boolean3d.cpp b/src/testing/mtest/3d/boolean3d.cpp
+index 636dce1..f92c63e 100644
+--- a/src/testing/mtest/3d/boolean3d.cpp
++++ b/src/testing/mtest/3d/boolean3d.cpp
+@@ -41,7 +41,7 @@
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+ #include <GL/glu.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/bsp_context.cpp b/src/testing/mtest/3d/bsp_context.cpp
+index de54427..ea9ab36 100644
+--- a/src/testing/mtest/3d/bsp_context.cpp
++++ b/src/testing/mtest/3d/bsp_context.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/reflections3d.cpp b/src/testing/mtest/3d/reflections3d.cpp
+index e250444..367f86c 100644
+--- a/src/testing/mtest/3d/reflections3d.cpp
++++ b/src/testing/mtest/3d/reflections3d.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/ui/ws/x11/X11Display.cpp b/src/ui/ws/x11/X11Display.cpp
+index d85db51..1bf7ff2 100644
+--- a/src/ui/ws/x11/X11Display.cpp
++++ b/src/ui/ws/x11/X11Display.cpp
+@@ -23,7 +23,7 @@
+ 
+ #ifdef USE_X11_DISPLAY
+ 
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ 
diff --git a/srcpkgs/lsp-plugins/patches/02-make-verbose.patch b/srcpkgs/lsp-plugins/patches/02-make-verbose.patch
new file mode 100644
index 000000000000..6bdd05fb10b8
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/02-make-verbose.patch
@@ -0,0 +1,978 @@
+diff --git a/Makefile b/Makefile
+index 2d9cb79..f3a6d82 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ # Common definitions
+ RELEASE_TEXT            = LICENSE.txt README.txt CHANGELOG.txt
+ RELEASE_SRC             = $(RELEASE_TEXT) src build-*.sh include res Makefile release.sh
+@@ -166,24 +172,24 @@ compile_info:
+ 	@echo "-------------------------------------------------------------------------------"
+ 
+ compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@mkdir -p $(CFGDIR)
+-	@test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
+-	@test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
+-	@test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
+-	@test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++	mkdir -p $(OBJDIR)/src
++	mkdir -p $(CFGDIR)
++	test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
++	test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
++	test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
++	test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Build OK"
+ 	
+ test_compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++	mkdir -p $(OBJDIR)/src
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
+ clean:
+-	@-rm -rf $(BUILDDIR)
+-	@-rm -rf $(TESTDIR)
+-	@-rm -rf $(CFGDIR)
++	-rm -rf $(BUILDDIR)
++	-rm -rf $(TESTDIR)
++	-rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+ 
+ # Build targets
+@@ -209,63 +215,63 @@ install: $(INSTALLATIONS)
+ 
+ install_ladspa: all
+ 	@echo "Installing LADSPA plugins to $(DESTDIR)$(LADSPA_PATH)/"
+-	@mkdir -p $(DESTDIR)$(LADSPA_PATH)
+-	@$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
++	mkdir -p $(DESTDIR)$(LADSPA_PATH)
++	$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
+ 	
+ install_lv2: all
+ 	@echo "Installing LV2 plugins to $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
+-	@$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
++	$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+ 	
+ install_vst: all
+ 	@echo "Installing VST plugins to $(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+-	@$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
++	$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+ 
+ install_jack: all
+ 	@echo "Installing JACK core to $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
++	$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+ 	@echo "Installing JACK standalone plugins to $(DESTDIR)$(BIN_PATH)"
+-	@mkdir -p "$(DESTDIR)$(BIN_PATH)"
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
++	mkdir -p "$(DESTDIR)$(BIN_PATH)"
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
+ 
+ install_xdg:
+ 	@echo "Installing desktop icons to $(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
+-	@mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
+-	@cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
+-	@cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
+-	@cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
+-	@cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
++	mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
++	cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
++	cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
++	cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
++	cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
+ 
+ install_doc: all
+ 	@echo "Installing documentation to $(DESTDIR)$(DOC_PATH)"
+-	@mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+ # Release targets
+ dbg_release: export CFLAGS        += -DLSP_TRACE -O2
+@@ -279,67 +285,67 @@ release: $(RELEASES)
+ 
+ release_prepare: all
+ 	@echo "Releasing plugins for architecture $(BUILD_PROFILE)"
+-	@mkdir -p $(RELEASE)
+-	@mkdir -p $(DESTDIR)
++	mkdir -p $(RELEASE)
++	mkdir -p $(DESTDIR)
+ 	
+ release_ladspa: DESTDIR=$(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_ladspa: | release_prepare install_ladspa
+ 	@echo "Releasing LADSPA binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_lv2: DESTDIR=$(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_lv2: | release_prepare install_lv2
+ 	@echo "Releasing LV2 binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_vst: DESTDIR=$(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_vst: | release_prepare install_vst
+ 	@echo "Releasing VST binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_jack: DESTDIR=$(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_jack: | release_prepare install_jack
+ 	@echo "Releasing JACK binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 
+ release_profile: DESTDIR=$(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_profile: | release_prepare
+ 	@echo "Releasing PROFILE binaries"
+-	@$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ 
+ release_src: DESTDIR=$(RELEASE)/$(SRC_ID)
+ release_src: | release_prepare
+ 	@echo "Releasing source code binaries"
+-	@mkdir -p $(DESTDIR)
+-	@mkdir -p $(DESTDIR)/scripts
+-	@cp -R $(RELEASE_SRC) $(DESTDIR)/
+-	@cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	mkdir -p $(DESTDIR)/scripts
++	cp -R $(RELEASE_SRC) $(DESTDIR)/
++	cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
++	rm -rf $(DESTDIR)
+ 
+ release_doc: DESTDIR=$(RELEASE)/$(DOC_ID)
+ release_doc: | release_prepare
+ 	@echo "Releasing documentation"
+-	@mkdir -p $(DESTDIR)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
++	rm -rf $(DESTDIR)
+ 
+ # Unrelease target
+ unrelease: clean
+-	@-rm -rf $(RELEASE)
++	-rm -rf $(RELEASE)
+ 	@echo "Unrelease OK"
+ 
+ # Uninstall target
+@@ -348,41 +354,41 @@ uninstall: $(UNINSTALLATIONS)
+ 	
+ uninstall_ladspa:
+ 	@echo "Uninstalling LADSPA"
+-	@-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
++	-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
+ 	
+ uninstall_lv2:
+ 	@echo "Uninstalling LV2"
+-	@-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
++	-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
+ 	
+ uninstall_vst:
+ 	@echo "Uninstalling VST"
+-	@-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
++	-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
++	-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
++	-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
+ 	
+ uninstall_jack:
+ 	@echo "Uninstalling JACK"
+-	@-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
+-	@-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
++	-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
++	-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
++	-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
++	-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
+ 
+ uninstall_xdg:
+ 	@echo "Uninstalling desktop icons"
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
+-	@-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
++	-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
++	-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
+ 
+ uninstall_doc:
+ 	@echo "Uninstalling DOC"
+-	@-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 1fb917e..565dbb1 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -25,7 +25,6 @@ CXX                      ?= $(TOOL_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
+ 
+-MAKE_OPTS                 = -s
+ CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+@@ -62,7 +61,6 @@ export CXX
+ export PHP
+ export LD
+ 
+-export MAKE_OPTS
+ export CFLAGS
+ export CXXFLAGS
+ export SO_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index 8546191..1ac2bb6 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+@@ -67,8 +73,8 @@ target: all
+ # Rules
+ $(SUBDIRS):
+ 	@echo "Building $(@)"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+@@ -93,10 +99,10 @@ $(OBJ_TESTING_CORE): test testing rendering
+ 
+ $(OBJ_RES_CORE): $(OBJ_CORE) $(UTL_RESGEN)
+ 	@echo "Generating builtin resources"
+-	@mkdir -p $(OBJDIR)/res
+-	@$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	mkdir -p $(OBJDIR)/res
++	$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
++	-rm gmon.out >/dev/null 2>&1
++	$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ # Target dependencies
+ container: $(CONTAINER_DEPS)
+@@ -108,18 +114,18 @@ doc: utils $(PHP_PLUGINS)
+ # Additional processing
+ $(PHP_PLUGINS): $(UTL_GENPHP)
+ 	@echo "Generating PHP file $(notdir $(PHP_PLUGINS))"
+-	@$(UTL_GENPHP) $(PHP_PLUGINS)
++	$(UTL_GENPHP) $(PHP_PLUGINS)
+ 
+ vst_stub: $(UTL_VSTMAKE)
+ 	@echo "Building VST stub"
+-	@mkdir -p $(OBJDIR)/vst
+-	@$(UTL_VSTMAKE) $(OBJDIR)/vst
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
++	mkdir -p $(OBJDIR)/vst
++	$(UTL_VSTMAKE) $(OBJDIR)/vst
++	-rm gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
+ 
+ jack_stub: $(UTL_JACKMAKE)
+ 	@echo "Building JACK stub"
+-	@mkdir -p $(OBJDIR)/jack
+-	@$(UTL_JACKMAKE) $(OBJDIR)/jack
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
++	mkdir -p $(OBJDIR)/jack
++	$(UTL_JACKMAKE) $(OBJDIR)/jack
++	-rm gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
+diff --git a/src/container/Makefile b/src/container/Makefile
+index 8aa8196..50a2b34 100644
+--- a/src/container/Makefile
++++ b/src/container/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ OBJ_HELPERS             = $(OBJDIR)/CairoCanvas.o
+@@ -59,40 +65,40 @@ all: $(MODULES)
+ 
+ $(OBJ_HELPERS):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
+ 
+ $(LIB_LADSPA):
+ 	@echo "  $(CXX) ladspa.cpp"
+-	@$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_LADSPA))"
+-	@$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
++	$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
+ 
+ $(LIB_LV2): $(X_LV2_DEPS)
+ 	@echo "  $(CXX) lv2.cpp"
+-	@$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
++	$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
+ 	@echo "  $(CXX) $(notdir $(X_LIB_LV2))"
+-	@$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
++	$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
+ 
+ $(LIB_VST):
+ 	@echo "  $(CXX) vst.cpp"
+-	@$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_VST))"
+-	@$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
++	$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
+ 
+ $(LIB_JACK): $(OBJ_HELPERS)
+ 	@echo "  $(CXX) jack.cpp"
+-	@$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
++	$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
+ 	@echo "  $(CXX) $(notdir $(LIB_JACK))"
+-	@$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
++	$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
+ 
+ $(BIN_PROFILE): $(LIB_JACK)
+ 	@echo "  $(CXX) profile.cpp"
+-	@$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_PROFILE))"
+-	@$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
++	$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
+ 
+ $(BIN_TEST): $(LIB_JACK)
+ 	@echo "  $(CXX) test.cpp"
+-	@$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_TEST))"
+-	@$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
++	$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
+diff --git a/src/core/Makefile b/src/core/Makefile
+index a9ce1a5..c7a8161 100644
+--- a/src/core/Makefile
++++ b/src/core/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -10,9 +16,9 @@ all: $(OBJ_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
+ 
+ $(OBJ_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_CORE))"
+-	@$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
++	$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
+diff --git a/src/doc/Makefile b/src/doc/Makefile
+index aac73bf..db9533a 100644
+--- a/src/doc/Makefile
++++ b/src/doc/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ PHPDIR      = $(BUILDDIR)/src/doc
+ HTMLDIR     = $(BUILDDIR)/html
+ 
+@@ -8,14 +14,14 @@ target: all
+ # Common rules
+ $(PHPDIR)/Makefile:
+ 	@echo "Preparing PHP documentation generator"
+-	@mkdir -p $(PHPDIR)
+-	@mkdir -p $(HTMLDIR)
+-	@cp -rf * $(PHPDIR)/
+-	@cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
+-	@cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
+-	@cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
+-	@$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
++	mkdir -p $(PHPDIR)
++	mkdir -p $(HTMLDIR)
++	cp -rf * $(PHPDIR)/
++	cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
++	cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
++	cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
++	$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
+ 
+ all: $(PHPDIR)/Makefile
+ 	@echo "Generating HTML documentation"
+-	@$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C $(PHPDIR)
+diff --git a/src/dsp/Makefile b/src/dsp/Makefile
+index f3d9ab1..caca759 100644
+--- a/src/dsp/Makefile
++++ b/src/dsp/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ NATIVE_IMPL             = $(OBJDIR)/native.o
+ 
+ X86_IMPL                = $(OBJDIR)/x86.o
+@@ -59,41 +65,41 @@ all: $(OBJ_DSP)
+ 
+ $(OBJ_DSP): $(LINK_OBJECTS)
+ 	@echo "  $(LD) $(notdir $(OBJ_DSP))"
+-	@$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
++	$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
+ 
+ $(DSP_IMPL) $(BITS_IMPL) $(NATIVE_IMPL) $(X86_IMPL) $(ARM_IMPL) $(AARCH64_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	
+ $(SSE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE3_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE4_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
+ 	
+ $(NEON_D32_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
+ 	
+ $(ASIMD_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
+ 
+diff --git a/src/metadata/Makefile b/src/metadata/Makefile
+index 201f89a..031e301 100644
+--- a/src/metadata/Makefile
++++ b/src/metadata/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -10,8 +16,8 @@ target: all
+ 
+ $(OBJ_METADATA): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_METADATA))"
+-	@$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+diff --git a/src/plugins/Makefile b/src/plugins/Makefile
+index 1f197dc..c4b06a8 100644
+--- a/src/plugins/Makefile
++++ b/src/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,8 +14,8 @@ all:  $(OBJ_PLUGINS)
+ 
+ $(OBJ_PLUGINS): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(OBJ_PLUGINS))"
+-	@$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
++	$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
+diff --git a/src/rendering/Makefile b/src/rendering/Makefile
+index 897e327..e9efa06 100644
+--- a/src/rendering/Makefile
++++ b/src/rendering/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ BASE_IMPL             	= $(OBJDIR)/base_backend.o
+ 
+ GLX_IMPL                = $(OBJDIR)/glx/backend.o $(OBJDIR)/glx/factory.o
+@@ -20,15 +26,15 @@ all: $(MODULES)
+ 
+ $(LIB_R3D_GLX): $(BASE_IMPL) $(GLX_IMPL)
+ 	@echo "  $(CXX) $(notdir $(LIB_R3D_GLX))"
+-	@$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
++	$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
+ 
+ $(BASE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 	
+ $(GLX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $(@))
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
++	mkdir -p $(dir $(@))
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
+ 
+ 
+diff --git a/src/test/Makefile b/src/test/Makefile
+index e8016e1..a737bd6 100644
+--- a/src/test/Makefile
++++ b/src/test/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TEST_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TEST_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TEST_CORE))"
+-	@$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/testing/Makefile b/src/testing/Makefile
+index 705913d..0437275 100644
+--- a/src/testing/Makefile
++++ b/src/testing/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TESTING_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TESTING_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TESTING_CORE))"
+-	@$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/ui/Makefile b/src/ui/Makefile
+index 503111d..3c03067 100644
+--- a/src/ui/Makefile
++++ b/src/ui/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= ws tk ctl plugins
+@@ -8,15 +14,15 @@ PACKAGES                = $(OBJ_WS_CORE) $(OBJ_TK_CORE) $(OBJ_CTL_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_UI_CORE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_UI_CORE)
+diff --git a/src/ui/ctl/Makefile b/src/ui/ctl/Makefile
+index 3f727db..5fb0eaa 100644
+--- a/src/ui/ctl/Makefile
++++ b/src/ui/ctl/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_CTL_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_CTL_CORE) $(SUBDIRS)
+diff --git a/src/ui/plugins/Makefile b/src/ui/plugins/Makefile
+index 8f8db8f..209a4b7 100644
+--- a/src/ui/plugins/Makefile
++++ b/src/ui/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_PLUGIN_UIS): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_PLUGIN_UIS) $(SUBDIRS)
+diff --git a/src/ui/tk/Makefile b/src/ui/tk/Makefile
+index 8700f63..424f88d 100644
+--- a/src/ui/tk/Makefile
++++ b/src/ui/tk/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -6,11 +12,11 @@ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_TK_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_TK_CORE)
+diff --git a/src/ui/ws/Makefile b/src/ui/ws/Makefile
+index 1109752..9bfd3ab 100644
+--- a/src/ui/ws/Makefile
++++ b/src/ui/ws/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= x11
+@@ -8,15 +14,15 @@ all: $(OBJ_WS_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ $(OBJ_WS_CORE): $(FILES) $(OBJ_WS_X11_CORE)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
++	$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
+ 
+ $(OBJ_WS_X11_CORE): $(SUBDIRS)
+diff --git a/src/ui/ws/x11/Makefile b/src/ui/ws/x11/Makefile
+index b99e93d..fe43a77 100644
+--- a/src/ui/ws/x11/Makefile
++++ b/src/ui/ws/x11/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(XLIB_HEADERS) $(CAIRO_HEADERS)
+@@ -8,9 +14,9 @@ all: $(OBJ_WS_X11_CORE)
+ 
+ $(OBJ_WS_X11_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
++	$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index 88b3739..fdd9132 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++$(VERBOSE)MAKESILENT = -s
++
++# Suppress display of executed commands.
++$(VERBOSE).SILENT:
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -44,32 +50,32 @@ target: all
+ # Common rules
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKESILENT) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+ $(UTL_GENTTL): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	@$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++	$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+ $(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	@$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	@$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_GENPHP): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	@$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_RESGEN): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	@$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 
+-	
+\ No newline at end of file
++	
diff --git a/srcpkgs/lsp-plugins/template b/srcpkgs/lsp-plugins/template
new file mode 100644
index 000000000000..fbdacfcb3a10
--- /dev/null
+++ b/srcpkgs/lsp-plugins/template
@@ -0,0 +1,25 @@
+# Template file for 'lsp-plugins'
+pkgname=lsp-plugins
+version=1.1.30
+revision=1
+build_style=gnu-makefile
+make_build_args="VERBOSE=1"
+hostmakedepends="pkg-config php"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel ladspa-sdk jack-devel"
+short_desc="Collection of free plugins compatible with LADSPA, LV2 and LinuxVST"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/"
+distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+export BUILD_ARCH="${XBPS_TARGET_MACHINE%%-musl}"
+
+# https://github.com/sadko4u/lsp-plugins/issues/191#issuecomment-812847630
+CXXFLAGS="-std=c++98"
+
+do_check() {
+	export CXXFLAGS="$CXXFLAGS -DLSP_TESTING -DLSP_TRACE"
+	make VERBOSE=1 test
+	.test/lsp-plugins-test utest
+}

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (34 preceding siblings ...)
  2021-07-28 23:02 ` Logarithmus
@ 2021-07-31  8:43 ` paper42
  2021-07-31  8:43 ` paper42
                   ` (31 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: paper42 @ 2021-07-31  8:43 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 203 bytes --]

New review comment by paper42 on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r680330910

Comment:
why export? also this variable is not used anymore? why?

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (36 preceding siblings ...)
  2021-07-31  8:43 ` paper42
@ 2021-07-31  8:43 ` paper42
  2021-07-31 10:19 ` Logarithmus
                   ` (29 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: paper42 @ 2021-07-31  8:43 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 169 bytes --]

New review comment by paper42 on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r680330514

Comment:
break at 80 characters

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (35 preceding siblings ...)
  2021-07-31  8:43 ` [PR REVIEW] " paper42
@ 2021-07-31  8:43 ` paper42
  2021-07-31  8:43 ` paper42
                   ` (30 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: paper42 @ 2021-07-31  8:43 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 295 bytes --]

New review comment by paper42 on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r680330732

Comment:
you know that you can test it on your own computer, right? or are the issues CI specific? also you can push only commits that should be in this PR. 

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (37 preceding siblings ...)
  2021-07-31  8:43 ` paper42
@ 2021-07-31 10:19 ` Logarithmus
  2021-07-31 10:22 ` Logarithmus
                   ` (28 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-31 10:19 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 346 bytes --]

New review comment by Logarithmus on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r680340592

Comment:
@paper42 of course I test on my computer first. But I don't want to install cross toolchains for all possible architectures, so when I want to test for something like `armv6-musl`, I do it on CI.

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (38 preceding siblings ...)
  2021-07-31 10:19 ` Logarithmus
@ 2021-07-31 10:22 ` Logarithmus
  2021-07-31 10:32 ` Logarithmus
                   ` (27 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-31 10:22 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 451 bytes --]

New review comment by Logarithmus on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r680340592

Comment:
@paper42 of course I test on my computer first. But I don't want to install cross toolchains for all possible architectures, so when I want to test for something like `armv6-musl`, I do it on CI.

If you didn't know, Github Actions provides 2 virtual cores, so parallel tests are useful even on CI.

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (39 preceding siblings ...)
  2021-07-31 10:22 ` Logarithmus
@ 2021-07-31 10:32 ` Logarithmus
  2021-07-31 10:34 ` Logarithmus
                   ` (26 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-31 10:32 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 330 bytes --]

New review comment by Logarithmus on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r680342039

Comment:
@paper42 its a draft PR work in progress. So please hold your complaints until its ready for review.

You are not even Void team member but you act like you are superior than me

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (40 preceding siblings ...)
  2021-07-31 10:32 ` Logarithmus
@ 2021-07-31 10:34 ` Logarithmus
  2021-07-31 10:37 ` Logarithmus
                   ` (25 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-31 10:34 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 328 bytes --]

New review comment by Logarithmus on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r680342039

Comment:
@paper42 its a draft PR work in progress. So please hold your complaints until its ready for review.

You are not even Void team member but you act like you are superior to me

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (41 preceding siblings ...)
  2021-07-31 10:34 ` Logarithmus
@ 2021-07-31 10:37 ` Logarithmus
  2021-07-31 10:38 ` Logarithmus
                   ` (24 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-31 10:37 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 827 bytes --]

New comment by Logarithmus on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#issuecomment-890327731

Comment:
@paper42 if you really want to help with this PR then instead of nitpicking something minor like 80 columns limit please figure out how to compile `src/utils` for **host** architecture, then run those utils to do some code generation and then compile everything for `target` architecture. This projects' build system consists of many Makefiles which are not aware of cross compilation at all. So now I'm working on a patch for upstream to make it aware of cross compilation.

Debian has this package for many archs: https://packages.debian.org/sid/lsp-plugins, but I don't know how they managed to do that. Maybe they compiled it on those archs as hosts (without cross compiling)?

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (42 preceding siblings ...)
  2021-07-31 10:37 ` Logarithmus
@ 2021-07-31 10:38 ` Logarithmus
  2021-07-31 10:39 ` Logarithmus
                   ` (23 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-31 10:38 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 829 bytes --]

New comment by Logarithmus on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#issuecomment-890327731

Comment:
@paper42 if you really want to help with this PR then instead of nitpicking something minor like 80 columns limit please figure out how to compile `src/utils` for **host** architecture, then run those utils to do some code generation and then compile everything for **target** architecture. This projects' build system consists of many Makefiles which are not aware of cross compilation at all. So now I'm working on a patch for upstream to make it aware of cross compilation.

Debian has this package for many archs: https://packages.debian.org/sid/lsp-plugins, but I don't know how they managed to do that. Maybe they compiled it on those archs as hosts (without cross compiling)?

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (43 preceding siblings ...)
  2021-07-31 10:38 ` Logarithmus
@ 2021-07-31 10:39 ` Logarithmus
  2021-07-31 11:00 ` [PR REVIEW] " paper42
                   ` (22 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-31 10:39 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 893 bytes --]

New comment by Logarithmus on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#issuecomment-890327731

Comment:
@paper42 if you really want to help with this PR then instead of nitpicking something minor like 80 columns limit please figure out how to compile `src/utils` for **host** architecture, then run those utils to do some code generation and then compile everything for **target** architecture. This projects' build system consists of many Makefiles which are not aware of cross compilation at all. So now I'm working on a patch for upstream to make it aware of cross compilation. I'll create a PR at upstream when this patch finally will work.

Debian has this package for many archs: https://packages.debian.org/sid/lsp-plugins, but I don't know how they managed to do that. Maybe they compiled it on those archs as hosts (without cross compiling)?

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (44 preceding siblings ...)
  2021-07-31 10:39 ` Logarithmus
@ 2021-07-31 11:00 ` paper42
  2021-07-31 11:03 ` paper42
                   ` (21 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: paper42 @ 2021-07-31 11:00 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 586 bytes --]

New review comment by paper42 on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r680344867

Comment:
> @paper42 its a draft PR work in progress. So please hold your complaints until its ready for review.
> 
> You are not even Void team member but you act like you are superior to me

I guess my reviews can sound a bit hostile sometimes, I am sorry for that, I don't mean it that way. Of course my reviews are not authoritative, I just want to help a bit. I will wait until you figure it out, I am not interested in helping you anymore.

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (45 preceding siblings ...)
  2021-07-31 11:00 ` [PR REVIEW] " paper42
@ 2021-07-31 11:03 ` paper42
  2021-07-31 19:59 ` ericonr
                   ` (20 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: paper42 @ 2021-07-31 11:03 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 747 bytes --]

New review comment by paper42 on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r680344867

Comment:
> @paper42 its a draft PR work in progress. So please hold your complaints until its ready for review.
> 
> You are not even Void team member but you act like you are superior to me

I guess my reviews can sound a bit hostile sometimes, I am sorry for that, I don't mean it that way. Of course my reviews are not authoritative, I just want to help a bit.

It's rude to copy a PR without talking to the author first. If you had asked me before making this PR, I would have just told you to go on and open your own. I will wait until you figure it out, I am not interested in helping you anymore.

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (46 preceding siblings ...)
  2021-07-31 11:03 ` paper42
@ 2021-07-31 19:59 ` ericonr
  2021-07-31 21:35 ` abenson
                   ` (19 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: ericonr @ 2021-07-31 19:59 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 444 bytes --]

New review comment by ericonr on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r680402915

Comment:
>  its a draft PR work in progress.

But it's being developed in the open, and pointing things out early helps with the final review later on.

> You are not even Void team member

That doesn't mean anything. Anyone can review per Void's packaging guidelines, and paper does that quite well.

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (47 preceding siblings ...)
  2021-07-31 19:59 ` ericonr
@ 2021-07-31 21:35 ` abenson
  2021-07-31 21:47 ` Logarithmus
                   ` (18 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: abenson @ 2021-07-31 21:35 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 677 bytes --]

New comment by abenson on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#issuecomment-890406351

Comment:
> instead of nitpicking something minor like 80 columns limit

This will still need to be fixed, we do have conventions and standards.

> please figure out how to compile src/utils for host architecture

You're the one requesting this package be included... that means you figure it out.  We can help, but your attitude isn't helping us help.

>  Debian has this package for many archs

We are not Debian, and they have been building on arm* natively for a while.  I look forward to us getting there, but we are not there now.

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (48 preceding siblings ...)
  2021-07-31 21:35 ` abenson
@ 2021-07-31 21:47 ` Logarithmus
  2021-08-01  2:25 ` sgn
                   ` (17 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-07-31 21:47 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 820 bytes --]

New comment by Logarithmus on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#issuecomment-890407423

Comment:
> This will still need to be fixed, we do have conventions and standards.

Would be nice to make `xlint` check for 80 columns limit.

> You're the one requesting this package be included... that means you figure it out. We can help, but your attitude isn't helping us help.

Today I've read a bit more about exporting variables into nested `make` invocations. Hopefully it'll help to finally fix cross builds.

> We are not Debian, and they have been building on arm* natively for a while. I look forward to us getting there, but we are not there now.

They even have it for `mipsel`. Do they really build Debian packages on something like a Wi-Fi router? Funny



^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (49 preceding siblings ...)
  2021-07-31 21:47 ` Logarithmus
@ 2021-08-01  2:25 ` sgn
  2021-08-01 15:45 ` [PR PATCH] [Updated] " Logarithmus
                   ` (16 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: sgn @ 2021-08-01  2:25 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 443 bytes --]

New comment by sgn on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#issuecomment-890436339

Comment:
> > We are not Debian, and they have been building on arm* natively for a while. I look forward to us getting there, but we are not there now.
> 
> They even have it for `mipsel`. Do they really build Debian packages on something like a Wi-Fi router? Funny

They build it semi-natively by qemu-user



^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Updated] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (50 preceding siblings ...)
  2021-08-01  2:25 ` sgn
@ 2021-08-01 15:45 ` Logarithmus
  2021-08-01 15:47 ` Logarithmus
                   ` (15 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-08-01 15:45 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 2133 bytes --]

There is an updated pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.
Also used by `easyeffects`, `pulseeffects`' successor 
Continuation of https://github.com/void-linux/void-packages/pull/29932

TODO:
- [ ] wait for https://github.com/sadko4u/lsp-plugins/pull/198
- [ ] implement `VERBOSE` option into `lsp-plugins` Makefiles to save my sanity debugging them
https://github.com/sadko4u/lsp-plugins/pull/200
- [ ] fix i686
- [ ] fix arm
- [ ] split the package (ladspa, lv2, vst, jack, doc)

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 92241 bytes --]

From b31bc44e2e8a5f0de017b1155f5073e2b926481a Mon Sep 17 00:00:00 2001
From: Artur Sinila <freesoftware@logarithmus.dev>
Date: Mon, 5 Jul 2021 03:44:08 +0300
Subject: [PATCH 1/2] common/build-style/: enable running tests in parallel

---
 common/build-style/cmake.sh           | 6 +++++-
 common/build-style/configure.sh       | 6 +++++-
 common/build-style/gnu-configure.sh   | 6 +++++-
 common/build-style/gnu-makefile.sh    | 6 +++++-
 common/build-style/perl-module.sh     | 6 +++++-
 common/environment/setup/sourcepkg.sh | 3 ++-
 6 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/common/build-style/cmake.sh b/common/build-style/cmake.sh
index 401dabad31c8..c7ffd16fee21 100644
--- a/common/build-style/cmake.sh
+++ b/common/build-style/cmake.sh
@@ -113,7 +113,11 @@ do_check() {
 
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/configure.sh b/common/build-style/configure.sh
index 0963fc347934..b846a1a77572 100644
--- a/common/build-style/configure.sh
+++ b/common/build-style/configure.sh
@@ -29,7 +29,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-configure.sh b/common/build-style/gnu-configure.sh
index 8121136cd121..b09de442b05b 100644
--- a/common/build-style/gnu-configure.sh
+++ b/common/build-style/gnu-configure.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-makefile.sh b/common/build-style/gnu-makefile.sh
index d7ea148fc483..0f7afa7d3695 100644
--- a/common/build-style/gnu-makefile.sh
+++ b/common/build-style/gnu-makefile.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/perl-module.sh b/common/build-style/perl-module.sh
index b9a01b13cfa9..d47945b33d36 100644
--- a/common/build-style/perl-module.sh
+++ b/common/build-style/perl-module.sh
@@ -79,7 +79,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/environment/setup/sourcepkg.sh b/common/environment/setup/sourcepkg.sh
index bc06f745b78a..1fd541f1e715 100644
--- a/common/environment/setup/sourcepkg.sh
+++ b/common/environment/setup/sourcepkg.sh
@@ -13,7 +13,8 @@ unset -v cmake_builddir meson_builddir
 unset -v meson_crossfile
 unset -v gemspec
 unset -v go_import_path go_package go_mod_mode
-unset -v patch_args disable_parallel_build keep_libtool_archives make_use_env
+unset -v patch_args disable_parallel_build disable_parallel_check
+unset -v keep_libtool_archives make_use_env
 unset -v reverts subpackages makedepends hostmakedepends checkdepends depends restricted
 unset -v nopie build_options build_options_default bootstrap repository reverts
 unset -v CFLAGS CXXFLAGS FFLAGS CPPFLAGS LDFLAGS LD_LIBRARY_PATH

From baf5ebf2c11bb94b313f3b541226f7d70ff9f36b Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH 2/2] New package: lsp-plugins-1.1.30

---
 srcpkgs/lsp-plugins-doc                       |    1 +
 srcpkgs/lsp-plugins-jack                      |    1 +
 srcpkgs/lsp-plugins-ladspa                    |    1 +
 srcpkgs/lsp-plugins-lv2                       |    1 +
 srcpkgs/lsp-plugins-vst                       |    1 +
 .../00-makefile-test-remove-cflags.patch      |   12 +
 srcpkgs/lsp-plugins/patches/01-musl.patch     |  391 ++++++
 .../lsp-plugins/patches/02-make-verbose.patch | 1082 +++++++++++++++++
 .../patches/03-improve-cross.patch            |  590 +++++++++
 srcpkgs/lsp-plugins/template                  |   75 ++
 10 files changed, 2155 insertions(+)
 create mode 120000 srcpkgs/lsp-plugins-doc
 create mode 120000 srcpkgs/lsp-plugins-jack
 create mode 120000 srcpkgs/lsp-plugins-ladspa
 create mode 120000 srcpkgs/lsp-plugins-lv2
 create mode 120000 srcpkgs/lsp-plugins-vst
 create mode 100644 srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
 create mode 100644 srcpkgs/lsp-plugins/patches/01-musl.patch
 create mode 100644 srcpkgs/lsp-plugins/patches/02-make-verbose.patch
 create mode 100644 srcpkgs/lsp-plugins/patches/03-improve-cross.patch
 create mode 100644 srcpkgs/lsp-plugins/template

diff --git a/srcpkgs/lsp-plugins-doc b/srcpkgs/lsp-plugins-doc
new file mode 120000
index 000000000000..f59057b0c7f7
--- /dev/null
+++ b/srcpkgs/lsp-plugins-doc
@@ -0,0 +1 @@
+lsp-plugins
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-jack b/srcpkgs/lsp-plugins-jack
new file mode 120000
index 000000000000..f59057b0c7f7
--- /dev/null
+++ b/srcpkgs/lsp-plugins-jack
@@ -0,0 +1 @@
+lsp-plugins
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-ladspa b/srcpkgs/lsp-plugins-ladspa
new file mode 120000
index 000000000000..f59057b0c7f7
--- /dev/null
+++ b/srcpkgs/lsp-plugins-ladspa
@@ -0,0 +1 @@
+lsp-plugins
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-lv2 b/srcpkgs/lsp-plugins-lv2
new file mode 120000
index 000000000000..f59057b0c7f7
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2
@@ -0,0 +1 @@
+lsp-plugins
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-vst b/srcpkgs/lsp-plugins-vst
new file mode 120000
index 000000000000..f59057b0c7f7
--- /dev/null
+++ b/srcpkgs/lsp-plugins-vst
@@ -0,0 +1 @@
+lsp-plugins
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
new file mode 100644
index 000000000000..fd82f25d4a25
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
@@ -0,0 +1,12 @@
+https://github.com/void-linux/void-packages/pull/29932#discussion_r605695858
+--- a/Makefile
++++ b/Makefile
+@@ -108,8 +108,6 @@ trace: export EXE_FLAGS     += -g3
+ trace: compile
+ 
+ test: OBJDIR                 = $(TESTDIR)
+-test: export CFLAGS         += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-test: export CXXFLAGS       += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
diff --git a/srcpkgs/lsp-plugins/patches/01-musl.patch b/srcpkgs/lsp-plugins/patches/01-musl.patch
new file mode 100644
index 000000000000..6dc08949a87a
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/01-musl.patch
@@ -0,0 +1,391 @@
+diff --git a/TODO.txt b/TODO.txt
+index 4976293..3bb3db8 100644
+--- a/TODO.txt
++++ b/TODO.txt
+@@ -28,6 +28,11 @@
+ - Added possibility to change themes in runtime.
+ - Complicated plugin UIs now allow to switch between Advanced and Novice modes.
+ 
++=== 1.1.31 ===
++
++* Fixed X11 error handling routine that could crash under certain conditions.
++* Better support for musl libc (contributed by Artur Sinila).
++
+ *******************************************************************************
+ * New plugin check list before release
+ *******************************************************************************
+diff --git a/include/common/types.h b/include/common/types.h
+index dd1816e..59c794e 100644
+--- a/include/common/types.h
++++ b/include/common/types.h
+@@ -563,6 +563,12 @@
+     #define MINIMUM_ALIGN                   DEFAULT_ALIGN
+ #endif /* DEFAULT_ALIGN */
+ 
++//-----------------------------------------------------------------------------
++// Detect some libraries
++#ifdef __GLIBC__
++    #define USE_GLIBC                           __GLIBC__
++#endif /* GLIBC */
++
+ //-----------------------------------------------------------------------------
+ // Type definitions
+ __IF_32( typedef        uint32_t            umword_t );
+diff --git a/include/data/cvector.h b/include/data/cvector.h
+index eccc94a..17fe119 100644
+--- a/include/data/cvector.h
++++ b/include/data/cvector.h
+@@ -25,6 +25,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <sys/types.h>
+ 
+ #define CVECTOR_GROW        16
+ 
+diff --git a/include/test/main/executor.h b/include/test/main/executor.h
+index 0faf73f..5a0c016 100644
+--- a/include/test/main/executor.h
++++ b/include/test/main/executor.h
+@@ -633,7 +633,7 @@ namespace lsp
+     }
+ #endif /* PLATFORM_WINDOWS */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     void TestExecutor::start_memcheck(test::Test *v)
+     {
+         if (!pCfg->mtrace)
+diff --git a/include/test/main/types.h b/include/test/main/types.h
+index ef15800..0c5d7c2 100644
+--- a/include/test/main/types.h
++++ b/include/test/main/types.h
+@@ -42,7 +42,7 @@
+     #include <fcntl.h>
+ #endif /* PLATFORM_UNIX_COMPATIBLE */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     #include <mcheck.h>
+ #endif /* PLATFORM_LINUX */
+ 
+diff --git a/include/testing/mtest/3d/common/X11Renderer.h b/include/testing/mtest/3d/common/X11Renderer.h
+index e8ec205..f0a51e2 100644
+--- a/include/testing/mtest/3d/common/X11Renderer.h
++++ b/include/testing/mtest/3d/common/X11Renderer.h
+@@ -30,7 +30,7 @@
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include <rendering/backend.h>
+ #include <core/ipc/Library.h>
+diff --git a/src/testing/mtest/3d/boolean3d.cpp b/src/testing/mtest/3d/boolean3d.cpp
+deleted file mode 100644
+index 636dce1..0000000
+--- a/src/testing/mtest/3d/boolean3d.cpp
++++ /dev/null
+@@ -1,253 +0,0 @@
+-/*
+- * Copyright (C) 2020 Linux Studio Plugins Project <https://lsp-plug.in/>
+- *           (C) 2020 Vladimir Sadovnikov <sadko4u@gmail.com>
+- *
+- * This file is part of lsp-plugins
+- * Created on: 24 дек. 2018 г.
+- *
+- * lsp-plugins is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU Lesser General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * any later version.
+- *
+- * lsp-plugins is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU Lesser General Public License for more details.
+- *
+- * You should have received a copy of the GNU Lesser General Public License
+- * along with lsp-plugins. If not, see <https://www.gnu.org/licenses/>.
+- */
+-
+-#if 0
+-
+-#include <test/mtest.h>
+-#include <testing/mtest/3d/common/X11Renderer.h>
+-#include <core/files/Model3DFile.h>
+-#include <core/3d/rt_context.h>
+-#include <core/3d/RayTrace3D.h>
+-
+-#include <core/types.h>
+-#include <core/debug.h>
+-#include <core/sugar.h>
+-#include <core/status.h>
+-#include <stdlib.h>
+-#include <errno.h>
+-#include <data/cstorage.h>
+-
+-#include <X11/X.h>
+-#include <X11/Xlib.h>
+-#include <X11/keysymdef.h>
+-#include <GL/gl.h>
+-#include <GL/glx.h>
+-#include <GL/glu.h>
+-#include <sys/poll.h>
+-
+-//#define TEST_DEBUG
+-
+-#ifndef TEST_DEBUG
+-//    #define BREAKPOINT_STEP     -1
+-//    #define BREAKPOINT_STEP     27
+-//    #define BREAKPOINT_STEP     83
+-    #define BREAKPOINT_STEP     215
+-//    #define BREAKPOINT_STEP     0
+-
+-#else /* DEBUG */
+-    #define BREAKPOINT_STEP     0
+-#endif /* DEBUG */
+-
+-MTEST_BEGIN("3d", boolean)
+-
+-    class Renderer: public X11Renderer
+-    {
+-        private:
+-            Scene3D        *pScene;
+-            ssize_t         nTrace;
+-            bool            bDrawMatched;
+-            bool            bDrawIgnored;
+-            bool            bDrawDebug;
+-
+-        public:
+-            explicit Renderer(Scene3D *scene, View3D *view): X11Renderer(view)
+-            {
+-                pScene = scene;
+-                bDrawMatched    = true;
+-                bDrawIgnored    = true;
+-                bDrawDebug      = true;
+-                bDrawNormals    = false;
+-                nTrace          = BREAKPOINT_STEP;
+-
+-                update_view();
+-            }
+-
+-            virtual ~Renderer()
+-            {
+-            }
+-
+-        public:
+-            virtual void on_key_press(const XKeyEvent &ev, KeySym key)
+-            {
+-                switch (key)
+-                {
+-                    case XK_Up:
+-                        nTrace++;
+-                        lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                        update_view();
+-                        break;
+-                    case XK_Down:
+-                        if (nTrace >= 0)
+-                        {
+-                            nTrace--;
+-                            lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                            update_view();
+-                        }
+-                        break;
+-
+-                    case 'm':
+-                    {
+-                        bDrawMatched = ! bDrawMatched;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'i':
+-                    {
+-                        bDrawIgnored = ! bDrawIgnored;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'd':
+-                    {
+-                        bDrawDebug = ! bDrawDebug;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case '0': case '1': case '2': case '3': case '4':
+-                    case '5': case '6': case '7': case '8': case '9':
+-                    {
+-                        Object3D *obj = pScene->get_object(key - '0');
+-                        if (obj != NULL)
+-                        {
+-                            obj->set_visible(!obj->is_visible());
+-                            update_view();
+-                        }
+-                        break;
+-                    }
+-                    default:
+-                        X11Renderer::on_key_press(ev, key);
+-                        break;
+-                }
+-            }
+-
+-        protected:
+-            status_t perform_boolean(rt_debug_t *shared)
+-            {
+-                if (pScene->num_objects() <= 0)
+-                    return STATUS_OK;
+-
+-                rt_mesh_t mesh;
+-                mesh.set_debug_context(shared, &shared->trace);
+-
+-                Object3D *obj = pScene->object(0);
+-                status_t res = mesh.init(obj, 0, obj->matrix());
+-                if (res != STATUS_OK)
+-                    return res;
+-
+-                for (size_t i=1, n=pScene->num_objects(); i<n; ++i)
+-                {
+-                    obj = pScene->object(i);
+-                    res = mesh.subtract(obj, i, obj->matrix());
+-                    if (res != STATUS_OK)
+-                        return res;
+-                }
+-
+-                return STATUS_OK;
+-            }
+-
+-            status_t    update_view()
+-            {
+-                v_vertex3d_t v[3];
+-                status_t res = STATUS_OK;
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // List of ignored and matched triangles
+-                rt_debug_t global;
+-                global.breakpoint   = nTrace;
+-                global.step         = 0;
+-
+-                // Perform raytrace
+-                res     = perform_boolean(&global);
+-                if (res == STATUS_BREAKPOINT)
+-                {
+-                    pView->swap(&global.trace);
+-                    res         = STATUS_OK;
+-                }
+-
+-                if (!bDrawDebug)
+-                    pView->clear_all();
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // Build final scene from matched and ignored items
+-                if (bDrawIgnored)
+-                {
+-                    for (size_t i=0, m=global.ignored.size(); i < m; ++i)
+-                        pView->add_triangle_1c(global.ignored.at(i), &C_GRAY);
+-                }
+-
+-                if (bDrawMatched)
+-                {
+-                    for (size_t i=0, m=global.matched.size(); i < m; ++i)
+-                    {
+-                        v_triangle3d_t *t = global.matched.at(i);
+-                        v[0].p     = t->p[0];
+-                        v[0].n     = t->n[0];
+-                        v[0].c     = C_RED;
+-
+-                        v[1].p     = t->p[1];
+-                        v[1].n     = t->n[1];
+-                        v[1].c     = C_GREEN;
+-
+-                        v[2].p     = t->p[2];
+-                        v[2].n     = t->n[2];
+-                        v[2].c     = C_BLUE;
+-
+-                        pView->add_triangle(v);
+-                    }
+-                }
+-
+-                global.ignored.flush();
+-                global.matched.flush();
+-
+-                return res;
+-            }
+-    };
+-
+-    MTEST_MAIN
+-    {
+-        const char *scene_file = (argc < 1) ? "res/test/3d/cross.obj" : argv[0];
+-
+-        // Load scene
+-        Scene3D s;
+-        View3D v;
+-        status_t res = Model3DFile::load(&s, scene_file, true);
+-        MTEST_ASSERT_MSG(res == STATUS_OK, "Error loading scene from file %s", scene_file);
+-
+-        // Initialize renderer
+-        Renderer r(&s, &v);
+-        MTEST_ASSERT_MSG(r.init() == STATUS_OK, "Error initializing renderer");
+-        r.run();
+-        r.destroy();
+-
+-        // Destroy scene
+-        s.destroy();
+-    }
+-
+-MTEST_END
+-
+-#endif
+diff --git a/src/testing/mtest/3d/bsp_context.cpp b/src/testing/mtest/3d/bsp_context.cpp
+index de54427..f7b7a34 100644
+--- a/src/testing/mtest/3d/bsp_context.cpp
++++ b/src/testing/mtest/3d/bsp_context.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/reflections3d.cpp b/src/testing/mtest/3d/reflections3d.cpp
+index e250444..367f86c 100644
+--- a/src/testing/mtest/3d/reflections3d.cpp
++++ b/src/testing/mtest/3d/reflections3d.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/ui/ws/x11/X11Display.cpp b/src/ui/ws/x11/X11Display.cpp
+index d85db51..987e8a9 100644
+--- a/src/ui/ws/x11/X11Display.cpp
++++ b/src/ui/ws/x11/X11Display.cpp
+@@ -23,7 +23,7 @@
+ 
+ #ifdef USE_X11_DISPLAY
+ 
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ 
+@@ -233,7 +233,7 @@ namespace lsp
+                 while (!atomic_cas(&hLock, 0, 1)) { /* Wait */ }
+ 
+                 // Dispatch errors between Displays
+-                for (X11Display *dp = pHandlers; dp != NULL; ++dp)
++                for (X11Display *dp = pHandlers; dp != NULL; dp = dp->pNextHandler)
+                     if (dp->pDisplay == dpy)
+                         dp->handle_error(ev);
+ 
diff --git a/srcpkgs/lsp-plugins/patches/02-make-verbose.patch b/srcpkgs/lsp-plugins/patches/02-make-verbose.patch
new file mode 100644
index 000000000000..d6c4f6ce2f92
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/02-make-verbose.patch
@@ -0,0 +1,1082 @@
+diff --git a/Makefile b/Makefile
+index 2d9cb79..79ddcc6 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ # Common definitions
+ RELEASE_TEXT            = LICENSE.txt README.txt CHANGELOG.txt
+ RELEASE_SRC             = $(RELEASE_TEXT) src build-*.sh include res Makefile release.sh
+@@ -166,24 +172,24 @@ compile_info:
+ 	@echo "-------------------------------------------------------------------------------"
+ 
+ compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@mkdir -p $(CFGDIR)
+-	@test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
+-	@test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
+-	@test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
+-	@test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++	mkdir -p $(OBJDIR)/src
++	mkdir -p $(CFGDIR)
++	test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
++	test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
++	test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
++	test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Build OK"
+ 	
+ test_compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++	mkdir -p $(OBJDIR)/src
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
+ clean:
+-	@-rm -rf $(BUILDDIR)
+-	@-rm -rf $(TESTDIR)
+-	@-rm -rf $(CFGDIR)
++	-rm -rf $(BUILDDIR)
++	-rm -rf $(TESTDIR)
++	-rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+ 
+ # Build targets
+@@ -209,63 +215,63 @@ install: $(INSTALLATIONS)
+ 
+ install_ladspa: all
+ 	@echo "Installing LADSPA plugins to $(DESTDIR)$(LADSPA_PATH)/"
+-	@mkdir -p $(DESTDIR)$(LADSPA_PATH)
+-	@$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
++	mkdir -p $(DESTDIR)$(LADSPA_PATH)
++	$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
+ 	
+ install_lv2: all
+ 	@echo "Installing LV2 plugins to $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
+-	@$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
++	$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+ 	
+ install_vst: all
+ 	@echo "Installing VST plugins to $(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+-	@$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
++	$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+ 
+ install_jack: all
+ 	@echo "Installing JACK core to $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
++	$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+ 	@echo "Installing JACK standalone plugins to $(DESTDIR)$(BIN_PATH)"
+-	@mkdir -p "$(DESTDIR)$(BIN_PATH)"
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
++	mkdir -p "$(DESTDIR)$(BIN_PATH)"
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
+ 
+ install_xdg:
+ 	@echo "Installing desktop icons to $(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
+-	@mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
+-	@cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
+-	@cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
+-	@cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
+-	@cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
++	mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
++	cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
++	cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
++	cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
++	cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
+ 
+ install_doc: all
+ 	@echo "Installing documentation to $(DESTDIR)$(DOC_PATH)"
+-	@mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+ # Release targets
+ dbg_release: export CFLAGS        += -DLSP_TRACE -O2
+@@ -279,67 +285,67 @@ release: $(RELEASES)
+ 
+ release_prepare: all
+ 	@echo "Releasing plugins for architecture $(BUILD_PROFILE)"
+-	@mkdir -p $(RELEASE)
+-	@mkdir -p $(DESTDIR)
++	mkdir -p $(RELEASE)
++	mkdir -p $(DESTDIR)
+ 	
+ release_ladspa: DESTDIR=$(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_ladspa: | release_prepare install_ladspa
+ 	@echo "Releasing LADSPA binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_lv2: DESTDIR=$(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_lv2: | release_prepare install_lv2
+ 	@echo "Releasing LV2 binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_vst: DESTDIR=$(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_vst: | release_prepare install_vst
+ 	@echo "Releasing VST binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_jack: DESTDIR=$(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_jack: | release_prepare install_jack
+ 	@echo "Releasing JACK binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 
+ release_profile: DESTDIR=$(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_profile: | release_prepare
+ 	@echo "Releasing PROFILE binaries"
+-	@$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ 
+ release_src: DESTDIR=$(RELEASE)/$(SRC_ID)
+ release_src: | release_prepare
+ 	@echo "Releasing source code binaries"
+-	@mkdir -p $(DESTDIR)
+-	@mkdir -p $(DESTDIR)/scripts
+-	@cp -R $(RELEASE_SRC) $(DESTDIR)/
+-	@cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	mkdir -p $(DESTDIR)/scripts
++	cp -R $(RELEASE_SRC) $(DESTDIR)/
++	cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
++	rm -rf $(DESTDIR)
+ 
+ release_doc: DESTDIR=$(RELEASE)/$(DOC_ID)
+ release_doc: | release_prepare
+ 	@echo "Releasing documentation"
+-	@mkdir -p $(DESTDIR)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
++	rm -rf $(DESTDIR)
+ 
+ # Unrelease target
+ unrelease: clean
+-	@-rm -rf $(RELEASE)
++	-rm -rf $(RELEASE)
+ 	@echo "Unrelease OK"
+ 
+ # Uninstall target
+@@ -348,41 +354,41 @@ uninstall: $(UNINSTALLATIONS)
+ 	
+ uninstall_ladspa:
+ 	@echo "Uninstalling LADSPA"
+-	@-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
++	-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
+ 	
+ uninstall_lv2:
+ 	@echo "Uninstalling LV2"
+-	@-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
++	-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
+ 	
+ uninstall_vst:
+ 	@echo "Uninstalling VST"
+-	@-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
++	-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
++	-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
++	-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
+ 	
+ uninstall_jack:
+ 	@echo "Uninstalling JACK"
+-	@-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
+-	@-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
++	-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
++	-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
++	-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
++	-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
+ 
+ uninstall_xdg:
+ 	@echo "Uninstalling desktop icons"
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
+-	@-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
++	-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
++	-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
+ 
+ uninstall_doc:
+ 	@echo "Uninstalling DOC"
+-	@-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+diff --git a/TODO.txt b/TODO.txt
+index 3bb3db8..f8562ef 100644
+--- a/TODO.txt
++++ b/TODO.txt
+@@ -32,6 +32,7 @@
+ 
+ * Fixed X11 error handling routine that could crash under certain conditions.
+ * Better support for musl libc (contributed by Artur Sinila).
++* Added support of VERBOSE parameter for build system (contributed by Artur Sinila).
+ 
+ *******************************************************************************
+ * New plugin check list before release
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 1fb917e..565dbb1 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -25,7 +25,6 @@ CXX                      ?= $(TOOL_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
+ 
+-MAKE_OPTS                 = -s
+ CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+@@ -62,7 +61,6 @@ export CXX
+ export PHP
+ export LD
+ 
+-export MAKE_OPTS
+ export CFLAGS
+ export CXXFLAGS
+ export SO_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index 8546191..d960ad8 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+@@ -58,6 +64,7 @@ ifeq ($(NEED_UI),1)
+   CONTAINER_DEPS         += $(OBJ_UI_CORE) $(OBJ_RES_CORE) rendering
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all $(MODULES)
+ 
+ all: $(MODULES)
+@@ -67,8 +74,8 @@ target: all
+ # Rules
+ $(SUBDIRS):
+ 	@echo "Building $(@)"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+@@ -93,10 +100,10 @@ $(OBJ_TESTING_CORE): test testing rendering
+ 
+ $(OBJ_RES_CORE): $(OBJ_CORE) $(UTL_RESGEN)
+ 	@echo "Generating builtin resources"
+-	@mkdir -p $(OBJDIR)/res
+-	@$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	mkdir -p $(OBJDIR)/res
++	$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
++	-rm gmon.out >/dev/null 2>&1
++	$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ # Target dependencies
+ container: $(CONTAINER_DEPS)
+@@ -108,18 +115,18 @@ doc: utils $(PHP_PLUGINS)
+ # Additional processing
+ $(PHP_PLUGINS): $(UTL_GENPHP)
+ 	@echo "Generating PHP file $(notdir $(PHP_PLUGINS))"
+-	@$(UTL_GENPHP) $(PHP_PLUGINS)
++	$(UTL_GENPHP) $(PHP_PLUGINS)
+ 
+ vst_stub: $(UTL_VSTMAKE)
+ 	@echo "Building VST stub"
+-	@mkdir -p $(OBJDIR)/vst
+-	@$(UTL_VSTMAKE) $(OBJDIR)/vst
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
++	mkdir -p $(OBJDIR)/vst
++	$(UTL_VSTMAKE) $(OBJDIR)/vst
++	-rm gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
+ 
+ jack_stub: $(UTL_JACKMAKE)
+ 	@echo "Building JACK stub"
+-	@mkdir -p $(OBJDIR)/jack
+-	@$(UTL_JACKMAKE) $(OBJDIR)/jack
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
++	mkdir -p $(OBJDIR)/jack
++	$(UTL_JACKMAKE) $(OBJDIR)/jack
++	-rm gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
+diff --git a/src/container/Makefile b/src/container/Makefile
+index 8aa8196..23a2e7a 100644
+--- a/src/container/Makefile
++++ b/src/container/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ OBJ_HELPERS             = $(OBJDIR)/CairoCanvas.o
+@@ -53,46 +59,47 @@ ifeq ($(VST_UI),1)
+   X_VST_LIBS             += $(UI_LIBS)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(MODULES)
+ 
+ $(OBJ_HELPERS):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
+ 
+ $(LIB_LADSPA):
+ 	@echo "  $(CXX) ladspa.cpp"
+-	@$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_LADSPA))"
+-	@$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
++	$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
+ 
+ $(LIB_LV2): $(X_LV2_DEPS)
+ 	@echo "  $(CXX) lv2.cpp"
+-	@$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
+-	@echo "  $(CXX) $(notdir $(X_LIB_LV2))"
+-	@$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
++	$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
++	@echo "  $(CXX) $(notdir $(LIB_LV2))"
++	$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
+ 
+ $(LIB_VST):
+ 	@echo "  $(CXX) vst.cpp"
+-	@$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_VST))"
+-	@$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
++	$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
+ 
+ $(LIB_JACK): $(OBJ_HELPERS)
+ 	@echo "  $(CXX) jack.cpp"
+-	@$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
++	$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
+ 	@echo "  $(CXX) $(notdir $(LIB_JACK))"
+-	@$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
++	$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
+ 
+ $(BIN_PROFILE): $(LIB_JACK)
+ 	@echo "  $(CXX) profile.cpp"
+-	@$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_PROFILE))"
+-	@$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
++	$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
+ 
+ $(BIN_TEST): $(LIB_JACK)
+ 	@echo "  $(CXX) test.cpp"
+-	@$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_TEST))"
+-	@$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
++	$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
+diff --git a/src/core/Makefile b/src/core/Makefile
+index a9ce1a5..3ad14a5 100644
+--- a/src/core/Makefile
++++ b/src/core/Makefile
+@@ -1,18 +1,25 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(SNDFILE_HEADERS)
+ LIBS                    = $(PTHREAD_LIBS)
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(OBJ_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
+ 
+ $(OBJ_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_CORE))"
+-	@$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
++	$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
+diff --git a/src/doc/Makefile b/src/doc/Makefile
+index aac73bf..f7f18a1 100644
+--- a/src/doc/Makefile
++++ b/src/doc/Makefile
+@@ -1,6 +1,13 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ PHPDIR      = $(BUILDDIR)/src/doc
+ HTMLDIR     = $(BUILDDIR)/html
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -8,14 +15,14 @@ target: all
+ # Common rules
+ $(PHPDIR)/Makefile:
+ 	@echo "Preparing PHP documentation generator"
+-	@mkdir -p $(PHPDIR)
+-	@mkdir -p $(HTMLDIR)
+-	@cp -rf * $(PHPDIR)/
+-	@cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
+-	@cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
+-	@cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
+-	@$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
++	mkdir -p $(PHPDIR)
++	mkdir -p $(HTMLDIR)
++	cp -rf * $(PHPDIR)/
++	cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
++	cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
++	cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
++	$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
+ 
+ all: $(PHPDIR)/Makefile
+ 	@echo "Generating HTML documentation"
+-	@$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
++	$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
+diff --git a/src/dsp/Makefile b/src/dsp/Makefile
+index f3d9ab1..aac8007 100644
+--- a/src/dsp/Makefile
++++ b/src/dsp/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ NATIVE_IMPL             = $(OBJDIR)/native.o
+ 
+ X86_IMPL                = $(OBJDIR)/x86.o
+@@ -51,6 +57,7 @@ ifeq ($(BUILD_PROFILE), aarch64)
+ LINK_OBJECTS           += $(AARCH64_IMPL) $(ASIMD_IMPL)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -59,41 +66,41 @@ all: $(OBJ_DSP)
+ 
+ $(OBJ_DSP): $(LINK_OBJECTS)
+ 	@echo "  $(LD) $(notdir $(OBJ_DSP))"
+-	@$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
++	$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
+ 
+ $(DSP_IMPL) $(BITS_IMPL) $(NATIVE_IMPL) $(X86_IMPL) $(ARM_IMPL) $(AARCH64_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	
+ $(SSE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE3_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE4_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
+ 	
+ $(NEON_D32_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
+ 	
+ $(ASIMD_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
+ 
+diff --git a/src/metadata/Makefile b/src/metadata/Makefile
+index 201f89a..403f38a 100644
+--- a/src/metadata/Makefile
++++ b/src/metadata/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -10,8 +16,8 @@ target: all
+ 
+ $(OBJ_METADATA): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_METADATA))"
+-	@$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+diff --git a/src/plugins/Makefile b/src/plugins/Makefile
+index 1f197dc..85963ba 100644
+--- a/src/plugins/Makefile
++++ b/src/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,8 +14,8 @@ all:  $(OBJ_PLUGINS)
+ 
+ $(OBJ_PLUGINS): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(OBJ_PLUGINS))"
+-	@$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
++	$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
+diff --git a/src/rendering/Makefile b/src/rendering/Makefile
+index 897e327..65f3237 100644
+--- a/src/rendering/Makefile
++++ b/src/rendering/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ BASE_IMPL             	= $(OBJDIR)/base_backend.o
+ 
+ GLX_IMPL                = $(OBJDIR)/glx/backend.o $(OBJDIR)/glx/factory.o
+@@ -20,15 +26,15 @@ all: $(MODULES)
+ 
+ $(LIB_R3D_GLX): $(BASE_IMPL) $(GLX_IMPL)
+ 	@echo "  $(CXX) $(notdir $(LIB_R3D_GLX))"
+-	@$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
++	$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
+ 
+ $(BASE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 	
+ $(GLX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $(@))
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
++	mkdir -p $(dir $(@))
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
+ 
+ 
+diff --git a/src/test/Makefile b/src/test/Makefile
+index e8016e1..a89366e 100644
+--- a/src/test/Makefile
++++ b/src/test/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TEST_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TEST_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TEST_CORE))"
+-	@$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/testing/Makefile b/src/testing/Makefile
+index 705913d..d048065 100644
+--- a/src/testing/Makefile
++++ b/src/testing/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TESTING_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TESTING_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TESTING_CORE))"
+-	@$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/ui/Makefile b/src/ui/Makefile
+index 503111d..eb1e4c5 100644
+--- a/src/ui/Makefile
++++ b/src/ui/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= ws tk ctl plugins
+@@ -8,15 +14,15 @@ PACKAGES                = $(OBJ_WS_CORE) $(OBJ_TK_CORE) $(OBJ_CTL_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_UI_CORE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_UI_CORE)
+diff --git a/src/ui/ctl/Makefile b/src/ui/ctl/Makefile
+index 3f727db..692fe9d 100644
+--- a/src/ui/ctl/Makefile
++++ b/src/ui/ctl/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_CTL_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_CTL_CORE) $(SUBDIRS)
+diff --git a/src/ui/plugins/Makefile b/src/ui/plugins/Makefile
+index 8f8db8f..0e6c3d8 100644
+--- a/src/ui/plugins/Makefile
++++ b/src/ui/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_PLUGIN_UIS): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_PLUGIN_UIS) $(SUBDIRS)
+diff --git a/src/ui/tk/Makefile b/src/ui/tk/Makefile
+index 8700f63..cfb4c78 100644
+--- a/src/ui/tk/Makefile
++++ b/src/ui/tk/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -6,11 +12,11 @@ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_TK_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_TK_CORE)
+diff --git a/src/ui/ws/Makefile b/src/ui/ws/Makefile
+index 1109752..b9836d8 100644
+--- a/src/ui/ws/Makefile
++++ b/src/ui/ws/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= x11
+@@ -8,15 +14,15 @@ all: $(OBJ_WS_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ $(OBJ_WS_CORE): $(FILES) $(OBJ_WS_X11_CORE)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
++	$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
+ 
+ $(OBJ_WS_X11_CORE): $(SUBDIRS)
+diff --git a/src/ui/ws/x11/Makefile b/src/ui/ws/x11/Makefile
+index b99e93d..7bffca3 100644
+--- a/src/ui/ws/x11/Makefile
++++ b/src/ui/ws/x11/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(XLIB_HEADERS) $(CAIRO_HEADERS)
+@@ -8,9 +14,9 @@ all: $(OBJ_WS_X11_CORE)
+ 
+ $(OBJ_WS_X11_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
++	$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index 88b3739..fbddcaa 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -44,32 +50,32 @@ target: all
+ # Common rules
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+ $(UTL_GENTTL): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	@$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++	$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+ $(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	@$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	@$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_GENPHP): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	@$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_RESGEN): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	@$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 
+-	
+\ No newline at end of file
++	
+diff --git a/src/utils/jack_genmake.cpp b/src/utils/jack_genmake.cpp
+index 09974b0..3272ad8 100644
+--- a/src/utils/jack_genmake.cpp
++++ b/src/utils/jack_genmake.cpp
+@@ -97,6 +97,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%=%%.cpp)\n");
+@@ -107,11 +112,11 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
+ 
+         fprintf(out, "install: $(FILES)\n");
+-        fprintf(out, "\t@$(INSTALL) $(FILES) $(TARGET_PATH)/");
++        fprintf(out, "\t$(INSTALL) $(FILES) $(TARGET_PATH)/");
+ 
+         // Close file
+         fclose(out);
+diff --git a/src/utils/vst_genmake.cpp b/src/utils/vst_genmake.cpp
+index 9eeedeb..f47f783 100644
+--- a/src/utils/vst_genmake.cpp
++++ b/src/utils/vst_genmake.cpp
+@@ -100,6 +100,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%.so, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%.so=%%.cpp)\n");
+@@ -110,8 +115,8 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
+ 
+         // Close file
+         fclose(out);
diff --git a/srcpkgs/lsp-plugins/patches/03-improve-cross.patch b/srcpkgs/lsp-plugins/patches/03-improve-cross.patch
new file mode 100644
index 000000000000..6c9799762003
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/03-improve-cross.patch
@@ -0,0 +1,590 @@
+diff --git a/.gitignore b/.gitignore
+index 5bc0ecb..4a1edec 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -3,6 +3,7 @@
+ /design/*
+ /.builconfig/*
+ /.build/*
++/.host_build/*
+ /.buildconfig/*
+ /.test/*
+ /.release/*
+diff --git a/.gitmodules b/.gitmodules
+index ac5ea32..4480c1f 100644
+--- a/.gitmodules
++++ b/.gitmodules
+@@ -1,3 +1,3 @@
+ [submodule "Polynomial-Wiener-Hammerstein"]
+ 	path = Polynomial-Wiener-Hammerstein
+-	url = ../../CrocoDuckoDucks/Polynomial-Wiener-Hammerstein.git
++	url = https://github.com/CrocoDuckoDucks/Polynomial-Wiener-Hammerstein
+diff --git a/Makefile b/Makefile
+index 79ddcc6..34ccb79 100644
+--- a/Makefile
++++ b/Makefile
+@@ -24,8 +24,10 @@ export RESDIR           = ${CURDIR}/res
+ export RELEASE          = ${CURDIR}/.release
+ export RELEASE_BIN      = $(RELEASE)/$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ export BUILDDIR         = ${CURDIR}/.build
++export HOST_BUILDDIR    = ${CURDIR}/.host_build
+ export TESTDIR          = ${CURDIR}/.test
+ OBJDIR                  = $(BUILDDIR)
++export HOST_OBJDIR      = $(HOST_BUILDDIR)
+ 
+ # Installation locations
+ BIN_PATH               ?= $(PREFIX)/bin
+@@ -41,20 +43,23 @@ VST_PATH                = $(LIB_PATH)/vst
+ export BASEDIR          = ${CURDIR}
+ 
+ # Objects
+-export OBJ_CORE         = $(OBJDIR)/core.o
+-export OBJ_DSP          = $(OBJDIR)/dsp.o
+-export OBJ_CTL_CORE     = $(OBJDIR)/ctl_core.o
+-export OBJ_TK_CORE      = $(OBJDIR)/tk_core.o
+-export OBJ_WS_CORE      = $(OBJDIR)/ws_core.o
+-export OBJ_WS_X11_CORE  = $(OBJDIR)/ws_x11_core.o
+-export OBJ_UI_CORE      = $(OBJDIR)/ui_core.o
+-export OBJ_RES_CORE     = $(OBJDIR)/res_core.o
+-export OBJ_TEST_CORE    = $(OBJDIR)/test_core.o
+-export OBJ_TESTING_CORE = $(OBJDIR)/testing_core.o
+-export OBJ_PLUGINS      = $(OBJDIR)/plugins.o
+-export OBJ_PLUGIN_UIS	= $(OBJDIR)/plugin_uis.o
+-export OBJ_METADATA     = $(OBJDIR)/metadata.o
+-export OBJ_FILES        = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
++export OBJ_CORE          = $(OBJDIR)/core.o
++export HOST_OBJ_CORE     = $(HOST_OBJDIR)/core.o
++export OBJ_DSP           = $(OBJDIR)/dsp.o
++export HOST_OBJ_DSP      = $(HOST_OBJDIR)/dsp.o
++export OBJ_CTL_CORE      = $(OBJDIR)/ctl_core.o
++export OBJ_TK_CORE       = $(OBJDIR)/tk_core.o
++export OBJ_WS_CORE       = $(OBJDIR)/ws_core.o
++export OBJ_WS_X11_CORE   = $(OBJDIR)/ws_x11_core.o
++export OBJ_UI_CORE       = $(OBJDIR)/ui_core.o
++export OBJ_RES_CORE      = $(OBJDIR)/res_core.o
++export OBJ_TEST_CORE     = $(OBJDIR)/test_core.o
++export OBJ_TESTING_CORE  = $(OBJDIR)/testing_core.o
++export OBJ_PLUGINS       = $(OBJDIR)/plugins.o
++export OBJ_PLUGIN_UIS	 = $(OBJDIR)/plugin_uis.o
++export OBJ_METADATA      = $(OBJDIR)/metadata.o
++export HOST_OBJ_METADATA = $(HOST_OBJDIR)/metadata.o
++export OBJ_FILES         = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
+ 
+ # Libraries
+ export LIB_LADSPA       = $(OBJDIR)/$(ARTIFACT_ID)-ladspa.so
+@@ -68,11 +73,14 @@ export BIN_PROFILE      = $(OBJDIR)/$(ARTIFACT_ID)-profile
+ export BIN_TEST         = $(OBJDIR)/$(ARTIFACT_ID)-test
+ 
+ # Utils
+-export UTL_GENTTL       = $(OBJDIR)/lv2_genttl.exe
+-export UTL_VSTMAKE      = $(OBJDIR)/vst_genmake.exe
+-export UTL_JACKMAKE     = $(OBJDIR)/jack_genmake.exe
+-export UTL_GENPHP       = $(OBJDIR)/gen_php.exe
+-export UTL_RESGEN       = $(OBJDIR)/gen_resources.exe
++ifeq ($(BUILD_SYSTEM),Windows)
++  BIN_SUFFIX := .exe
++endif
++export UTL_GENTTL       = $(HOST_OBJDIR)/lv2_genttl$(BIN_SUFFIX)
++export UTL_VSTMAKE      = $(HOST_OBJDIR)/vst_genmake$(BIN_SUFFIX)
++export UTL_JACKMAKE     = $(HOST_OBJDIR)/jack_genmake$(BIN_SUFFIX)
++export UTL_GENPHP       = $(HOST_OBJDIR)/gen_php$(BIN_SUFFIX)
++export UTL_RESGEN       = $(HOST_OBJDIR)/gen_resources$(BIN_SUFFIX)
+ export UTL_FILES        = $(UTL_GENTTL) $(UTL_VSTMAKE) $(UTL_GENPHP) $(UTL_RESGEN)
+ 
+ # Files
+@@ -102,7 +110,8 @@ default: all
+ all: export CFLAGS          += -O2 -DLSP_NO_EXPERIMENTAL
+ all: export CXXFLAGS        += -O2 -DLSP_NO_EXPERIMENTAL
+ all: export EXE_FLAGS       += -pie -fPIE
+-all: compile
++all: utils compile
++
+ 
+ experimental: export CFLAGS += -O2
+ experimental: export CXXFLAGS += -O2
+@@ -161,14 +170,14 @@ profile: compile
+ compile_info:
+ 	@echo "-------------------------------------------------------------------------------"
+ 	@echo "Building binaries"
+-	@echo "  target architecture : $(BUILD_PROFILE)"
+-	@echo "  target platform     : $(BUILD_PLATFORM)"
+-	@echo "  target system       : $(BUILD_SYSTEM)"
+-	@echo "  compiler            : $(BUILD_COMPILER)"
+-	@echo "  modules             : $(BUILD_MODULES)"
+-	@echo "  UI                  : LV2=$(LV2_UI), VST=$(VST_UI)"
+-	@echo "  3D rendering        : $(BUILD_R3D_BACKENDS)"
+-	@echo "  build directory     : $(OBJDIR)"
++	@echo "  platform             : $(BUILD_PLATFORM)"
++	@echo "  system               : $(BUILD_SYSTEM)"
++	@echo "  target compiler      : $(CXX)"
++	@echo "  target architecture  : $(BUILD_PROFILE)"
++	@echo "  modules              : $(BUILD_MODULES)"
++	@echo "  UI                   : LV2=$(LV2_UI), VST=$(VST_UI)"
++	@echo "  3D rendering         : $(BUILD_R3D_BACKENDS)"
++	@echo "  build directory      : $(OBJDIR)"
+ 	@echo "-------------------------------------------------------------------------------"
+ 
+ compile: | compile_info
+@@ -186,8 +195,32 @@ test_compile: | compile_info
+ 	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
++utils: export BUILD_PROFILE=$(HOST_BUILD_PROFILE)
++utils: export OBJDIR=$(HOST_OBJDIR)
++utils: export OBJ_CORE=$(HOST_OBJ_CORE)
++utils: export OBJ_DSP=$(HOST_OBJ_DSP)
++utils: export OBJ_METADATA=$(HOST_OBJ_METADATA)
++utils: export CXX=$(HOST_CXX)
++utils: export CXXFLAGS=$(HOST_CXXFLAGS)
++utils: export LD=$(HOST_LD)
++utils: export SNDFILE_HEADERS=$(HOST_SNDFILE_HEADERS)
++utils: export SNDFILE_LIBS=$(HOST_SNDFILE_LIBS)
++utils: export LV2_HEADERS=$(HOST_LV2_HEADERS)
++utils: export LV2_LIBS=$(HOST_LV2_LIBS)
++utils: | compile_info
++	@echo "CXX $(CXX)"
++	@echo "CXXFLAGS $(CXXFLAGS)"
++	@echo "LD $(LD)"
++	@echo "BUILD_PROFILE $(BUILD_PROFILE)"
++	@echo "OBJ_DSP $(OBJ_DSP)"
++	@echo "OBJ_CORE $(OBJ_CORE)"
++	mkdir -p $(HOST_OBJDIR)/src/utils
++	$(MAKE) $(MAKE_OPTS) -C src utils
++	@echo "Utils Build OK"
++
+ clean:
+ 	-rm -rf $(BUILDDIR)
++	-rm -rf $(HOST_BUILDDIR)
+ 	-rm -rf $(TESTDIR)
+ 	-rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+diff --git a/include/metadata/metadata.h b/include/metadata/metadata.h
+index 0efaa9d..e009750 100644
+--- a/include/metadata/metadata.h
++++ b/include/metadata/metadata.h
+@@ -73,10 +73,18 @@
+     #define LSP_ARCHITECTURE                                "unknown"
+ #endif /* ARCH */
+ 
++#define STRINGIFY_(x) #x
++#define STRINGIFY(x) STRINGIFY_(x)
++
+ #ifndef LSP_MAIN_VERSION
+     #define LSP_MAIN_VERSION                                "0.0.0"
++#else
++    #define LSP_MAIN_VERSION_STR STRINGIFY(LSP_MAIN_VERSION)
++    #undef LSP_MAIN_VERSION
++    #define LSP_MAIN_VERSION LSP_MAIN_VERSION_STR
+ #endif /* LSP_MAIN_VERSION */
+ 
++
+ #define LSP_LV2_LATENCY_PORT                            "out_latency"
+ #define LSP_LV2_ATOM_PORT_IN                            "in_ui"
+ #define LSP_LV2_MIDI_PORT_IN                            "in_midi"
+@@ -86,7 +94,7 @@
+ #define LSP_LV2_OSC_PORT_OUT                            "out_osc"
+ 
+ #ifdef LSP_INSTALL_PREFIX
+-    #define LSP_LIB_PREFIX(x)       LSP_INSTALL_PREFIX x
++    #define LSP_LIB_PREFIX(x)       STRINGIFY(LSP_INSTALL_PREFIX) x
+ #else
+     #define LSP_LIB_PREFIX(x)       x
+ #endif /* PREFIX */
+diff --git a/scripts/make/configure.mk b/scripts/make/configure.mk
+index 09aee9a..4e2764b 100644
+--- a/scripts/make/configure.mk
++++ b/scripts/make/configure.mk
+@@ -14,7 +14,8 @@ ifndef BUILD_R3D_BACKENDS
+   BUILD_R3D_BACKENDS     := $(shell if (test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" )  then cat "$(CFGDIR)/$(R3D_BACKENDS_FILE)" 2>/dev/null; else echo "glx"; fi;)
+ endif
+ 
+-BUILD_COMPILER         := $(shell $(CC) --version | head -n 1 || echo "unknown")
++BUILD_COMPILER         := $(shell $(CXX) --version | head -n 1 || echo "unknown")
++HOST_BUILD_COMPILER    := $(shell $(HOST_CXX) --version | head -n 1 || echo "unknown")
+ 
+ export BUILD_MODULES
+ export BUILD_R3D_BACKENDS
+@@ -23,7 +24,7 @@ export BUILD_R3D_BACKENDS
+ INSTALLATIONS           =
+ UNINSTALLATIONS         = uninstall_xdg
+ RELEASES                =
+-INCLUDE                 = -I"${CURDIR}/include"
++INCLUDE                 := -I"${CURDIR}/include"
+ 
+ ifeq ($(findstring ladspa,$(BUILD_MODULES)),ladspa)
+   INSTALLATIONS          += install_ladspa
+@@ -65,25 +66,25 @@ CC_ARCH         =
+ # Build profile
+ ifeq ($(BUILD_PROFILE),i586)
+   CC_ARCH          = -m32
+-  ifeq ($(BUILD_PLATFORM), Linux)
++  ifeq ($(HOST_BUILD_PLATFORM), Linux)
+     LD_ARCH          = -m elf_i386
+   endif
+-  ifeq ($(BUILD_PLATFORM), BSD)
++  ifeq ($(HOST_BUILD_PLATFORM), BSD)
+     LD_ARCH          = -m elf_i386_fbsd
+   endif
+ endif
+ 
+ ifeq ($(BUILD_PROFILE),x86_64)
+   CC_ARCH          = -m64
+-  ifeq ($(BUILD_PLATFORM), Linux)
++  ifeq ($(HOST_BUILD_PLATFORM), Linux)
+     LD_ARCH          = -m elf_x86_64
+   endif
+-  ifeq ($(BUILD_PLATFORM), BSD)
++  ifeq ($(HOST_BUILD_PLATFORM), BSD)
+     LD_ARCH          = -m elf_x86_64_fbsd
+   endif
+ endif
+ 
+-ifeq ($(BUILD_PLATFORM), BSD)
++ifeq ($(HOST_BUILD_PLATFORM), BSD)
+   INCLUDE          += -I/usr/local/include
+   ifeq ($(BUILD_PROFILE),arm)
+     CC_ARCH          = -marm
+@@ -136,9 +137,13 @@ else
+   export XLIB_HEADERS     = $(shell pkg-config --cflags x11)
+   export XLIB_LIBS        = $(shell pkg-config --libs x11)
+   export LV2_HEADERS      = $(shell pkg-config --cflags lv2)
+-  export LV2_LIBS         = $(shell pkg-config --libs lv2)
++  export LV2_HEADERS      = $(shell pkg-config --libs lv2)
++  export HOST_LV2_HEADERS   = $(shell /usr/bin/pkg-config --cflags lv2)
++  export HOST_LV2_LIBS      = $(shell /usr/bin/pkg-config --libs lv2)
+   export SNDFILE_HEADERS  = $(shell pkg-config --cflags sndfile)
+   export SNDFILE_LIBS     = $(shell pkg-config --libs sndfile)
++  export HOST_SNDFILE_HEADERS = $(shell /usr/bin/pkg-config --cflags sndfile)
++  export HOST_SNDFILE_LIBS    = $(shell /usr/bin/pkg-config --libs sndfile)
+   export JACK_HEADERS     = $(shell pkg-config --cflags jack)
+   export JACK_LIBS        = $(shell pkg-config --libs jack)
+   export OPENGL_HEADERS   = $(shell pkg-config --cflags gl 2>/dev/null || echo "")
+diff --git a/scripts/make/set_vars.mk b/scripts/make/set_vars.mk
+index a22531a..3222d5b 100644
+--- a/scripts/make/set_vars.mk
++++ b/scripts/make/set_vars.mk
+@@ -15,30 +15,30 @@ ifndef BUILD_SYSTEM
+   endif
+ endif
+ 
+-ifndef BUILD_PLATFORM
+-  BUILD_PLATFORM  = Unknown
++ifndef HOST_BUILD_PLATFORM
++  HOST_BUILD_PLATFORM  = Unknown
+ 
+   ifeq ($(BUILD_SYSTEM),Windows)
+-    BUILD_PLATFORM          = Windows
++    HOST_BUILD_PLATFORM          = Windows
+   endif
+   ifeq ($(findstring BSD,$(BUILD_SYSTEM)),BSD)
+-    BUILD_PLATFORM          = BSD
++    HOST_BUILD_PLATFORM          = BSD
+   endif
+   ifeq ($(findstring Linux,$(BUILD_SYSTEM)),Linux)
+-    BUILD_PLATFORM          = Linux
++    HOST_BUILD_PLATFORM          = Linux
+   endif
+   ifeq ($(findstring SunOS,$(BUILD_SYSTEM)),SunOS)
+-    BUILD_PLATFORM          = Solaris
++    HOST_BUILD_PLATFORM          = Solaris
+   endif
+ endif
+ 
+ export BUILD_SYSTEM
+-export BUILD_PLATFORM
++export HOST_BUILD_PLATFORM
+ export LV2_UI
+ export VST_UI
+ 
+-# Detect processor architecture
+-ifeq ($(BUILD_PLATFORM),Windows)
++# Detect target processor architecture
++ifeq ($(HOST_BUILD_PLATFORM),Windows)
+   ifndef BUILD_PROFILE
+     BUILD_ARCH                = i586
+     BUILD_PROFILE             = i586
+@@ -51,9 +51,9 @@ ifeq ($(BUILD_PLATFORM),Windows)
+       BUILD_PROFILE             = x86_64
+     endif
+   endif
+-else # BUILD_PLATFORM != Windows
++else # HOST_BUILD_PLATFORM != Windows
+   ifndef BUILD_PROFILE
+-    BUILD_ARCH              = $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
++    BUILD_ARCH              ?= $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
+     BUILD_PROFILE           = $(BUILD_ARCH)
+     ifeq ($(patsubst armv6%,armv6,$(BUILD_ARCH)), armv6)
+       BUILD_PROFILE           = armv6a
+@@ -80,7 +80,6 @@ else # BUILD_PLATFORM != Windows
+       BUILD_PROFILE           = i586
+     endif
+   endif
+-endif # BUILD_PLATFORM != Windows
++endif # HOST_BUILD_PLATFORM != Windows
+ 
+ export BUILD_PROFILE
+-
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 565dbb1..36f59f8 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -1,7 +1,9 @@
+ # Setup preferred tools
+ TOOL_LD                 = ld
++TOOL_HOST_LD            = ld
+ TOOL_CC                 = gcc
+ TOOL_CXX                = g++
++TOOL_HOST_CXX           = g++
+ TOOL_PHP                = php
+ 
+ # Setup preferred flags
+@@ -14,29 +16,34 @@ FLAG_CTUNE              = -std=c++98 \
+                           -pipe -Wall
+ 
+ # Patch flags and tools
+-ifeq ($(BUILD_PLATFORM),Solaris)
++ifeq ($(HOST_BUILD_PLATFORM),Solaris)
+   FLAG_RELRO              =
+   TOOL_LD                 = gld
++  TOOL_HOST_LD            = gld
+ endif
+ 
+ # Setup system variables
+ CC              		 ?= $(TOOL_CC)
+ CXX                      ?= $(TOOL_CXX)
++HOST_CXX                 ?= $(TOOL_HOST_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
++HOST_LD                  ?= $(TOOL_HOST_LD)
+ 
+ CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+-MERGE_FLAGS               = $(LD_ARCH) -r
+-EXE_TEST_FLAGS            = $(LDFLAGS) $(CC_ARCH)
+-EXE_FLAGS                 = $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++HOST_CXXFLAGS            += $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
++SO_FLAGS                 += $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
++MERGE_FLAGS              += $(LD_ARCH) -r
++EXE_TEST_FLAGS           += $(LDFLAGS) $(CC_ARCH)
++EXE_FLAGS                += $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++HOST_EXE_FLAGS           += $(HOST_LDFLAGS) $(FLAG_RELRO) -Wl,--gc-sections
+ 
+-ifeq ($(BUILD_PLATFORM), Linux)
++ifeq ($(HOST_BUILD_PLATFORM), Linux)
+   SO_FLAGS                 += -Wl,--no-undefined
+ endif
+ 
+-ifeq ($(BUILD_PLATFORM),BSD)
++ifeq ($(HOST_BUILD_PLATFORM),BSD)
+   EXE_FLAGS                += -L/usr/local/lib
+ endif
+ 
+@@ -58,12 +65,16 @@ endif
+ 
+ export CC
+ export CXX
++export HOST_CXX
+ export PHP
+ export LD
++export HOST_LD
+ 
+ export CFLAGS
+ export CXXFLAGS
++export HOST_CXXFLAGS
+ export SO_FLAGS
+ export MERGE_FLAGS
+ export EXE_TEST_FLAGS
+ export EXE_FLAGS
++export HOST_EXE_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index d960ad8..5f856e7 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,3 +1,5 @@
++# Estimate different pre-requisites before launching build
++
+ # Command-line flag to silence nested $(MAKE).
+ MAKE_OPTS              += VERBOSE=$(VERBOSE)
+ ifneq ($(VERBOSE),1)
+@@ -7,7 +9,8 @@ endif
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+-UTL_DEPS                = $(OBJ_CORE) $(OBJ_DSP) $(OBJ_METADATA)
++UTL_DEPS                = $(HOST_OBJ_CORE) $(HOST_OBJ_DSP) $(HOST_OBJ_METADATA)
++OBJDIR                  ?= $(BUILDDIR)
+ 
+ NEED_UI                 = 0
+ NEED_PLUGINS            = 0
+@@ -73,19 +76,44 @@ target: all
+ 
+ # Rules
+ $(SUBDIRS):
++	@echo "$(BUILDDIR)"
+ 	@echo "Building $(@)"
++	@echo "OBJDIR=$(OBJDIR)"
++	@echo "SNDFILE_HEADERS=$(SNDFILE_HEADERS)"
++	@echo "SNDFILE_LIBS=$(SNDFILE_LIBS)"
++	@echo "LV2_HEADERS=$(LV2_HEADERS)"
++	@echo "LV2_LIBS=$(LV2_LIBS)"
++	@echo "HOST_SNDFILE_HEADERS=$(HOST_SNDFILE_HEADERS)"
++	@echo "HOST_SNDFILE_LIBS=$(HOST_SNDFILE_LIBS)"
++	@echo "HOST_LV2_HEADERS=$(HOST_LV2_HEADERS)"
++	@echo "HOST_LV2_LIBS=$(HOST_LV2_LIBS)"
+ 	mkdir -p $(OBJDIR)/$(@)
+-	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ all \
++		CXX="$(CXX)" \
++		CXXFLAGS="$(CXXFLAGS)" \
++		LD="$(LD)" \
++		OBJDIR="$(OBJDIR)/$(@)" \
++		BUILD_PROFILE="$(BUILD_PROFILE)" \
++		SNDFILE_HEADERS="$(SNDFILE_HEADERS)" \
++		SNDFILE_LIBS="$(SNDFILE_LIBS)" \
++		LV2_HEADERS="$(LV2_HEADERS)" \
++		LV2_LIBS="$(LV2_LIBS)"
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+ 
++$(HOST_OBJ_CORE): core
++
+ $(OBJ_DSP): dsp
+ 
++$(HOST_OBJ_DSP): dsp
++
+ $(OBJ_PLUGINS): plugins
+ 
+ $(OBJ_METADATA): metadata
+ 
++$(HOST_OBJ_METADATA): metadata
++
+ $(OBJ_UI_CORE): ui
+ 
+ $(UTL_FILES): utils
+diff --git a/src/container/Makefile b/src/container/Makefile
+index 23a2e7a..46d79a0 100644
+--- a/src/container/Makefile
++++ b/src/container/Makefile
+@@ -39,7 +39,7 @@ endif
+ UI_OBJFILES             = $(OBJ_UI_CORE) $(OBJ_RES_CORE)
+ UI_LIBS                 = $(XLIB_LIBS) $(CAIRO_LIBS)
+ 
+-ifeq ($(BUILD_PLATFORM),BSD)
++ifeq ($(HOST_BUILD_PLATFORM),BSD)
+   LIBS                   += $(ICONV_LIBS)
+ endif
+ 
+diff --git a/src/dsp/Makefile b/src/dsp/Makefile
+index aac8007..ae11e0d 100644
+--- a/src/dsp/Makefile
++++ b/src/dsp/Makefile
+@@ -39,7 +39,7 @@ endif
+ ifeq ($(BUILD_PROFILE), x86_64)
+ LINK_OBJECTS           += $(X86_IMPL) $(SSE_IMPL) $(SSE2_IMPL) $(SSE3_IMPL) $(SSE4_IMPL) $(AVX_IMPL) $(AVX2_IMPL)
+ endif
+-ifeq ($(BUILD_PLATFORM), BSD)
++ifeq ($(HOST_BUILD_PLATFORM), BSD)
+   ifeq ($(BUILD_PROFILE), arm)
+     LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
+   endif
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index fbddcaa..ae8baf9 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -4,16 +4,22 @@ ifneq ($(VERBOSE),1)
+ .SILENT:
+ endif
+ 
++CXX                     = $(HOST_CXX)
++CXXFLAGS                = $(HOST_CXXFLAGS)
++MAKE_OPTS              += CXX=$(HOST_CXX) CXXFLAGS=$(HOST_CXXFLAGS)
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS                 =
+-OBJ_FILES               = $(OBJ_CORE) $(OBJ_METADATA)
++OBJ_FILES               = $(HOST_OBJ_CORE) $(HOST_OBJ_METADATA) $(HOST_OBJ_DSP)
+ OBJ_LIBS                = $(PTHREAD_LIBS) $(MATH_LIBS)
+ OBJ_EXTRA               =
+ INCLUDE_EXTRA           =
+ 
+-ifeq ($(BUILD_PLATFORM),BSD)
++export PKG_CONFIG_SYSROOT_DIR = /
++
++ifeq ($(HOST_BUILD_PLATFORM),BSD)
+   OBJ_LIBS               += $(ICONV_LIBS)
+ endif
+ 
+@@ -24,7 +30,7 @@ endif
+ ifeq ($(findstring lv2,$(BUILD_MODULES)),lv2)
+   MODULES                += $(UTL_GENTTL)
+   FILELIST               += lv2_genttl.o
+-  INCLUDE_EXTRA          += $(LV2_HEADERS)
++  INCLUDE_EXTRA          += $(HOST_LV2_HEADERS)
+ endif
+ ifeq ($(findstring vst,$(BUILD_MODULES)),vst)
+   MODULES                += $(UTL_VSTMAKE)
+@@ -50,32 +56,33 @@ target: all
+ # Common rules
+ $(SUBDIRS):
+ 	@echo "Building $@"
++	@echo "CXX=$(CXX)"
++	@echo "CXXFLAGS=$(CXXFLAGS)"
++	@echo "MAKE_OPTS=$(MAKE_OPTS)"
+ 	mkdir -p $(OBJDIR)/$(@)
+ 	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	@echo "  $(HOST_CXX) $(FILE)"
++	$(HOST_CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(HOST_CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+-$(UTL_GENTTL): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++$(UTL_GENTTL): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENTTL))"
++	$(HOST_CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+-$(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_JACKMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_JACKMAKE))"
++	$(HOST_CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_VSTMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_VSTMAKE))"
++	$(HOST_CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_GENPHP): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+-	
+-$(UTL_RESGEN): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+-
++$(UTL_GENPHP): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENPHP))"
++	$(HOST_CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
++$(UTL_RESGEN): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_RESGEN))"
++	$(HOST_CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_EXTRA) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+diff --git a/tmp/.gitignore b/tmp/.gitignore
+deleted file mode 100644
+index 22e8364..0000000
+--- a/tmp/.gitignore
++++ /dev/null
+@@ -1 +0,0 @@
+-/*
+\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins/template b/srcpkgs/lsp-plugins/template
new file mode 100644
index 000000000000..5d88c52eeea4
--- /dev/null
+++ b/srcpkgs/lsp-plugins/template
@@ -0,0 +1,75 @@
+# Template file for 'lsp-plugins'
+pkgname=lsp-plugins
+version=1.1.30
+revision=1
+build_style=gnu-makefile
+make_build_args="VERBOSE=1"
+make_check_args=$make_build_args
+make_install_target="install install_xdg"
+make_use_env=yes
+hostmakedepends="pkg-config php lv2 libsndfile-devel"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel ladspa-sdk jack-devel"
+short_desc="Collection of free plugins"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/" distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+# https://github.com/sadko4u/lsp-plugins/issues/191#issuecomment-812847630
+export BUILD_ARCH=${XBPS_TARGET_MACHINE%%-musl}
+export HOST_BUILD_PROFILE=${XBPS_MACHINE%%-musl}
+export HOST_CXXFLAGS=$CXXFLAGS_host
+export HOST_CXX=$CXX_host
+export HOST_LD=$LD_host
+
+do_check() {
+	export CXXFLAGS="$CXXFLAGS -DLSP_TESTING -DLSP_TRACE"
+	make $make_check_args test
+	.test/lsp-plugins-test utest
+}
+
+lsp-plugins-lv2_package() {
+	depends="${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - documentation"
+	pkg_install() {
+		vmove usr/lib/lv2
+	}
+}
+
+lsp-plugins-jack_package() {
+	depends="${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - JACK"
+	pkg_install() {
+		vmove usr/bin
+		vmove usr/lib/lsp-plugins/lsp-plugins-jack-core*
+		vmove usr/lib/lsp-plugins/lsp-plugins-r3d-glx.so
+		vmove usr/share/applications
+		vmove usr/share/desktop-directories
+		vmove usr/share/icons
+		vmove etc/xdg/menus
+	}
+}
+
+lsp-plugins-ladspa_package() {
+	depends="${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - LADSPA"
+	pkg_install() {
+		vmove usr/lib/ladspa/lsp-plugins-ladspa.so
+	}
+}
+
+lsp-plugins-vst_package() {
+	depends="${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - VST"
+	pkg_install() {
+		vmove usr/lib/vst
+	}
+}
+
+lsp-plugins-doc_package() {
+	depends="${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - documentation"
+	pkg_install() {
+		vmove usr/share/doc
+	}
+}

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Updated] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (51 preceding siblings ...)
  2021-08-01 15:45 ` [PR PATCH] [Updated] " Logarithmus
@ 2021-08-01 15:47 ` Logarithmus
  2021-08-02  2:34 ` Logarithmus
                   ` (14 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-08-01 15:47 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 2133 bytes --]

There is an updated pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.
Also used by `easyeffects`, `pulseeffects`' successor 
Continuation of https://github.com/void-linux/void-packages/pull/29932

TODO:
- [ ] wait for https://github.com/sadko4u/lsp-plugins/pull/198
- [ ] implement `VERBOSE` option into `lsp-plugins` Makefiles to save my sanity debugging them
https://github.com/sadko4u/lsp-plugins/pull/200
- [ ] fix i686
- [ ] fix arm
- [ ] split the package (ladspa, lv2, vst, jack, doc)

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 92242 bytes --]

From b31bc44e2e8a5f0de017b1155f5073e2b926481a Mon Sep 17 00:00:00 2001
From: Artur Sinila <freesoftware@logarithmus.dev>
Date: Mon, 5 Jul 2021 03:44:08 +0300
Subject: [PATCH 1/2] common/build-style/: enable running tests in parallel

---
 common/build-style/cmake.sh           | 6 +++++-
 common/build-style/configure.sh       | 6 +++++-
 common/build-style/gnu-configure.sh   | 6 +++++-
 common/build-style/gnu-makefile.sh    | 6 +++++-
 common/build-style/perl-module.sh     | 6 +++++-
 common/environment/setup/sourcepkg.sh | 3 ++-
 6 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/common/build-style/cmake.sh b/common/build-style/cmake.sh
index 401dabad31c8..c7ffd16fee21 100644
--- a/common/build-style/cmake.sh
+++ b/common/build-style/cmake.sh
@@ -113,7 +113,11 @@ do_check() {
 
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/configure.sh b/common/build-style/configure.sh
index 0963fc347934..b846a1a77572 100644
--- a/common/build-style/configure.sh
+++ b/common/build-style/configure.sh
@@ -29,7 +29,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-configure.sh b/common/build-style/gnu-configure.sh
index 8121136cd121..b09de442b05b 100644
--- a/common/build-style/gnu-configure.sh
+++ b/common/build-style/gnu-configure.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-makefile.sh b/common/build-style/gnu-makefile.sh
index d7ea148fc483..0f7afa7d3695 100644
--- a/common/build-style/gnu-makefile.sh
+++ b/common/build-style/gnu-makefile.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/perl-module.sh b/common/build-style/perl-module.sh
index b9a01b13cfa9..d47945b33d36 100644
--- a/common/build-style/perl-module.sh
+++ b/common/build-style/perl-module.sh
@@ -79,7 +79,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/environment/setup/sourcepkg.sh b/common/environment/setup/sourcepkg.sh
index bc06f745b78a..1fd541f1e715 100644
--- a/common/environment/setup/sourcepkg.sh
+++ b/common/environment/setup/sourcepkg.sh
@@ -13,7 +13,8 @@ unset -v cmake_builddir meson_builddir
 unset -v meson_crossfile
 unset -v gemspec
 unset -v go_import_path go_package go_mod_mode
-unset -v patch_args disable_parallel_build keep_libtool_archives make_use_env
+unset -v patch_args disable_parallel_build disable_parallel_check
+unset -v keep_libtool_archives make_use_env
 unset -v reverts subpackages makedepends hostmakedepends checkdepends depends restricted
 unset -v nopie build_options build_options_default bootstrap repository reverts
 unset -v CFLAGS CXXFLAGS FFLAGS CPPFLAGS LDFLAGS LD_LIBRARY_PATH

From f77de691ea83f5fef9ac37ab94160efe382a8d0a Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH 2/2] New package: lsp-plugins-1.1.30

---
 srcpkgs/lsp-plugins-doc                       |    1 +
 srcpkgs/lsp-plugins-jack                      |    1 +
 srcpkgs/lsp-plugins-ladspa                    |    1 +
 srcpkgs/lsp-plugins-lv2                       |    1 +
 srcpkgs/lsp-plugins-vst                       |    1 +
 .../00-makefile-test-remove-cflags.patch      |   12 +
 srcpkgs/lsp-plugins/patches/01-musl.patch     |  391 ++++++
 .../lsp-plugins/patches/02-make-verbose.patch | 1082 +++++++++++++++++
 .../patches/03-improve-cross.patch            |  590 +++++++++
 srcpkgs/lsp-plugins/template                  |   76 ++
 10 files changed, 2156 insertions(+)
 create mode 120000 srcpkgs/lsp-plugins-doc
 create mode 120000 srcpkgs/lsp-plugins-jack
 create mode 120000 srcpkgs/lsp-plugins-ladspa
 create mode 120000 srcpkgs/lsp-plugins-lv2
 create mode 120000 srcpkgs/lsp-plugins-vst
 create mode 100644 srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
 create mode 100644 srcpkgs/lsp-plugins/patches/01-musl.patch
 create mode 100644 srcpkgs/lsp-plugins/patches/02-make-verbose.patch
 create mode 100644 srcpkgs/lsp-plugins/patches/03-improve-cross.patch
 create mode 100644 srcpkgs/lsp-plugins/template

diff --git a/srcpkgs/lsp-plugins-doc b/srcpkgs/lsp-plugins-doc
new file mode 120000
index 000000000000..f59057b0c7f7
--- /dev/null
+++ b/srcpkgs/lsp-plugins-doc
@@ -0,0 +1 @@
+lsp-plugins
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-jack b/srcpkgs/lsp-plugins-jack
new file mode 120000
index 000000000000..f59057b0c7f7
--- /dev/null
+++ b/srcpkgs/lsp-plugins-jack
@@ -0,0 +1 @@
+lsp-plugins
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-ladspa b/srcpkgs/lsp-plugins-ladspa
new file mode 120000
index 000000000000..f59057b0c7f7
--- /dev/null
+++ b/srcpkgs/lsp-plugins-ladspa
@@ -0,0 +1 @@
+lsp-plugins
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-lv2 b/srcpkgs/lsp-plugins-lv2
new file mode 120000
index 000000000000..f59057b0c7f7
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2
@@ -0,0 +1 @@
+lsp-plugins
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-vst b/srcpkgs/lsp-plugins-vst
new file mode 120000
index 000000000000..f59057b0c7f7
--- /dev/null
+++ b/srcpkgs/lsp-plugins-vst
@@ -0,0 +1 @@
+lsp-plugins
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
new file mode 100644
index 000000000000..fd82f25d4a25
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/00-makefile-test-remove-cflags.patch
@@ -0,0 +1,12 @@
+https://github.com/void-linux/void-packages/pull/29932#discussion_r605695858
+--- a/Makefile
++++ b/Makefile
+@@ -108,8 +108,6 @@ trace: export EXE_FLAGS     += -g3
+ trace: compile
+ 
+ test: OBJDIR                 = $(TESTDIR)
+-test: export CFLAGS         += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-test: export CXXFLAGS       += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
diff --git a/srcpkgs/lsp-plugins/patches/01-musl.patch b/srcpkgs/lsp-plugins/patches/01-musl.patch
new file mode 100644
index 000000000000..6dc08949a87a
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/01-musl.patch
@@ -0,0 +1,391 @@
+diff --git a/TODO.txt b/TODO.txt
+index 4976293..3bb3db8 100644
+--- a/TODO.txt
++++ b/TODO.txt
+@@ -28,6 +28,11 @@
+ - Added possibility to change themes in runtime.
+ - Complicated plugin UIs now allow to switch between Advanced and Novice modes.
+ 
++=== 1.1.31 ===
++
++* Fixed X11 error handling routine that could crash under certain conditions.
++* Better support for musl libc (contributed by Artur Sinila).
++
+ *******************************************************************************
+ * New plugin check list before release
+ *******************************************************************************
+diff --git a/include/common/types.h b/include/common/types.h
+index dd1816e..59c794e 100644
+--- a/include/common/types.h
++++ b/include/common/types.h
+@@ -563,6 +563,12 @@
+     #define MINIMUM_ALIGN                   DEFAULT_ALIGN
+ #endif /* DEFAULT_ALIGN */
+ 
++//-----------------------------------------------------------------------------
++// Detect some libraries
++#ifdef __GLIBC__
++    #define USE_GLIBC                           __GLIBC__
++#endif /* GLIBC */
++
+ //-----------------------------------------------------------------------------
+ // Type definitions
+ __IF_32( typedef        uint32_t            umword_t );
+diff --git a/include/data/cvector.h b/include/data/cvector.h
+index eccc94a..17fe119 100644
+--- a/include/data/cvector.h
++++ b/include/data/cvector.h
+@@ -25,6 +25,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <sys/types.h>
+ 
+ #define CVECTOR_GROW        16
+ 
+diff --git a/include/test/main/executor.h b/include/test/main/executor.h
+index 0faf73f..5a0c016 100644
+--- a/include/test/main/executor.h
++++ b/include/test/main/executor.h
+@@ -633,7 +633,7 @@ namespace lsp
+     }
+ #endif /* PLATFORM_WINDOWS */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     void TestExecutor::start_memcheck(test::Test *v)
+     {
+         if (!pCfg->mtrace)
+diff --git a/include/test/main/types.h b/include/test/main/types.h
+index ef15800..0c5d7c2 100644
+--- a/include/test/main/types.h
++++ b/include/test/main/types.h
+@@ -42,7 +42,7 @@
+     #include <fcntl.h>
+ #endif /* PLATFORM_UNIX_COMPATIBLE */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     #include <mcheck.h>
+ #endif /* PLATFORM_LINUX */
+ 
+diff --git a/include/testing/mtest/3d/common/X11Renderer.h b/include/testing/mtest/3d/common/X11Renderer.h
+index e8ec205..f0a51e2 100644
+--- a/include/testing/mtest/3d/common/X11Renderer.h
++++ b/include/testing/mtest/3d/common/X11Renderer.h
+@@ -30,7 +30,7 @@
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include <rendering/backend.h>
+ #include <core/ipc/Library.h>
+diff --git a/src/testing/mtest/3d/boolean3d.cpp b/src/testing/mtest/3d/boolean3d.cpp
+deleted file mode 100644
+index 636dce1..0000000
+--- a/src/testing/mtest/3d/boolean3d.cpp
++++ /dev/null
+@@ -1,253 +0,0 @@
+-/*
+- * Copyright (C) 2020 Linux Studio Plugins Project <https://lsp-plug.in/>
+- *           (C) 2020 Vladimir Sadovnikov <sadko4u@gmail.com>
+- *
+- * This file is part of lsp-plugins
+- * Created on: 24 дек. 2018 г.
+- *
+- * lsp-plugins is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU Lesser General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * any later version.
+- *
+- * lsp-plugins is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU Lesser General Public License for more details.
+- *
+- * You should have received a copy of the GNU Lesser General Public License
+- * along with lsp-plugins. If not, see <https://www.gnu.org/licenses/>.
+- */
+-
+-#if 0
+-
+-#include <test/mtest.h>
+-#include <testing/mtest/3d/common/X11Renderer.h>
+-#include <core/files/Model3DFile.h>
+-#include <core/3d/rt_context.h>
+-#include <core/3d/RayTrace3D.h>
+-
+-#include <core/types.h>
+-#include <core/debug.h>
+-#include <core/sugar.h>
+-#include <core/status.h>
+-#include <stdlib.h>
+-#include <errno.h>
+-#include <data/cstorage.h>
+-
+-#include <X11/X.h>
+-#include <X11/Xlib.h>
+-#include <X11/keysymdef.h>
+-#include <GL/gl.h>
+-#include <GL/glx.h>
+-#include <GL/glu.h>
+-#include <sys/poll.h>
+-
+-//#define TEST_DEBUG
+-
+-#ifndef TEST_DEBUG
+-//    #define BREAKPOINT_STEP     -1
+-//    #define BREAKPOINT_STEP     27
+-//    #define BREAKPOINT_STEP     83
+-    #define BREAKPOINT_STEP     215
+-//    #define BREAKPOINT_STEP     0
+-
+-#else /* DEBUG */
+-    #define BREAKPOINT_STEP     0
+-#endif /* DEBUG */
+-
+-MTEST_BEGIN("3d", boolean)
+-
+-    class Renderer: public X11Renderer
+-    {
+-        private:
+-            Scene3D        *pScene;
+-            ssize_t         nTrace;
+-            bool            bDrawMatched;
+-            bool            bDrawIgnored;
+-            bool            bDrawDebug;
+-
+-        public:
+-            explicit Renderer(Scene3D *scene, View3D *view): X11Renderer(view)
+-            {
+-                pScene = scene;
+-                bDrawMatched    = true;
+-                bDrawIgnored    = true;
+-                bDrawDebug      = true;
+-                bDrawNormals    = false;
+-                nTrace          = BREAKPOINT_STEP;
+-
+-                update_view();
+-            }
+-
+-            virtual ~Renderer()
+-            {
+-            }
+-
+-        public:
+-            virtual void on_key_press(const XKeyEvent &ev, KeySym key)
+-            {
+-                switch (key)
+-                {
+-                    case XK_Up:
+-                        nTrace++;
+-                        lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                        update_view();
+-                        break;
+-                    case XK_Down:
+-                        if (nTrace >= 0)
+-                        {
+-                            nTrace--;
+-                            lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                            update_view();
+-                        }
+-                        break;
+-
+-                    case 'm':
+-                    {
+-                        bDrawMatched = ! bDrawMatched;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'i':
+-                    {
+-                        bDrawIgnored = ! bDrawIgnored;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'd':
+-                    {
+-                        bDrawDebug = ! bDrawDebug;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case '0': case '1': case '2': case '3': case '4':
+-                    case '5': case '6': case '7': case '8': case '9':
+-                    {
+-                        Object3D *obj = pScene->get_object(key - '0');
+-                        if (obj != NULL)
+-                        {
+-                            obj->set_visible(!obj->is_visible());
+-                            update_view();
+-                        }
+-                        break;
+-                    }
+-                    default:
+-                        X11Renderer::on_key_press(ev, key);
+-                        break;
+-                }
+-            }
+-
+-        protected:
+-            status_t perform_boolean(rt_debug_t *shared)
+-            {
+-                if (pScene->num_objects() <= 0)
+-                    return STATUS_OK;
+-
+-                rt_mesh_t mesh;
+-                mesh.set_debug_context(shared, &shared->trace);
+-
+-                Object3D *obj = pScene->object(0);
+-                status_t res = mesh.init(obj, 0, obj->matrix());
+-                if (res != STATUS_OK)
+-                    return res;
+-
+-                for (size_t i=1, n=pScene->num_objects(); i<n; ++i)
+-                {
+-                    obj = pScene->object(i);
+-                    res = mesh.subtract(obj, i, obj->matrix());
+-                    if (res != STATUS_OK)
+-                        return res;
+-                }
+-
+-                return STATUS_OK;
+-            }
+-
+-            status_t    update_view()
+-            {
+-                v_vertex3d_t v[3];
+-                status_t res = STATUS_OK;
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // List of ignored and matched triangles
+-                rt_debug_t global;
+-                global.breakpoint   = nTrace;
+-                global.step         = 0;
+-
+-                // Perform raytrace
+-                res     = perform_boolean(&global);
+-                if (res == STATUS_BREAKPOINT)
+-                {
+-                    pView->swap(&global.trace);
+-                    res         = STATUS_OK;
+-                }
+-
+-                if (!bDrawDebug)
+-                    pView->clear_all();
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // Build final scene from matched and ignored items
+-                if (bDrawIgnored)
+-                {
+-                    for (size_t i=0, m=global.ignored.size(); i < m; ++i)
+-                        pView->add_triangle_1c(global.ignored.at(i), &C_GRAY);
+-                }
+-
+-                if (bDrawMatched)
+-                {
+-                    for (size_t i=0, m=global.matched.size(); i < m; ++i)
+-                    {
+-                        v_triangle3d_t *t = global.matched.at(i);
+-                        v[0].p     = t->p[0];
+-                        v[0].n     = t->n[0];
+-                        v[0].c     = C_RED;
+-
+-                        v[1].p     = t->p[1];
+-                        v[1].n     = t->n[1];
+-                        v[1].c     = C_GREEN;
+-
+-                        v[2].p     = t->p[2];
+-                        v[2].n     = t->n[2];
+-                        v[2].c     = C_BLUE;
+-
+-                        pView->add_triangle(v);
+-                    }
+-                }
+-
+-                global.ignored.flush();
+-                global.matched.flush();
+-
+-                return res;
+-            }
+-    };
+-
+-    MTEST_MAIN
+-    {
+-        const char *scene_file = (argc < 1) ? "res/test/3d/cross.obj" : argv[0];
+-
+-        // Load scene
+-        Scene3D s;
+-        View3D v;
+-        status_t res = Model3DFile::load(&s, scene_file, true);
+-        MTEST_ASSERT_MSG(res == STATUS_OK, "Error loading scene from file %s", scene_file);
+-
+-        // Initialize renderer
+-        Renderer r(&s, &v);
+-        MTEST_ASSERT_MSG(r.init() == STATUS_OK, "Error initializing renderer");
+-        r.run();
+-        r.destroy();
+-
+-        // Destroy scene
+-        s.destroy();
+-    }
+-
+-MTEST_END
+-
+-#endif
+diff --git a/src/testing/mtest/3d/bsp_context.cpp b/src/testing/mtest/3d/bsp_context.cpp
+index de54427..f7b7a34 100644
+--- a/src/testing/mtest/3d/bsp_context.cpp
++++ b/src/testing/mtest/3d/bsp_context.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/reflections3d.cpp b/src/testing/mtest/3d/reflections3d.cpp
+index e250444..367f86c 100644
+--- a/src/testing/mtest/3d/reflections3d.cpp
++++ b/src/testing/mtest/3d/reflections3d.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/ui/ws/x11/X11Display.cpp b/src/ui/ws/x11/X11Display.cpp
+index d85db51..987e8a9 100644
+--- a/src/ui/ws/x11/X11Display.cpp
++++ b/src/ui/ws/x11/X11Display.cpp
+@@ -23,7 +23,7 @@
+ 
+ #ifdef USE_X11_DISPLAY
+ 
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ 
+@@ -233,7 +233,7 @@ namespace lsp
+                 while (!atomic_cas(&hLock, 0, 1)) { /* Wait */ }
+ 
+                 // Dispatch errors between Displays
+-                for (X11Display *dp = pHandlers; dp != NULL; ++dp)
++                for (X11Display *dp = pHandlers; dp != NULL; dp = dp->pNextHandler)
+                     if (dp->pDisplay == dpy)
+                         dp->handle_error(ev);
+ 
diff --git a/srcpkgs/lsp-plugins/patches/02-make-verbose.patch b/srcpkgs/lsp-plugins/patches/02-make-verbose.patch
new file mode 100644
index 000000000000..d6c4f6ce2f92
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/02-make-verbose.patch
@@ -0,0 +1,1082 @@
+diff --git a/Makefile b/Makefile
+index 2d9cb79..79ddcc6 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ # Common definitions
+ RELEASE_TEXT            = LICENSE.txt README.txt CHANGELOG.txt
+ RELEASE_SRC             = $(RELEASE_TEXT) src build-*.sh include res Makefile release.sh
+@@ -166,24 +172,24 @@ compile_info:
+ 	@echo "-------------------------------------------------------------------------------"
+ 
+ compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@mkdir -p $(CFGDIR)
+-	@test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
+-	@test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
+-	@test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
+-	@test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++	mkdir -p $(OBJDIR)/src
++	mkdir -p $(CFGDIR)
++	test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
++	test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
++	test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
++	test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Build OK"
+ 	
+ test_compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++	mkdir -p $(OBJDIR)/src
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
+ clean:
+-	@-rm -rf $(BUILDDIR)
+-	@-rm -rf $(TESTDIR)
+-	@-rm -rf $(CFGDIR)
++	-rm -rf $(BUILDDIR)
++	-rm -rf $(TESTDIR)
++	-rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+ 
+ # Build targets
+@@ -209,63 +215,63 @@ install: $(INSTALLATIONS)
+ 
+ install_ladspa: all
+ 	@echo "Installing LADSPA plugins to $(DESTDIR)$(LADSPA_PATH)/"
+-	@mkdir -p $(DESTDIR)$(LADSPA_PATH)
+-	@$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
++	mkdir -p $(DESTDIR)$(LADSPA_PATH)
++	$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
+ 	
+ install_lv2: all
+ 	@echo "Installing LV2 plugins to $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
+-	@$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
++	$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+ 	
+ install_vst: all
+ 	@echo "Installing VST plugins to $(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+-	@$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
++	$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+ 
+ install_jack: all
+ 	@echo "Installing JACK core to $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
++	$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+ 	@echo "Installing JACK standalone plugins to $(DESTDIR)$(BIN_PATH)"
+-	@mkdir -p "$(DESTDIR)$(BIN_PATH)"
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
++	mkdir -p "$(DESTDIR)$(BIN_PATH)"
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
+ 
+ install_xdg:
+ 	@echo "Installing desktop icons to $(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
+-	@mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
+-	@cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
+-	@cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
+-	@cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
+-	@cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
++	mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
++	cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
++	cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
++	cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
++	cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
+ 
+ install_doc: all
+ 	@echo "Installing documentation to $(DESTDIR)$(DOC_PATH)"
+-	@mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+ # Release targets
+ dbg_release: export CFLAGS        += -DLSP_TRACE -O2
+@@ -279,67 +285,67 @@ release: $(RELEASES)
+ 
+ release_prepare: all
+ 	@echo "Releasing plugins for architecture $(BUILD_PROFILE)"
+-	@mkdir -p $(RELEASE)
+-	@mkdir -p $(DESTDIR)
++	mkdir -p $(RELEASE)
++	mkdir -p $(DESTDIR)
+ 	
+ release_ladspa: DESTDIR=$(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_ladspa: | release_prepare install_ladspa
+ 	@echo "Releasing LADSPA binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_lv2: DESTDIR=$(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_lv2: | release_prepare install_lv2
+ 	@echo "Releasing LV2 binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_vst: DESTDIR=$(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_vst: | release_prepare install_vst
+ 	@echo "Releasing VST binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_jack: DESTDIR=$(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_jack: | release_prepare install_jack
+ 	@echo "Releasing JACK binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 
+ release_profile: DESTDIR=$(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_profile: | release_prepare
+ 	@echo "Releasing PROFILE binaries"
+-	@$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ 
+ release_src: DESTDIR=$(RELEASE)/$(SRC_ID)
+ release_src: | release_prepare
+ 	@echo "Releasing source code binaries"
+-	@mkdir -p $(DESTDIR)
+-	@mkdir -p $(DESTDIR)/scripts
+-	@cp -R $(RELEASE_SRC) $(DESTDIR)/
+-	@cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	mkdir -p $(DESTDIR)/scripts
++	cp -R $(RELEASE_SRC) $(DESTDIR)/
++	cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
++	rm -rf $(DESTDIR)
+ 
+ release_doc: DESTDIR=$(RELEASE)/$(DOC_ID)
+ release_doc: | release_prepare
+ 	@echo "Releasing documentation"
+-	@mkdir -p $(DESTDIR)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
++	rm -rf $(DESTDIR)
+ 
+ # Unrelease target
+ unrelease: clean
+-	@-rm -rf $(RELEASE)
++	-rm -rf $(RELEASE)
+ 	@echo "Unrelease OK"
+ 
+ # Uninstall target
+@@ -348,41 +354,41 @@ uninstall: $(UNINSTALLATIONS)
+ 	
+ uninstall_ladspa:
+ 	@echo "Uninstalling LADSPA"
+-	@-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
++	-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
+ 	
+ uninstall_lv2:
+ 	@echo "Uninstalling LV2"
+-	@-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
++	-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
+ 	
+ uninstall_vst:
+ 	@echo "Uninstalling VST"
+-	@-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
++	-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
++	-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
++	-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
+ 	
+ uninstall_jack:
+ 	@echo "Uninstalling JACK"
+-	@-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
+-	@-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
++	-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
++	-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
++	-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
++	-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
+ 
+ uninstall_xdg:
+ 	@echo "Uninstalling desktop icons"
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
+-	@-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
++	-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
++	-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
+ 
+ uninstall_doc:
+ 	@echo "Uninstalling DOC"
+-	@-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+diff --git a/TODO.txt b/TODO.txt
+index 3bb3db8..f8562ef 100644
+--- a/TODO.txt
++++ b/TODO.txt
+@@ -32,6 +32,7 @@
+ 
+ * Fixed X11 error handling routine that could crash under certain conditions.
+ * Better support for musl libc (contributed by Artur Sinila).
++* Added support of VERBOSE parameter for build system (contributed by Artur Sinila).
+ 
+ *******************************************************************************
+ * New plugin check list before release
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 1fb917e..565dbb1 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -25,7 +25,6 @@ CXX                      ?= $(TOOL_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
+ 
+-MAKE_OPTS                 = -s
+ CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+@@ -62,7 +61,6 @@ export CXX
+ export PHP
+ export LD
+ 
+-export MAKE_OPTS
+ export CFLAGS
+ export CXXFLAGS
+ export SO_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index 8546191..d960ad8 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+@@ -58,6 +64,7 @@ ifeq ($(NEED_UI),1)
+   CONTAINER_DEPS         += $(OBJ_UI_CORE) $(OBJ_RES_CORE) rendering
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all $(MODULES)
+ 
+ all: $(MODULES)
+@@ -67,8 +74,8 @@ target: all
+ # Rules
+ $(SUBDIRS):
+ 	@echo "Building $(@)"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+@@ -93,10 +100,10 @@ $(OBJ_TESTING_CORE): test testing rendering
+ 
+ $(OBJ_RES_CORE): $(OBJ_CORE) $(UTL_RESGEN)
+ 	@echo "Generating builtin resources"
+-	@mkdir -p $(OBJDIR)/res
+-	@$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	mkdir -p $(OBJDIR)/res
++	$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
++	-rm gmon.out >/dev/null 2>&1
++	$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ # Target dependencies
+ container: $(CONTAINER_DEPS)
+@@ -108,18 +115,18 @@ doc: utils $(PHP_PLUGINS)
+ # Additional processing
+ $(PHP_PLUGINS): $(UTL_GENPHP)
+ 	@echo "Generating PHP file $(notdir $(PHP_PLUGINS))"
+-	@$(UTL_GENPHP) $(PHP_PLUGINS)
++	$(UTL_GENPHP) $(PHP_PLUGINS)
+ 
+ vst_stub: $(UTL_VSTMAKE)
+ 	@echo "Building VST stub"
+-	@mkdir -p $(OBJDIR)/vst
+-	@$(UTL_VSTMAKE) $(OBJDIR)/vst
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
++	mkdir -p $(OBJDIR)/vst
++	$(UTL_VSTMAKE) $(OBJDIR)/vst
++	-rm gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
+ 
+ jack_stub: $(UTL_JACKMAKE)
+ 	@echo "Building JACK stub"
+-	@mkdir -p $(OBJDIR)/jack
+-	@$(UTL_JACKMAKE) $(OBJDIR)/jack
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
++	mkdir -p $(OBJDIR)/jack
++	$(UTL_JACKMAKE) $(OBJDIR)/jack
++	-rm gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
+diff --git a/src/container/Makefile b/src/container/Makefile
+index 8aa8196..23a2e7a 100644
+--- a/src/container/Makefile
++++ b/src/container/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ OBJ_HELPERS             = $(OBJDIR)/CairoCanvas.o
+@@ -53,46 +59,47 @@ ifeq ($(VST_UI),1)
+   X_VST_LIBS             += $(UI_LIBS)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(MODULES)
+ 
+ $(OBJ_HELPERS):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
+ 
+ $(LIB_LADSPA):
+ 	@echo "  $(CXX) ladspa.cpp"
+-	@$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_LADSPA))"
+-	@$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
++	$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
+ 
+ $(LIB_LV2): $(X_LV2_DEPS)
+ 	@echo "  $(CXX) lv2.cpp"
+-	@$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
+-	@echo "  $(CXX) $(notdir $(X_LIB_LV2))"
+-	@$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
++	$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
++	@echo "  $(CXX) $(notdir $(LIB_LV2))"
++	$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
+ 
+ $(LIB_VST):
+ 	@echo "  $(CXX) vst.cpp"
+-	@$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_VST))"
+-	@$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
++	$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
+ 
+ $(LIB_JACK): $(OBJ_HELPERS)
+ 	@echo "  $(CXX) jack.cpp"
+-	@$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
++	$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
+ 	@echo "  $(CXX) $(notdir $(LIB_JACK))"
+-	@$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
++	$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
+ 
+ $(BIN_PROFILE): $(LIB_JACK)
+ 	@echo "  $(CXX) profile.cpp"
+-	@$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_PROFILE))"
+-	@$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
++	$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
+ 
+ $(BIN_TEST): $(LIB_JACK)
+ 	@echo "  $(CXX) test.cpp"
+-	@$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_TEST))"
+-	@$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
++	$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
+diff --git a/src/core/Makefile b/src/core/Makefile
+index a9ce1a5..3ad14a5 100644
+--- a/src/core/Makefile
++++ b/src/core/Makefile
+@@ -1,18 +1,25 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(SNDFILE_HEADERS)
+ LIBS                    = $(PTHREAD_LIBS)
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(OBJ_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
+ 
+ $(OBJ_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_CORE))"
+-	@$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
++	$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
+diff --git a/src/doc/Makefile b/src/doc/Makefile
+index aac73bf..f7f18a1 100644
+--- a/src/doc/Makefile
++++ b/src/doc/Makefile
+@@ -1,6 +1,13 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ PHPDIR      = $(BUILDDIR)/src/doc
+ HTMLDIR     = $(BUILDDIR)/html
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -8,14 +15,14 @@ target: all
+ # Common rules
+ $(PHPDIR)/Makefile:
+ 	@echo "Preparing PHP documentation generator"
+-	@mkdir -p $(PHPDIR)
+-	@mkdir -p $(HTMLDIR)
+-	@cp -rf * $(PHPDIR)/
+-	@cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
+-	@cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
+-	@cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
+-	@$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
++	mkdir -p $(PHPDIR)
++	mkdir -p $(HTMLDIR)
++	cp -rf * $(PHPDIR)/
++	cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
++	cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
++	cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
++	$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
+ 
+ all: $(PHPDIR)/Makefile
+ 	@echo "Generating HTML documentation"
+-	@$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
++	$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
+diff --git a/src/dsp/Makefile b/src/dsp/Makefile
+index f3d9ab1..aac8007 100644
+--- a/src/dsp/Makefile
++++ b/src/dsp/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ NATIVE_IMPL             = $(OBJDIR)/native.o
+ 
+ X86_IMPL                = $(OBJDIR)/x86.o
+@@ -51,6 +57,7 @@ ifeq ($(BUILD_PROFILE), aarch64)
+ LINK_OBJECTS           += $(AARCH64_IMPL) $(ASIMD_IMPL)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -59,41 +66,41 @@ all: $(OBJ_DSP)
+ 
+ $(OBJ_DSP): $(LINK_OBJECTS)
+ 	@echo "  $(LD) $(notdir $(OBJ_DSP))"
+-	@$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
++	$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
+ 
+ $(DSP_IMPL) $(BITS_IMPL) $(NATIVE_IMPL) $(X86_IMPL) $(ARM_IMPL) $(AARCH64_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	
+ $(SSE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE3_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE4_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
+ 	
+ $(NEON_D32_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
+ 	
+ $(ASIMD_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
+ 
+diff --git a/src/metadata/Makefile b/src/metadata/Makefile
+index 201f89a..403f38a 100644
+--- a/src/metadata/Makefile
++++ b/src/metadata/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -10,8 +16,8 @@ target: all
+ 
+ $(OBJ_METADATA): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_METADATA))"
+-	@$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+diff --git a/src/plugins/Makefile b/src/plugins/Makefile
+index 1f197dc..85963ba 100644
+--- a/src/plugins/Makefile
++++ b/src/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,8 +14,8 @@ all:  $(OBJ_PLUGINS)
+ 
+ $(OBJ_PLUGINS): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(OBJ_PLUGINS))"
+-	@$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
++	$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
+diff --git a/src/rendering/Makefile b/src/rendering/Makefile
+index 897e327..65f3237 100644
+--- a/src/rendering/Makefile
++++ b/src/rendering/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ BASE_IMPL             	= $(OBJDIR)/base_backend.o
+ 
+ GLX_IMPL                = $(OBJDIR)/glx/backend.o $(OBJDIR)/glx/factory.o
+@@ -20,15 +26,15 @@ all: $(MODULES)
+ 
+ $(LIB_R3D_GLX): $(BASE_IMPL) $(GLX_IMPL)
+ 	@echo "  $(CXX) $(notdir $(LIB_R3D_GLX))"
+-	@$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
++	$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
+ 
+ $(BASE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 	
+ $(GLX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $(@))
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
++	mkdir -p $(dir $(@))
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
+ 
+ 
+diff --git a/src/test/Makefile b/src/test/Makefile
+index e8016e1..a89366e 100644
+--- a/src/test/Makefile
++++ b/src/test/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TEST_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TEST_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TEST_CORE))"
+-	@$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/testing/Makefile b/src/testing/Makefile
+index 705913d..d048065 100644
+--- a/src/testing/Makefile
++++ b/src/testing/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TESTING_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TESTING_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TESTING_CORE))"
+-	@$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/ui/Makefile b/src/ui/Makefile
+index 503111d..eb1e4c5 100644
+--- a/src/ui/Makefile
++++ b/src/ui/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= ws tk ctl plugins
+@@ -8,15 +14,15 @@ PACKAGES                = $(OBJ_WS_CORE) $(OBJ_TK_CORE) $(OBJ_CTL_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_UI_CORE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_UI_CORE)
+diff --git a/src/ui/ctl/Makefile b/src/ui/ctl/Makefile
+index 3f727db..692fe9d 100644
+--- a/src/ui/ctl/Makefile
++++ b/src/ui/ctl/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_CTL_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_CTL_CORE) $(SUBDIRS)
+diff --git a/src/ui/plugins/Makefile b/src/ui/plugins/Makefile
+index 8f8db8f..0e6c3d8 100644
+--- a/src/ui/plugins/Makefile
++++ b/src/ui/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_PLUGIN_UIS): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_PLUGIN_UIS) $(SUBDIRS)
+diff --git a/src/ui/tk/Makefile b/src/ui/tk/Makefile
+index 8700f63..cfb4c78 100644
+--- a/src/ui/tk/Makefile
++++ b/src/ui/tk/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -6,11 +12,11 @@ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_TK_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_TK_CORE)
+diff --git a/src/ui/ws/Makefile b/src/ui/ws/Makefile
+index 1109752..b9836d8 100644
+--- a/src/ui/ws/Makefile
++++ b/src/ui/ws/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= x11
+@@ -8,15 +14,15 @@ all: $(OBJ_WS_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ $(OBJ_WS_CORE): $(FILES) $(OBJ_WS_X11_CORE)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
++	$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
+ 
+ $(OBJ_WS_X11_CORE): $(SUBDIRS)
+diff --git a/src/ui/ws/x11/Makefile b/src/ui/ws/x11/Makefile
+index b99e93d..7bffca3 100644
+--- a/src/ui/ws/x11/Makefile
++++ b/src/ui/ws/x11/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(XLIB_HEADERS) $(CAIRO_HEADERS)
+@@ -8,9 +14,9 @@ all: $(OBJ_WS_X11_CORE)
+ 
+ $(OBJ_WS_X11_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
++	$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index 88b3739..fbddcaa 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -44,32 +50,32 @@ target: all
+ # Common rules
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+ $(UTL_GENTTL): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	@$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++	$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+ $(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	@$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	@$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_GENPHP): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	@$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_RESGEN): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	@$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 
+-	
+\ No newline at end of file
++	
+diff --git a/src/utils/jack_genmake.cpp b/src/utils/jack_genmake.cpp
+index 09974b0..3272ad8 100644
+--- a/src/utils/jack_genmake.cpp
++++ b/src/utils/jack_genmake.cpp
+@@ -97,6 +97,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%=%%.cpp)\n");
+@@ -107,11 +112,11 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
+ 
+         fprintf(out, "install: $(FILES)\n");
+-        fprintf(out, "\t@$(INSTALL) $(FILES) $(TARGET_PATH)/");
++        fprintf(out, "\t$(INSTALL) $(FILES) $(TARGET_PATH)/");
+ 
+         // Close file
+         fclose(out);
+diff --git a/src/utils/vst_genmake.cpp b/src/utils/vst_genmake.cpp
+index 9eeedeb..f47f783 100644
+--- a/src/utils/vst_genmake.cpp
++++ b/src/utils/vst_genmake.cpp
+@@ -100,6 +100,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%.so, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%.so=%%.cpp)\n");
+@@ -110,8 +115,8 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
+ 
+         // Close file
+         fclose(out);
diff --git a/srcpkgs/lsp-plugins/patches/03-improve-cross.patch b/srcpkgs/lsp-plugins/patches/03-improve-cross.patch
new file mode 100644
index 000000000000..6c9799762003
--- /dev/null
+++ b/srcpkgs/lsp-plugins/patches/03-improve-cross.patch
@@ -0,0 +1,590 @@
+diff --git a/.gitignore b/.gitignore
+index 5bc0ecb..4a1edec 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -3,6 +3,7 @@
+ /design/*
+ /.builconfig/*
+ /.build/*
++/.host_build/*
+ /.buildconfig/*
+ /.test/*
+ /.release/*
+diff --git a/.gitmodules b/.gitmodules
+index ac5ea32..4480c1f 100644
+--- a/.gitmodules
++++ b/.gitmodules
+@@ -1,3 +1,3 @@
+ [submodule "Polynomial-Wiener-Hammerstein"]
+ 	path = Polynomial-Wiener-Hammerstein
+-	url = ../../CrocoDuckoDucks/Polynomial-Wiener-Hammerstein.git
++	url = https://github.com/CrocoDuckoDucks/Polynomial-Wiener-Hammerstein
+diff --git a/Makefile b/Makefile
+index 79ddcc6..34ccb79 100644
+--- a/Makefile
++++ b/Makefile
+@@ -24,8 +24,10 @@ export RESDIR           = ${CURDIR}/res
+ export RELEASE          = ${CURDIR}/.release
+ export RELEASE_BIN      = $(RELEASE)/$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ export BUILDDIR         = ${CURDIR}/.build
++export HOST_BUILDDIR    = ${CURDIR}/.host_build
+ export TESTDIR          = ${CURDIR}/.test
+ OBJDIR                  = $(BUILDDIR)
++export HOST_OBJDIR      = $(HOST_BUILDDIR)
+ 
+ # Installation locations
+ BIN_PATH               ?= $(PREFIX)/bin
+@@ -41,20 +43,23 @@ VST_PATH                = $(LIB_PATH)/vst
+ export BASEDIR          = ${CURDIR}
+ 
+ # Objects
+-export OBJ_CORE         = $(OBJDIR)/core.o
+-export OBJ_DSP          = $(OBJDIR)/dsp.o
+-export OBJ_CTL_CORE     = $(OBJDIR)/ctl_core.o
+-export OBJ_TK_CORE      = $(OBJDIR)/tk_core.o
+-export OBJ_WS_CORE      = $(OBJDIR)/ws_core.o
+-export OBJ_WS_X11_CORE  = $(OBJDIR)/ws_x11_core.o
+-export OBJ_UI_CORE      = $(OBJDIR)/ui_core.o
+-export OBJ_RES_CORE     = $(OBJDIR)/res_core.o
+-export OBJ_TEST_CORE    = $(OBJDIR)/test_core.o
+-export OBJ_TESTING_CORE = $(OBJDIR)/testing_core.o
+-export OBJ_PLUGINS      = $(OBJDIR)/plugins.o
+-export OBJ_PLUGIN_UIS	= $(OBJDIR)/plugin_uis.o
+-export OBJ_METADATA     = $(OBJDIR)/metadata.o
+-export OBJ_FILES        = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
++export OBJ_CORE          = $(OBJDIR)/core.o
++export HOST_OBJ_CORE     = $(HOST_OBJDIR)/core.o
++export OBJ_DSP           = $(OBJDIR)/dsp.o
++export HOST_OBJ_DSP      = $(HOST_OBJDIR)/dsp.o
++export OBJ_CTL_CORE      = $(OBJDIR)/ctl_core.o
++export OBJ_TK_CORE       = $(OBJDIR)/tk_core.o
++export OBJ_WS_CORE       = $(OBJDIR)/ws_core.o
++export OBJ_WS_X11_CORE   = $(OBJDIR)/ws_x11_core.o
++export OBJ_UI_CORE       = $(OBJDIR)/ui_core.o
++export OBJ_RES_CORE      = $(OBJDIR)/res_core.o
++export OBJ_TEST_CORE     = $(OBJDIR)/test_core.o
++export OBJ_TESTING_CORE  = $(OBJDIR)/testing_core.o
++export OBJ_PLUGINS       = $(OBJDIR)/plugins.o
++export OBJ_PLUGIN_UIS	 = $(OBJDIR)/plugin_uis.o
++export OBJ_METADATA      = $(OBJDIR)/metadata.o
++export HOST_OBJ_METADATA = $(HOST_OBJDIR)/metadata.o
++export OBJ_FILES         = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
+ 
+ # Libraries
+ export LIB_LADSPA       = $(OBJDIR)/$(ARTIFACT_ID)-ladspa.so
+@@ -68,11 +73,14 @@ export BIN_PROFILE      = $(OBJDIR)/$(ARTIFACT_ID)-profile
+ export BIN_TEST         = $(OBJDIR)/$(ARTIFACT_ID)-test
+ 
+ # Utils
+-export UTL_GENTTL       = $(OBJDIR)/lv2_genttl.exe
+-export UTL_VSTMAKE      = $(OBJDIR)/vst_genmake.exe
+-export UTL_JACKMAKE     = $(OBJDIR)/jack_genmake.exe
+-export UTL_GENPHP       = $(OBJDIR)/gen_php.exe
+-export UTL_RESGEN       = $(OBJDIR)/gen_resources.exe
++ifeq ($(BUILD_SYSTEM),Windows)
++  BIN_SUFFIX := .exe
++endif
++export UTL_GENTTL       = $(HOST_OBJDIR)/lv2_genttl$(BIN_SUFFIX)
++export UTL_VSTMAKE      = $(HOST_OBJDIR)/vst_genmake$(BIN_SUFFIX)
++export UTL_JACKMAKE     = $(HOST_OBJDIR)/jack_genmake$(BIN_SUFFIX)
++export UTL_GENPHP       = $(HOST_OBJDIR)/gen_php$(BIN_SUFFIX)
++export UTL_RESGEN       = $(HOST_OBJDIR)/gen_resources$(BIN_SUFFIX)
+ export UTL_FILES        = $(UTL_GENTTL) $(UTL_VSTMAKE) $(UTL_GENPHP) $(UTL_RESGEN)
+ 
+ # Files
+@@ -102,7 +110,8 @@ default: all
+ all: export CFLAGS          += -O2 -DLSP_NO_EXPERIMENTAL
+ all: export CXXFLAGS        += -O2 -DLSP_NO_EXPERIMENTAL
+ all: export EXE_FLAGS       += -pie -fPIE
+-all: compile
++all: utils compile
++
+ 
+ experimental: export CFLAGS += -O2
+ experimental: export CXXFLAGS += -O2
+@@ -161,14 +170,14 @@ profile: compile
+ compile_info:
+ 	@echo "-------------------------------------------------------------------------------"
+ 	@echo "Building binaries"
+-	@echo "  target architecture : $(BUILD_PROFILE)"
+-	@echo "  target platform     : $(BUILD_PLATFORM)"
+-	@echo "  target system       : $(BUILD_SYSTEM)"
+-	@echo "  compiler            : $(BUILD_COMPILER)"
+-	@echo "  modules             : $(BUILD_MODULES)"
+-	@echo "  UI                  : LV2=$(LV2_UI), VST=$(VST_UI)"
+-	@echo "  3D rendering        : $(BUILD_R3D_BACKENDS)"
+-	@echo "  build directory     : $(OBJDIR)"
++	@echo "  platform             : $(BUILD_PLATFORM)"
++	@echo "  system               : $(BUILD_SYSTEM)"
++	@echo "  target compiler      : $(CXX)"
++	@echo "  target architecture  : $(BUILD_PROFILE)"
++	@echo "  modules              : $(BUILD_MODULES)"
++	@echo "  UI                   : LV2=$(LV2_UI), VST=$(VST_UI)"
++	@echo "  3D rendering         : $(BUILD_R3D_BACKENDS)"
++	@echo "  build directory      : $(OBJDIR)"
+ 	@echo "-------------------------------------------------------------------------------"
+ 
+ compile: | compile_info
+@@ -186,8 +195,32 @@ test_compile: | compile_info
+ 	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
++utils: export BUILD_PROFILE=$(HOST_BUILD_PROFILE)
++utils: export OBJDIR=$(HOST_OBJDIR)
++utils: export OBJ_CORE=$(HOST_OBJ_CORE)
++utils: export OBJ_DSP=$(HOST_OBJ_DSP)
++utils: export OBJ_METADATA=$(HOST_OBJ_METADATA)
++utils: export CXX=$(HOST_CXX)
++utils: export CXXFLAGS=$(HOST_CXXFLAGS)
++utils: export LD=$(HOST_LD)
++utils: export SNDFILE_HEADERS=$(HOST_SNDFILE_HEADERS)
++utils: export SNDFILE_LIBS=$(HOST_SNDFILE_LIBS)
++utils: export LV2_HEADERS=$(HOST_LV2_HEADERS)
++utils: export LV2_LIBS=$(HOST_LV2_LIBS)
++utils: | compile_info
++	@echo "CXX $(CXX)"
++	@echo "CXXFLAGS $(CXXFLAGS)"
++	@echo "LD $(LD)"
++	@echo "BUILD_PROFILE $(BUILD_PROFILE)"
++	@echo "OBJ_DSP $(OBJ_DSP)"
++	@echo "OBJ_CORE $(OBJ_CORE)"
++	mkdir -p $(HOST_OBJDIR)/src/utils
++	$(MAKE) $(MAKE_OPTS) -C src utils
++	@echo "Utils Build OK"
++
+ clean:
+ 	-rm -rf $(BUILDDIR)
++	-rm -rf $(HOST_BUILDDIR)
+ 	-rm -rf $(TESTDIR)
+ 	-rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+diff --git a/include/metadata/metadata.h b/include/metadata/metadata.h
+index 0efaa9d..e009750 100644
+--- a/include/metadata/metadata.h
++++ b/include/metadata/metadata.h
+@@ -73,10 +73,18 @@
+     #define LSP_ARCHITECTURE                                "unknown"
+ #endif /* ARCH */
+ 
++#define STRINGIFY_(x) #x
++#define STRINGIFY(x) STRINGIFY_(x)
++
+ #ifndef LSP_MAIN_VERSION
+     #define LSP_MAIN_VERSION                                "0.0.0"
++#else
++    #define LSP_MAIN_VERSION_STR STRINGIFY(LSP_MAIN_VERSION)
++    #undef LSP_MAIN_VERSION
++    #define LSP_MAIN_VERSION LSP_MAIN_VERSION_STR
+ #endif /* LSP_MAIN_VERSION */
+ 
++
+ #define LSP_LV2_LATENCY_PORT                            "out_latency"
+ #define LSP_LV2_ATOM_PORT_IN                            "in_ui"
+ #define LSP_LV2_MIDI_PORT_IN                            "in_midi"
+@@ -86,7 +94,7 @@
+ #define LSP_LV2_OSC_PORT_OUT                            "out_osc"
+ 
+ #ifdef LSP_INSTALL_PREFIX
+-    #define LSP_LIB_PREFIX(x)       LSP_INSTALL_PREFIX x
++    #define LSP_LIB_PREFIX(x)       STRINGIFY(LSP_INSTALL_PREFIX) x
+ #else
+     #define LSP_LIB_PREFIX(x)       x
+ #endif /* PREFIX */
+diff --git a/scripts/make/configure.mk b/scripts/make/configure.mk
+index 09aee9a..4e2764b 100644
+--- a/scripts/make/configure.mk
++++ b/scripts/make/configure.mk
+@@ -14,7 +14,8 @@ ifndef BUILD_R3D_BACKENDS
+   BUILD_R3D_BACKENDS     := $(shell if (test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" )  then cat "$(CFGDIR)/$(R3D_BACKENDS_FILE)" 2>/dev/null; else echo "glx"; fi;)
+ endif
+ 
+-BUILD_COMPILER         := $(shell $(CC) --version | head -n 1 || echo "unknown")
++BUILD_COMPILER         := $(shell $(CXX) --version | head -n 1 || echo "unknown")
++HOST_BUILD_COMPILER    := $(shell $(HOST_CXX) --version | head -n 1 || echo "unknown")
+ 
+ export BUILD_MODULES
+ export BUILD_R3D_BACKENDS
+@@ -23,7 +24,7 @@ export BUILD_R3D_BACKENDS
+ INSTALLATIONS           =
+ UNINSTALLATIONS         = uninstall_xdg
+ RELEASES                =
+-INCLUDE                 = -I"${CURDIR}/include"
++INCLUDE                 := -I"${CURDIR}/include"
+ 
+ ifeq ($(findstring ladspa,$(BUILD_MODULES)),ladspa)
+   INSTALLATIONS          += install_ladspa
+@@ -65,25 +66,25 @@ CC_ARCH         =
+ # Build profile
+ ifeq ($(BUILD_PROFILE),i586)
+   CC_ARCH          = -m32
+-  ifeq ($(BUILD_PLATFORM), Linux)
++  ifeq ($(HOST_BUILD_PLATFORM), Linux)
+     LD_ARCH          = -m elf_i386
+   endif
+-  ifeq ($(BUILD_PLATFORM), BSD)
++  ifeq ($(HOST_BUILD_PLATFORM), BSD)
+     LD_ARCH          = -m elf_i386_fbsd
+   endif
+ endif
+ 
+ ifeq ($(BUILD_PROFILE),x86_64)
+   CC_ARCH          = -m64
+-  ifeq ($(BUILD_PLATFORM), Linux)
++  ifeq ($(HOST_BUILD_PLATFORM), Linux)
+     LD_ARCH          = -m elf_x86_64
+   endif
+-  ifeq ($(BUILD_PLATFORM), BSD)
++  ifeq ($(HOST_BUILD_PLATFORM), BSD)
+     LD_ARCH          = -m elf_x86_64_fbsd
+   endif
+ endif
+ 
+-ifeq ($(BUILD_PLATFORM), BSD)
++ifeq ($(HOST_BUILD_PLATFORM), BSD)
+   INCLUDE          += -I/usr/local/include
+   ifeq ($(BUILD_PROFILE),arm)
+     CC_ARCH          = -marm
+@@ -136,9 +137,13 @@ else
+   export XLIB_HEADERS     = $(shell pkg-config --cflags x11)
+   export XLIB_LIBS        = $(shell pkg-config --libs x11)
+   export LV2_HEADERS      = $(shell pkg-config --cflags lv2)
+-  export LV2_LIBS         = $(shell pkg-config --libs lv2)
++  export LV2_HEADERS      = $(shell pkg-config --libs lv2)
++  export HOST_LV2_HEADERS   = $(shell /usr/bin/pkg-config --cflags lv2)
++  export HOST_LV2_LIBS      = $(shell /usr/bin/pkg-config --libs lv2)
+   export SNDFILE_HEADERS  = $(shell pkg-config --cflags sndfile)
+   export SNDFILE_LIBS     = $(shell pkg-config --libs sndfile)
++  export HOST_SNDFILE_HEADERS = $(shell /usr/bin/pkg-config --cflags sndfile)
++  export HOST_SNDFILE_LIBS    = $(shell /usr/bin/pkg-config --libs sndfile)
+   export JACK_HEADERS     = $(shell pkg-config --cflags jack)
+   export JACK_LIBS        = $(shell pkg-config --libs jack)
+   export OPENGL_HEADERS   = $(shell pkg-config --cflags gl 2>/dev/null || echo "")
+diff --git a/scripts/make/set_vars.mk b/scripts/make/set_vars.mk
+index a22531a..3222d5b 100644
+--- a/scripts/make/set_vars.mk
++++ b/scripts/make/set_vars.mk
+@@ -15,30 +15,30 @@ ifndef BUILD_SYSTEM
+   endif
+ endif
+ 
+-ifndef BUILD_PLATFORM
+-  BUILD_PLATFORM  = Unknown
++ifndef HOST_BUILD_PLATFORM
++  HOST_BUILD_PLATFORM  = Unknown
+ 
+   ifeq ($(BUILD_SYSTEM),Windows)
+-    BUILD_PLATFORM          = Windows
++    HOST_BUILD_PLATFORM          = Windows
+   endif
+   ifeq ($(findstring BSD,$(BUILD_SYSTEM)),BSD)
+-    BUILD_PLATFORM          = BSD
++    HOST_BUILD_PLATFORM          = BSD
+   endif
+   ifeq ($(findstring Linux,$(BUILD_SYSTEM)),Linux)
+-    BUILD_PLATFORM          = Linux
++    HOST_BUILD_PLATFORM          = Linux
+   endif
+   ifeq ($(findstring SunOS,$(BUILD_SYSTEM)),SunOS)
+-    BUILD_PLATFORM          = Solaris
++    HOST_BUILD_PLATFORM          = Solaris
+   endif
+ endif
+ 
+ export BUILD_SYSTEM
+-export BUILD_PLATFORM
++export HOST_BUILD_PLATFORM
+ export LV2_UI
+ export VST_UI
+ 
+-# Detect processor architecture
+-ifeq ($(BUILD_PLATFORM),Windows)
++# Detect target processor architecture
++ifeq ($(HOST_BUILD_PLATFORM),Windows)
+   ifndef BUILD_PROFILE
+     BUILD_ARCH                = i586
+     BUILD_PROFILE             = i586
+@@ -51,9 +51,9 @@ ifeq ($(BUILD_PLATFORM),Windows)
+       BUILD_PROFILE             = x86_64
+     endif
+   endif
+-else # BUILD_PLATFORM != Windows
++else # HOST_BUILD_PLATFORM != Windows
+   ifndef BUILD_PROFILE
+-    BUILD_ARCH              = $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
++    BUILD_ARCH              ?= $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
+     BUILD_PROFILE           = $(BUILD_ARCH)
+     ifeq ($(patsubst armv6%,armv6,$(BUILD_ARCH)), armv6)
+       BUILD_PROFILE           = armv6a
+@@ -80,7 +80,6 @@ else # BUILD_PLATFORM != Windows
+       BUILD_PROFILE           = i586
+     endif
+   endif
+-endif # BUILD_PLATFORM != Windows
++endif # HOST_BUILD_PLATFORM != Windows
+ 
+ export BUILD_PROFILE
+-
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 565dbb1..36f59f8 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -1,7 +1,9 @@
+ # Setup preferred tools
+ TOOL_LD                 = ld
++TOOL_HOST_LD            = ld
+ TOOL_CC                 = gcc
+ TOOL_CXX                = g++
++TOOL_HOST_CXX           = g++
+ TOOL_PHP                = php
+ 
+ # Setup preferred flags
+@@ -14,29 +16,34 @@ FLAG_CTUNE              = -std=c++98 \
+                           -pipe -Wall
+ 
+ # Patch flags and tools
+-ifeq ($(BUILD_PLATFORM),Solaris)
++ifeq ($(HOST_BUILD_PLATFORM),Solaris)
+   FLAG_RELRO              =
+   TOOL_LD                 = gld
++  TOOL_HOST_LD            = gld
+ endif
+ 
+ # Setup system variables
+ CC              		 ?= $(TOOL_CC)
+ CXX                      ?= $(TOOL_CXX)
++HOST_CXX                 ?= $(TOOL_HOST_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
++HOST_LD                  ?= $(TOOL_HOST_LD)
+ 
+ CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+-MERGE_FLAGS               = $(LD_ARCH) -r
+-EXE_TEST_FLAGS            = $(LDFLAGS) $(CC_ARCH)
+-EXE_FLAGS                 = $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++HOST_CXXFLAGS            += $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
++SO_FLAGS                 += $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
++MERGE_FLAGS              += $(LD_ARCH) -r
++EXE_TEST_FLAGS           += $(LDFLAGS) $(CC_ARCH)
++EXE_FLAGS                += $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++HOST_EXE_FLAGS           += $(HOST_LDFLAGS) $(FLAG_RELRO) -Wl,--gc-sections
+ 
+-ifeq ($(BUILD_PLATFORM), Linux)
++ifeq ($(HOST_BUILD_PLATFORM), Linux)
+   SO_FLAGS                 += -Wl,--no-undefined
+ endif
+ 
+-ifeq ($(BUILD_PLATFORM),BSD)
++ifeq ($(HOST_BUILD_PLATFORM),BSD)
+   EXE_FLAGS                += -L/usr/local/lib
+ endif
+ 
+@@ -58,12 +65,16 @@ endif
+ 
+ export CC
+ export CXX
++export HOST_CXX
+ export PHP
+ export LD
++export HOST_LD
+ 
+ export CFLAGS
+ export CXXFLAGS
++export HOST_CXXFLAGS
+ export SO_FLAGS
+ export MERGE_FLAGS
+ export EXE_TEST_FLAGS
+ export EXE_FLAGS
++export HOST_EXE_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index d960ad8..5f856e7 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,3 +1,5 @@
++# Estimate different pre-requisites before launching build
++
+ # Command-line flag to silence nested $(MAKE).
+ MAKE_OPTS              += VERBOSE=$(VERBOSE)
+ ifneq ($(VERBOSE),1)
+@@ -7,7 +9,8 @@ endif
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+-UTL_DEPS                = $(OBJ_CORE) $(OBJ_DSP) $(OBJ_METADATA)
++UTL_DEPS                = $(HOST_OBJ_CORE) $(HOST_OBJ_DSP) $(HOST_OBJ_METADATA)
++OBJDIR                  ?= $(BUILDDIR)
+ 
+ NEED_UI                 = 0
+ NEED_PLUGINS            = 0
+@@ -73,19 +76,44 @@ target: all
+ 
+ # Rules
+ $(SUBDIRS):
++	@echo "$(BUILDDIR)"
+ 	@echo "Building $(@)"
++	@echo "OBJDIR=$(OBJDIR)"
++	@echo "SNDFILE_HEADERS=$(SNDFILE_HEADERS)"
++	@echo "SNDFILE_LIBS=$(SNDFILE_LIBS)"
++	@echo "LV2_HEADERS=$(LV2_HEADERS)"
++	@echo "LV2_LIBS=$(LV2_LIBS)"
++	@echo "HOST_SNDFILE_HEADERS=$(HOST_SNDFILE_HEADERS)"
++	@echo "HOST_SNDFILE_LIBS=$(HOST_SNDFILE_LIBS)"
++	@echo "HOST_LV2_HEADERS=$(HOST_LV2_HEADERS)"
++	@echo "HOST_LV2_LIBS=$(HOST_LV2_LIBS)"
+ 	mkdir -p $(OBJDIR)/$(@)
+-	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ all \
++		CXX="$(CXX)" \
++		CXXFLAGS="$(CXXFLAGS)" \
++		LD="$(LD)" \
++		OBJDIR="$(OBJDIR)/$(@)" \
++		BUILD_PROFILE="$(BUILD_PROFILE)" \
++		SNDFILE_HEADERS="$(SNDFILE_HEADERS)" \
++		SNDFILE_LIBS="$(SNDFILE_LIBS)" \
++		LV2_HEADERS="$(LV2_HEADERS)" \
++		LV2_LIBS="$(LV2_LIBS)"
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+ 
++$(HOST_OBJ_CORE): core
++
+ $(OBJ_DSP): dsp
+ 
++$(HOST_OBJ_DSP): dsp
++
+ $(OBJ_PLUGINS): plugins
+ 
+ $(OBJ_METADATA): metadata
+ 
++$(HOST_OBJ_METADATA): metadata
++
+ $(OBJ_UI_CORE): ui
+ 
+ $(UTL_FILES): utils
+diff --git a/src/container/Makefile b/src/container/Makefile
+index 23a2e7a..46d79a0 100644
+--- a/src/container/Makefile
++++ b/src/container/Makefile
+@@ -39,7 +39,7 @@ endif
+ UI_OBJFILES             = $(OBJ_UI_CORE) $(OBJ_RES_CORE)
+ UI_LIBS                 = $(XLIB_LIBS) $(CAIRO_LIBS)
+ 
+-ifeq ($(BUILD_PLATFORM),BSD)
++ifeq ($(HOST_BUILD_PLATFORM),BSD)
+   LIBS                   += $(ICONV_LIBS)
+ endif
+ 
+diff --git a/src/dsp/Makefile b/src/dsp/Makefile
+index aac8007..ae11e0d 100644
+--- a/src/dsp/Makefile
++++ b/src/dsp/Makefile
+@@ -39,7 +39,7 @@ endif
+ ifeq ($(BUILD_PROFILE), x86_64)
+ LINK_OBJECTS           += $(X86_IMPL) $(SSE_IMPL) $(SSE2_IMPL) $(SSE3_IMPL) $(SSE4_IMPL) $(AVX_IMPL) $(AVX2_IMPL)
+ endif
+-ifeq ($(BUILD_PLATFORM), BSD)
++ifeq ($(HOST_BUILD_PLATFORM), BSD)
+   ifeq ($(BUILD_PROFILE), arm)
+     LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
+   endif
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index fbddcaa..ae8baf9 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -4,16 +4,22 @@ ifneq ($(VERBOSE),1)
+ .SILENT:
+ endif
+ 
++CXX                     = $(HOST_CXX)
++CXXFLAGS                = $(HOST_CXXFLAGS)
++MAKE_OPTS              += CXX=$(HOST_CXX) CXXFLAGS=$(HOST_CXXFLAGS)
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS                 =
+-OBJ_FILES               = $(OBJ_CORE) $(OBJ_METADATA)
++OBJ_FILES               = $(HOST_OBJ_CORE) $(HOST_OBJ_METADATA) $(HOST_OBJ_DSP)
+ OBJ_LIBS                = $(PTHREAD_LIBS) $(MATH_LIBS)
+ OBJ_EXTRA               =
+ INCLUDE_EXTRA           =
+ 
+-ifeq ($(BUILD_PLATFORM),BSD)
++export PKG_CONFIG_SYSROOT_DIR = /
++
++ifeq ($(HOST_BUILD_PLATFORM),BSD)
+   OBJ_LIBS               += $(ICONV_LIBS)
+ endif
+ 
+@@ -24,7 +30,7 @@ endif
+ ifeq ($(findstring lv2,$(BUILD_MODULES)),lv2)
+   MODULES                += $(UTL_GENTTL)
+   FILELIST               += lv2_genttl.o
+-  INCLUDE_EXTRA          += $(LV2_HEADERS)
++  INCLUDE_EXTRA          += $(HOST_LV2_HEADERS)
+ endif
+ ifeq ($(findstring vst,$(BUILD_MODULES)),vst)
+   MODULES                += $(UTL_VSTMAKE)
+@@ -50,32 +56,33 @@ target: all
+ # Common rules
+ $(SUBDIRS):
+ 	@echo "Building $@"
++	@echo "CXX=$(CXX)"
++	@echo "CXXFLAGS=$(CXXFLAGS)"
++	@echo "MAKE_OPTS=$(MAKE_OPTS)"
+ 	mkdir -p $(OBJDIR)/$(@)
+ 	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	@echo "  $(HOST_CXX) $(FILE)"
++	$(HOST_CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(HOST_CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+-$(UTL_GENTTL): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++$(UTL_GENTTL): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENTTL))"
++	$(HOST_CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+-$(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_JACKMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_JACKMAKE))"
++	$(HOST_CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_VSTMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_VSTMAKE))"
++	$(HOST_CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_GENPHP): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+-	
+-$(UTL_RESGEN): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+-
++$(UTL_GENPHP): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENPHP))"
++	$(HOST_CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
++$(UTL_RESGEN): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_RESGEN))"
++	$(HOST_CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_EXTRA) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+diff --git a/tmp/.gitignore b/tmp/.gitignore
+deleted file mode 100644
+index 22e8364..0000000
+--- a/tmp/.gitignore
++++ /dev/null
+@@ -1 +0,0 @@
+-/*
+\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins/template b/srcpkgs/lsp-plugins/template
new file mode 100644
index 000000000000..ed4191906125
--- /dev/null
+++ b/srcpkgs/lsp-plugins/template
@@ -0,0 +1,76 @@
+# Template file for 'lsp-plugins'
+pkgname=lsp-plugins
+version=1.1.30
+revision=1
+build_style=gnu-makefile
+make_build_args="VERBOSE=1"
+make_check_args=$make_build_args
+make_install_target="install install_xdg"
+make_use_env=yes
+hostmakedepends="pkg-config php lv2 libsndfile-devel"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel ladspa-sdk jack-devel"
+short_desc="Collection of free plugins"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/"
+distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+# https://github.com/sadko4u/lsp-plugins/issues/191#issuecomment-812847630
+export BUILD_ARCH=${XBPS_TARGET_MACHINE%%-musl}
+export HOST_BUILD_PROFILE=${XBPS_MACHINE%%-musl}
+export HOST_CXXFLAGS=$CXXFLAGS_host
+export HOST_CXX=$CXX_host
+export HOST_LD=$LD_host
+
+do_check() {
+	export CXXFLAGS="$CXXFLAGS -DLSP_TESTING -DLSP_TRACE"
+	make $make_check_args test
+	.test/lsp-plugins-test utest
+}
+
+lsp-plugins-lv2_package() {
+	depends="${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - documentation"
+	pkg_install() {
+		vmove usr/lib/lv2
+	}
+}
+
+lsp-plugins-jack_package() {
+	depends="${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - JACK"
+	pkg_install() {
+		vmove usr/bin
+		vmove usr/lib/lsp-plugins/lsp-plugins-jack-core*
+		vmove usr/lib/lsp-plugins/lsp-plugins-r3d-glx.so
+		vmove usr/share/applications
+		vmove usr/share/desktop-directories
+		vmove usr/share/icons
+		vmove etc/xdg/menus
+	}
+}
+
+lsp-plugins-ladspa_package() {
+	depends="${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - LADSPA"
+	pkg_install() {
+		vmove usr/lib/ladspa/lsp-plugins-ladspa.so
+	}
+}
+
+lsp-plugins-vst_package() {
+	depends="${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - VST"
+	pkg_install() {
+		vmove usr/lib/vst
+	}
+}
+
+lsp-plugins-doc_package() {
+	depends="${sourcepkg}>=${version}_${revision}"
+	short_desc+=" - documentation"
+	pkg_install() {
+		vmove usr/share/doc
+	}
+}

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Updated] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (52 preceding siblings ...)
  2021-08-01 15:47 ` Logarithmus
@ 2021-08-02  2:34 ` Logarithmus
  2021-08-02  3:46 ` Logarithmus
                   ` (13 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-08-02  2:34 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 2133 bytes --]

There is an updated pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.
Also used by `easyeffects`, `pulseeffects`' successor 
Continuation of https://github.com/void-linux/void-packages/pull/29932

TODO:
- [ ] wait for https://github.com/sadko4u/lsp-plugins/pull/198
- [ ] implement `VERBOSE` option into `lsp-plugins` Makefiles to save my sanity debugging them
https://github.com/sadko4u/lsp-plugins/pull/200
- [ ] fix i686
- [ ] fix arm
- [ ] split the package (ladspa, lv2, vst, jack, doc)

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 89658 bytes --]

From b31bc44e2e8a5f0de017b1155f5073e2b926481a Mon Sep 17 00:00:00 2001
From: Artur Sinila <freesoftware@logarithmus.dev>
Date: Mon, 5 Jul 2021 03:44:08 +0300
Subject: [PATCH 1/2] common/build-style/: enable running tests in parallel

---
 common/build-style/cmake.sh           | 6 +++++-
 common/build-style/configure.sh       | 6 +++++-
 common/build-style/gnu-configure.sh   | 6 +++++-
 common/build-style/gnu-makefile.sh    | 6 +++++-
 common/build-style/perl-module.sh     | 6 +++++-
 common/environment/setup/sourcepkg.sh | 3 ++-
 6 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/common/build-style/cmake.sh b/common/build-style/cmake.sh
index 401dabad31c8..c7ffd16fee21 100644
--- a/common/build-style/cmake.sh
+++ b/common/build-style/cmake.sh
@@ -113,7 +113,11 @@ do_check() {
 
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/configure.sh b/common/build-style/configure.sh
index 0963fc347934..b846a1a77572 100644
--- a/common/build-style/configure.sh
+++ b/common/build-style/configure.sh
@@ -29,7 +29,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-configure.sh b/common/build-style/gnu-configure.sh
index 8121136cd121..b09de442b05b 100644
--- a/common/build-style/gnu-configure.sh
+++ b/common/build-style/gnu-configure.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-makefile.sh b/common/build-style/gnu-makefile.sh
index d7ea148fc483..0f7afa7d3695 100644
--- a/common/build-style/gnu-makefile.sh
+++ b/common/build-style/gnu-makefile.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/perl-module.sh b/common/build-style/perl-module.sh
index b9a01b13cfa9..d47945b33d36 100644
--- a/common/build-style/perl-module.sh
+++ b/common/build-style/perl-module.sh
@@ -79,7 +79,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/environment/setup/sourcepkg.sh b/common/environment/setup/sourcepkg.sh
index bc06f745b78a..1fd541f1e715 100644
--- a/common/environment/setup/sourcepkg.sh
+++ b/common/environment/setup/sourcepkg.sh
@@ -13,7 +13,8 @@ unset -v cmake_builddir meson_builddir
 unset -v meson_crossfile
 unset -v gemspec
 unset -v go_import_path go_package go_mod_mode
-unset -v patch_args disable_parallel_build keep_libtool_archives make_use_env
+unset -v patch_args disable_parallel_build disable_parallel_check
+unset -v keep_libtool_archives make_use_env
 unset -v reverts subpackages makedepends hostmakedepends checkdepends depends restricted
 unset -v nopie build_options build_options_default bootstrap repository reverts
 unset -v CFLAGS CXXFLAGS FFLAGS CPPFLAGS LDFLAGS LD_LIBRARY_PATH

From 095478658d057cf88105d13f7e232d0a18e266e2 Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH 2/2] New package: lsp-plugins-1.1.30

---
 srcpkgs/lsp-plugins                           |    1 +
 srcpkgs/lsp-plugins-doc                       |    1 +
 srcpkgs/lsp-plugins-jack                      |    1 +
 srcpkgs/lsp-plugins-ladspa                    |    1 +
 .../00-makefile-test-remove-cflags.patch      |   12 +
 srcpkgs/lsp-plugins-lv2/patches/01-musl.patch |  391 ++++++
 .../patches/02-make-verbose.patch             | 1082 +++++++++++++++++
 .../patches/03-improve-cross.patch            |  481 ++++++++
 srcpkgs/lsp-plugins-lv2/template              |   90 ++
 srcpkgs/lsp-plugins-vst                       |    1 +
 10 files changed, 2061 insertions(+)
 create mode 120000 srcpkgs/lsp-plugins
 create mode 120000 srcpkgs/lsp-plugins-doc
 create mode 120000 srcpkgs/lsp-plugins-jack
 create mode 120000 srcpkgs/lsp-plugins-ladspa
 create mode 100644 srcpkgs/lsp-plugins-lv2/patches/00-makefile-test-remove-cflags.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/patches/01-musl.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/patches/02-make-verbose.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/patches/03-improve-cross.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/template
 create mode 120000 srcpkgs/lsp-plugins-vst

diff --git a/srcpkgs/lsp-plugins b/srcpkgs/lsp-plugins
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-doc b/srcpkgs/lsp-plugins-doc
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-doc
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-jack b/srcpkgs/lsp-plugins-jack
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-jack
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-ladspa b/srcpkgs/lsp-plugins-ladspa
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-ladspa
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-lv2/patches/00-makefile-test-remove-cflags.patch b/srcpkgs/lsp-plugins-lv2/patches/00-makefile-test-remove-cflags.patch
new file mode 100644
index 000000000000..fd82f25d4a25
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/patches/00-makefile-test-remove-cflags.patch
@@ -0,0 +1,12 @@
+https://github.com/void-linux/void-packages/pull/29932#discussion_r605695858
+--- a/Makefile
++++ b/Makefile
+@@ -108,8 +108,6 @@ trace: export EXE_FLAGS     += -g3
+ trace: compile
+ 
+ test: OBJDIR                 = $(TESTDIR)
+-test: export CFLAGS         += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-test: export CXXFLAGS       += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
diff --git a/srcpkgs/lsp-plugins-lv2/patches/01-musl.patch b/srcpkgs/lsp-plugins-lv2/patches/01-musl.patch
new file mode 100644
index 000000000000..6dc08949a87a
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/patches/01-musl.patch
@@ -0,0 +1,391 @@
+diff --git a/TODO.txt b/TODO.txt
+index 4976293..3bb3db8 100644
+--- a/TODO.txt
++++ b/TODO.txt
+@@ -28,6 +28,11 @@
+ - Added possibility to change themes in runtime.
+ - Complicated plugin UIs now allow to switch between Advanced and Novice modes.
+ 
++=== 1.1.31 ===
++
++* Fixed X11 error handling routine that could crash under certain conditions.
++* Better support for musl libc (contributed by Artur Sinila).
++
+ *******************************************************************************
+ * New plugin check list before release
+ *******************************************************************************
+diff --git a/include/common/types.h b/include/common/types.h
+index dd1816e..59c794e 100644
+--- a/include/common/types.h
++++ b/include/common/types.h
+@@ -563,6 +563,12 @@
+     #define MINIMUM_ALIGN                   DEFAULT_ALIGN
+ #endif /* DEFAULT_ALIGN */
+ 
++//-----------------------------------------------------------------------------
++// Detect some libraries
++#ifdef __GLIBC__
++    #define USE_GLIBC                           __GLIBC__
++#endif /* GLIBC */
++
+ //-----------------------------------------------------------------------------
+ // Type definitions
+ __IF_32( typedef        uint32_t            umword_t );
+diff --git a/include/data/cvector.h b/include/data/cvector.h
+index eccc94a..17fe119 100644
+--- a/include/data/cvector.h
++++ b/include/data/cvector.h
+@@ -25,6 +25,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <sys/types.h>
+ 
+ #define CVECTOR_GROW        16
+ 
+diff --git a/include/test/main/executor.h b/include/test/main/executor.h
+index 0faf73f..5a0c016 100644
+--- a/include/test/main/executor.h
++++ b/include/test/main/executor.h
+@@ -633,7 +633,7 @@ namespace lsp
+     }
+ #endif /* PLATFORM_WINDOWS */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     void TestExecutor::start_memcheck(test::Test *v)
+     {
+         if (!pCfg->mtrace)
+diff --git a/include/test/main/types.h b/include/test/main/types.h
+index ef15800..0c5d7c2 100644
+--- a/include/test/main/types.h
++++ b/include/test/main/types.h
+@@ -42,7 +42,7 @@
+     #include <fcntl.h>
+ #endif /* PLATFORM_UNIX_COMPATIBLE */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     #include <mcheck.h>
+ #endif /* PLATFORM_LINUX */
+ 
+diff --git a/include/testing/mtest/3d/common/X11Renderer.h b/include/testing/mtest/3d/common/X11Renderer.h
+index e8ec205..f0a51e2 100644
+--- a/include/testing/mtest/3d/common/X11Renderer.h
++++ b/include/testing/mtest/3d/common/X11Renderer.h
+@@ -30,7 +30,7 @@
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include <rendering/backend.h>
+ #include <core/ipc/Library.h>
+diff --git a/src/testing/mtest/3d/boolean3d.cpp b/src/testing/mtest/3d/boolean3d.cpp
+deleted file mode 100644
+index 636dce1..0000000
+--- a/src/testing/mtest/3d/boolean3d.cpp
++++ /dev/null
+@@ -1,253 +0,0 @@
+-/*
+- * Copyright (C) 2020 Linux Studio Plugins Project <https://lsp-plug.in/>
+- *           (C) 2020 Vladimir Sadovnikov <sadko4u@gmail.com>
+- *
+- * This file is part of lsp-plugins
+- * Created on: 24 дек. 2018 г.
+- *
+- * lsp-plugins is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU Lesser General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * any later version.
+- *
+- * lsp-plugins is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU Lesser General Public License for more details.
+- *
+- * You should have received a copy of the GNU Lesser General Public License
+- * along with lsp-plugins. If not, see <https://www.gnu.org/licenses/>.
+- */
+-
+-#if 0
+-
+-#include <test/mtest.h>
+-#include <testing/mtest/3d/common/X11Renderer.h>
+-#include <core/files/Model3DFile.h>
+-#include <core/3d/rt_context.h>
+-#include <core/3d/RayTrace3D.h>
+-
+-#include <core/types.h>
+-#include <core/debug.h>
+-#include <core/sugar.h>
+-#include <core/status.h>
+-#include <stdlib.h>
+-#include <errno.h>
+-#include <data/cstorage.h>
+-
+-#include <X11/X.h>
+-#include <X11/Xlib.h>
+-#include <X11/keysymdef.h>
+-#include <GL/gl.h>
+-#include <GL/glx.h>
+-#include <GL/glu.h>
+-#include <sys/poll.h>
+-
+-//#define TEST_DEBUG
+-
+-#ifndef TEST_DEBUG
+-//    #define BREAKPOINT_STEP     -1
+-//    #define BREAKPOINT_STEP     27
+-//    #define BREAKPOINT_STEP     83
+-    #define BREAKPOINT_STEP     215
+-//    #define BREAKPOINT_STEP     0
+-
+-#else /* DEBUG */
+-    #define BREAKPOINT_STEP     0
+-#endif /* DEBUG */
+-
+-MTEST_BEGIN("3d", boolean)
+-
+-    class Renderer: public X11Renderer
+-    {
+-        private:
+-            Scene3D        *pScene;
+-            ssize_t         nTrace;
+-            bool            bDrawMatched;
+-            bool            bDrawIgnored;
+-            bool            bDrawDebug;
+-
+-        public:
+-            explicit Renderer(Scene3D *scene, View3D *view): X11Renderer(view)
+-            {
+-                pScene = scene;
+-                bDrawMatched    = true;
+-                bDrawIgnored    = true;
+-                bDrawDebug      = true;
+-                bDrawNormals    = false;
+-                nTrace          = BREAKPOINT_STEP;
+-
+-                update_view();
+-            }
+-
+-            virtual ~Renderer()
+-            {
+-            }
+-
+-        public:
+-            virtual void on_key_press(const XKeyEvent &ev, KeySym key)
+-            {
+-                switch (key)
+-                {
+-                    case XK_Up:
+-                        nTrace++;
+-                        lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                        update_view();
+-                        break;
+-                    case XK_Down:
+-                        if (nTrace >= 0)
+-                        {
+-                            nTrace--;
+-                            lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                            update_view();
+-                        }
+-                        break;
+-
+-                    case 'm':
+-                    {
+-                        bDrawMatched = ! bDrawMatched;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'i':
+-                    {
+-                        bDrawIgnored = ! bDrawIgnored;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'd':
+-                    {
+-                        bDrawDebug = ! bDrawDebug;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case '0': case '1': case '2': case '3': case '4':
+-                    case '5': case '6': case '7': case '8': case '9':
+-                    {
+-                        Object3D *obj = pScene->get_object(key - '0');
+-                        if (obj != NULL)
+-                        {
+-                            obj->set_visible(!obj->is_visible());
+-                            update_view();
+-                        }
+-                        break;
+-                    }
+-                    default:
+-                        X11Renderer::on_key_press(ev, key);
+-                        break;
+-                }
+-            }
+-
+-        protected:
+-            status_t perform_boolean(rt_debug_t *shared)
+-            {
+-                if (pScene->num_objects() <= 0)
+-                    return STATUS_OK;
+-
+-                rt_mesh_t mesh;
+-                mesh.set_debug_context(shared, &shared->trace);
+-
+-                Object3D *obj = pScene->object(0);
+-                status_t res = mesh.init(obj, 0, obj->matrix());
+-                if (res != STATUS_OK)
+-                    return res;
+-
+-                for (size_t i=1, n=pScene->num_objects(); i<n; ++i)
+-                {
+-                    obj = pScene->object(i);
+-                    res = mesh.subtract(obj, i, obj->matrix());
+-                    if (res != STATUS_OK)
+-                        return res;
+-                }
+-
+-                return STATUS_OK;
+-            }
+-
+-            status_t    update_view()
+-            {
+-                v_vertex3d_t v[3];
+-                status_t res = STATUS_OK;
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // List of ignored and matched triangles
+-                rt_debug_t global;
+-                global.breakpoint   = nTrace;
+-                global.step         = 0;
+-
+-                // Perform raytrace
+-                res     = perform_boolean(&global);
+-                if (res == STATUS_BREAKPOINT)
+-                {
+-                    pView->swap(&global.trace);
+-                    res         = STATUS_OK;
+-                }
+-
+-                if (!bDrawDebug)
+-                    pView->clear_all();
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // Build final scene from matched and ignored items
+-                if (bDrawIgnored)
+-                {
+-                    for (size_t i=0, m=global.ignored.size(); i < m; ++i)
+-                        pView->add_triangle_1c(global.ignored.at(i), &C_GRAY);
+-                }
+-
+-                if (bDrawMatched)
+-                {
+-                    for (size_t i=0, m=global.matched.size(); i < m; ++i)
+-                    {
+-                        v_triangle3d_t *t = global.matched.at(i);
+-                        v[0].p     = t->p[0];
+-                        v[0].n     = t->n[0];
+-                        v[0].c     = C_RED;
+-
+-                        v[1].p     = t->p[1];
+-                        v[1].n     = t->n[1];
+-                        v[1].c     = C_GREEN;
+-
+-                        v[2].p     = t->p[2];
+-                        v[2].n     = t->n[2];
+-                        v[2].c     = C_BLUE;
+-
+-                        pView->add_triangle(v);
+-                    }
+-                }
+-
+-                global.ignored.flush();
+-                global.matched.flush();
+-
+-                return res;
+-            }
+-    };
+-
+-    MTEST_MAIN
+-    {
+-        const char *scene_file = (argc < 1) ? "res/test/3d/cross.obj" : argv[0];
+-
+-        // Load scene
+-        Scene3D s;
+-        View3D v;
+-        status_t res = Model3DFile::load(&s, scene_file, true);
+-        MTEST_ASSERT_MSG(res == STATUS_OK, "Error loading scene from file %s", scene_file);
+-
+-        // Initialize renderer
+-        Renderer r(&s, &v);
+-        MTEST_ASSERT_MSG(r.init() == STATUS_OK, "Error initializing renderer");
+-        r.run();
+-        r.destroy();
+-
+-        // Destroy scene
+-        s.destroy();
+-    }
+-
+-MTEST_END
+-
+-#endif
+diff --git a/src/testing/mtest/3d/bsp_context.cpp b/src/testing/mtest/3d/bsp_context.cpp
+index de54427..f7b7a34 100644
+--- a/src/testing/mtest/3d/bsp_context.cpp
++++ b/src/testing/mtest/3d/bsp_context.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/reflections3d.cpp b/src/testing/mtest/3d/reflections3d.cpp
+index e250444..367f86c 100644
+--- a/src/testing/mtest/3d/reflections3d.cpp
++++ b/src/testing/mtest/3d/reflections3d.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/ui/ws/x11/X11Display.cpp b/src/ui/ws/x11/X11Display.cpp
+index d85db51..987e8a9 100644
+--- a/src/ui/ws/x11/X11Display.cpp
++++ b/src/ui/ws/x11/X11Display.cpp
+@@ -23,7 +23,7 @@
+ 
+ #ifdef USE_X11_DISPLAY
+ 
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ 
+@@ -233,7 +233,7 @@ namespace lsp
+                 while (!atomic_cas(&hLock, 0, 1)) { /* Wait */ }
+ 
+                 // Dispatch errors between Displays
+-                for (X11Display *dp = pHandlers; dp != NULL; ++dp)
++                for (X11Display *dp = pHandlers; dp != NULL; dp = dp->pNextHandler)
+                     if (dp->pDisplay == dpy)
+                         dp->handle_error(ev);
+ 
diff --git a/srcpkgs/lsp-plugins-lv2/patches/02-make-verbose.patch b/srcpkgs/lsp-plugins-lv2/patches/02-make-verbose.patch
new file mode 100644
index 000000000000..d6c4f6ce2f92
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/patches/02-make-verbose.patch
@@ -0,0 +1,1082 @@
+diff --git a/Makefile b/Makefile
+index 2d9cb79..79ddcc6 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ # Common definitions
+ RELEASE_TEXT            = LICENSE.txt README.txt CHANGELOG.txt
+ RELEASE_SRC             = $(RELEASE_TEXT) src build-*.sh include res Makefile release.sh
+@@ -166,24 +172,24 @@ compile_info:
+ 	@echo "-------------------------------------------------------------------------------"
+ 
+ compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@mkdir -p $(CFGDIR)
+-	@test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
+-	@test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
+-	@test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
+-	@test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++	mkdir -p $(OBJDIR)/src
++	mkdir -p $(CFGDIR)
++	test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
++	test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
++	test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
++	test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Build OK"
+ 	
+ test_compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++	mkdir -p $(OBJDIR)/src
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
+ clean:
+-	@-rm -rf $(BUILDDIR)
+-	@-rm -rf $(TESTDIR)
+-	@-rm -rf $(CFGDIR)
++	-rm -rf $(BUILDDIR)
++	-rm -rf $(TESTDIR)
++	-rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+ 
+ # Build targets
+@@ -209,63 +215,63 @@ install: $(INSTALLATIONS)
+ 
+ install_ladspa: all
+ 	@echo "Installing LADSPA plugins to $(DESTDIR)$(LADSPA_PATH)/"
+-	@mkdir -p $(DESTDIR)$(LADSPA_PATH)
+-	@$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
++	mkdir -p $(DESTDIR)$(LADSPA_PATH)
++	$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
+ 	
+ install_lv2: all
+ 	@echo "Installing LV2 plugins to $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
+-	@$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
++	$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+ 	
+ install_vst: all
+ 	@echo "Installing VST plugins to $(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+-	@$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
++	$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+ 
+ install_jack: all
+ 	@echo "Installing JACK core to $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
++	$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+ 	@echo "Installing JACK standalone plugins to $(DESTDIR)$(BIN_PATH)"
+-	@mkdir -p "$(DESTDIR)$(BIN_PATH)"
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
++	mkdir -p "$(DESTDIR)$(BIN_PATH)"
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
+ 
+ install_xdg:
+ 	@echo "Installing desktop icons to $(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
+-	@mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
+-	@cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
+-	@cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
+-	@cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
+-	@cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
++	mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
++	cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
++	cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
++	cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
++	cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
+ 
+ install_doc: all
+ 	@echo "Installing documentation to $(DESTDIR)$(DOC_PATH)"
+-	@mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+ # Release targets
+ dbg_release: export CFLAGS        += -DLSP_TRACE -O2
+@@ -279,67 +285,67 @@ release: $(RELEASES)
+ 
+ release_prepare: all
+ 	@echo "Releasing plugins for architecture $(BUILD_PROFILE)"
+-	@mkdir -p $(RELEASE)
+-	@mkdir -p $(DESTDIR)
++	mkdir -p $(RELEASE)
++	mkdir -p $(DESTDIR)
+ 	
+ release_ladspa: DESTDIR=$(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_ladspa: | release_prepare install_ladspa
+ 	@echo "Releasing LADSPA binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_lv2: DESTDIR=$(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_lv2: | release_prepare install_lv2
+ 	@echo "Releasing LV2 binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_vst: DESTDIR=$(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_vst: | release_prepare install_vst
+ 	@echo "Releasing VST binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_jack: DESTDIR=$(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_jack: | release_prepare install_jack
+ 	@echo "Releasing JACK binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 
+ release_profile: DESTDIR=$(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_profile: | release_prepare
+ 	@echo "Releasing PROFILE binaries"
+-	@$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ 
+ release_src: DESTDIR=$(RELEASE)/$(SRC_ID)
+ release_src: | release_prepare
+ 	@echo "Releasing source code binaries"
+-	@mkdir -p $(DESTDIR)
+-	@mkdir -p $(DESTDIR)/scripts
+-	@cp -R $(RELEASE_SRC) $(DESTDIR)/
+-	@cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	mkdir -p $(DESTDIR)/scripts
++	cp -R $(RELEASE_SRC) $(DESTDIR)/
++	cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
++	rm -rf $(DESTDIR)
+ 
+ release_doc: DESTDIR=$(RELEASE)/$(DOC_ID)
+ release_doc: | release_prepare
+ 	@echo "Releasing documentation"
+-	@mkdir -p $(DESTDIR)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
++	rm -rf $(DESTDIR)
+ 
+ # Unrelease target
+ unrelease: clean
+-	@-rm -rf $(RELEASE)
++	-rm -rf $(RELEASE)
+ 	@echo "Unrelease OK"
+ 
+ # Uninstall target
+@@ -348,41 +354,41 @@ uninstall: $(UNINSTALLATIONS)
+ 	
+ uninstall_ladspa:
+ 	@echo "Uninstalling LADSPA"
+-	@-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
++	-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
+ 	
+ uninstall_lv2:
+ 	@echo "Uninstalling LV2"
+-	@-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
++	-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
+ 	
+ uninstall_vst:
+ 	@echo "Uninstalling VST"
+-	@-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
++	-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
++	-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
++	-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
+ 	
+ uninstall_jack:
+ 	@echo "Uninstalling JACK"
+-	@-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
+-	@-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
++	-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
++	-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
++	-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
++	-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
+ 
+ uninstall_xdg:
+ 	@echo "Uninstalling desktop icons"
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
+-	@-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
++	-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
++	-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
+ 
+ uninstall_doc:
+ 	@echo "Uninstalling DOC"
+-	@-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+diff --git a/TODO.txt b/TODO.txt
+index 3bb3db8..f8562ef 100644
+--- a/TODO.txt
++++ b/TODO.txt
+@@ -32,6 +32,7 @@
+ 
+ * Fixed X11 error handling routine that could crash under certain conditions.
+ * Better support for musl libc (contributed by Artur Sinila).
++* Added support of VERBOSE parameter for build system (contributed by Artur Sinila).
+ 
+ *******************************************************************************
+ * New plugin check list before release
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 1fb917e..565dbb1 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -25,7 +25,6 @@ CXX                      ?= $(TOOL_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
+ 
+-MAKE_OPTS                 = -s
+ CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+@@ -62,7 +61,6 @@ export CXX
+ export PHP
+ export LD
+ 
+-export MAKE_OPTS
+ export CFLAGS
+ export CXXFLAGS
+ export SO_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index 8546191..d960ad8 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+@@ -58,6 +64,7 @@ ifeq ($(NEED_UI),1)
+   CONTAINER_DEPS         += $(OBJ_UI_CORE) $(OBJ_RES_CORE) rendering
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all $(MODULES)
+ 
+ all: $(MODULES)
+@@ -67,8 +74,8 @@ target: all
+ # Rules
+ $(SUBDIRS):
+ 	@echo "Building $(@)"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+@@ -93,10 +100,10 @@ $(OBJ_TESTING_CORE): test testing rendering
+ 
+ $(OBJ_RES_CORE): $(OBJ_CORE) $(UTL_RESGEN)
+ 	@echo "Generating builtin resources"
+-	@mkdir -p $(OBJDIR)/res
+-	@$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	mkdir -p $(OBJDIR)/res
++	$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
++	-rm gmon.out >/dev/null 2>&1
++	$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ # Target dependencies
+ container: $(CONTAINER_DEPS)
+@@ -108,18 +115,18 @@ doc: utils $(PHP_PLUGINS)
+ # Additional processing
+ $(PHP_PLUGINS): $(UTL_GENPHP)
+ 	@echo "Generating PHP file $(notdir $(PHP_PLUGINS))"
+-	@$(UTL_GENPHP) $(PHP_PLUGINS)
++	$(UTL_GENPHP) $(PHP_PLUGINS)
+ 
+ vst_stub: $(UTL_VSTMAKE)
+ 	@echo "Building VST stub"
+-	@mkdir -p $(OBJDIR)/vst
+-	@$(UTL_VSTMAKE) $(OBJDIR)/vst
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
++	mkdir -p $(OBJDIR)/vst
++	$(UTL_VSTMAKE) $(OBJDIR)/vst
++	-rm gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
+ 
+ jack_stub: $(UTL_JACKMAKE)
+ 	@echo "Building JACK stub"
+-	@mkdir -p $(OBJDIR)/jack
+-	@$(UTL_JACKMAKE) $(OBJDIR)/jack
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
++	mkdir -p $(OBJDIR)/jack
++	$(UTL_JACKMAKE) $(OBJDIR)/jack
++	-rm gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
+diff --git a/src/container/Makefile b/src/container/Makefile
+index 8aa8196..23a2e7a 100644
+--- a/src/container/Makefile
++++ b/src/container/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ OBJ_HELPERS             = $(OBJDIR)/CairoCanvas.o
+@@ -53,46 +59,47 @@ ifeq ($(VST_UI),1)
+   X_VST_LIBS             += $(UI_LIBS)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(MODULES)
+ 
+ $(OBJ_HELPERS):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
+ 
+ $(LIB_LADSPA):
+ 	@echo "  $(CXX) ladspa.cpp"
+-	@$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_LADSPA))"
+-	@$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
++	$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
+ 
+ $(LIB_LV2): $(X_LV2_DEPS)
+ 	@echo "  $(CXX) lv2.cpp"
+-	@$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
+-	@echo "  $(CXX) $(notdir $(X_LIB_LV2))"
+-	@$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
++	$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
++	@echo "  $(CXX) $(notdir $(LIB_LV2))"
++	$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
+ 
+ $(LIB_VST):
+ 	@echo "  $(CXX) vst.cpp"
+-	@$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_VST))"
+-	@$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
++	$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
+ 
+ $(LIB_JACK): $(OBJ_HELPERS)
+ 	@echo "  $(CXX) jack.cpp"
+-	@$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
++	$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
+ 	@echo "  $(CXX) $(notdir $(LIB_JACK))"
+-	@$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
++	$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
+ 
+ $(BIN_PROFILE): $(LIB_JACK)
+ 	@echo "  $(CXX) profile.cpp"
+-	@$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_PROFILE))"
+-	@$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
++	$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
+ 
+ $(BIN_TEST): $(LIB_JACK)
+ 	@echo "  $(CXX) test.cpp"
+-	@$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_TEST))"
+-	@$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
++	$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
+diff --git a/src/core/Makefile b/src/core/Makefile
+index a9ce1a5..3ad14a5 100644
+--- a/src/core/Makefile
++++ b/src/core/Makefile
+@@ -1,18 +1,25 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(SNDFILE_HEADERS)
+ LIBS                    = $(PTHREAD_LIBS)
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(OBJ_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
+ 
+ $(OBJ_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_CORE))"
+-	@$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
++	$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
+diff --git a/src/doc/Makefile b/src/doc/Makefile
+index aac73bf..f7f18a1 100644
+--- a/src/doc/Makefile
++++ b/src/doc/Makefile
+@@ -1,6 +1,13 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ PHPDIR      = $(BUILDDIR)/src/doc
+ HTMLDIR     = $(BUILDDIR)/html
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -8,14 +15,14 @@ target: all
+ # Common rules
+ $(PHPDIR)/Makefile:
+ 	@echo "Preparing PHP documentation generator"
+-	@mkdir -p $(PHPDIR)
+-	@mkdir -p $(HTMLDIR)
+-	@cp -rf * $(PHPDIR)/
+-	@cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
+-	@cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
+-	@cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
+-	@$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
++	mkdir -p $(PHPDIR)
++	mkdir -p $(HTMLDIR)
++	cp -rf * $(PHPDIR)/
++	cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
++	cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
++	cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
++	$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
+ 
+ all: $(PHPDIR)/Makefile
+ 	@echo "Generating HTML documentation"
+-	@$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
++	$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
+diff --git a/src/dsp/Makefile b/src/dsp/Makefile
+index f3d9ab1..aac8007 100644
+--- a/src/dsp/Makefile
++++ b/src/dsp/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ NATIVE_IMPL             = $(OBJDIR)/native.o
+ 
+ X86_IMPL                = $(OBJDIR)/x86.o
+@@ -51,6 +57,7 @@ ifeq ($(BUILD_PROFILE), aarch64)
+ LINK_OBJECTS           += $(AARCH64_IMPL) $(ASIMD_IMPL)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -59,41 +66,41 @@ all: $(OBJ_DSP)
+ 
+ $(OBJ_DSP): $(LINK_OBJECTS)
+ 	@echo "  $(LD) $(notdir $(OBJ_DSP))"
+-	@$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
++	$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
+ 
+ $(DSP_IMPL) $(BITS_IMPL) $(NATIVE_IMPL) $(X86_IMPL) $(ARM_IMPL) $(AARCH64_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	
+ $(SSE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE3_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE4_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
+ 	
+ $(NEON_D32_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
+ 	
+ $(ASIMD_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
+ 
+diff --git a/src/metadata/Makefile b/src/metadata/Makefile
+index 201f89a..403f38a 100644
+--- a/src/metadata/Makefile
++++ b/src/metadata/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -10,8 +16,8 @@ target: all
+ 
+ $(OBJ_METADATA): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_METADATA))"
+-	@$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+diff --git a/src/plugins/Makefile b/src/plugins/Makefile
+index 1f197dc..85963ba 100644
+--- a/src/plugins/Makefile
++++ b/src/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,8 +14,8 @@ all:  $(OBJ_PLUGINS)
+ 
+ $(OBJ_PLUGINS): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(OBJ_PLUGINS))"
+-	@$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
++	$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
+diff --git a/src/rendering/Makefile b/src/rendering/Makefile
+index 897e327..65f3237 100644
+--- a/src/rendering/Makefile
++++ b/src/rendering/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ BASE_IMPL             	= $(OBJDIR)/base_backend.o
+ 
+ GLX_IMPL                = $(OBJDIR)/glx/backend.o $(OBJDIR)/glx/factory.o
+@@ -20,15 +26,15 @@ all: $(MODULES)
+ 
+ $(LIB_R3D_GLX): $(BASE_IMPL) $(GLX_IMPL)
+ 	@echo "  $(CXX) $(notdir $(LIB_R3D_GLX))"
+-	@$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
++	$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
+ 
+ $(BASE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 	
+ $(GLX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $(@))
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
++	mkdir -p $(dir $(@))
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
+ 
+ 
+diff --git a/src/test/Makefile b/src/test/Makefile
+index e8016e1..a89366e 100644
+--- a/src/test/Makefile
++++ b/src/test/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TEST_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TEST_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TEST_CORE))"
+-	@$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/testing/Makefile b/src/testing/Makefile
+index 705913d..d048065 100644
+--- a/src/testing/Makefile
++++ b/src/testing/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TESTING_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TESTING_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TESTING_CORE))"
+-	@$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/ui/Makefile b/src/ui/Makefile
+index 503111d..eb1e4c5 100644
+--- a/src/ui/Makefile
++++ b/src/ui/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= ws tk ctl plugins
+@@ -8,15 +14,15 @@ PACKAGES                = $(OBJ_WS_CORE) $(OBJ_TK_CORE) $(OBJ_CTL_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_UI_CORE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_UI_CORE)
+diff --git a/src/ui/ctl/Makefile b/src/ui/ctl/Makefile
+index 3f727db..692fe9d 100644
+--- a/src/ui/ctl/Makefile
++++ b/src/ui/ctl/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_CTL_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_CTL_CORE) $(SUBDIRS)
+diff --git a/src/ui/plugins/Makefile b/src/ui/plugins/Makefile
+index 8f8db8f..0e6c3d8 100644
+--- a/src/ui/plugins/Makefile
++++ b/src/ui/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_PLUGIN_UIS): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_PLUGIN_UIS) $(SUBDIRS)
+diff --git a/src/ui/tk/Makefile b/src/ui/tk/Makefile
+index 8700f63..cfb4c78 100644
+--- a/src/ui/tk/Makefile
++++ b/src/ui/tk/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -6,11 +12,11 @@ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_TK_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_TK_CORE)
+diff --git a/src/ui/ws/Makefile b/src/ui/ws/Makefile
+index 1109752..b9836d8 100644
+--- a/src/ui/ws/Makefile
++++ b/src/ui/ws/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= x11
+@@ -8,15 +14,15 @@ all: $(OBJ_WS_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ $(OBJ_WS_CORE): $(FILES) $(OBJ_WS_X11_CORE)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
++	$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
+ 
+ $(OBJ_WS_X11_CORE): $(SUBDIRS)
+diff --git a/src/ui/ws/x11/Makefile b/src/ui/ws/x11/Makefile
+index b99e93d..7bffca3 100644
+--- a/src/ui/ws/x11/Makefile
++++ b/src/ui/ws/x11/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(XLIB_HEADERS) $(CAIRO_HEADERS)
+@@ -8,9 +14,9 @@ all: $(OBJ_WS_X11_CORE)
+ 
+ $(OBJ_WS_X11_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
++	$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index 88b3739..fbddcaa 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -44,32 +50,32 @@ target: all
+ # Common rules
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+ $(UTL_GENTTL): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	@$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++	$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+ $(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	@$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	@$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_GENPHP): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	@$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_RESGEN): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	@$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 
+-	
+\ No newline at end of file
++	
+diff --git a/src/utils/jack_genmake.cpp b/src/utils/jack_genmake.cpp
+index 09974b0..3272ad8 100644
+--- a/src/utils/jack_genmake.cpp
++++ b/src/utils/jack_genmake.cpp
+@@ -97,6 +97,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%=%%.cpp)\n");
+@@ -107,11 +112,11 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
+ 
+         fprintf(out, "install: $(FILES)\n");
+-        fprintf(out, "\t@$(INSTALL) $(FILES) $(TARGET_PATH)/");
++        fprintf(out, "\t$(INSTALL) $(FILES) $(TARGET_PATH)/");
+ 
+         // Close file
+         fclose(out);
+diff --git a/src/utils/vst_genmake.cpp b/src/utils/vst_genmake.cpp
+index 9eeedeb..f47f783 100644
+--- a/src/utils/vst_genmake.cpp
++++ b/src/utils/vst_genmake.cpp
+@@ -100,6 +100,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%.so, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%.so=%%.cpp)\n");
+@@ -110,8 +115,8 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
+ 
+         // Close file
+         fclose(out);
diff --git a/srcpkgs/lsp-plugins-lv2/patches/03-improve-cross.patch b/srcpkgs/lsp-plugins-lv2/patches/03-improve-cross.patch
new file mode 100644
index 000000000000..e013477e61e7
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/patches/03-improve-cross.patch
@@ -0,0 +1,481 @@
+diff --git a/.gitignore b/.gitignore
+index 5bc0ecb..4a1edec 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -3,6 +3,7 @@
+ /design/*
+ /.builconfig/*
+ /.build/*
++/.host_build/*
+ /.buildconfig/*
+ /.test/*
+ /.release/*
+diff --git a/.gitmodules b/.gitmodules
+index ac5ea32..4480c1f 100644
+--- a/.gitmodules
++++ b/.gitmodules
+@@ -1,3 +1,3 @@
+ [submodule "Polynomial-Wiener-Hammerstein"]
+ 	path = Polynomial-Wiener-Hammerstein
+-	url = ../../CrocoDuckoDucks/Polynomial-Wiener-Hammerstein.git
++	url = https://github.com/CrocoDuckoDucks/Polynomial-Wiener-Hammerstein
+diff --git a/Makefile b/Makefile
+index 79ddcc6..34ccb79 100644
+--- a/Makefile
++++ b/Makefile
+@@ -24,8 +24,10 @@ export RESDIR           = ${CURDIR}/res
+ export RELEASE          = ${CURDIR}/.release
+ export RELEASE_BIN      = $(RELEASE)/$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ export BUILDDIR         = ${CURDIR}/.build
++export HOST_BUILDDIR    = ${CURDIR}/.host_build
+ export TESTDIR          = ${CURDIR}/.test
+ OBJDIR                  = $(BUILDDIR)
++export HOST_OBJDIR      = $(HOST_BUILDDIR)
+ 
+ # Installation locations
+ BIN_PATH               ?= $(PREFIX)/bin
+@@ -41,20 +43,23 @@ VST_PATH                = $(LIB_PATH)/vst
+ export BASEDIR          = ${CURDIR}
+ 
+ # Objects
+-export OBJ_CORE         = $(OBJDIR)/core.o
+-export OBJ_DSP          = $(OBJDIR)/dsp.o
+-export OBJ_CTL_CORE     = $(OBJDIR)/ctl_core.o
+-export OBJ_TK_CORE      = $(OBJDIR)/tk_core.o
+-export OBJ_WS_CORE      = $(OBJDIR)/ws_core.o
+-export OBJ_WS_X11_CORE  = $(OBJDIR)/ws_x11_core.o
+-export OBJ_UI_CORE      = $(OBJDIR)/ui_core.o
+-export OBJ_RES_CORE     = $(OBJDIR)/res_core.o
+-export OBJ_TEST_CORE    = $(OBJDIR)/test_core.o
+-export OBJ_TESTING_CORE = $(OBJDIR)/testing_core.o
+-export OBJ_PLUGINS      = $(OBJDIR)/plugins.o
+-export OBJ_PLUGIN_UIS	= $(OBJDIR)/plugin_uis.o
+-export OBJ_METADATA     = $(OBJDIR)/metadata.o
+-export OBJ_FILES        = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
++export OBJ_CORE          = $(OBJDIR)/core.o
++export HOST_OBJ_CORE     = $(HOST_OBJDIR)/core.o
++export OBJ_DSP           = $(OBJDIR)/dsp.o
++export HOST_OBJ_DSP      = $(HOST_OBJDIR)/dsp.o
++export OBJ_CTL_CORE      = $(OBJDIR)/ctl_core.o
++export OBJ_TK_CORE       = $(OBJDIR)/tk_core.o
++export OBJ_WS_CORE       = $(OBJDIR)/ws_core.o
++export OBJ_WS_X11_CORE   = $(OBJDIR)/ws_x11_core.o
++export OBJ_UI_CORE       = $(OBJDIR)/ui_core.o
++export OBJ_RES_CORE      = $(OBJDIR)/res_core.o
++export OBJ_TEST_CORE     = $(OBJDIR)/test_core.o
++export OBJ_TESTING_CORE  = $(OBJDIR)/testing_core.o
++export OBJ_PLUGINS       = $(OBJDIR)/plugins.o
++export OBJ_PLUGIN_UIS	 = $(OBJDIR)/plugin_uis.o
++export OBJ_METADATA      = $(OBJDIR)/metadata.o
++export HOST_OBJ_METADATA = $(HOST_OBJDIR)/metadata.o
++export OBJ_FILES         = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
+ 
+ # Libraries
+ export LIB_LADSPA       = $(OBJDIR)/$(ARTIFACT_ID)-ladspa.so
+@@ -68,11 +73,14 @@ export BIN_PROFILE      = $(OBJDIR)/$(ARTIFACT_ID)-profile
+ export BIN_TEST         = $(OBJDIR)/$(ARTIFACT_ID)-test
+ 
+ # Utils
+-export UTL_GENTTL       = $(OBJDIR)/lv2_genttl.exe
+-export UTL_VSTMAKE      = $(OBJDIR)/vst_genmake.exe
+-export UTL_JACKMAKE     = $(OBJDIR)/jack_genmake.exe
+-export UTL_GENPHP       = $(OBJDIR)/gen_php.exe
+-export UTL_RESGEN       = $(OBJDIR)/gen_resources.exe
++ifeq ($(BUILD_SYSTEM),Windows)
++  BIN_SUFFIX := .exe
++endif
++export UTL_GENTTL       = $(HOST_OBJDIR)/lv2_genttl$(BIN_SUFFIX)
++export UTL_VSTMAKE      = $(HOST_OBJDIR)/vst_genmake$(BIN_SUFFIX)
++export UTL_JACKMAKE     = $(HOST_OBJDIR)/jack_genmake$(BIN_SUFFIX)
++export UTL_GENPHP       = $(HOST_OBJDIR)/gen_php$(BIN_SUFFIX)
++export UTL_RESGEN       = $(HOST_OBJDIR)/gen_resources$(BIN_SUFFIX)
+ export UTL_FILES        = $(UTL_GENTTL) $(UTL_VSTMAKE) $(UTL_GENPHP) $(UTL_RESGEN)
+ 
+ # Files
+@@ -102,7 +110,8 @@ default: all
+ all: export CFLAGS          += -O2 -DLSP_NO_EXPERIMENTAL
+ all: export CXXFLAGS        += -O2 -DLSP_NO_EXPERIMENTAL
+ all: export EXE_FLAGS       += -pie -fPIE
+-all: compile
++all: utils compile
++
+ 
+ experimental: export CFLAGS += -O2
+ experimental: export CXXFLAGS += -O2
+@@ -161,14 +170,14 @@ profile: compile
+ compile_info:
+ 	@echo "-------------------------------------------------------------------------------"
+ 	@echo "Building binaries"
+-	@echo "  target architecture : $(BUILD_PROFILE)"
+-	@echo "  target platform     : $(BUILD_PLATFORM)"
+-	@echo "  target system       : $(BUILD_SYSTEM)"
+-	@echo "  compiler            : $(BUILD_COMPILER)"
+-	@echo "  modules             : $(BUILD_MODULES)"
+-	@echo "  UI                  : LV2=$(LV2_UI), VST=$(VST_UI)"
+-	@echo "  3D rendering        : $(BUILD_R3D_BACKENDS)"
+-	@echo "  build directory     : $(OBJDIR)"
++	@echo "  platform             : $(BUILD_PLATFORM)"
++	@echo "  system               : $(BUILD_SYSTEM)"
++	@echo "  target compiler      : $(CXX)"
++	@echo "  target architecture  : $(BUILD_PROFILE)"
++	@echo "  modules              : $(BUILD_MODULES)"
++	@echo "  UI                   : LV2=$(LV2_UI), VST=$(VST_UI)"
++	@echo "  3D rendering         : $(BUILD_R3D_BACKENDS)"
++	@echo "  build directory      : $(OBJDIR)"
+ 	@echo "-------------------------------------------------------------------------------"
+ 
+ compile: | compile_info
+@@ -186,8 +195,32 @@ test_compile: | compile_info
+ 	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
++utils: export BUILD_PROFILE=$(HOST_BUILD_PROFILE)
++utils: export OBJDIR=$(HOST_OBJDIR)
++utils: export OBJ_CORE=$(HOST_OBJ_CORE)
++utils: export OBJ_DSP=$(HOST_OBJ_DSP)
++utils: export OBJ_METADATA=$(HOST_OBJ_METADATA)
++utils: export CXX=$(HOST_CXX)
++utils: export CXXFLAGS=$(HOST_CXXFLAGS)
++utils: export LD=$(HOST_LD)
++utils: export SNDFILE_HEADERS=$(HOST_SNDFILE_HEADERS)
++utils: export SNDFILE_LIBS=$(HOST_SNDFILE_LIBS)
++utils: export LV2_HEADERS=$(HOST_LV2_HEADERS)
++utils: export LV2_LIBS=$(HOST_LV2_LIBS)
++utils: | compile_info
++	@echo "CXX $(CXX)"
++	@echo "CXXFLAGS $(CXXFLAGS)"
++	@echo "LD $(LD)"
++	@echo "BUILD_PROFILE $(BUILD_PROFILE)"
++	@echo "OBJ_DSP $(OBJ_DSP)"
++	@echo "OBJ_CORE $(OBJ_CORE)"
++	mkdir -p $(HOST_OBJDIR)/src/utils
++	$(MAKE) $(MAKE_OPTS) -C src utils
++	@echo "Utils Build OK"
++
+ clean:
+ 	-rm -rf $(BUILDDIR)
++	-rm -rf $(HOST_BUILDDIR)
+ 	-rm -rf $(TESTDIR)
+ 	-rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+diff --git a/include/metadata/metadata.h b/include/metadata/metadata.h
+index 0efaa9d..e009750 100644
+--- a/include/metadata/metadata.h
++++ b/include/metadata/metadata.h
+@@ -73,10 +73,18 @@
+     #define LSP_ARCHITECTURE                                "unknown"
+ #endif /* ARCH */
+ 
++#define STRINGIFY_(x) #x
++#define STRINGIFY(x) STRINGIFY_(x)
++
+ #ifndef LSP_MAIN_VERSION
+     #define LSP_MAIN_VERSION                                "0.0.0"
++#else
++    #define LSP_MAIN_VERSION_STR STRINGIFY(LSP_MAIN_VERSION)
++    #undef LSP_MAIN_VERSION
++    #define LSP_MAIN_VERSION LSP_MAIN_VERSION_STR
+ #endif /* LSP_MAIN_VERSION */
+ 
++
+ #define LSP_LV2_LATENCY_PORT                            "out_latency"
+ #define LSP_LV2_ATOM_PORT_IN                            "in_ui"
+ #define LSP_LV2_MIDI_PORT_IN                            "in_midi"
+@@ -86,7 +94,7 @@
+ #define LSP_LV2_OSC_PORT_OUT                            "out_osc"
+ 
+ #ifdef LSP_INSTALL_PREFIX
+-    #define LSP_LIB_PREFIX(x)       LSP_INSTALL_PREFIX x
++    #define LSP_LIB_PREFIX(x)       STRINGIFY(LSP_INSTALL_PREFIX) x
+ #else
+     #define LSP_LIB_PREFIX(x)       x
+ #endif /* PREFIX */
+diff --git a/scripts/make/configure.mk b/scripts/make/configure.mk
+index 09aee9a..79b0696 100644
+--- a/scripts/make/configure.mk
++++ b/scripts/make/configure.mk
+@@ -14,7 +14,8 @@ ifndef BUILD_R3D_BACKENDS
+   BUILD_R3D_BACKENDS     := $(shell if (test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" )  then cat "$(CFGDIR)/$(R3D_BACKENDS_FILE)" 2>/dev/null; else echo "glx"; fi;)
+ endif
+ 
+-BUILD_COMPILER         := $(shell $(CC) --version | head -n 1 || echo "unknown")
++BUILD_COMPILER         := $(shell $(CXX) --version | head -n 1 || echo "unknown")
++HOST_BUILD_COMPILER    := $(shell $(HOST_CXX) --version | head -n 1 || echo "unknown")
+ 
+ export BUILD_MODULES
+ export BUILD_R3D_BACKENDS
+@@ -23,7 +24,7 @@ export BUILD_R3D_BACKENDS
+ INSTALLATIONS           =
+ UNINSTALLATIONS         = uninstall_xdg
+ RELEASES                =
+-INCLUDE                 = -I"${CURDIR}/include"
++INCLUDE                 := -I"${CURDIR}/include"
+ 
+ ifeq ($(findstring ladspa,$(BUILD_MODULES)),ladspa)
+   INSTALLATIONS          += install_ladspa
+@@ -136,9 +137,13 @@ else
+   export XLIB_HEADERS     = $(shell pkg-config --cflags x11)
+   export XLIB_LIBS        = $(shell pkg-config --libs x11)
+   export LV2_HEADERS      = $(shell pkg-config --cflags lv2)
+-  export LV2_LIBS         = $(shell pkg-config --libs lv2)
++  export LV2_HEADERS      = $(shell pkg-config --libs lv2)
++  export HOST_LV2_HEADERS   = $(shell /usr/bin/pkg-config --cflags lv2)
++  export HOST_LV2_LIBS      = $(shell /usr/bin/pkg-config --libs lv2)
+   export SNDFILE_HEADERS  = $(shell pkg-config --cflags sndfile)
+   export SNDFILE_LIBS     = $(shell pkg-config --libs sndfile)
++  export HOST_SNDFILE_HEADERS = $(shell /usr/bin/pkg-config --cflags sndfile)
++  export HOST_SNDFILE_LIBS    = $(shell /usr/bin/pkg-config --libs sndfile)
+   export JACK_HEADERS     = $(shell pkg-config --cflags jack)
+   export JACK_LIBS        = $(shell pkg-config --libs jack)
+   export OPENGL_HEADERS   = $(shell pkg-config --cflags gl 2>/dev/null || echo "")
+diff --git a/scripts/make/set_vars.mk b/scripts/make/set_vars.mk
+index a22531a..b6aba83 100644
+--- a/scripts/make/set_vars.mk
++++ b/scripts/make/set_vars.mk
+@@ -37,7 +37,7 @@ export BUILD_PLATFORM
+ export LV2_UI
+ export VST_UI
+ 
+-# Detect processor architecture
++# Detect target processor architecture
+ ifeq ($(BUILD_PLATFORM),Windows)
+   ifndef BUILD_PROFILE
+     BUILD_ARCH                = i586
+@@ -53,7 +53,7 @@ ifeq ($(BUILD_PLATFORM),Windows)
+   endif
+ else # BUILD_PLATFORM != Windows
+   ifndef BUILD_PROFILE
+-    BUILD_ARCH              = $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
++    BUILD_ARCH              ?= $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
+     BUILD_PROFILE           = $(BUILD_ARCH)
+     ifeq ($(patsubst armv6%,armv6,$(BUILD_ARCH)), armv6)
+       BUILD_PROFILE           = armv6a
+@@ -83,4 +83,3 @@ else # BUILD_PLATFORM != Windows
+ endif # BUILD_PLATFORM != Windows
+ 
+ export BUILD_PROFILE
+-
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 565dbb1..aad590b 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -1,7 +1,9 @@
+ # Setup preferred tools
+ TOOL_LD                 = ld
++TOOL_HOST_LD            = ld
+ TOOL_CC                 = gcc
+ TOOL_CXX                = g++
++TOOL_HOST_CXX           = g++
+ TOOL_PHP                = php
+ 
+ # Setup preferred flags
+@@ -17,20 +19,25 @@ FLAG_CTUNE              = -std=c++98 \
+ ifeq ($(BUILD_PLATFORM),Solaris)
+   FLAG_RELRO              =
+   TOOL_LD                 = gld
++  TOOL_HOST_LD            = gld
+ endif
+ 
+ # Setup system variables
+ CC              		 ?= $(TOOL_CC)
+ CXX                      ?= $(TOOL_CXX)
++HOST_CXX                 ?= $(TOOL_HOST_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
++HOST_LD                  ?= $(TOOL_HOST_LD)
+ 
+ CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+-MERGE_FLAGS               = $(LD_ARCH) -r
+-EXE_TEST_FLAGS            = $(LDFLAGS) $(CC_ARCH)
+-EXE_FLAGS                 = $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++HOST_CXXFLAGS            += $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
++SO_FLAGS                 += $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
++MERGE_FLAGS              += $(LD_ARCH) -r
++EXE_TEST_FLAGS           += $(LDFLAGS) $(CC_ARCH)
++EXE_FLAGS                += $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++HOST_EXE_FLAGS           += $(HOST_LDFLAGS) $(FLAG_RELRO) -Wl,--gc-sections
+ 
+ ifeq ($(BUILD_PLATFORM), Linux)
+   SO_FLAGS                 += -Wl,--no-undefined
+@@ -58,12 +65,16 @@ endif
+ 
+ export CC
+ export CXX
++export HOST_CXX
+ export PHP
+ export LD
++export HOST_LD
+ 
+ export CFLAGS
+ export CXXFLAGS
++export HOST_CXXFLAGS
+ export SO_FLAGS
+ export MERGE_FLAGS
+ export EXE_TEST_FLAGS
+ export EXE_FLAGS
++export HOST_EXE_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index d960ad8..5f856e7 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,3 +1,5 @@
++# Estimate different pre-requisites before launching build
++
+ # Command-line flag to silence nested $(MAKE).
+ MAKE_OPTS              += VERBOSE=$(VERBOSE)
+ ifneq ($(VERBOSE),1)
+@@ -7,7 +9,8 @@ endif
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+-UTL_DEPS                = $(OBJ_CORE) $(OBJ_DSP) $(OBJ_METADATA)
++UTL_DEPS                = $(HOST_OBJ_CORE) $(HOST_OBJ_DSP) $(HOST_OBJ_METADATA)
++OBJDIR                  ?= $(BUILDDIR)
+ 
+ NEED_UI                 = 0
+ NEED_PLUGINS            = 0
+@@ -73,19 +76,44 @@ target: all
+ 
+ # Rules
+ $(SUBDIRS):
++	@echo "$(BUILDDIR)"
+ 	@echo "Building $(@)"
++	@echo "OBJDIR=$(OBJDIR)"
++	@echo "SNDFILE_HEADERS=$(SNDFILE_HEADERS)"
++	@echo "SNDFILE_LIBS=$(SNDFILE_LIBS)"
++	@echo "LV2_HEADERS=$(LV2_HEADERS)"
++	@echo "LV2_LIBS=$(LV2_LIBS)"
++	@echo "HOST_SNDFILE_HEADERS=$(HOST_SNDFILE_HEADERS)"
++	@echo "HOST_SNDFILE_LIBS=$(HOST_SNDFILE_LIBS)"
++	@echo "HOST_LV2_HEADERS=$(HOST_LV2_HEADERS)"
++	@echo "HOST_LV2_LIBS=$(HOST_LV2_LIBS)"
+ 	mkdir -p $(OBJDIR)/$(@)
+-	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ all \
++		CXX="$(CXX)" \
++		CXXFLAGS="$(CXXFLAGS)" \
++		LD="$(LD)" \
++		OBJDIR="$(OBJDIR)/$(@)" \
++		BUILD_PROFILE="$(BUILD_PROFILE)" \
++		SNDFILE_HEADERS="$(SNDFILE_HEADERS)" \
++		SNDFILE_LIBS="$(SNDFILE_LIBS)" \
++		LV2_HEADERS="$(LV2_HEADERS)" \
++		LV2_LIBS="$(LV2_LIBS)"
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+ 
++$(HOST_OBJ_CORE): core
++
+ $(OBJ_DSP): dsp
+ 
++$(HOST_OBJ_DSP): dsp
++
+ $(OBJ_PLUGINS): plugins
+ 
+ $(OBJ_METADATA): metadata
+ 
++$(HOST_OBJ_METADATA): metadata
++
+ $(OBJ_UI_CORE): ui
+ 
+ $(UTL_FILES): utils
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index fbddcaa..184bef0 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -4,15 +4,21 @@ ifneq ($(VERBOSE),1)
+ .SILENT:
+ endif
+ 
++CXX                     = $(HOST_CXX)
++CXXFLAGS                = $(HOST_CXXFLAGS)
++MAKE_OPTS              += CXX=$(HOST_CXX) CXXFLAGS=$(HOST_CXXFLAGS)
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS                 =
+-OBJ_FILES               = $(OBJ_CORE) $(OBJ_METADATA)
++OBJ_FILES               = $(HOST_OBJ_CORE) $(HOST_OBJ_METADATA) $(HOST_OBJ_DSP)
+ OBJ_LIBS                = $(PTHREAD_LIBS) $(MATH_LIBS)
+ OBJ_EXTRA               =
+ INCLUDE_EXTRA           =
+ 
++export PKG_CONFIG_SYSROOT_DIR = /
++
+ ifeq ($(BUILD_PLATFORM),BSD)
+   OBJ_LIBS               += $(ICONV_LIBS)
+ endif
+@@ -24,7 +30,7 @@ endif
+ ifeq ($(findstring lv2,$(BUILD_MODULES)),lv2)
+   MODULES                += $(UTL_GENTTL)
+   FILELIST               += lv2_genttl.o
+-  INCLUDE_EXTRA          += $(LV2_HEADERS)
++  INCLUDE_EXTRA          += $(HOST_LV2_HEADERS)
+ endif
+ ifeq ($(findstring vst,$(BUILD_MODULES)),vst)
+   MODULES                += $(UTL_VSTMAKE)
+@@ -50,32 +56,33 @@ target: all
+ # Common rules
+ $(SUBDIRS):
+ 	@echo "Building $@"
++	@echo "CXX=$(CXX)"
++	@echo "CXXFLAGS=$(CXXFLAGS)"
++	@echo "MAKE_OPTS=$(MAKE_OPTS)"
+ 	mkdir -p $(OBJDIR)/$(@)
+ 	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	@echo "  $(HOST_CXX) $(FILE)"
++	$(HOST_CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(HOST_CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+-$(UTL_GENTTL): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++$(UTL_GENTTL): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENTTL))"
++	$(HOST_CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+-$(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_JACKMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_JACKMAKE))"
++	$(HOST_CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_VSTMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_VSTMAKE))"
++	$(HOST_CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_GENPHP): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+-	
+-$(UTL_RESGEN): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+-
++$(UTL_GENPHP): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENPHP))"
++	$(HOST_CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
++$(UTL_RESGEN): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_RESGEN))"
++	$(HOST_CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_EXTRA) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+diff --git a/tmp/.gitignore b/tmp/.gitignore
+deleted file mode 100644
+index 22e8364..0000000
+--- a/tmp/.gitignore
++++ /dev/null
+@@ -1 +0,0 @@
+-/*
+\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-lv2/template b/srcpkgs/lsp-plugins-lv2/template
new file mode 100644
index 000000000000..e5cc81bed030
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/template
@@ -0,0 +1,90 @@
+# Template file for 'lsp-plugins-lv2'
+pkgname=lsp-plugins-lv2
+version=1.1.30
+revision=1
+wrksrc=lsp-plugins-${version}
+build_style=gnu-makefile
+make_build_args="VERBOSE=1"
+make_check_args=$make_build_args
+make_install_target="install install_xdg"
+make_use_env=yes
+hostmakedepends="pkg-config php lv2 libsndfile-devel"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel ladspa-sdk jack-devel"
+_desc="Collection of free audio plugins"
+short_desc="${_desc} - LV2"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/"
+distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+# https://github.com/sadko4u/lsp-plugins/issues/191#issuecomment-812847630
+if [ -n "$CROSS_BUILD" ]; then
+	echo "Cross"
+	export BUILD_ARCH=${XBPS_TARGET_MACHINE%%-musl}
+	export HOST_BUILD_PROFILE=${XBPS_MACHINE%%-musl}
+	export HOST_CXXFLAGS=$CXXFLAGS_host
+	export HOST_CXX=$CXX_host
+	export HOST_LD=$LD_host
+	echo "BUILD_CXXFLAGS ${CXXFLAGS_host}"
+	echo "BUILD_CXX      ${CXX_host}"
+	echo "BUILD_LD       ${LD_host}"
+	echo "BUILD_ARCH     ${BUILD_ARCH}"
+else
+	echo "Non cross"
+	export BUILD_ARCH=${XBPS_MACHINE%%-musl}
+	export HOST_BUILD_PROFILE=${XBPS_MACHINE%%-musl}
+	export HOST_CXXFLAGS=$BUILD_CXXFLAGS
+	export HOST_CXX=$BUILD_CXX
+	export HOST_LD=$BUILD_LD
+	echo "BUILD_ARCH    ${BUILD_ARCH}"
+	echo "HOST_CXXFLAGS ${HOST_CXXFLAGS}"
+	echo "HOST_CXX      ${HOST_CXX}"
+	echo "HOST_LD       ${HOST_LD}"
+fi
+
+do_check() {
+	export CXXFLAGS="$CXXFLAGS -DLSP_TESTING -DLSP_TRACE"
+	make ${makejobs} ${make_check_args} test
+	.test/lsp-plugins-test utest
+}
+
+lsp-plugins-jack_package() {
+	short_desc="${_desc} - JACK"
+	pkg_install() {
+		vmove usr/bin
+		vmove usr/lib/lsp-plugins/lsp-plugins-jack-core*
+		vmove usr/lib/lsp-plugins/lsp-plugins-r3d-glx.so
+		vmove usr/share/applications
+		vmove usr/share/desktop-directories
+		vmove usr/share/icons
+		vmove etc/xdg/menus
+	}
+}
+
+lsp-plugins-ladspa_package() {
+	short_desc="${_desc} - LADSPA"
+	pkg_install() {
+		vmove usr/lib/ladspa/lsp-plugins-ladspa.so
+	}
+}
+
+lsp-plugins-vst_package() {
+	short_desc="${_desc} - VST"
+	pkg_install() {
+		vmove usr/lib/vst
+	}
+}
+
+lsp-plugins_package() {
+	short_desc="${_desc} - LV2, JACK, LADSPA, VST"
+	depends="lsp-plugins-lv2 lsp-plugins-jack lsp-plugins-ladspa lsp-plugins-vst"
+	build_style=meta
+}
+
+lsp-plugins-doc_package() {
+	short_desc="${_desc} - documentation"
+	pkg_install() {
+		vmove usr/share/doc
+	}
+}
diff --git a/srcpkgs/lsp-plugins-vst b/srcpkgs/lsp-plugins-vst
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-vst
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Updated] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (53 preceding siblings ...)
  2021-08-02  2:34 ` Logarithmus
@ 2021-08-02  3:46 ` Logarithmus
  2021-08-02  3:57 ` Logarithmus
                   ` (12 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-08-02  3:46 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 2219 bytes --]

There is an updated pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.
Also used by `easyeffects`, `pulseeffects`' successor 
Continuation of https://github.com/void-linux/void-packages/pull/29932

TODO:
- [ ] wait for https://github.com/sadko4u/lsp-plugins/pull/198
- [ ] implement `VERBOSE` option into `lsp-plugins` Makefiles to save my sanity debugging them
https://github.com/sadko4u/lsp-plugins/pull/200
- [ ] polish & upstream cross build patch
- [ ] fix `i686`
- [ ] fix `armv6`
- [x] split the package (ladspa, lv2, vst, jack, doc)
- [ ] remove parallel check commit 

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 92323 bytes --]

From b31bc44e2e8a5f0de017b1155f5073e2b926481a Mon Sep 17 00:00:00 2001
From: Artur Sinila <freesoftware@logarithmus.dev>
Date: Mon, 5 Jul 2021 03:44:08 +0300
Subject: [PATCH 1/2] common/build-style/: enable running tests in parallel

---
 common/build-style/cmake.sh           | 6 +++++-
 common/build-style/configure.sh       | 6 +++++-
 common/build-style/gnu-configure.sh   | 6 +++++-
 common/build-style/gnu-makefile.sh    | 6 +++++-
 common/build-style/perl-module.sh     | 6 +++++-
 common/environment/setup/sourcepkg.sh | 3 ++-
 6 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/common/build-style/cmake.sh b/common/build-style/cmake.sh
index 401dabad31c8..c7ffd16fee21 100644
--- a/common/build-style/cmake.sh
+++ b/common/build-style/cmake.sh
@@ -113,7 +113,11 @@ do_check() {
 
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/configure.sh b/common/build-style/configure.sh
index 0963fc347934..b846a1a77572 100644
--- a/common/build-style/configure.sh
+++ b/common/build-style/configure.sh
@@ -29,7 +29,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-configure.sh b/common/build-style/gnu-configure.sh
index 8121136cd121..b09de442b05b 100644
--- a/common/build-style/gnu-configure.sh
+++ b/common/build-style/gnu-configure.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-makefile.sh b/common/build-style/gnu-makefile.sh
index d7ea148fc483..0f7afa7d3695 100644
--- a/common/build-style/gnu-makefile.sh
+++ b/common/build-style/gnu-makefile.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/perl-module.sh b/common/build-style/perl-module.sh
index b9a01b13cfa9..d47945b33d36 100644
--- a/common/build-style/perl-module.sh
+++ b/common/build-style/perl-module.sh
@@ -79,7 +79,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/environment/setup/sourcepkg.sh b/common/environment/setup/sourcepkg.sh
index bc06f745b78a..1fd541f1e715 100644
--- a/common/environment/setup/sourcepkg.sh
+++ b/common/environment/setup/sourcepkg.sh
@@ -13,7 +13,8 @@ unset -v cmake_builddir meson_builddir
 unset -v meson_crossfile
 unset -v gemspec
 unset -v go_import_path go_package go_mod_mode
-unset -v patch_args disable_parallel_build keep_libtool_archives make_use_env
+unset -v patch_args disable_parallel_build disable_parallel_check
+unset -v keep_libtool_archives make_use_env
 unset -v reverts subpackages makedepends hostmakedepends checkdepends depends restricted
 unset -v nopie build_options build_options_default bootstrap repository reverts
 unset -v CFLAGS CXXFLAGS FFLAGS CPPFLAGS LDFLAGS LD_LIBRARY_PATH

From ec3be1fe168889d2f7f012b570982ca5d26d6e25 Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH 2/2] New package: lsp-plugins-1.1.30

---
 srcpkgs/lsp-plugins                           |    1 +
 srcpkgs/lsp-plugins-doc                       |    1 +
 srcpkgs/lsp-plugins-jack                      |    1 +
 srcpkgs/lsp-plugins-ladspa                    |    1 +
 .../00-makefile-test-remove-cflags.patch      |   12 +
 srcpkgs/lsp-plugins-lv2/patches/01-musl.patch |  391 ++++++
 .../patches/02-make-verbose.patch             | 1082 +++++++++++++++++
 .../patches/03-improve-cross.patch            |  590 +++++++++
 srcpkgs/lsp-plugins-lv2/template              |   92 ++
 srcpkgs/lsp-plugins-vst                       |    1 +
 10 files changed, 2172 insertions(+)
 create mode 120000 srcpkgs/lsp-plugins
 create mode 120000 srcpkgs/lsp-plugins-doc
 create mode 120000 srcpkgs/lsp-plugins-jack
 create mode 120000 srcpkgs/lsp-plugins-ladspa
 create mode 100644 srcpkgs/lsp-plugins-lv2/patches/00-makefile-test-remove-cflags.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/patches/01-musl.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/patches/02-make-verbose.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/patches/03-improve-cross.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/template
 create mode 120000 srcpkgs/lsp-plugins-vst

diff --git a/srcpkgs/lsp-plugins b/srcpkgs/lsp-plugins
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-doc b/srcpkgs/lsp-plugins-doc
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-doc
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-jack b/srcpkgs/lsp-plugins-jack
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-jack
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-ladspa b/srcpkgs/lsp-plugins-ladspa
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-ladspa
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-lv2/patches/00-makefile-test-remove-cflags.patch b/srcpkgs/lsp-plugins-lv2/patches/00-makefile-test-remove-cflags.patch
new file mode 100644
index 000000000000..fd82f25d4a25
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/patches/00-makefile-test-remove-cflags.patch
@@ -0,0 +1,12 @@
+https://github.com/void-linux/void-packages/pull/29932#discussion_r605695858
+--- a/Makefile
++++ b/Makefile
+@@ -108,8 +108,6 @@ trace: export EXE_FLAGS     += -g3
+ trace: compile
+ 
+ test: OBJDIR                 = $(TESTDIR)
+-test: export CFLAGS         += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-test: export CXXFLAGS       += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
diff --git a/srcpkgs/lsp-plugins-lv2/patches/01-musl.patch b/srcpkgs/lsp-plugins-lv2/patches/01-musl.patch
new file mode 100644
index 000000000000..6dc08949a87a
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/patches/01-musl.patch
@@ -0,0 +1,391 @@
+diff --git a/TODO.txt b/TODO.txt
+index 4976293..3bb3db8 100644
+--- a/TODO.txt
++++ b/TODO.txt
+@@ -28,6 +28,11 @@
+ - Added possibility to change themes in runtime.
+ - Complicated plugin UIs now allow to switch between Advanced and Novice modes.
+ 
++=== 1.1.31 ===
++
++* Fixed X11 error handling routine that could crash under certain conditions.
++* Better support for musl libc (contributed by Artur Sinila).
++
+ *******************************************************************************
+ * New plugin check list before release
+ *******************************************************************************
+diff --git a/include/common/types.h b/include/common/types.h
+index dd1816e..59c794e 100644
+--- a/include/common/types.h
++++ b/include/common/types.h
+@@ -563,6 +563,12 @@
+     #define MINIMUM_ALIGN                   DEFAULT_ALIGN
+ #endif /* DEFAULT_ALIGN */
+ 
++//-----------------------------------------------------------------------------
++// Detect some libraries
++#ifdef __GLIBC__
++    #define USE_GLIBC                           __GLIBC__
++#endif /* GLIBC */
++
+ //-----------------------------------------------------------------------------
+ // Type definitions
+ __IF_32( typedef        uint32_t            umword_t );
+diff --git a/include/data/cvector.h b/include/data/cvector.h
+index eccc94a..17fe119 100644
+--- a/include/data/cvector.h
++++ b/include/data/cvector.h
+@@ -25,6 +25,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <sys/types.h>
+ 
+ #define CVECTOR_GROW        16
+ 
+diff --git a/include/test/main/executor.h b/include/test/main/executor.h
+index 0faf73f..5a0c016 100644
+--- a/include/test/main/executor.h
++++ b/include/test/main/executor.h
+@@ -633,7 +633,7 @@ namespace lsp
+     }
+ #endif /* PLATFORM_WINDOWS */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     void TestExecutor::start_memcheck(test::Test *v)
+     {
+         if (!pCfg->mtrace)
+diff --git a/include/test/main/types.h b/include/test/main/types.h
+index ef15800..0c5d7c2 100644
+--- a/include/test/main/types.h
++++ b/include/test/main/types.h
+@@ -42,7 +42,7 @@
+     #include <fcntl.h>
+ #endif /* PLATFORM_UNIX_COMPATIBLE */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     #include <mcheck.h>
+ #endif /* PLATFORM_LINUX */
+ 
+diff --git a/include/testing/mtest/3d/common/X11Renderer.h b/include/testing/mtest/3d/common/X11Renderer.h
+index e8ec205..f0a51e2 100644
+--- a/include/testing/mtest/3d/common/X11Renderer.h
++++ b/include/testing/mtest/3d/common/X11Renderer.h
+@@ -30,7 +30,7 @@
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include <rendering/backend.h>
+ #include <core/ipc/Library.h>
+diff --git a/src/testing/mtest/3d/boolean3d.cpp b/src/testing/mtest/3d/boolean3d.cpp
+deleted file mode 100644
+index 636dce1..0000000
+--- a/src/testing/mtest/3d/boolean3d.cpp
++++ /dev/null
+@@ -1,253 +0,0 @@
+-/*
+- * Copyright (C) 2020 Linux Studio Plugins Project <https://lsp-plug.in/>
+- *           (C) 2020 Vladimir Sadovnikov <sadko4u@gmail.com>
+- *
+- * This file is part of lsp-plugins
+- * Created on: 24 дек. 2018 г.
+- *
+- * lsp-plugins is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU Lesser General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * any later version.
+- *
+- * lsp-plugins is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU Lesser General Public License for more details.
+- *
+- * You should have received a copy of the GNU Lesser General Public License
+- * along with lsp-plugins. If not, see <https://www.gnu.org/licenses/>.
+- */
+-
+-#if 0
+-
+-#include <test/mtest.h>
+-#include <testing/mtest/3d/common/X11Renderer.h>
+-#include <core/files/Model3DFile.h>
+-#include <core/3d/rt_context.h>
+-#include <core/3d/RayTrace3D.h>
+-
+-#include <core/types.h>
+-#include <core/debug.h>
+-#include <core/sugar.h>
+-#include <core/status.h>
+-#include <stdlib.h>
+-#include <errno.h>
+-#include <data/cstorage.h>
+-
+-#include <X11/X.h>
+-#include <X11/Xlib.h>
+-#include <X11/keysymdef.h>
+-#include <GL/gl.h>
+-#include <GL/glx.h>
+-#include <GL/glu.h>
+-#include <sys/poll.h>
+-
+-//#define TEST_DEBUG
+-
+-#ifndef TEST_DEBUG
+-//    #define BREAKPOINT_STEP     -1
+-//    #define BREAKPOINT_STEP     27
+-//    #define BREAKPOINT_STEP     83
+-    #define BREAKPOINT_STEP     215
+-//    #define BREAKPOINT_STEP     0
+-
+-#else /* DEBUG */
+-    #define BREAKPOINT_STEP     0
+-#endif /* DEBUG */
+-
+-MTEST_BEGIN("3d", boolean)
+-
+-    class Renderer: public X11Renderer
+-    {
+-        private:
+-            Scene3D        *pScene;
+-            ssize_t         nTrace;
+-            bool            bDrawMatched;
+-            bool            bDrawIgnored;
+-            bool            bDrawDebug;
+-
+-        public:
+-            explicit Renderer(Scene3D *scene, View3D *view): X11Renderer(view)
+-            {
+-                pScene = scene;
+-                bDrawMatched    = true;
+-                bDrawIgnored    = true;
+-                bDrawDebug      = true;
+-                bDrawNormals    = false;
+-                nTrace          = BREAKPOINT_STEP;
+-
+-                update_view();
+-            }
+-
+-            virtual ~Renderer()
+-            {
+-            }
+-
+-        public:
+-            virtual void on_key_press(const XKeyEvent &ev, KeySym key)
+-            {
+-                switch (key)
+-                {
+-                    case XK_Up:
+-                        nTrace++;
+-                        lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                        update_view();
+-                        break;
+-                    case XK_Down:
+-                        if (nTrace >= 0)
+-                        {
+-                            nTrace--;
+-                            lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                            update_view();
+-                        }
+-                        break;
+-
+-                    case 'm':
+-                    {
+-                        bDrawMatched = ! bDrawMatched;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'i':
+-                    {
+-                        bDrawIgnored = ! bDrawIgnored;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'd':
+-                    {
+-                        bDrawDebug = ! bDrawDebug;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case '0': case '1': case '2': case '3': case '4':
+-                    case '5': case '6': case '7': case '8': case '9':
+-                    {
+-                        Object3D *obj = pScene->get_object(key - '0');
+-                        if (obj != NULL)
+-                        {
+-                            obj->set_visible(!obj->is_visible());
+-                            update_view();
+-                        }
+-                        break;
+-                    }
+-                    default:
+-                        X11Renderer::on_key_press(ev, key);
+-                        break;
+-                }
+-            }
+-
+-        protected:
+-            status_t perform_boolean(rt_debug_t *shared)
+-            {
+-                if (pScene->num_objects() <= 0)
+-                    return STATUS_OK;
+-
+-                rt_mesh_t mesh;
+-                mesh.set_debug_context(shared, &shared->trace);
+-
+-                Object3D *obj = pScene->object(0);
+-                status_t res = mesh.init(obj, 0, obj->matrix());
+-                if (res != STATUS_OK)
+-                    return res;
+-
+-                for (size_t i=1, n=pScene->num_objects(); i<n; ++i)
+-                {
+-                    obj = pScene->object(i);
+-                    res = mesh.subtract(obj, i, obj->matrix());
+-                    if (res != STATUS_OK)
+-                        return res;
+-                }
+-
+-                return STATUS_OK;
+-            }
+-
+-            status_t    update_view()
+-            {
+-                v_vertex3d_t v[3];
+-                status_t res = STATUS_OK;
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // List of ignored and matched triangles
+-                rt_debug_t global;
+-                global.breakpoint   = nTrace;
+-                global.step         = 0;
+-
+-                // Perform raytrace
+-                res     = perform_boolean(&global);
+-                if (res == STATUS_BREAKPOINT)
+-                {
+-                    pView->swap(&global.trace);
+-                    res         = STATUS_OK;
+-                }
+-
+-                if (!bDrawDebug)
+-                    pView->clear_all();
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // Build final scene from matched and ignored items
+-                if (bDrawIgnored)
+-                {
+-                    for (size_t i=0, m=global.ignored.size(); i < m; ++i)
+-                        pView->add_triangle_1c(global.ignored.at(i), &C_GRAY);
+-                }
+-
+-                if (bDrawMatched)
+-                {
+-                    for (size_t i=0, m=global.matched.size(); i < m; ++i)
+-                    {
+-                        v_triangle3d_t *t = global.matched.at(i);
+-                        v[0].p     = t->p[0];
+-                        v[0].n     = t->n[0];
+-                        v[0].c     = C_RED;
+-
+-                        v[1].p     = t->p[1];
+-                        v[1].n     = t->n[1];
+-                        v[1].c     = C_GREEN;
+-
+-                        v[2].p     = t->p[2];
+-                        v[2].n     = t->n[2];
+-                        v[2].c     = C_BLUE;
+-
+-                        pView->add_triangle(v);
+-                    }
+-                }
+-
+-                global.ignored.flush();
+-                global.matched.flush();
+-
+-                return res;
+-            }
+-    };
+-
+-    MTEST_MAIN
+-    {
+-        const char *scene_file = (argc < 1) ? "res/test/3d/cross.obj" : argv[0];
+-
+-        // Load scene
+-        Scene3D s;
+-        View3D v;
+-        status_t res = Model3DFile::load(&s, scene_file, true);
+-        MTEST_ASSERT_MSG(res == STATUS_OK, "Error loading scene from file %s", scene_file);
+-
+-        // Initialize renderer
+-        Renderer r(&s, &v);
+-        MTEST_ASSERT_MSG(r.init() == STATUS_OK, "Error initializing renderer");
+-        r.run();
+-        r.destroy();
+-
+-        // Destroy scene
+-        s.destroy();
+-    }
+-
+-MTEST_END
+-
+-#endif
+diff --git a/src/testing/mtest/3d/bsp_context.cpp b/src/testing/mtest/3d/bsp_context.cpp
+index de54427..f7b7a34 100644
+--- a/src/testing/mtest/3d/bsp_context.cpp
++++ b/src/testing/mtest/3d/bsp_context.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/reflections3d.cpp b/src/testing/mtest/3d/reflections3d.cpp
+index e250444..367f86c 100644
+--- a/src/testing/mtest/3d/reflections3d.cpp
++++ b/src/testing/mtest/3d/reflections3d.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/ui/ws/x11/X11Display.cpp b/src/ui/ws/x11/X11Display.cpp
+index d85db51..987e8a9 100644
+--- a/src/ui/ws/x11/X11Display.cpp
++++ b/src/ui/ws/x11/X11Display.cpp
+@@ -23,7 +23,7 @@
+ 
+ #ifdef USE_X11_DISPLAY
+ 
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ 
+@@ -233,7 +233,7 @@ namespace lsp
+                 while (!atomic_cas(&hLock, 0, 1)) { /* Wait */ }
+ 
+                 // Dispatch errors between Displays
+-                for (X11Display *dp = pHandlers; dp != NULL; ++dp)
++                for (X11Display *dp = pHandlers; dp != NULL; dp = dp->pNextHandler)
+                     if (dp->pDisplay == dpy)
+                         dp->handle_error(ev);
+ 
diff --git a/srcpkgs/lsp-plugins-lv2/patches/02-make-verbose.patch b/srcpkgs/lsp-plugins-lv2/patches/02-make-verbose.patch
new file mode 100644
index 000000000000..d6c4f6ce2f92
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/patches/02-make-verbose.patch
@@ -0,0 +1,1082 @@
+diff --git a/Makefile b/Makefile
+index 2d9cb79..79ddcc6 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ # Common definitions
+ RELEASE_TEXT            = LICENSE.txt README.txt CHANGELOG.txt
+ RELEASE_SRC             = $(RELEASE_TEXT) src build-*.sh include res Makefile release.sh
+@@ -166,24 +172,24 @@ compile_info:
+ 	@echo "-------------------------------------------------------------------------------"
+ 
+ compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@mkdir -p $(CFGDIR)
+-	@test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
+-	@test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
+-	@test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
+-	@test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++	mkdir -p $(OBJDIR)/src
++	mkdir -p $(CFGDIR)
++	test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
++	test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
++	test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
++	test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Build OK"
+ 	
+ test_compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++	mkdir -p $(OBJDIR)/src
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
+ clean:
+-	@-rm -rf $(BUILDDIR)
+-	@-rm -rf $(TESTDIR)
+-	@-rm -rf $(CFGDIR)
++	-rm -rf $(BUILDDIR)
++	-rm -rf $(TESTDIR)
++	-rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+ 
+ # Build targets
+@@ -209,63 +215,63 @@ install: $(INSTALLATIONS)
+ 
+ install_ladspa: all
+ 	@echo "Installing LADSPA plugins to $(DESTDIR)$(LADSPA_PATH)/"
+-	@mkdir -p $(DESTDIR)$(LADSPA_PATH)
+-	@$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
++	mkdir -p $(DESTDIR)$(LADSPA_PATH)
++	$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
+ 	
+ install_lv2: all
+ 	@echo "Installing LV2 plugins to $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
+-	@$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
++	$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+ 	
+ install_vst: all
+ 	@echo "Installing VST plugins to $(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+-	@$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
++	$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+ 
+ install_jack: all
+ 	@echo "Installing JACK core to $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
++	$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+ 	@echo "Installing JACK standalone plugins to $(DESTDIR)$(BIN_PATH)"
+-	@mkdir -p "$(DESTDIR)$(BIN_PATH)"
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
++	mkdir -p "$(DESTDIR)$(BIN_PATH)"
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
+ 
+ install_xdg:
+ 	@echo "Installing desktop icons to $(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
+-	@mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
+-	@cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
+-	@cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
+-	@cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
+-	@cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
++	mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
++	cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
++	cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
++	cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
++	cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
+ 
+ install_doc: all
+ 	@echo "Installing documentation to $(DESTDIR)$(DOC_PATH)"
+-	@mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+ # Release targets
+ dbg_release: export CFLAGS        += -DLSP_TRACE -O2
+@@ -279,67 +285,67 @@ release: $(RELEASES)
+ 
+ release_prepare: all
+ 	@echo "Releasing plugins for architecture $(BUILD_PROFILE)"
+-	@mkdir -p $(RELEASE)
+-	@mkdir -p $(DESTDIR)
++	mkdir -p $(RELEASE)
++	mkdir -p $(DESTDIR)
+ 	
+ release_ladspa: DESTDIR=$(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_ladspa: | release_prepare install_ladspa
+ 	@echo "Releasing LADSPA binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_lv2: DESTDIR=$(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_lv2: | release_prepare install_lv2
+ 	@echo "Releasing LV2 binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_vst: DESTDIR=$(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_vst: | release_prepare install_vst
+ 	@echo "Releasing VST binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_jack: DESTDIR=$(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_jack: | release_prepare install_jack
+ 	@echo "Releasing JACK binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 
+ release_profile: DESTDIR=$(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_profile: | release_prepare
+ 	@echo "Releasing PROFILE binaries"
+-	@$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ 
+ release_src: DESTDIR=$(RELEASE)/$(SRC_ID)
+ release_src: | release_prepare
+ 	@echo "Releasing source code binaries"
+-	@mkdir -p $(DESTDIR)
+-	@mkdir -p $(DESTDIR)/scripts
+-	@cp -R $(RELEASE_SRC) $(DESTDIR)/
+-	@cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	mkdir -p $(DESTDIR)/scripts
++	cp -R $(RELEASE_SRC) $(DESTDIR)/
++	cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
++	rm -rf $(DESTDIR)
+ 
+ release_doc: DESTDIR=$(RELEASE)/$(DOC_ID)
+ release_doc: | release_prepare
+ 	@echo "Releasing documentation"
+-	@mkdir -p $(DESTDIR)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
++	rm -rf $(DESTDIR)
+ 
+ # Unrelease target
+ unrelease: clean
+-	@-rm -rf $(RELEASE)
++	-rm -rf $(RELEASE)
+ 	@echo "Unrelease OK"
+ 
+ # Uninstall target
+@@ -348,41 +354,41 @@ uninstall: $(UNINSTALLATIONS)
+ 	
+ uninstall_ladspa:
+ 	@echo "Uninstalling LADSPA"
+-	@-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
++	-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
+ 	
+ uninstall_lv2:
+ 	@echo "Uninstalling LV2"
+-	@-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
++	-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
+ 	
+ uninstall_vst:
+ 	@echo "Uninstalling VST"
+-	@-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
++	-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
++	-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
++	-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
+ 	
+ uninstall_jack:
+ 	@echo "Uninstalling JACK"
+-	@-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
+-	@-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
++	-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
++	-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
++	-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
++	-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
+ 
+ uninstall_xdg:
+ 	@echo "Uninstalling desktop icons"
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
+-	@-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
++	-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
++	-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
+ 
+ uninstall_doc:
+ 	@echo "Uninstalling DOC"
+-	@-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+diff --git a/TODO.txt b/TODO.txt
+index 3bb3db8..f8562ef 100644
+--- a/TODO.txt
++++ b/TODO.txt
+@@ -32,6 +32,7 @@
+ 
+ * Fixed X11 error handling routine that could crash under certain conditions.
+ * Better support for musl libc (contributed by Artur Sinila).
++* Added support of VERBOSE parameter for build system (contributed by Artur Sinila).
+ 
+ *******************************************************************************
+ * New plugin check list before release
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 1fb917e..565dbb1 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -25,7 +25,6 @@ CXX                      ?= $(TOOL_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
+ 
+-MAKE_OPTS                 = -s
+ CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+@@ -62,7 +61,6 @@ export CXX
+ export PHP
+ export LD
+ 
+-export MAKE_OPTS
+ export CFLAGS
+ export CXXFLAGS
+ export SO_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index 8546191..d960ad8 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+@@ -58,6 +64,7 @@ ifeq ($(NEED_UI),1)
+   CONTAINER_DEPS         += $(OBJ_UI_CORE) $(OBJ_RES_CORE) rendering
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all $(MODULES)
+ 
+ all: $(MODULES)
+@@ -67,8 +74,8 @@ target: all
+ # Rules
+ $(SUBDIRS):
+ 	@echo "Building $(@)"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+@@ -93,10 +100,10 @@ $(OBJ_TESTING_CORE): test testing rendering
+ 
+ $(OBJ_RES_CORE): $(OBJ_CORE) $(UTL_RESGEN)
+ 	@echo "Generating builtin resources"
+-	@mkdir -p $(OBJDIR)/res
+-	@$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	mkdir -p $(OBJDIR)/res
++	$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
++	-rm gmon.out >/dev/null 2>&1
++	$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ # Target dependencies
+ container: $(CONTAINER_DEPS)
+@@ -108,18 +115,18 @@ doc: utils $(PHP_PLUGINS)
+ # Additional processing
+ $(PHP_PLUGINS): $(UTL_GENPHP)
+ 	@echo "Generating PHP file $(notdir $(PHP_PLUGINS))"
+-	@$(UTL_GENPHP) $(PHP_PLUGINS)
++	$(UTL_GENPHP) $(PHP_PLUGINS)
+ 
+ vst_stub: $(UTL_VSTMAKE)
+ 	@echo "Building VST stub"
+-	@mkdir -p $(OBJDIR)/vst
+-	@$(UTL_VSTMAKE) $(OBJDIR)/vst
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
++	mkdir -p $(OBJDIR)/vst
++	$(UTL_VSTMAKE) $(OBJDIR)/vst
++	-rm gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
+ 
+ jack_stub: $(UTL_JACKMAKE)
+ 	@echo "Building JACK stub"
+-	@mkdir -p $(OBJDIR)/jack
+-	@$(UTL_JACKMAKE) $(OBJDIR)/jack
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
++	mkdir -p $(OBJDIR)/jack
++	$(UTL_JACKMAKE) $(OBJDIR)/jack
++	-rm gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
+diff --git a/src/container/Makefile b/src/container/Makefile
+index 8aa8196..23a2e7a 100644
+--- a/src/container/Makefile
++++ b/src/container/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ OBJ_HELPERS             = $(OBJDIR)/CairoCanvas.o
+@@ -53,46 +59,47 @@ ifeq ($(VST_UI),1)
+   X_VST_LIBS             += $(UI_LIBS)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(MODULES)
+ 
+ $(OBJ_HELPERS):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
+ 
+ $(LIB_LADSPA):
+ 	@echo "  $(CXX) ladspa.cpp"
+-	@$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_LADSPA))"
+-	@$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
++	$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
+ 
+ $(LIB_LV2): $(X_LV2_DEPS)
+ 	@echo "  $(CXX) lv2.cpp"
+-	@$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
+-	@echo "  $(CXX) $(notdir $(X_LIB_LV2))"
+-	@$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
++	$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
++	@echo "  $(CXX) $(notdir $(LIB_LV2))"
++	$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
+ 
+ $(LIB_VST):
+ 	@echo "  $(CXX) vst.cpp"
+-	@$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_VST))"
+-	@$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
++	$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
+ 
+ $(LIB_JACK): $(OBJ_HELPERS)
+ 	@echo "  $(CXX) jack.cpp"
+-	@$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
++	$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
+ 	@echo "  $(CXX) $(notdir $(LIB_JACK))"
+-	@$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
++	$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
+ 
+ $(BIN_PROFILE): $(LIB_JACK)
+ 	@echo "  $(CXX) profile.cpp"
+-	@$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_PROFILE))"
+-	@$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
++	$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
+ 
+ $(BIN_TEST): $(LIB_JACK)
+ 	@echo "  $(CXX) test.cpp"
+-	@$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_TEST))"
+-	@$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
++	$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
+diff --git a/src/core/Makefile b/src/core/Makefile
+index a9ce1a5..3ad14a5 100644
+--- a/src/core/Makefile
++++ b/src/core/Makefile
+@@ -1,18 +1,25 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(SNDFILE_HEADERS)
+ LIBS                    = $(PTHREAD_LIBS)
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(OBJ_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
+ 
+ $(OBJ_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_CORE))"
+-	@$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
++	$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
+diff --git a/src/doc/Makefile b/src/doc/Makefile
+index aac73bf..f7f18a1 100644
+--- a/src/doc/Makefile
++++ b/src/doc/Makefile
+@@ -1,6 +1,13 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ PHPDIR      = $(BUILDDIR)/src/doc
+ HTMLDIR     = $(BUILDDIR)/html
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -8,14 +15,14 @@ target: all
+ # Common rules
+ $(PHPDIR)/Makefile:
+ 	@echo "Preparing PHP documentation generator"
+-	@mkdir -p $(PHPDIR)
+-	@mkdir -p $(HTMLDIR)
+-	@cp -rf * $(PHPDIR)/
+-	@cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
+-	@cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
+-	@cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
+-	@$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
++	mkdir -p $(PHPDIR)
++	mkdir -p $(HTMLDIR)
++	cp -rf * $(PHPDIR)/
++	cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
++	cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
++	cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
++	$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
+ 
+ all: $(PHPDIR)/Makefile
+ 	@echo "Generating HTML documentation"
+-	@$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
++	$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
+diff --git a/src/dsp/Makefile b/src/dsp/Makefile
+index f3d9ab1..aac8007 100644
+--- a/src/dsp/Makefile
++++ b/src/dsp/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ NATIVE_IMPL             = $(OBJDIR)/native.o
+ 
+ X86_IMPL                = $(OBJDIR)/x86.o
+@@ -51,6 +57,7 @@ ifeq ($(BUILD_PROFILE), aarch64)
+ LINK_OBJECTS           += $(AARCH64_IMPL) $(ASIMD_IMPL)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -59,41 +66,41 @@ all: $(OBJ_DSP)
+ 
+ $(OBJ_DSP): $(LINK_OBJECTS)
+ 	@echo "  $(LD) $(notdir $(OBJ_DSP))"
+-	@$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
++	$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
+ 
+ $(DSP_IMPL) $(BITS_IMPL) $(NATIVE_IMPL) $(X86_IMPL) $(ARM_IMPL) $(AARCH64_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	
+ $(SSE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE3_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE4_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
+ 	
+ $(NEON_D32_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
+ 	
+ $(ASIMD_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
+ 
+diff --git a/src/metadata/Makefile b/src/metadata/Makefile
+index 201f89a..403f38a 100644
+--- a/src/metadata/Makefile
++++ b/src/metadata/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -10,8 +16,8 @@ target: all
+ 
+ $(OBJ_METADATA): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_METADATA))"
+-	@$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+diff --git a/src/plugins/Makefile b/src/plugins/Makefile
+index 1f197dc..85963ba 100644
+--- a/src/plugins/Makefile
++++ b/src/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,8 +14,8 @@ all:  $(OBJ_PLUGINS)
+ 
+ $(OBJ_PLUGINS): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(OBJ_PLUGINS))"
+-	@$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
++	$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
+diff --git a/src/rendering/Makefile b/src/rendering/Makefile
+index 897e327..65f3237 100644
+--- a/src/rendering/Makefile
++++ b/src/rendering/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ BASE_IMPL             	= $(OBJDIR)/base_backend.o
+ 
+ GLX_IMPL                = $(OBJDIR)/glx/backend.o $(OBJDIR)/glx/factory.o
+@@ -20,15 +26,15 @@ all: $(MODULES)
+ 
+ $(LIB_R3D_GLX): $(BASE_IMPL) $(GLX_IMPL)
+ 	@echo "  $(CXX) $(notdir $(LIB_R3D_GLX))"
+-	@$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
++	$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
+ 
+ $(BASE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 	
+ $(GLX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $(@))
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
++	mkdir -p $(dir $(@))
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
+ 
+ 
+diff --git a/src/test/Makefile b/src/test/Makefile
+index e8016e1..a89366e 100644
+--- a/src/test/Makefile
++++ b/src/test/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TEST_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TEST_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TEST_CORE))"
+-	@$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/testing/Makefile b/src/testing/Makefile
+index 705913d..d048065 100644
+--- a/src/testing/Makefile
++++ b/src/testing/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TESTING_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TESTING_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TESTING_CORE))"
+-	@$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/ui/Makefile b/src/ui/Makefile
+index 503111d..eb1e4c5 100644
+--- a/src/ui/Makefile
++++ b/src/ui/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= ws tk ctl plugins
+@@ -8,15 +14,15 @@ PACKAGES                = $(OBJ_WS_CORE) $(OBJ_TK_CORE) $(OBJ_CTL_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_UI_CORE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_UI_CORE)
+diff --git a/src/ui/ctl/Makefile b/src/ui/ctl/Makefile
+index 3f727db..692fe9d 100644
+--- a/src/ui/ctl/Makefile
++++ b/src/ui/ctl/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_CTL_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_CTL_CORE) $(SUBDIRS)
+diff --git a/src/ui/plugins/Makefile b/src/ui/plugins/Makefile
+index 8f8db8f..0e6c3d8 100644
+--- a/src/ui/plugins/Makefile
++++ b/src/ui/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_PLUGIN_UIS): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_PLUGIN_UIS) $(SUBDIRS)
+diff --git a/src/ui/tk/Makefile b/src/ui/tk/Makefile
+index 8700f63..cfb4c78 100644
+--- a/src/ui/tk/Makefile
++++ b/src/ui/tk/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -6,11 +12,11 @@ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_TK_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_TK_CORE)
+diff --git a/src/ui/ws/Makefile b/src/ui/ws/Makefile
+index 1109752..b9836d8 100644
+--- a/src/ui/ws/Makefile
++++ b/src/ui/ws/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= x11
+@@ -8,15 +14,15 @@ all: $(OBJ_WS_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ $(OBJ_WS_CORE): $(FILES) $(OBJ_WS_X11_CORE)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
++	$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
+ 
+ $(OBJ_WS_X11_CORE): $(SUBDIRS)
+diff --git a/src/ui/ws/x11/Makefile b/src/ui/ws/x11/Makefile
+index b99e93d..7bffca3 100644
+--- a/src/ui/ws/x11/Makefile
++++ b/src/ui/ws/x11/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(XLIB_HEADERS) $(CAIRO_HEADERS)
+@@ -8,9 +14,9 @@ all: $(OBJ_WS_X11_CORE)
+ 
+ $(OBJ_WS_X11_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
++	$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index 88b3739..fbddcaa 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -44,32 +50,32 @@ target: all
+ # Common rules
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+ $(UTL_GENTTL): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	@$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++	$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+ $(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	@$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	@$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_GENPHP): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	@$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_RESGEN): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	@$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 
+-	
+\ No newline at end of file
++	
+diff --git a/src/utils/jack_genmake.cpp b/src/utils/jack_genmake.cpp
+index 09974b0..3272ad8 100644
+--- a/src/utils/jack_genmake.cpp
++++ b/src/utils/jack_genmake.cpp
+@@ -97,6 +97,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%=%%.cpp)\n");
+@@ -107,11 +112,11 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
+ 
+         fprintf(out, "install: $(FILES)\n");
+-        fprintf(out, "\t@$(INSTALL) $(FILES) $(TARGET_PATH)/");
++        fprintf(out, "\t$(INSTALL) $(FILES) $(TARGET_PATH)/");
+ 
+         // Close file
+         fclose(out);
+diff --git a/src/utils/vst_genmake.cpp b/src/utils/vst_genmake.cpp
+index 9eeedeb..f47f783 100644
+--- a/src/utils/vst_genmake.cpp
++++ b/src/utils/vst_genmake.cpp
+@@ -100,6 +100,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%.so, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%.so=%%.cpp)\n");
+@@ -110,8 +115,8 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
+ 
+         // Close file
+         fclose(out);
diff --git a/srcpkgs/lsp-plugins-lv2/patches/03-improve-cross.patch b/srcpkgs/lsp-plugins-lv2/patches/03-improve-cross.patch
new file mode 100644
index 000000000000..8bec1ff5eec7
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/patches/03-improve-cross.patch
@@ -0,0 +1,590 @@
+diff --git a/.gitignore b/.gitignore
+index 5bc0ecb..4a1edec 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -3,6 +3,7 @@
+ /design/*
+ /.builconfig/*
+ /.build/*
++/.host_build/*
+ /.buildconfig/*
+ /.test/*
+ /.release/*
+diff --git a/.gitmodules b/.gitmodules
+index ac5ea32..4480c1f 100644
+--- a/.gitmodules
++++ b/.gitmodules
+@@ -1,3 +1,3 @@
+ [submodule "Polynomial-Wiener-Hammerstein"]
+ 	path = Polynomial-Wiener-Hammerstein
+-	url = ../../CrocoDuckoDucks/Polynomial-Wiener-Hammerstein.git
++	url = https://github.com/CrocoDuckoDucks/Polynomial-Wiener-Hammerstein
+diff --git a/Makefile b/Makefile
+index 79ddcc6..34ccb79 100644
+--- a/Makefile
++++ b/Makefile
+@@ -24,8 +24,10 @@ export RESDIR           = ${CURDIR}/res
+ export RELEASE          = ${CURDIR}/.release
+ export RELEASE_BIN      = $(RELEASE)/$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ export BUILDDIR         = ${CURDIR}/.build
++export HOST_BUILDDIR    = ${CURDIR}/.host_build
+ export TESTDIR          = ${CURDIR}/.test
+ OBJDIR                  = $(BUILDDIR)
++export HOST_OBJDIR      = $(HOST_BUILDDIR)
+ 
+ # Installation locations
+ BIN_PATH               ?= $(PREFIX)/bin
+@@ -41,20 +43,23 @@ VST_PATH                = $(LIB_PATH)/vst
+ export BASEDIR          = ${CURDIR}
+ 
+ # Objects
+-export OBJ_CORE         = $(OBJDIR)/core.o
+-export OBJ_DSP          = $(OBJDIR)/dsp.o
+-export OBJ_CTL_CORE     = $(OBJDIR)/ctl_core.o
+-export OBJ_TK_CORE      = $(OBJDIR)/tk_core.o
+-export OBJ_WS_CORE      = $(OBJDIR)/ws_core.o
+-export OBJ_WS_X11_CORE  = $(OBJDIR)/ws_x11_core.o
+-export OBJ_UI_CORE      = $(OBJDIR)/ui_core.o
+-export OBJ_RES_CORE     = $(OBJDIR)/res_core.o
+-export OBJ_TEST_CORE    = $(OBJDIR)/test_core.o
+-export OBJ_TESTING_CORE = $(OBJDIR)/testing_core.o
+-export OBJ_PLUGINS      = $(OBJDIR)/plugins.o
+-export OBJ_PLUGIN_UIS	= $(OBJDIR)/plugin_uis.o
+-export OBJ_METADATA     = $(OBJDIR)/metadata.o
+-export OBJ_FILES        = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
++export OBJ_CORE          = $(OBJDIR)/core.o
++export HOST_OBJ_CORE     = $(HOST_OBJDIR)/core.o
++export OBJ_DSP           = $(OBJDIR)/dsp.o
++export HOST_OBJ_DSP      = $(HOST_OBJDIR)/dsp.o
++export OBJ_CTL_CORE      = $(OBJDIR)/ctl_core.o
++export OBJ_TK_CORE       = $(OBJDIR)/tk_core.o
++export OBJ_WS_CORE       = $(OBJDIR)/ws_core.o
++export OBJ_WS_X11_CORE   = $(OBJDIR)/ws_x11_core.o
++export OBJ_UI_CORE       = $(OBJDIR)/ui_core.o
++export OBJ_RES_CORE      = $(OBJDIR)/res_core.o
++export OBJ_TEST_CORE     = $(OBJDIR)/test_core.o
++export OBJ_TESTING_CORE  = $(OBJDIR)/testing_core.o
++export OBJ_PLUGINS       = $(OBJDIR)/plugins.o
++export OBJ_PLUGIN_UIS	 = $(OBJDIR)/plugin_uis.o
++export OBJ_METADATA      = $(OBJDIR)/metadata.o
++export HOST_OBJ_METADATA = $(HOST_OBJDIR)/metadata.o
++export OBJ_FILES         = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
+ 
+ # Libraries
+ export LIB_LADSPA       = $(OBJDIR)/$(ARTIFACT_ID)-ladspa.so
+@@ -68,11 +73,14 @@ export BIN_PROFILE      = $(OBJDIR)/$(ARTIFACT_ID)-profile
+ export BIN_TEST         = $(OBJDIR)/$(ARTIFACT_ID)-test
+ 
+ # Utils
+-export UTL_GENTTL       = $(OBJDIR)/lv2_genttl.exe
+-export UTL_VSTMAKE      = $(OBJDIR)/vst_genmake.exe
+-export UTL_JACKMAKE     = $(OBJDIR)/jack_genmake.exe
+-export UTL_GENPHP       = $(OBJDIR)/gen_php.exe
+-export UTL_RESGEN       = $(OBJDIR)/gen_resources.exe
++ifeq ($(BUILD_SYSTEM),Windows)
++  BIN_SUFFIX := .exe
++endif
++export UTL_GENTTL       = $(HOST_OBJDIR)/lv2_genttl$(BIN_SUFFIX)
++export UTL_VSTMAKE      = $(HOST_OBJDIR)/vst_genmake$(BIN_SUFFIX)
++export UTL_JACKMAKE     = $(HOST_OBJDIR)/jack_genmake$(BIN_SUFFIX)
++export UTL_GENPHP       = $(HOST_OBJDIR)/gen_php$(BIN_SUFFIX)
++export UTL_RESGEN       = $(HOST_OBJDIR)/gen_resources$(BIN_SUFFIX)
+ export UTL_FILES        = $(UTL_GENTTL) $(UTL_VSTMAKE) $(UTL_GENPHP) $(UTL_RESGEN)
+ 
+ # Files
+@@ -102,7 +110,8 @@ default: all
+ all: export CFLAGS          += -O2 -DLSP_NO_EXPERIMENTAL
+ all: export CXXFLAGS        += -O2 -DLSP_NO_EXPERIMENTAL
+ all: export EXE_FLAGS       += -pie -fPIE
+-all: compile
++all: utils compile
++
+ 
+ experimental: export CFLAGS += -O2
+ experimental: export CXXFLAGS += -O2
+@@ -161,14 +170,14 @@ profile: compile
+ compile_info:
+ 	@echo "-------------------------------------------------------------------------------"
+ 	@echo "Building binaries"
+-	@echo "  target architecture : $(BUILD_PROFILE)"
+-	@echo "  target platform     : $(BUILD_PLATFORM)"
+-	@echo "  target system       : $(BUILD_SYSTEM)"
+-	@echo "  compiler            : $(BUILD_COMPILER)"
+-	@echo "  modules             : $(BUILD_MODULES)"
+-	@echo "  UI                  : LV2=$(LV2_UI), VST=$(VST_UI)"
+-	@echo "  3D rendering        : $(BUILD_R3D_BACKENDS)"
+-	@echo "  build directory     : $(OBJDIR)"
++	@echo "  platform             : $(BUILD_PLATFORM)"
++	@echo "  system               : $(BUILD_SYSTEM)"
++	@echo "  target compiler      : $(CXX)"
++	@echo "  target architecture  : $(BUILD_PROFILE)"
++	@echo "  modules              : $(BUILD_MODULES)"
++	@echo "  UI                   : LV2=$(LV2_UI), VST=$(VST_UI)"
++	@echo "  3D rendering         : $(BUILD_R3D_BACKENDS)"
++	@echo "  build directory      : $(OBJDIR)"
+ 	@echo "-------------------------------------------------------------------------------"
+ 
+ compile: | compile_info
+@@ -186,8 +195,32 @@ test_compile: | compile_info
+ 	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
++utils: export BUILD_PROFILE=$(HOST_BUILD_PROFILE)
++utils: export OBJDIR=$(HOST_OBJDIR)
++utils: export OBJ_CORE=$(HOST_OBJ_CORE)
++utils: export OBJ_DSP=$(HOST_OBJ_DSP)
++utils: export OBJ_METADATA=$(HOST_OBJ_METADATA)
++utils: export CXX=$(HOST_CXX)
++utils: export CXXFLAGS=$(HOST_CXXFLAGS)
++utils: export LD=$(HOST_LD)
++utils: export SNDFILE_HEADERS=$(HOST_SNDFILE_HEADERS)
++utils: export SNDFILE_LIBS=$(HOST_SNDFILE_LIBS)
++utils: export LV2_HEADERS=$(HOST_LV2_HEADERS)
++utils: export LV2_LIBS=$(HOST_LV2_LIBS)
++utils: | compile_info
++	@echo "CXX $(CXX)"
++	@echo "CXXFLAGS $(CXXFLAGS)"
++	@echo "LD $(LD)"
++	@echo "BUILD_PROFILE $(BUILD_PROFILE)"
++	@echo "OBJ_DSP $(OBJ_DSP)"
++	@echo "OBJ_CORE $(OBJ_CORE)"
++	mkdir -p $(HOST_OBJDIR)/src/utils
++	$(MAKE) $(MAKE_OPTS) -C src utils
++	@echo "Utils Build OK"
++
+ clean:
+ 	-rm -rf $(BUILDDIR)
++	-rm -rf $(HOST_BUILDDIR)
+ 	-rm -rf $(TESTDIR)
+ 	-rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+diff --git a/include/metadata/metadata.h b/include/metadata/metadata.h
+index 0efaa9d..e009750 100644
+--- a/include/metadata/metadata.h
++++ b/include/metadata/metadata.h
+@@ -73,10 +73,18 @@
+     #define LSP_ARCHITECTURE                                "unknown"
+ #endif /* ARCH */
+ 
++#define STRINGIFY_(x) #x
++#define STRINGIFY(x) STRINGIFY_(x)
++
+ #ifndef LSP_MAIN_VERSION
+     #define LSP_MAIN_VERSION                                "0.0.0"
++#else
++    #define LSP_MAIN_VERSION_STR STRINGIFY(LSP_MAIN_VERSION)
++    #undef LSP_MAIN_VERSION
++    #define LSP_MAIN_VERSION LSP_MAIN_VERSION_STR
+ #endif /* LSP_MAIN_VERSION */
+ 
++
+ #define LSP_LV2_LATENCY_PORT                            "out_latency"
+ #define LSP_LV2_ATOM_PORT_IN                            "in_ui"
+ #define LSP_LV2_MIDI_PORT_IN                            "in_midi"
+@@ -86,7 +94,7 @@
+ #define LSP_LV2_OSC_PORT_OUT                            "out_osc"
+ 
+ #ifdef LSP_INSTALL_PREFIX
+-    #define LSP_LIB_PREFIX(x)       LSP_INSTALL_PREFIX x
++    #define LSP_LIB_PREFIX(x)       STRINGIFY(LSP_INSTALL_PREFIX) x
+ #else
+     #define LSP_LIB_PREFIX(x)       x
+ #endif /* PREFIX */
+diff --git a/scripts/make/configure.mk b/scripts/make/configure.mk
+index 09aee9a..84c7018 100644
+--- a/scripts/make/configure.mk
++++ b/scripts/make/configure.mk
+@@ -14,7 +14,8 @@ ifndef BUILD_R3D_BACKENDS
+   BUILD_R3D_BACKENDS     := $(shell if (test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" )  then cat "$(CFGDIR)/$(R3D_BACKENDS_FILE)" 2>/dev/null; else echo "glx"; fi;)
+ endif
+ 
+-BUILD_COMPILER         := $(shell $(CC) --version | head -n 1 || echo "unknown")
++BUILD_COMPILER         := $(shell $(CXX) --version | head -n 1 || echo "unknown")
++HOST_BUILD_COMPILER    := $(shell $(HOST_CXX) --version | head -n 1 || echo "unknown")
+ 
+ export BUILD_MODULES
+ export BUILD_R3D_BACKENDS
+@@ -23,7 +24,7 @@ export BUILD_R3D_BACKENDS
+ INSTALLATIONS           =
+ UNINSTALLATIONS         = uninstall_xdg
+ RELEASES                =
+-INCLUDE                 = -I"${CURDIR}/include"
++INCLUDE                 := -I"${CURDIR}/include"
+ 
+ ifeq ($(findstring ladspa,$(BUILD_MODULES)),ladspa)
+   INSTALLATIONS          += install_ladspa
+@@ -63,61 +64,62 @@ LD_ARCH         =
+ CC_ARCH         =
+ 
+ # Build profile
+-ifeq ($(BUILD_PROFILE),i586)
+-  CC_ARCH          = -m32
+-  ifeq ($(BUILD_PLATFORM), Linux)
+-    LD_ARCH          = -m elf_i386
++ifneq ($(SKIP_CC_LD_ARCH),)
++  ifeq ($(BUILD_PROFILE),i586)
++    CC_ARCH          = -m32
++    ifeq ($(BUILD_PLATFORM), Linux)
++      LD_ARCH          = -m elf_i386
++    endif
++    ifeq ($(BUILD_PLATFORM), BSD)
++      LD_ARCH          = -m elf_i386_fbsd
++    endif
+   endif
++  
++  ifeq ($(BUILD_PROFILE),x86_64)
++    CC_ARCH          = -m64
++    ifeq ($(BUILD_PLATFORM), Linux)
++      LD_ARCH          = -m elf_x86_64
++    endif
++    ifeq ($(BUILD_PLATFORM), BSD)
++      LD_ARCH          = -m elf_x86_64_fbsd
++    endif
++  endif
++  
+   ifeq ($(BUILD_PLATFORM), BSD)
+-    LD_ARCH          = -m elf_i386_fbsd
++    INCLUDE          += -I/usr/local/include
++    ifeq ($(BUILD_PROFILE),arm)
++      CC_ARCH          = -marm
++      ifneq ($(LD_PATH),)
++        CC_ARCH          += -Wl,-rpath=$(LD_PATH)
++      endif
++    endif
+   endif
+-endif
+-
+-ifeq ($(BUILD_PROFILE),x86_64)
+-  CC_ARCH          = -m64
+-  ifeq ($(BUILD_PLATFORM), Linux)
+-    LD_ARCH          = -m elf_x86_64
++  
++  ifeq ($(BUILD_PROFILE),armv6a)
++    CC_ARCH          = -march=armv6-a -marm
+   endif
+-  ifeq ($(BUILD_PLATFORM), BSD)
+-    LD_ARCH          = -m elf_x86_64_fbsd
++  
++  ifeq ($(BUILD_PROFILE),armv7a)
++    CC_ARCH          = -march=armv7-a -marm
+   endif
+-endif
+-
+-ifeq ($(BUILD_PLATFORM), BSD)
+-  INCLUDE          += -I/usr/local/include
+-  ifeq ($(BUILD_PROFILE),arm)
++  
++  ifeq ($(BUILD_PROFILE),armv7ve)
++    CC_ARCH          = -march=armv7ve -marm
++  endif
++  
++  ifeq ($(BUILD_PROFILE),arm32)
+     CC_ARCH          = -marm
+-    ifneq ($(LD_PATH),)
+-      CC_ARCH          += -Wl,-rpath=$(LD_PATH)
+-    endif
++  endif
++  
++  ifeq ($(BUILD_PROFILE),armv8a)
++    CC_ARCH          = -march=armv7-a -marm
++  endif
++  
++  ifeq ($(BUILD_PROFILE),aarch64)
++    CC_ARCH          = -march=armv8-a
+   endif
+ endif
+ 
+-ifeq ($(BUILD_PROFILE),armv6a)
+-  CC_ARCH          = -march=armv6-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv7a)
+-  CC_ARCH          = -march=armv7-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv7ve)
+-  CC_ARCH          = -march=armv7ve -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),arm32)
+-  CC_ARCH          = -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv8a)
+-  CC_ARCH          = -march=armv7-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),aarch64)
+-  CC_ARCH          = -march=armv8-a
+-endif
+-
+-
+ export CC_ARCH
+ export LD_ARCH
+ export LD_PATH
+@@ -136,9 +138,13 @@ else
+   export XLIB_HEADERS     = $(shell pkg-config --cflags x11)
+   export XLIB_LIBS        = $(shell pkg-config --libs x11)
+   export LV2_HEADERS      = $(shell pkg-config --cflags lv2)
+-  export LV2_LIBS         = $(shell pkg-config --libs lv2)
++  export LV2_HEADERS      = $(shell pkg-config --libs lv2)
++  export HOST_LV2_HEADERS   = $(shell /usr/bin/pkg-config --cflags lv2)
++  export HOST_LV2_LIBS      = $(shell /usr/bin/pkg-config --libs lv2)
+   export SNDFILE_HEADERS  = $(shell pkg-config --cflags sndfile)
+   export SNDFILE_LIBS     = $(shell pkg-config --libs sndfile)
++  export HOST_SNDFILE_HEADERS = $(shell /usr/bin/pkg-config --cflags sndfile)
++  export HOST_SNDFILE_LIBS    = $(shell /usr/bin/pkg-config --libs sndfile)
+   export JACK_HEADERS     = $(shell pkg-config --cflags jack)
+   export JACK_LIBS        = $(shell pkg-config --libs jack)
+   export OPENGL_HEADERS   = $(shell pkg-config --cflags gl 2>/dev/null || echo "")
+diff --git a/scripts/make/set_vars.mk b/scripts/make/set_vars.mk
+index a22531a..b6aba83 100644
+--- a/scripts/make/set_vars.mk
++++ b/scripts/make/set_vars.mk
+@@ -37,7 +37,7 @@ export BUILD_PLATFORM
+ export LV2_UI
+ export VST_UI
+ 
+-# Detect processor architecture
++# Detect target processor architecture
+ ifeq ($(BUILD_PLATFORM),Windows)
+   ifndef BUILD_PROFILE
+     BUILD_ARCH                = i586
+@@ -53,7 +53,7 @@ ifeq ($(BUILD_PLATFORM),Windows)
+   endif
+ else # BUILD_PLATFORM != Windows
+   ifndef BUILD_PROFILE
+-    BUILD_ARCH              = $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
++    BUILD_ARCH              ?= $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
+     BUILD_PROFILE           = $(BUILD_ARCH)
+     ifeq ($(patsubst armv6%,armv6,$(BUILD_ARCH)), armv6)
+       BUILD_PROFILE           = armv6a
+@@ -83,4 +83,3 @@ else # BUILD_PLATFORM != Windows
+ endif # BUILD_PLATFORM != Windows
+ 
+ export BUILD_PROFILE
+-
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 565dbb1..aad590b 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -1,7 +1,9 @@
+ # Setup preferred tools
+ TOOL_LD                 = ld
++TOOL_HOST_LD            = ld
+ TOOL_CC                 = gcc
+ TOOL_CXX                = g++
++TOOL_HOST_CXX           = g++
+ TOOL_PHP                = php
+ 
+ # Setup preferred flags
+@@ -17,20 +19,25 @@ FLAG_CTUNE              = -std=c++98 \
+ ifeq ($(BUILD_PLATFORM),Solaris)
+   FLAG_RELRO              =
+   TOOL_LD                 = gld
++  TOOL_HOST_LD            = gld
+ endif
+ 
+ # Setup system variables
+ CC              		 ?= $(TOOL_CC)
+ CXX                      ?= $(TOOL_CXX)
++HOST_CXX                 ?= $(TOOL_HOST_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
++HOST_LD                  ?= $(TOOL_HOST_LD)
+ 
+ CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+-MERGE_FLAGS               = $(LD_ARCH) -r
+-EXE_TEST_FLAGS            = $(LDFLAGS) $(CC_ARCH)
+-EXE_FLAGS                 = $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++HOST_CXXFLAGS            += $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
++SO_FLAGS                 += $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
++MERGE_FLAGS              += $(LD_ARCH) -r
++EXE_TEST_FLAGS           += $(LDFLAGS) $(CC_ARCH)
++EXE_FLAGS                += $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++HOST_EXE_FLAGS           += $(HOST_LDFLAGS) $(FLAG_RELRO) -Wl,--gc-sections
+ 
+ ifeq ($(BUILD_PLATFORM), Linux)
+   SO_FLAGS                 += -Wl,--no-undefined
+@@ -58,12 +65,16 @@ endif
+ 
+ export CC
+ export CXX
++export HOST_CXX
+ export PHP
+ export LD
++export HOST_LD
+ 
+ export CFLAGS
+ export CXXFLAGS
++export HOST_CXXFLAGS
+ export SO_FLAGS
+ export MERGE_FLAGS
+ export EXE_TEST_FLAGS
+ export EXE_FLAGS
++export HOST_EXE_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index d960ad8..5f856e7 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,3 +1,5 @@
++# Estimate different pre-requisites before launching build
++
+ # Command-line flag to silence nested $(MAKE).
+ MAKE_OPTS              += VERBOSE=$(VERBOSE)
+ ifneq ($(VERBOSE),1)
+@@ -7,7 +9,8 @@ endif
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+-UTL_DEPS                = $(OBJ_CORE) $(OBJ_DSP) $(OBJ_METADATA)
++UTL_DEPS                = $(HOST_OBJ_CORE) $(HOST_OBJ_DSP) $(HOST_OBJ_METADATA)
++OBJDIR                  ?= $(BUILDDIR)
+ 
+ NEED_UI                 = 0
+ NEED_PLUGINS            = 0
+@@ -73,19 +76,44 @@ target: all
+ 
+ # Rules
+ $(SUBDIRS):
++	@echo "$(BUILDDIR)"
+ 	@echo "Building $(@)"
++	@echo "OBJDIR=$(OBJDIR)"
++	@echo "SNDFILE_HEADERS=$(SNDFILE_HEADERS)"
++	@echo "SNDFILE_LIBS=$(SNDFILE_LIBS)"
++	@echo "LV2_HEADERS=$(LV2_HEADERS)"
++	@echo "LV2_LIBS=$(LV2_LIBS)"
++	@echo "HOST_SNDFILE_HEADERS=$(HOST_SNDFILE_HEADERS)"
++	@echo "HOST_SNDFILE_LIBS=$(HOST_SNDFILE_LIBS)"
++	@echo "HOST_LV2_HEADERS=$(HOST_LV2_HEADERS)"
++	@echo "HOST_LV2_LIBS=$(HOST_LV2_LIBS)"
+ 	mkdir -p $(OBJDIR)/$(@)
+-	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ all \
++		CXX="$(CXX)" \
++		CXXFLAGS="$(CXXFLAGS)" \
++		LD="$(LD)" \
++		OBJDIR="$(OBJDIR)/$(@)" \
++		BUILD_PROFILE="$(BUILD_PROFILE)" \
++		SNDFILE_HEADERS="$(SNDFILE_HEADERS)" \
++		SNDFILE_LIBS="$(SNDFILE_LIBS)" \
++		LV2_HEADERS="$(LV2_HEADERS)" \
++		LV2_LIBS="$(LV2_LIBS)"
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+ 
++$(HOST_OBJ_CORE): core
++
+ $(OBJ_DSP): dsp
+ 
++$(HOST_OBJ_DSP): dsp
++
+ $(OBJ_PLUGINS): plugins
+ 
+ $(OBJ_METADATA): metadata
+ 
++$(HOST_OBJ_METADATA): metadata
++
+ $(OBJ_UI_CORE): ui
+ 
+ $(UTL_FILES): utils
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index fbddcaa..184bef0 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -4,15 +4,21 @@ ifneq ($(VERBOSE),1)
+ .SILENT:
+ endif
+ 
++CXX                     = $(HOST_CXX)
++CXXFLAGS                = $(HOST_CXXFLAGS)
++MAKE_OPTS              += CXX=$(HOST_CXX) CXXFLAGS=$(HOST_CXXFLAGS)
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS                 =
+-OBJ_FILES               = $(OBJ_CORE) $(OBJ_METADATA)
++OBJ_FILES               = $(HOST_OBJ_CORE) $(HOST_OBJ_METADATA) $(HOST_OBJ_DSP)
+ OBJ_LIBS                = $(PTHREAD_LIBS) $(MATH_LIBS)
+ OBJ_EXTRA               =
+ INCLUDE_EXTRA           =
+ 
++export PKG_CONFIG_SYSROOT_DIR = /
++
+ ifeq ($(BUILD_PLATFORM),BSD)
+   OBJ_LIBS               += $(ICONV_LIBS)
+ endif
+@@ -24,7 +30,7 @@ endif
+ ifeq ($(findstring lv2,$(BUILD_MODULES)),lv2)
+   MODULES                += $(UTL_GENTTL)
+   FILELIST               += lv2_genttl.o
+-  INCLUDE_EXTRA          += $(LV2_HEADERS)
++  INCLUDE_EXTRA          += $(HOST_LV2_HEADERS)
+ endif
+ ifeq ($(findstring vst,$(BUILD_MODULES)),vst)
+   MODULES                += $(UTL_VSTMAKE)
+@@ -50,32 +56,33 @@ target: all
+ # Common rules
+ $(SUBDIRS):
+ 	@echo "Building $@"
++	@echo "CXX=$(CXX)"
++	@echo "CXXFLAGS=$(CXXFLAGS)"
++	@echo "MAKE_OPTS=$(MAKE_OPTS)"
+ 	mkdir -p $(OBJDIR)/$(@)
+ 	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	@echo "  $(HOST_CXX) $(FILE)"
++	$(HOST_CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(HOST_CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+-$(UTL_GENTTL): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++$(UTL_GENTTL): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENTTL))"
++	$(HOST_CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+-$(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_JACKMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_JACKMAKE))"
++	$(HOST_CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_VSTMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_VSTMAKE))"
++	$(HOST_CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_GENPHP): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+-	
+-$(UTL_RESGEN): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+-
++$(UTL_GENPHP): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENPHP))"
++	$(HOST_CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
++$(UTL_RESGEN): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_RESGEN))"
++	$(HOST_CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_EXTRA) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+diff --git a/tmp/.gitignore b/tmp/.gitignore
+deleted file mode 100644
+index 22e8364..0000000
+--- a/tmp/.gitignore
++++ /dev/null
+@@ -1 +0,0 @@
+-/*
+\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-lv2/template b/srcpkgs/lsp-plugins-lv2/template
new file mode 100644
index 000000000000..40749aebdc81
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/template
@@ -0,0 +1,92 @@
+# Template file for 'lsp-plugins-lv2'
+pkgname=lsp-plugins-lv2
+version=1.1.30
+revision=1
+wrksrc=lsp-plugins-${version}
+build_style=gnu-makefile
+make_build_args="VERBOSE=1"
+make_check_args=$make_build_args
+make_install_target="install install_xdg"
+make_use_env=yes
+hostmakedepends="pkg-config php lv2 libsndfile-devel"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel ladspa-sdk jack-devel"
+_desc="Collection of free audio plugins"
+short_desc="${_desc} - LV2"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/"
+distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+# https://github.com/sadko4u/lsp-plugins/issues/191#issuecomment-812847630
+
+export SKIP_CC_LD_ARCH=yes
+if [ -n "$CROSS_BUILD" ]; then
+	echo "Cross"
+	export BUILD_ARCH=${XBPS_TARGET_MACHINE%%-musl}
+	export HOST_BUILD_PROFILE=${XBPS_MACHINE%%-musl}
+	export HOST_CXXFLAGS=$CXXFLAGS_host
+	export HOST_CXX=$CXX_host
+	export HOST_LD=$LD_host
+	echo "BUILD_CXXFLAGS ${CXXFLAGS_host}"
+	echo "BUILD_CXX      ${CXX_host}"
+	echo "BUILD_LD       ${LD_host}"
+	echo "BUILD_ARCH     ${BUILD_ARCH}"
+else
+	echo "Non cross"
+	export BUILD_ARCH=${XBPS_MACHINE%%-musl}
+	export HOST_BUILD_PROFILE=${XBPS_MACHINE%%-musl}
+	export HOST_CXXFLAGS=$BUILD_CXXFLAGS
+	export HOST_CXX=$BUILD_CXX
+	export HOST_LD=$BUILD_LD
+	echo "BUILD_ARCH    ${BUILD_ARCH}"
+	echo "HOST_CXXFLAGS ${HOST_CXXFLAGS}"
+	echo "HOST_CXX      ${HOST_CXX}"
+	echo "HOST_LD       ${HOST_LD}"
+fi
+
+do_check() {
+	export CXXFLAGS="$CXXFLAGS -DLSP_TESTING -DLSP_TRACE"
+	make ${makejobs} ${make_check_args} test
+	.test/lsp-plugins-test utest
+}
+
+lsp-plugins-jack_package() {
+	short_desc="${_desc} - JACK"
+	pkg_install() {
+		vmove usr/bin
+		vmove usr/lib/lsp-plugins/lsp-plugins-jack-core*
+		vmove usr/lib/lsp-plugins/lsp-plugins-r3d-glx.so
+		vmove usr/share/applications
+		vmove usr/share/desktop-directories
+		vmove usr/share/icons
+		vmove etc/xdg/menus
+	}
+}
+
+lsp-plugins-ladspa_package() {
+	short_desc="${_desc} - LADSPA"
+	pkg_install() {
+		vmove usr/lib/ladspa/lsp-plugins-ladspa.so
+	}
+}
+
+lsp-plugins-vst_package() {
+	short_desc="${_desc} - VST"
+	pkg_install() {
+		vmove usr/lib/vst
+	}
+}
+
+lsp-plugins_package() {
+	short_desc="${_desc} - LV2, JACK, LADSPA, VST"
+	depends="lsp-plugins-lv2 lsp-plugins-jack lsp-plugins-ladspa lsp-plugins-vst"
+	build_style=meta
+}
+
+lsp-plugins-doc_package() {
+	short_desc="${_desc} - documentation"
+	pkg_install() {
+		vmove usr/share/doc
+	}
+}
diff --git a/srcpkgs/lsp-plugins-vst b/srcpkgs/lsp-plugins-vst
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-vst
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Updated] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (54 preceding siblings ...)
  2021-08-02  3:46 ` Logarithmus
@ 2021-08-02  3:57 ` Logarithmus
  2021-08-10  1:26 ` Logarithmus
                   ` (11 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-08-02  3:57 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 2219 bytes --]

There is an updated pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.
Also used by `easyeffects`, `pulseeffects`' successor 
Continuation of https://github.com/void-linux/void-packages/pull/29932

TODO:
- [ ] wait for https://github.com/sadko4u/lsp-plugins/pull/198
- [ ] implement `VERBOSE` option into `lsp-plugins` Makefiles to save my sanity debugging them
https://github.com/sadko4u/lsp-plugins/pull/200
- [ ] polish & upstream cross build patch
- [ ] fix `i686`
- [ ] fix `armv6`
- [x] split the package (ladspa, lv2, vst, jack, doc)
- [ ] remove parallel check commit 

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 92322 bytes --]

From b31bc44e2e8a5f0de017b1155f5073e2b926481a Mon Sep 17 00:00:00 2001
From: Artur Sinila <freesoftware@logarithmus.dev>
Date: Mon, 5 Jul 2021 03:44:08 +0300
Subject: [PATCH 1/2] common/build-style/: enable running tests in parallel

---
 common/build-style/cmake.sh           | 6 +++++-
 common/build-style/configure.sh       | 6 +++++-
 common/build-style/gnu-configure.sh   | 6 +++++-
 common/build-style/gnu-makefile.sh    | 6 +++++-
 common/build-style/perl-module.sh     | 6 +++++-
 common/environment/setup/sourcepkg.sh | 3 ++-
 6 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/common/build-style/cmake.sh b/common/build-style/cmake.sh
index 401dabad31c8..c7ffd16fee21 100644
--- a/common/build-style/cmake.sh
+++ b/common/build-style/cmake.sh
@@ -113,7 +113,11 @@ do_check() {
 
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/configure.sh b/common/build-style/configure.sh
index 0963fc347934..b846a1a77572 100644
--- a/common/build-style/configure.sh
+++ b/common/build-style/configure.sh
@@ -29,7 +29,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-configure.sh b/common/build-style/gnu-configure.sh
index 8121136cd121..b09de442b05b 100644
--- a/common/build-style/gnu-configure.sh
+++ b/common/build-style/gnu-configure.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-makefile.sh b/common/build-style/gnu-makefile.sh
index d7ea148fc483..0f7afa7d3695 100644
--- a/common/build-style/gnu-makefile.sh
+++ b/common/build-style/gnu-makefile.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/perl-module.sh b/common/build-style/perl-module.sh
index b9a01b13cfa9..d47945b33d36 100644
--- a/common/build-style/perl-module.sh
+++ b/common/build-style/perl-module.sh
@@ -79,7 +79,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/environment/setup/sourcepkg.sh b/common/environment/setup/sourcepkg.sh
index bc06f745b78a..1fd541f1e715 100644
--- a/common/environment/setup/sourcepkg.sh
+++ b/common/environment/setup/sourcepkg.sh
@@ -13,7 +13,8 @@ unset -v cmake_builddir meson_builddir
 unset -v meson_crossfile
 unset -v gemspec
 unset -v go_import_path go_package go_mod_mode
-unset -v patch_args disable_parallel_build keep_libtool_archives make_use_env
+unset -v patch_args disable_parallel_build disable_parallel_check
+unset -v keep_libtool_archives make_use_env
 unset -v reverts subpackages makedepends hostmakedepends checkdepends depends restricted
 unset -v nopie build_options build_options_default bootstrap repository reverts
 unset -v CFLAGS CXXFLAGS FFLAGS CPPFLAGS LDFLAGS LD_LIBRARY_PATH

From 752d1b3f10eab8c6bbb701b47e1ebcd46326538c Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH 2/2] New package: lsp-plugins-1.1.30

---
 srcpkgs/lsp-plugins                           |    1 +
 srcpkgs/lsp-plugins-doc                       |    1 +
 srcpkgs/lsp-plugins-jack                      |    1 +
 srcpkgs/lsp-plugins-ladspa                    |    1 +
 .../00-makefile-test-remove-cflags.patch      |   12 +
 srcpkgs/lsp-plugins-lv2/patches/01-musl.patch |  391 ++++++
 .../patches/02-make-verbose.patch             | 1082 +++++++++++++++++
 .../patches/03-improve-cross.patch            |  590 +++++++++
 srcpkgs/lsp-plugins-lv2/template              |   92 ++
 srcpkgs/lsp-plugins-vst                       |    1 +
 10 files changed, 2172 insertions(+)
 create mode 120000 srcpkgs/lsp-plugins
 create mode 120000 srcpkgs/lsp-plugins-doc
 create mode 120000 srcpkgs/lsp-plugins-jack
 create mode 120000 srcpkgs/lsp-plugins-ladspa
 create mode 100644 srcpkgs/lsp-plugins-lv2/patches/00-makefile-test-remove-cflags.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/patches/01-musl.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/patches/02-make-verbose.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/patches/03-improve-cross.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/template
 create mode 120000 srcpkgs/lsp-plugins-vst

diff --git a/srcpkgs/lsp-plugins b/srcpkgs/lsp-plugins
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-doc b/srcpkgs/lsp-plugins-doc
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-doc
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-jack b/srcpkgs/lsp-plugins-jack
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-jack
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-ladspa b/srcpkgs/lsp-plugins-ladspa
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-ladspa
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-lv2/patches/00-makefile-test-remove-cflags.patch b/srcpkgs/lsp-plugins-lv2/patches/00-makefile-test-remove-cflags.patch
new file mode 100644
index 000000000000..fd82f25d4a25
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/patches/00-makefile-test-remove-cflags.patch
@@ -0,0 +1,12 @@
+https://github.com/void-linux/void-packages/pull/29932#discussion_r605695858
+--- a/Makefile
++++ b/Makefile
+@@ -108,8 +108,6 @@ trace: export EXE_FLAGS     += -g3
+ trace: compile
+ 
+ test: OBJDIR                 = $(TESTDIR)
+-test: export CFLAGS         += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-test: export CXXFLAGS       += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
diff --git a/srcpkgs/lsp-plugins-lv2/patches/01-musl.patch b/srcpkgs/lsp-plugins-lv2/patches/01-musl.patch
new file mode 100644
index 000000000000..6dc08949a87a
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/patches/01-musl.patch
@@ -0,0 +1,391 @@
+diff --git a/TODO.txt b/TODO.txt
+index 4976293..3bb3db8 100644
+--- a/TODO.txt
++++ b/TODO.txt
+@@ -28,6 +28,11 @@
+ - Added possibility to change themes in runtime.
+ - Complicated plugin UIs now allow to switch between Advanced and Novice modes.
+ 
++=== 1.1.31 ===
++
++* Fixed X11 error handling routine that could crash under certain conditions.
++* Better support for musl libc (contributed by Artur Sinila).
++
+ *******************************************************************************
+ * New plugin check list before release
+ *******************************************************************************
+diff --git a/include/common/types.h b/include/common/types.h
+index dd1816e..59c794e 100644
+--- a/include/common/types.h
++++ b/include/common/types.h
+@@ -563,6 +563,12 @@
+     #define MINIMUM_ALIGN                   DEFAULT_ALIGN
+ #endif /* DEFAULT_ALIGN */
+ 
++//-----------------------------------------------------------------------------
++// Detect some libraries
++#ifdef __GLIBC__
++    #define USE_GLIBC                           __GLIBC__
++#endif /* GLIBC */
++
+ //-----------------------------------------------------------------------------
+ // Type definitions
+ __IF_32( typedef        uint32_t            umword_t );
+diff --git a/include/data/cvector.h b/include/data/cvector.h
+index eccc94a..17fe119 100644
+--- a/include/data/cvector.h
++++ b/include/data/cvector.h
+@@ -25,6 +25,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <sys/types.h>
+ 
+ #define CVECTOR_GROW        16
+ 
+diff --git a/include/test/main/executor.h b/include/test/main/executor.h
+index 0faf73f..5a0c016 100644
+--- a/include/test/main/executor.h
++++ b/include/test/main/executor.h
+@@ -633,7 +633,7 @@ namespace lsp
+     }
+ #endif /* PLATFORM_WINDOWS */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     void TestExecutor::start_memcheck(test::Test *v)
+     {
+         if (!pCfg->mtrace)
+diff --git a/include/test/main/types.h b/include/test/main/types.h
+index ef15800..0c5d7c2 100644
+--- a/include/test/main/types.h
++++ b/include/test/main/types.h
+@@ -42,7 +42,7 @@
+     #include <fcntl.h>
+ #endif /* PLATFORM_UNIX_COMPATIBLE */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     #include <mcheck.h>
+ #endif /* PLATFORM_LINUX */
+ 
+diff --git a/include/testing/mtest/3d/common/X11Renderer.h b/include/testing/mtest/3d/common/X11Renderer.h
+index e8ec205..f0a51e2 100644
+--- a/include/testing/mtest/3d/common/X11Renderer.h
++++ b/include/testing/mtest/3d/common/X11Renderer.h
+@@ -30,7 +30,7 @@
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include <rendering/backend.h>
+ #include <core/ipc/Library.h>
+diff --git a/src/testing/mtest/3d/boolean3d.cpp b/src/testing/mtest/3d/boolean3d.cpp
+deleted file mode 100644
+index 636dce1..0000000
+--- a/src/testing/mtest/3d/boolean3d.cpp
++++ /dev/null
+@@ -1,253 +0,0 @@
+-/*
+- * Copyright (C) 2020 Linux Studio Plugins Project <https://lsp-plug.in/>
+- *           (C) 2020 Vladimir Sadovnikov <sadko4u@gmail.com>
+- *
+- * This file is part of lsp-plugins
+- * Created on: 24 дек. 2018 г.
+- *
+- * lsp-plugins is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU Lesser General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * any later version.
+- *
+- * lsp-plugins is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU Lesser General Public License for more details.
+- *
+- * You should have received a copy of the GNU Lesser General Public License
+- * along with lsp-plugins. If not, see <https://www.gnu.org/licenses/>.
+- */
+-
+-#if 0
+-
+-#include <test/mtest.h>
+-#include <testing/mtest/3d/common/X11Renderer.h>
+-#include <core/files/Model3DFile.h>
+-#include <core/3d/rt_context.h>
+-#include <core/3d/RayTrace3D.h>
+-
+-#include <core/types.h>
+-#include <core/debug.h>
+-#include <core/sugar.h>
+-#include <core/status.h>
+-#include <stdlib.h>
+-#include <errno.h>
+-#include <data/cstorage.h>
+-
+-#include <X11/X.h>
+-#include <X11/Xlib.h>
+-#include <X11/keysymdef.h>
+-#include <GL/gl.h>
+-#include <GL/glx.h>
+-#include <GL/glu.h>
+-#include <sys/poll.h>
+-
+-//#define TEST_DEBUG
+-
+-#ifndef TEST_DEBUG
+-//    #define BREAKPOINT_STEP     -1
+-//    #define BREAKPOINT_STEP     27
+-//    #define BREAKPOINT_STEP     83
+-    #define BREAKPOINT_STEP     215
+-//    #define BREAKPOINT_STEP     0
+-
+-#else /* DEBUG */
+-    #define BREAKPOINT_STEP     0
+-#endif /* DEBUG */
+-
+-MTEST_BEGIN("3d", boolean)
+-
+-    class Renderer: public X11Renderer
+-    {
+-        private:
+-            Scene3D        *pScene;
+-            ssize_t         nTrace;
+-            bool            bDrawMatched;
+-            bool            bDrawIgnored;
+-            bool            bDrawDebug;
+-
+-        public:
+-            explicit Renderer(Scene3D *scene, View3D *view): X11Renderer(view)
+-            {
+-                pScene = scene;
+-                bDrawMatched    = true;
+-                bDrawIgnored    = true;
+-                bDrawDebug      = true;
+-                bDrawNormals    = false;
+-                nTrace          = BREAKPOINT_STEP;
+-
+-                update_view();
+-            }
+-
+-            virtual ~Renderer()
+-            {
+-            }
+-
+-        public:
+-            virtual void on_key_press(const XKeyEvent &ev, KeySym key)
+-            {
+-                switch (key)
+-                {
+-                    case XK_Up:
+-                        nTrace++;
+-                        lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                        update_view();
+-                        break;
+-                    case XK_Down:
+-                        if (nTrace >= 0)
+-                        {
+-                            nTrace--;
+-                            lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                            update_view();
+-                        }
+-                        break;
+-
+-                    case 'm':
+-                    {
+-                        bDrawMatched = ! bDrawMatched;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'i':
+-                    {
+-                        bDrawIgnored = ! bDrawIgnored;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'd':
+-                    {
+-                        bDrawDebug = ! bDrawDebug;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case '0': case '1': case '2': case '3': case '4':
+-                    case '5': case '6': case '7': case '8': case '9':
+-                    {
+-                        Object3D *obj = pScene->get_object(key - '0');
+-                        if (obj != NULL)
+-                        {
+-                            obj->set_visible(!obj->is_visible());
+-                            update_view();
+-                        }
+-                        break;
+-                    }
+-                    default:
+-                        X11Renderer::on_key_press(ev, key);
+-                        break;
+-                }
+-            }
+-
+-        protected:
+-            status_t perform_boolean(rt_debug_t *shared)
+-            {
+-                if (pScene->num_objects() <= 0)
+-                    return STATUS_OK;
+-
+-                rt_mesh_t mesh;
+-                mesh.set_debug_context(shared, &shared->trace);
+-
+-                Object3D *obj = pScene->object(0);
+-                status_t res = mesh.init(obj, 0, obj->matrix());
+-                if (res != STATUS_OK)
+-                    return res;
+-
+-                for (size_t i=1, n=pScene->num_objects(); i<n; ++i)
+-                {
+-                    obj = pScene->object(i);
+-                    res = mesh.subtract(obj, i, obj->matrix());
+-                    if (res != STATUS_OK)
+-                        return res;
+-                }
+-
+-                return STATUS_OK;
+-            }
+-
+-            status_t    update_view()
+-            {
+-                v_vertex3d_t v[3];
+-                status_t res = STATUS_OK;
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // List of ignored and matched triangles
+-                rt_debug_t global;
+-                global.breakpoint   = nTrace;
+-                global.step         = 0;
+-
+-                // Perform raytrace
+-                res     = perform_boolean(&global);
+-                if (res == STATUS_BREAKPOINT)
+-                {
+-                    pView->swap(&global.trace);
+-                    res         = STATUS_OK;
+-                }
+-
+-                if (!bDrawDebug)
+-                    pView->clear_all();
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // Build final scene from matched and ignored items
+-                if (bDrawIgnored)
+-                {
+-                    for (size_t i=0, m=global.ignored.size(); i < m; ++i)
+-                        pView->add_triangle_1c(global.ignored.at(i), &C_GRAY);
+-                }
+-
+-                if (bDrawMatched)
+-                {
+-                    for (size_t i=0, m=global.matched.size(); i < m; ++i)
+-                    {
+-                        v_triangle3d_t *t = global.matched.at(i);
+-                        v[0].p     = t->p[0];
+-                        v[0].n     = t->n[0];
+-                        v[0].c     = C_RED;
+-
+-                        v[1].p     = t->p[1];
+-                        v[1].n     = t->n[1];
+-                        v[1].c     = C_GREEN;
+-
+-                        v[2].p     = t->p[2];
+-                        v[2].n     = t->n[2];
+-                        v[2].c     = C_BLUE;
+-
+-                        pView->add_triangle(v);
+-                    }
+-                }
+-
+-                global.ignored.flush();
+-                global.matched.flush();
+-
+-                return res;
+-            }
+-    };
+-
+-    MTEST_MAIN
+-    {
+-        const char *scene_file = (argc < 1) ? "res/test/3d/cross.obj" : argv[0];
+-
+-        // Load scene
+-        Scene3D s;
+-        View3D v;
+-        status_t res = Model3DFile::load(&s, scene_file, true);
+-        MTEST_ASSERT_MSG(res == STATUS_OK, "Error loading scene from file %s", scene_file);
+-
+-        // Initialize renderer
+-        Renderer r(&s, &v);
+-        MTEST_ASSERT_MSG(r.init() == STATUS_OK, "Error initializing renderer");
+-        r.run();
+-        r.destroy();
+-
+-        // Destroy scene
+-        s.destroy();
+-    }
+-
+-MTEST_END
+-
+-#endif
+diff --git a/src/testing/mtest/3d/bsp_context.cpp b/src/testing/mtest/3d/bsp_context.cpp
+index de54427..f7b7a34 100644
+--- a/src/testing/mtest/3d/bsp_context.cpp
++++ b/src/testing/mtest/3d/bsp_context.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/reflections3d.cpp b/src/testing/mtest/3d/reflections3d.cpp
+index e250444..367f86c 100644
+--- a/src/testing/mtest/3d/reflections3d.cpp
++++ b/src/testing/mtest/3d/reflections3d.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/ui/ws/x11/X11Display.cpp b/src/ui/ws/x11/X11Display.cpp
+index d85db51..987e8a9 100644
+--- a/src/ui/ws/x11/X11Display.cpp
++++ b/src/ui/ws/x11/X11Display.cpp
+@@ -23,7 +23,7 @@
+ 
+ #ifdef USE_X11_DISPLAY
+ 
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ 
+@@ -233,7 +233,7 @@ namespace lsp
+                 while (!atomic_cas(&hLock, 0, 1)) { /* Wait */ }
+ 
+                 // Dispatch errors between Displays
+-                for (X11Display *dp = pHandlers; dp != NULL; ++dp)
++                for (X11Display *dp = pHandlers; dp != NULL; dp = dp->pNextHandler)
+                     if (dp->pDisplay == dpy)
+                         dp->handle_error(ev);
+ 
diff --git a/srcpkgs/lsp-plugins-lv2/patches/02-make-verbose.patch b/srcpkgs/lsp-plugins-lv2/patches/02-make-verbose.patch
new file mode 100644
index 000000000000..d6c4f6ce2f92
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/patches/02-make-verbose.patch
@@ -0,0 +1,1082 @@
+diff --git a/Makefile b/Makefile
+index 2d9cb79..79ddcc6 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ # Common definitions
+ RELEASE_TEXT            = LICENSE.txt README.txt CHANGELOG.txt
+ RELEASE_SRC             = $(RELEASE_TEXT) src build-*.sh include res Makefile release.sh
+@@ -166,24 +172,24 @@ compile_info:
+ 	@echo "-------------------------------------------------------------------------------"
+ 
+ compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@mkdir -p $(CFGDIR)
+-	@test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
+-	@test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
+-	@test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
+-	@test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++	mkdir -p $(OBJDIR)/src
++	mkdir -p $(CFGDIR)
++	test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
++	test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
++	test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
++	test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Build OK"
+ 	
+ test_compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++	mkdir -p $(OBJDIR)/src
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
+ clean:
+-	@-rm -rf $(BUILDDIR)
+-	@-rm -rf $(TESTDIR)
+-	@-rm -rf $(CFGDIR)
++	-rm -rf $(BUILDDIR)
++	-rm -rf $(TESTDIR)
++	-rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+ 
+ # Build targets
+@@ -209,63 +215,63 @@ install: $(INSTALLATIONS)
+ 
+ install_ladspa: all
+ 	@echo "Installing LADSPA plugins to $(DESTDIR)$(LADSPA_PATH)/"
+-	@mkdir -p $(DESTDIR)$(LADSPA_PATH)
+-	@$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
++	mkdir -p $(DESTDIR)$(LADSPA_PATH)
++	$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
+ 	
+ install_lv2: all
+ 	@echo "Installing LV2 plugins to $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
+-	@$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
++	$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+ 	
+ install_vst: all
+ 	@echo "Installing VST plugins to $(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+-	@$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
++	$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+ 
+ install_jack: all
+ 	@echo "Installing JACK core to $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
++	$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+ 	@echo "Installing JACK standalone plugins to $(DESTDIR)$(BIN_PATH)"
+-	@mkdir -p "$(DESTDIR)$(BIN_PATH)"
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
++	mkdir -p "$(DESTDIR)$(BIN_PATH)"
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
+ 
+ install_xdg:
+ 	@echo "Installing desktop icons to $(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
+-	@mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
+-	@cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
+-	@cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
+-	@cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
+-	@cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
++	mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
++	cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
++	cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
++	cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
++	cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
+ 
+ install_doc: all
+ 	@echo "Installing documentation to $(DESTDIR)$(DOC_PATH)"
+-	@mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+ # Release targets
+ dbg_release: export CFLAGS        += -DLSP_TRACE -O2
+@@ -279,67 +285,67 @@ release: $(RELEASES)
+ 
+ release_prepare: all
+ 	@echo "Releasing plugins for architecture $(BUILD_PROFILE)"
+-	@mkdir -p $(RELEASE)
+-	@mkdir -p $(DESTDIR)
++	mkdir -p $(RELEASE)
++	mkdir -p $(DESTDIR)
+ 	
+ release_ladspa: DESTDIR=$(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_ladspa: | release_prepare install_ladspa
+ 	@echo "Releasing LADSPA binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_lv2: DESTDIR=$(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_lv2: | release_prepare install_lv2
+ 	@echo "Releasing LV2 binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_vst: DESTDIR=$(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_vst: | release_prepare install_vst
+ 	@echo "Releasing VST binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_jack: DESTDIR=$(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_jack: | release_prepare install_jack
+ 	@echo "Releasing JACK binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 
+ release_profile: DESTDIR=$(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_profile: | release_prepare
+ 	@echo "Releasing PROFILE binaries"
+-	@$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ 
+ release_src: DESTDIR=$(RELEASE)/$(SRC_ID)
+ release_src: | release_prepare
+ 	@echo "Releasing source code binaries"
+-	@mkdir -p $(DESTDIR)
+-	@mkdir -p $(DESTDIR)/scripts
+-	@cp -R $(RELEASE_SRC) $(DESTDIR)/
+-	@cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	mkdir -p $(DESTDIR)/scripts
++	cp -R $(RELEASE_SRC) $(DESTDIR)/
++	cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
++	rm -rf $(DESTDIR)
+ 
+ release_doc: DESTDIR=$(RELEASE)/$(DOC_ID)
+ release_doc: | release_prepare
+ 	@echo "Releasing documentation"
+-	@mkdir -p $(DESTDIR)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
++	rm -rf $(DESTDIR)
+ 
+ # Unrelease target
+ unrelease: clean
+-	@-rm -rf $(RELEASE)
++	-rm -rf $(RELEASE)
+ 	@echo "Unrelease OK"
+ 
+ # Uninstall target
+@@ -348,41 +354,41 @@ uninstall: $(UNINSTALLATIONS)
+ 	
+ uninstall_ladspa:
+ 	@echo "Uninstalling LADSPA"
+-	@-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
++	-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
+ 	
+ uninstall_lv2:
+ 	@echo "Uninstalling LV2"
+-	@-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
++	-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
+ 	
+ uninstall_vst:
+ 	@echo "Uninstalling VST"
+-	@-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
++	-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
++	-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
++	-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
+ 	
+ uninstall_jack:
+ 	@echo "Uninstalling JACK"
+-	@-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
+-	@-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
++	-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
++	-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
++	-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
++	-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
+ 
+ uninstall_xdg:
+ 	@echo "Uninstalling desktop icons"
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
+-	@-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
++	-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
++	-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
+ 
+ uninstall_doc:
+ 	@echo "Uninstalling DOC"
+-	@-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+diff --git a/TODO.txt b/TODO.txt
+index 3bb3db8..f8562ef 100644
+--- a/TODO.txt
++++ b/TODO.txt
+@@ -32,6 +32,7 @@
+ 
+ * Fixed X11 error handling routine that could crash under certain conditions.
+ * Better support for musl libc (contributed by Artur Sinila).
++* Added support of VERBOSE parameter for build system (contributed by Artur Sinila).
+ 
+ *******************************************************************************
+ * New plugin check list before release
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 1fb917e..565dbb1 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -25,7 +25,6 @@ CXX                      ?= $(TOOL_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
+ 
+-MAKE_OPTS                 = -s
+ CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+@@ -62,7 +61,6 @@ export CXX
+ export PHP
+ export LD
+ 
+-export MAKE_OPTS
+ export CFLAGS
+ export CXXFLAGS
+ export SO_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index 8546191..d960ad8 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+@@ -58,6 +64,7 @@ ifeq ($(NEED_UI),1)
+   CONTAINER_DEPS         += $(OBJ_UI_CORE) $(OBJ_RES_CORE) rendering
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all $(MODULES)
+ 
+ all: $(MODULES)
+@@ -67,8 +74,8 @@ target: all
+ # Rules
+ $(SUBDIRS):
+ 	@echo "Building $(@)"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+@@ -93,10 +100,10 @@ $(OBJ_TESTING_CORE): test testing rendering
+ 
+ $(OBJ_RES_CORE): $(OBJ_CORE) $(UTL_RESGEN)
+ 	@echo "Generating builtin resources"
+-	@mkdir -p $(OBJDIR)/res
+-	@$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	mkdir -p $(OBJDIR)/res
++	$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
++	-rm gmon.out >/dev/null 2>&1
++	$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ # Target dependencies
+ container: $(CONTAINER_DEPS)
+@@ -108,18 +115,18 @@ doc: utils $(PHP_PLUGINS)
+ # Additional processing
+ $(PHP_PLUGINS): $(UTL_GENPHP)
+ 	@echo "Generating PHP file $(notdir $(PHP_PLUGINS))"
+-	@$(UTL_GENPHP) $(PHP_PLUGINS)
++	$(UTL_GENPHP) $(PHP_PLUGINS)
+ 
+ vst_stub: $(UTL_VSTMAKE)
+ 	@echo "Building VST stub"
+-	@mkdir -p $(OBJDIR)/vst
+-	@$(UTL_VSTMAKE) $(OBJDIR)/vst
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
++	mkdir -p $(OBJDIR)/vst
++	$(UTL_VSTMAKE) $(OBJDIR)/vst
++	-rm gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
+ 
+ jack_stub: $(UTL_JACKMAKE)
+ 	@echo "Building JACK stub"
+-	@mkdir -p $(OBJDIR)/jack
+-	@$(UTL_JACKMAKE) $(OBJDIR)/jack
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
++	mkdir -p $(OBJDIR)/jack
++	$(UTL_JACKMAKE) $(OBJDIR)/jack
++	-rm gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
+diff --git a/src/container/Makefile b/src/container/Makefile
+index 8aa8196..23a2e7a 100644
+--- a/src/container/Makefile
++++ b/src/container/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ OBJ_HELPERS             = $(OBJDIR)/CairoCanvas.o
+@@ -53,46 +59,47 @@ ifeq ($(VST_UI),1)
+   X_VST_LIBS             += $(UI_LIBS)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(MODULES)
+ 
+ $(OBJ_HELPERS):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
+ 
+ $(LIB_LADSPA):
+ 	@echo "  $(CXX) ladspa.cpp"
+-	@$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_LADSPA))"
+-	@$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
++	$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
+ 
+ $(LIB_LV2): $(X_LV2_DEPS)
+ 	@echo "  $(CXX) lv2.cpp"
+-	@$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
+-	@echo "  $(CXX) $(notdir $(X_LIB_LV2))"
+-	@$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
++	$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
++	@echo "  $(CXX) $(notdir $(LIB_LV2))"
++	$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
+ 
+ $(LIB_VST):
+ 	@echo "  $(CXX) vst.cpp"
+-	@$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_VST))"
+-	@$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
++	$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
+ 
+ $(LIB_JACK): $(OBJ_HELPERS)
+ 	@echo "  $(CXX) jack.cpp"
+-	@$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
++	$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
+ 	@echo "  $(CXX) $(notdir $(LIB_JACK))"
+-	@$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
++	$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
+ 
+ $(BIN_PROFILE): $(LIB_JACK)
+ 	@echo "  $(CXX) profile.cpp"
+-	@$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_PROFILE))"
+-	@$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
++	$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
+ 
+ $(BIN_TEST): $(LIB_JACK)
+ 	@echo "  $(CXX) test.cpp"
+-	@$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_TEST))"
+-	@$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
++	$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
+diff --git a/src/core/Makefile b/src/core/Makefile
+index a9ce1a5..3ad14a5 100644
+--- a/src/core/Makefile
++++ b/src/core/Makefile
+@@ -1,18 +1,25 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(SNDFILE_HEADERS)
+ LIBS                    = $(PTHREAD_LIBS)
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(OBJ_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
+ 
+ $(OBJ_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_CORE))"
+-	@$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
++	$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
+diff --git a/src/doc/Makefile b/src/doc/Makefile
+index aac73bf..f7f18a1 100644
+--- a/src/doc/Makefile
++++ b/src/doc/Makefile
+@@ -1,6 +1,13 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ PHPDIR      = $(BUILDDIR)/src/doc
+ HTMLDIR     = $(BUILDDIR)/html
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -8,14 +15,14 @@ target: all
+ # Common rules
+ $(PHPDIR)/Makefile:
+ 	@echo "Preparing PHP documentation generator"
+-	@mkdir -p $(PHPDIR)
+-	@mkdir -p $(HTMLDIR)
+-	@cp -rf * $(PHPDIR)/
+-	@cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
+-	@cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
+-	@cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
+-	@$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
++	mkdir -p $(PHPDIR)
++	mkdir -p $(HTMLDIR)
++	cp -rf * $(PHPDIR)/
++	cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
++	cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
++	cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
++	$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
+ 
+ all: $(PHPDIR)/Makefile
+ 	@echo "Generating HTML documentation"
+-	@$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
++	$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
+diff --git a/src/dsp/Makefile b/src/dsp/Makefile
+index f3d9ab1..aac8007 100644
+--- a/src/dsp/Makefile
++++ b/src/dsp/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ NATIVE_IMPL             = $(OBJDIR)/native.o
+ 
+ X86_IMPL                = $(OBJDIR)/x86.o
+@@ -51,6 +57,7 @@ ifeq ($(BUILD_PROFILE), aarch64)
+ LINK_OBJECTS           += $(AARCH64_IMPL) $(ASIMD_IMPL)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -59,41 +66,41 @@ all: $(OBJ_DSP)
+ 
+ $(OBJ_DSP): $(LINK_OBJECTS)
+ 	@echo "  $(LD) $(notdir $(OBJ_DSP))"
+-	@$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
++	$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
+ 
+ $(DSP_IMPL) $(BITS_IMPL) $(NATIVE_IMPL) $(X86_IMPL) $(ARM_IMPL) $(AARCH64_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	
+ $(SSE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE3_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE4_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
+ 	
+ $(NEON_D32_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
+ 	
+ $(ASIMD_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
+ 
+diff --git a/src/metadata/Makefile b/src/metadata/Makefile
+index 201f89a..403f38a 100644
+--- a/src/metadata/Makefile
++++ b/src/metadata/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -10,8 +16,8 @@ target: all
+ 
+ $(OBJ_METADATA): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_METADATA))"
+-	@$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+diff --git a/src/plugins/Makefile b/src/plugins/Makefile
+index 1f197dc..85963ba 100644
+--- a/src/plugins/Makefile
++++ b/src/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,8 +14,8 @@ all:  $(OBJ_PLUGINS)
+ 
+ $(OBJ_PLUGINS): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(OBJ_PLUGINS))"
+-	@$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
++	$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
+diff --git a/src/rendering/Makefile b/src/rendering/Makefile
+index 897e327..65f3237 100644
+--- a/src/rendering/Makefile
++++ b/src/rendering/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ BASE_IMPL             	= $(OBJDIR)/base_backend.o
+ 
+ GLX_IMPL                = $(OBJDIR)/glx/backend.o $(OBJDIR)/glx/factory.o
+@@ -20,15 +26,15 @@ all: $(MODULES)
+ 
+ $(LIB_R3D_GLX): $(BASE_IMPL) $(GLX_IMPL)
+ 	@echo "  $(CXX) $(notdir $(LIB_R3D_GLX))"
+-	@$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
++	$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
+ 
+ $(BASE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 	
+ $(GLX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $(@))
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
++	mkdir -p $(dir $(@))
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
+ 
+ 
+diff --git a/src/test/Makefile b/src/test/Makefile
+index e8016e1..a89366e 100644
+--- a/src/test/Makefile
++++ b/src/test/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TEST_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TEST_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TEST_CORE))"
+-	@$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/testing/Makefile b/src/testing/Makefile
+index 705913d..d048065 100644
+--- a/src/testing/Makefile
++++ b/src/testing/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TESTING_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TESTING_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TESTING_CORE))"
+-	@$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/ui/Makefile b/src/ui/Makefile
+index 503111d..eb1e4c5 100644
+--- a/src/ui/Makefile
++++ b/src/ui/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= ws tk ctl plugins
+@@ -8,15 +14,15 @@ PACKAGES                = $(OBJ_WS_CORE) $(OBJ_TK_CORE) $(OBJ_CTL_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_UI_CORE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_UI_CORE)
+diff --git a/src/ui/ctl/Makefile b/src/ui/ctl/Makefile
+index 3f727db..692fe9d 100644
+--- a/src/ui/ctl/Makefile
++++ b/src/ui/ctl/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_CTL_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_CTL_CORE) $(SUBDIRS)
+diff --git a/src/ui/plugins/Makefile b/src/ui/plugins/Makefile
+index 8f8db8f..0e6c3d8 100644
+--- a/src/ui/plugins/Makefile
++++ b/src/ui/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_PLUGIN_UIS): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_PLUGIN_UIS) $(SUBDIRS)
+diff --git a/src/ui/tk/Makefile b/src/ui/tk/Makefile
+index 8700f63..cfb4c78 100644
+--- a/src/ui/tk/Makefile
++++ b/src/ui/tk/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -6,11 +12,11 @@ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_TK_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_TK_CORE)
+diff --git a/src/ui/ws/Makefile b/src/ui/ws/Makefile
+index 1109752..b9836d8 100644
+--- a/src/ui/ws/Makefile
++++ b/src/ui/ws/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= x11
+@@ -8,15 +14,15 @@ all: $(OBJ_WS_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ $(OBJ_WS_CORE): $(FILES) $(OBJ_WS_X11_CORE)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
++	$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
+ 
+ $(OBJ_WS_X11_CORE): $(SUBDIRS)
+diff --git a/src/ui/ws/x11/Makefile b/src/ui/ws/x11/Makefile
+index b99e93d..7bffca3 100644
+--- a/src/ui/ws/x11/Makefile
++++ b/src/ui/ws/x11/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(XLIB_HEADERS) $(CAIRO_HEADERS)
+@@ -8,9 +14,9 @@ all: $(OBJ_WS_X11_CORE)
+ 
+ $(OBJ_WS_X11_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
++	$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index 88b3739..fbddcaa 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -44,32 +50,32 @@ target: all
+ # Common rules
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+ $(UTL_GENTTL): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	@$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++	$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+ $(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	@$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	@$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_GENPHP): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	@$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_RESGEN): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	@$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 
+-	
+\ No newline at end of file
++	
+diff --git a/src/utils/jack_genmake.cpp b/src/utils/jack_genmake.cpp
+index 09974b0..3272ad8 100644
+--- a/src/utils/jack_genmake.cpp
++++ b/src/utils/jack_genmake.cpp
+@@ -97,6 +97,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%=%%.cpp)\n");
+@@ -107,11 +112,11 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
+ 
+         fprintf(out, "install: $(FILES)\n");
+-        fprintf(out, "\t@$(INSTALL) $(FILES) $(TARGET_PATH)/");
++        fprintf(out, "\t$(INSTALL) $(FILES) $(TARGET_PATH)/");
+ 
+         // Close file
+         fclose(out);
+diff --git a/src/utils/vst_genmake.cpp b/src/utils/vst_genmake.cpp
+index 9eeedeb..f47f783 100644
+--- a/src/utils/vst_genmake.cpp
++++ b/src/utils/vst_genmake.cpp
+@@ -100,6 +100,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%.so, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%.so=%%.cpp)\n");
+@@ -110,8 +115,8 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
+ 
+         // Close file
+         fclose(out);
diff --git a/srcpkgs/lsp-plugins-lv2/patches/03-improve-cross.patch b/srcpkgs/lsp-plugins-lv2/patches/03-improve-cross.patch
new file mode 100644
index 000000000000..0bf39b78f90e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/patches/03-improve-cross.patch
@@ -0,0 +1,590 @@
+diff --git a/.gitignore b/.gitignore
+index 5bc0ecb..4a1edec 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -3,6 +3,7 @@
+ /design/*
+ /.builconfig/*
+ /.build/*
++/.host_build/*
+ /.buildconfig/*
+ /.test/*
+ /.release/*
+diff --git a/.gitmodules b/.gitmodules
+index ac5ea32..4480c1f 100644
+--- a/.gitmodules
++++ b/.gitmodules
+@@ -1,3 +1,3 @@
+ [submodule "Polynomial-Wiener-Hammerstein"]
+ 	path = Polynomial-Wiener-Hammerstein
+-	url = ../../CrocoDuckoDucks/Polynomial-Wiener-Hammerstein.git
++	url = https://github.com/CrocoDuckoDucks/Polynomial-Wiener-Hammerstein
+diff --git a/Makefile b/Makefile
+index 79ddcc6..34ccb79 100644
+--- a/Makefile
++++ b/Makefile
+@@ -24,8 +24,10 @@ export RESDIR           = ${CURDIR}/res
+ export RELEASE          = ${CURDIR}/.release
+ export RELEASE_BIN      = $(RELEASE)/$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ export BUILDDIR         = ${CURDIR}/.build
++export HOST_BUILDDIR    = ${CURDIR}/.host_build
+ export TESTDIR          = ${CURDIR}/.test
+ OBJDIR                  = $(BUILDDIR)
++export HOST_OBJDIR      = $(HOST_BUILDDIR)
+ 
+ # Installation locations
+ BIN_PATH               ?= $(PREFIX)/bin
+@@ -41,20 +43,23 @@ VST_PATH                = $(LIB_PATH)/vst
+ export BASEDIR          = ${CURDIR}
+ 
+ # Objects
+-export OBJ_CORE         = $(OBJDIR)/core.o
+-export OBJ_DSP          = $(OBJDIR)/dsp.o
+-export OBJ_CTL_CORE     = $(OBJDIR)/ctl_core.o
+-export OBJ_TK_CORE      = $(OBJDIR)/tk_core.o
+-export OBJ_WS_CORE      = $(OBJDIR)/ws_core.o
+-export OBJ_WS_X11_CORE  = $(OBJDIR)/ws_x11_core.o
+-export OBJ_UI_CORE      = $(OBJDIR)/ui_core.o
+-export OBJ_RES_CORE     = $(OBJDIR)/res_core.o
+-export OBJ_TEST_CORE    = $(OBJDIR)/test_core.o
+-export OBJ_TESTING_CORE = $(OBJDIR)/testing_core.o
+-export OBJ_PLUGINS      = $(OBJDIR)/plugins.o
+-export OBJ_PLUGIN_UIS	= $(OBJDIR)/plugin_uis.o
+-export OBJ_METADATA     = $(OBJDIR)/metadata.o
+-export OBJ_FILES        = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
++export OBJ_CORE          = $(OBJDIR)/core.o
++export HOST_OBJ_CORE     = $(HOST_OBJDIR)/core.o
++export OBJ_DSP           = $(OBJDIR)/dsp.o
++export HOST_OBJ_DSP      = $(HOST_OBJDIR)/dsp.o
++export OBJ_CTL_CORE      = $(OBJDIR)/ctl_core.o
++export OBJ_TK_CORE       = $(OBJDIR)/tk_core.o
++export OBJ_WS_CORE       = $(OBJDIR)/ws_core.o
++export OBJ_WS_X11_CORE   = $(OBJDIR)/ws_x11_core.o
++export OBJ_UI_CORE       = $(OBJDIR)/ui_core.o
++export OBJ_RES_CORE      = $(OBJDIR)/res_core.o
++export OBJ_TEST_CORE     = $(OBJDIR)/test_core.o
++export OBJ_TESTING_CORE  = $(OBJDIR)/testing_core.o
++export OBJ_PLUGINS       = $(OBJDIR)/plugins.o
++export OBJ_PLUGIN_UIS	 = $(OBJDIR)/plugin_uis.o
++export OBJ_METADATA      = $(OBJDIR)/metadata.o
++export HOST_OBJ_METADATA = $(HOST_OBJDIR)/metadata.o
++export OBJ_FILES         = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
+ 
+ # Libraries
+ export LIB_LADSPA       = $(OBJDIR)/$(ARTIFACT_ID)-ladspa.so
+@@ -68,11 +73,14 @@ export BIN_PROFILE      = $(OBJDIR)/$(ARTIFACT_ID)-profile
+ export BIN_TEST         = $(OBJDIR)/$(ARTIFACT_ID)-test
+ 
+ # Utils
+-export UTL_GENTTL       = $(OBJDIR)/lv2_genttl.exe
+-export UTL_VSTMAKE      = $(OBJDIR)/vst_genmake.exe
+-export UTL_JACKMAKE     = $(OBJDIR)/jack_genmake.exe
+-export UTL_GENPHP       = $(OBJDIR)/gen_php.exe
+-export UTL_RESGEN       = $(OBJDIR)/gen_resources.exe
++ifeq ($(BUILD_SYSTEM),Windows)
++  BIN_SUFFIX := .exe
++endif
++export UTL_GENTTL       = $(HOST_OBJDIR)/lv2_genttl$(BIN_SUFFIX)
++export UTL_VSTMAKE      = $(HOST_OBJDIR)/vst_genmake$(BIN_SUFFIX)
++export UTL_JACKMAKE     = $(HOST_OBJDIR)/jack_genmake$(BIN_SUFFIX)
++export UTL_GENPHP       = $(HOST_OBJDIR)/gen_php$(BIN_SUFFIX)
++export UTL_RESGEN       = $(HOST_OBJDIR)/gen_resources$(BIN_SUFFIX)
+ export UTL_FILES        = $(UTL_GENTTL) $(UTL_VSTMAKE) $(UTL_GENPHP) $(UTL_RESGEN)
+ 
+ # Files
+@@ -102,7 +110,8 @@ default: all
+ all: export CFLAGS          += -O2 -DLSP_NO_EXPERIMENTAL
+ all: export CXXFLAGS        += -O2 -DLSP_NO_EXPERIMENTAL
+ all: export EXE_FLAGS       += -pie -fPIE
+-all: compile
++all: utils compile
++
+ 
+ experimental: export CFLAGS += -O2
+ experimental: export CXXFLAGS += -O2
+@@ -161,14 +170,14 @@ profile: compile
+ compile_info:
+ 	@echo "-------------------------------------------------------------------------------"
+ 	@echo "Building binaries"
+-	@echo "  target architecture : $(BUILD_PROFILE)"
+-	@echo "  target platform     : $(BUILD_PLATFORM)"
+-	@echo "  target system       : $(BUILD_SYSTEM)"
+-	@echo "  compiler            : $(BUILD_COMPILER)"
+-	@echo "  modules             : $(BUILD_MODULES)"
+-	@echo "  UI                  : LV2=$(LV2_UI), VST=$(VST_UI)"
+-	@echo "  3D rendering        : $(BUILD_R3D_BACKENDS)"
+-	@echo "  build directory     : $(OBJDIR)"
++	@echo "  platform             : $(BUILD_PLATFORM)"
++	@echo "  system               : $(BUILD_SYSTEM)"
++	@echo "  target compiler      : $(CXX)"
++	@echo "  target architecture  : $(BUILD_PROFILE)"
++	@echo "  modules              : $(BUILD_MODULES)"
++	@echo "  UI                   : LV2=$(LV2_UI), VST=$(VST_UI)"
++	@echo "  3D rendering         : $(BUILD_R3D_BACKENDS)"
++	@echo "  build directory      : $(OBJDIR)"
+ 	@echo "-------------------------------------------------------------------------------"
+ 
+ compile: | compile_info
+@@ -186,8 +195,32 @@ test_compile: | compile_info
+ 	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
++utils: export BUILD_PROFILE=$(HOST_BUILD_PROFILE)
++utils: export OBJDIR=$(HOST_OBJDIR)
++utils: export OBJ_CORE=$(HOST_OBJ_CORE)
++utils: export OBJ_DSP=$(HOST_OBJ_DSP)
++utils: export OBJ_METADATA=$(HOST_OBJ_METADATA)
++utils: export CXX=$(HOST_CXX)
++utils: export CXXFLAGS=$(HOST_CXXFLAGS)
++utils: export LD=$(HOST_LD)
++utils: export SNDFILE_HEADERS=$(HOST_SNDFILE_HEADERS)
++utils: export SNDFILE_LIBS=$(HOST_SNDFILE_LIBS)
++utils: export LV2_HEADERS=$(HOST_LV2_HEADERS)
++utils: export LV2_LIBS=$(HOST_LV2_LIBS)
++utils: | compile_info
++	@echo "CXX $(CXX)"
++	@echo "CXXFLAGS $(CXXFLAGS)"
++	@echo "LD $(LD)"
++	@echo "BUILD_PROFILE $(BUILD_PROFILE)"
++	@echo "OBJ_DSP $(OBJ_DSP)"
++	@echo "OBJ_CORE $(OBJ_CORE)"
++	mkdir -p $(HOST_OBJDIR)/src/utils
++	$(MAKE) $(MAKE_OPTS) -C src utils
++	@echo "Utils Build OK"
++
+ clean:
+ 	-rm -rf $(BUILDDIR)
++	-rm -rf $(HOST_BUILDDIR)
+ 	-rm -rf $(TESTDIR)
+ 	-rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+diff --git a/include/metadata/metadata.h b/include/metadata/metadata.h
+index 0efaa9d..e009750 100644
+--- a/include/metadata/metadata.h
++++ b/include/metadata/metadata.h
+@@ -73,10 +73,18 @@
+     #define LSP_ARCHITECTURE                                "unknown"
+ #endif /* ARCH */
+ 
++#define STRINGIFY_(x) #x
++#define STRINGIFY(x) STRINGIFY_(x)
++
+ #ifndef LSP_MAIN_VERSION
+     #define LSP_MAIN_VERSION                                "0.0.0"
++#else
++    #define LSP_MAIN_VERSION_STR STRINGIFY(LSP_MAIN_VERSION)
++    #undef LSP_MAIN_VERSION
++    #define LSP_MAIN_VERSION LSP_MAIN_VERSION_STR
+ #endif /* LSP_MAIN_VERSION */
+ 
++
+ #define LSP_LV2_LATENCY_PORT                            "out_latency"
+ #define LSP_LV2_ATOM_PORT_IN                            "in_ui"
+ #define LSP_LV2_MIDI_PORT_IN                            "in_midi"
+@@ -86,7 +94,7 @@
+ #define LSP_LV2_OSC_PORT_OUT                            "out_osc"
+ 
+ #ifdef LSP_INSTALL_PREFIX
+-    #define LSP_LIB_PREFIX(x)       LSP_INSTALL_PREFIX x
++    #define LSP_LIB_PREFIX(x)       STRINGIFY(LSP_INSTALL_PREFIX) x
+ #else
+     #define LSP_LIB_PREFIX(x)       x
+ #endif /* PREFIX */
+diff --git a/scripts/make/configure.mk b/scripts/make/configure.mk
+index 09aee9a..412be92 100644
+--- a/scripts/make/configure.mk
++++ b/scripts/make/configure.mk
+@@ -14,7 +14,8 @@ ifndef BUILD_R3D_BACKENDS
+   BUILD_R3D_BACKENDS     := $(shell if (test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" )  then cat "$(CFGDIR)/$(R3D_BACKENDS_FILE)" 2>/dev/null; else echo "glx"; fi;)
+ endif
+ 
+-BUILD_COMPILER         := $(shell $(CC) --version | head -n 1 || echo "unknown")
++BUILD_COMPILER         := $(shell $(CXX) --version | head -n 1 || echo "unknown")
++HOST_BUILD_COMPILER    := $(shell $(HOST_CXX) --version | head -n 1 || echo "unknown")
+ 
+ export BUILD_MODULES
+ export BUILD_R3D_BACKENDS
+@@ -23,7 +24,7 @@ export BUILD_R3D_BACKENDS
+ INSTALLATIONS           =
+ UNINSTALLATIONS         = uninstall_xdg
+ RELEASES                =
+-INCLUDE                 = -I"${CURDIR}/include"
++INCLUDE                 := -I"${CURDIR}/include"
+ 
+ ifeq ($(findstring ladspa,$(BUILD_MODULES)),ladspa)
+   INSTALLATIONS          += install_ladspa
+@@ -63,61 +64,62 @@ LD_ARCH         =
+ CC_ARCH         =
+ 
+ # Build profile
+-ifeq ($(BUILD_PROFILE),i586)
+-  CC_ARCH          = -m32
+-  ifeq ($(BUILD_PLATFORM), Linux)
+-    LD_ARCH          = -m elf_i386
++ifeq ($(SKIP_CC_LD_ARCH),)
++  ifeq ($(BUILD_PROFILE),i586)
++    CC_ARCH          = -m32
++    ifeq ($(BUILD_PLATFORM), Linux)
++      LD_ARCH          = -m elf_i386
++    endif
++    ifeq ($(BUILD_PLATFORM), BSD)
++      LD_ARCH          = -m elf_i386_fbsd
++    endif
+   endif
++  
++  ifeq ($(BUILD_PROFILE),x86_64)
++    CC_ARCH          = -m64
++    ifeq ($(BUILD_PLATFORM), Linux)
++      LD_ARCH          = -m elf_x86_64
++    endif
++    ifeq ($(BUILD_PLATFORM), BSD)
++      LD_ARCH          = -m elf_x86_64_fbsd
++    endif
++  endif
++  
+   ifeq ($(BUILD_PLATFORM), BSD)
+-    LD_ARCH          = -m elf_i386_fbsd
++    INCLUDE          += -I/usr/local/include
++    ifeq ($(BUILD_PROFILE),arm)
++      CC_ARCH          = -marm
++      ifneq ($(LD_PATH),)
++        CC_ARCH          += -Wl,-rpath=$(LD_PATH)
++      endif
++    endif
+   endif
+-endif
+-
+-ifeq ($(BUILD_PROFILE),x86_64)
+-  CC_ARCH          = -m64
+-  ifeq ($(BUILD_PLATFORM), Linux)
+-    LD_ARCH          = -m elf_x86_64
++  
++  ifeq ($(BUILD_PROFILE),armv6a)
++    CC_ARCH          = -march=armv6-a -marm
+   endif
+-  ifeq ($(BUILD_PLATFORM), BSD)
+-    LD_ARCH          = -m elf_x86_64_fbsd
++  
++  ifeq ($(BUILD_PROFILE),armv7a)
++    CC_ARCH          = -march=armv7-a -marm
+   endif
+-endif
+-
+-ifeq ($(BUILD_PLATFORM), BSD)
+-  INCLUDE          += -I/usr/local/include
+-  ifeq ($(BUILD_PROFILE),arm)
++  
++  ifeq ($(BUILD_PROFILE),armv7ve)
++    CC_ARCH          = -march=armv7ve -marm
++  endif
++  
++  ifeq ($(BUILD_PROFILE),arm32)
+     CC_ARCH          = -marm
+-    ifneq ($(LD_PATH),)
+-      CC_ARCH          += -Wl,-rpath=$(LD_PATH)
+-    endif
++  endif
++  
++  ifeq ($(BUILD_PROFILE),armv8a)
++    CC_ARCH          = -march=armv7-a -marm
++  endif
++  
++  ifeq ($(BUILD_PROFILE),aarch64)
++    CC_ARCH          = -march=armv8-a
+   endif
+ endif
+ 
+-ifeq ($(BUILD_PROFILE),armv6a)
+-  CC_ARCH          = -march=armv6-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv7a)
+-  CC_ARCH          = -march=armv7-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv7ve)
+-  CC_ARCH          = -march=armv7ve -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),arm32)
+-  CC_ARCH          = -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv8a)
+-  CC_ARCH          = -march=armv7-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),aarch64)
+-  CC_ARCH          = -march=armv8-a
+-endif
+-
+-
+ export CC_ARCH
+ export LD_ARCH
+ export LD_PATH
+@@ -136,9 +138,13 @@ else
+   export XLIB_HEADERS     = $(shell pkg-config --cflags x11)
+   export XLIB_LIBS        = $(shell pkg-config --libs x11)
+   export LV2_HEADERS      = $(shell pkg-config --cflags lv2)
+-  export LV2_LIBS         = $(shell pkg-config --libs lv2)
++  export LV2_HEADERS      = $(shell pkg-config --libs lv2)
++  export HOST_LV2_HEADERS   = $(shell /usr/bin/pkg-config --cflags lv2)
++  export HOST_LV2_LIBS      = $(shell /usr/bin/pkg-config --libs lv2)
+   export SNDFILE_HEADERS  = $(shell pkg-config --cflags sndfile)
+   export SNDFILE_LIBS     = $(shell pkg-config --libs sndfile)
++  export HOST_SNDFILE_HEADERS = $(shell /usr/bin/pkg-config --cflags sndfile)
++  export HOST_SNDFILE_LIBS    = $(shell /usr/bin/pkg-config --libs sndfile)
+   export JACK_HEADERS     = $(shell pkg-config --cflags jack)
+   export JACK_LIBS        = $(shell pkg-config --libs jack)
+   export OPENGL_HEADERS   = $(shell pkg-config --cflags gl 2>/dev/null || echo "")
+diff --git a/scripts/make/set_vars.mk b/scripts/make/set_vars.mk
+index a22531a..b6aba83 100644
+--- a/scripts/make/set_vars.mk
++++ b/scripts/make/set_vars.mk
+@@ -37,7 +37,7 @@ export BUILD_PLATFORM
+ export LV2_UI
+ export VST_UI
+ 
+-# Detect processor architecture
++# Detect target processor architecture
+ ifeq ($(BUILD_PLATFORM),Windows)
+   ifndef BUILD_PROFILE
+     BUILD_ARCH                = i586
+@@ -53,7 +53,7 @@ ifeq ($(BUILD_PLATFORM),Windows)
+   endif
+ else # BUILD_PLATFORM != Windows
+   ifndef BUILD_PROFILE
+-    BUILD_ARCH              = $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
++    BUILD_ARCH              ?= $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
+     BUILD_PROFILE           = $(BUILD_ARCH)
+     ifeq ($(patsubst armv6%,armv6,$(BUILD_ARCH)), armv6)
+       BUILD_PROFILE           = armv6a
+@@ -83,4 +83,3 @@ else # BUILD_PLATFORM != Windows
+ endif # BUILD_PLATFORM != Windows
+ 
+ export BUILD_PROFILE
+-
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 565dbb1..aad590b 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -1,7 +1,9 @@
+ # Setup preferred tools
+ TOOL_LD                 = ld
++TOOL_HOST_LD            = ld
+ TOOL_CC                 = gcc
+ TOOL_CXX                = g++
++TOOL_HOST_CXX           = g++
+ TOOL_PHP                = php
+ 
+ # Setup preferred flags
+@@ -17,20 +19,25 @@ FLAG_CTUNE              = -std=c++98 \
+ ifeq ($(BUILD_PLATFORM),Solaris)
+   FLAG_RELRO              =
+   TOOL_LD                 = gld
++  TOOL_HOST_LD            = gld
+ endif
+ 
+ # Setup system variables
+ CC              		 ?= $(TOOL_CC)
+ CXX                      ?= $(TOOL_CXX)
++HOST_CXX                 ?= $(TOOL_HOST_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
++HOST_LD                  ?= $(TOOL_HOST_LD)
+ 
+ CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+-MERGE_FLAGS               = $(LD_ARCH) -r
+-EXE_TEST_FLAGS            = $(LDFLAGS) $(CC_ARCH)
+-EXE_FLAGS                 = $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++HOST_CXXFLAGS            += $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
++SO_FLAGS                 += $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
++MERGE_FLAGS              += $(LD_ARCH) -r
++EXE_TEST_FLAGS           += $(LDFLAGS) $(CC_ARCH)
++EXE_FLAGS                += $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++HOST_EXE_FLAGS           += $(HOST_LDFLAGS) $(FLAG_RELRO) -Wl,--gc-sections
+ 
+ ifeq ($(BUILD_PLATFORM), Linux)
+   SO_FLAGS                 += -Wl,--no-undefined
+@@ -58,12 +65,16 @@ endif
+ 
+ export CC
+ export CXX
++export HOST_CXX
+ export PHP
+ export LD
++export HOST_LD
+ 
+ export CFLAGS
+ export CXXFLAGS
++export HOST_CXXFLAGS
+ export SO_FLAGS
+ export MERGE_FLAGS
+ export EXE_TEST_FLAGS
+ export EXE_FLAGS
++export HOST_EXE_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index d960ad8..5f856e7 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,3 +1,5 @@
++# Estimate different pre-requisites before launching build
++
+ # Command-line flag to silence nested $(MAKE).
+ MAKE_OPTS              += VERBOSE=$(VERBOSE)
+ ifneq ($(VERBOSE),1)
+@@ -7,7 +9,8 @@ endif
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+-UTL_DEPS                = $(OBJ_CORE) $(OBJ_DSP) $(OBJ_METADATA)
++UTL_DEPS                = $(HOST_OBJ_CORE) $(HOST_OBJ_DSP) $(HOST_OBJ_METADATA)
++OBJDIR                  ?= $(BUILDDIR)
+ 
+ NEED_UI                 = 0
+ NEED_PLUGINS            = 0
+@@ -73,19 +76,44 @@ target: all
+ 
+ # Rules
+ $(SUBDIRS):
++	@echo "$(BUILDDIR)"
+ 	@echo "Building $(@)"
++	@echo "OBJDIR=$(OBJDIR)"
++	@echo "SNDFILE_HEADERS=$(SNDFILE_HEADERS)"
++	@echo "SNDFILE_LIBS=$(SNDFILE_LIBS)"
++	@echo "LV2_HEADERS=$(LV2_HEADERS)"
++	@echo "LV2_LIBS=$(LV2_LIBS)"
++	@echo "HOST_SNDFILE_HEADERS=$(HOST_SNDFILE_HEADERS)"
++	@echo "HOST_SNDFILE_LIBS=$(HOST_SNDFILE_LIBS)"
++	@echo "HOST_LV2_HEADERS=$(HOST_LV2_HEADERS)"
++	@echo "HOST_LV2_LIBS=$(HOST_LV2_LIBS)"
+ 	mkdir -p $(OBJDIR)/$(@)
+-	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ all \
++		CXX="$(CXX)" \
++		CXXFLAGS="$(CXXFLAGS)" \
++		LD="$(LD)" \
++		OBJDIR="$(OBJDIR)/$(@)" \
++		BUILD_PROFILE="$(BUILD_PROFILE)" \
++		SNDFILE_HEADERS="$(SNDFILE_HEADERS)" \
++		SNDFILE_LIBS="$(SNDFILE_LIBS)" \
++		LV2_HEADERS="$(LV2_HEADERS)" \
++		LV2_LIBS="$(LV2_LIBS)"
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+ 
++$(HOST_OBJ_CORE): core
++
+ $(OBJ_DSP): dsp
+ 
++$(HOST_OBJ_DSP): dsp
++
+ $(OBJ_PLUGINS): plugins
+ 
+ $(OBJ_METADATA): metadata
+ 
++$(HOST_OBJ_METADATA): metadata
++
+ $(OBJ_UI_CORE): ui
+ 
+ $(UTL_FILES): utils
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index fbddcaa..184bef0 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -4,15 +4,21 @@ ifneq ($(VERBOSE),1)
+ .SILENT:
+ endif
+ 
++CXX                     = $(HOST_CXX)
++CXXFLAGS                = $(HOST_CXXFLAGS)
++MAKE_OPTS              += CXX=$(HOST_CXX) CXXFLAGS=$(HOST_CXXFLAGS)
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS                 =
+-OBJ_FILES               = $(OBJ_CORE) $(OBJ_METADATA)
++OBJ_FILES               = $(HOST_OBJ_CORE) $(HOST_OBJ_METADATA) $(HOST_OBJ_DSP)
+ OBJ_LIBS                = $(PTHREAD_LIBS) $(MATH_LIBS)
+ OBJ_EXTRA               =
+ INCLUDE_EXTRA           =
+ 
++export PKG_CONFIG_SYSROOT_DIR = /
++
+ ifeq ($(BUILD_PLATFORM),BSD)
+   OBJ_LIBS               += $(ICONV_LIBS)
+ endif
+@@ -24,7 +30,7 @@ endif
+ ifeq ($(findstring lv2,$(BUILD_MODULES)),lv2)
+   MODULES                += $(UTL_GENTTL)
+   FILELIST               += lv2_genttl.o
+-  INCLUDE_EXTRA          += $(LV2_HEADERS)
++  INCLUDE_EXTRA          += $(HOST_LV2_HEADERS)
+ endif
+ ifeq ($(findstring vst,$(BUILD_MODULES)),vst)
+   MODULES                += $(UTL_VSTMAKE)
+@@ -50,32 +56,33 @@ target: all
+ # Common rules
+ $(SUBDIRS):
+ 	@echo "Building $@"
++	@echo "CXX=$(CXX)"
++	@echo "CXXFLAGS=$(CXXFLAGS)"
++	@echo "MAKE_OPTS=$(MAKE_OPTS)"
+ 	mkdir -p $(OBJDIR)/$(@)
+ 	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	@echo "  $(HOST_CXX) $(FILE)"
++	$(HOST_CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(HOST_CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+-$(UTL_GENTTL): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++$(UTL_GENTTL): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENTTL))"
++	$(HOST_CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+-$(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_JACKMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_JACKMAKE))"
++	$(HOST_CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_VSTMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_VSTMAKE))"
++	$(HOST_CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_GENPHP): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+-	
+-$(UTL_RESGEN): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+-
++$(UTL_GENPHP): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENPHP))"
++	$(HOST_CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
++$(UTL_RESGEN): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_RESGEN))"
++	$(HOST_CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_EXTRA) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+diff --git a/tmp/.gitignore b/tmp/.gitignore
+deleted file mode 100644
+index 22e8364..0000000
+--- a/tmp/.gitignore
++++ /dev/null
+@@ -1 +0,0 @@
+-/*
+\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-lv2/template b/srcpkgs/lsp-plugins-lv2/template
new file mode 100644
index 000000000000..40749aebdc81
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/template
@@ -0,0 +1,92 @@
+# Template file for 'lsp-plugins-lv2'
+pkgname=lsp-plugins-lv2
+version=1.1.30
+revision=1
+wrksrc=lsp-plugins-${version}
+build_style=gnu-makefile
+make_build_args="VERBOSE=1"
+make_check_args=$make_build_args
+make_install_target="install install_xdg"
+make_use_env=yes
+hostmakedepends="pkg-config php lv2 libsndfile-devel"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel ladspa-sdk jack-devel"
+_desc="Collection of free audio plugins"
+short_desc="${_desc} - LV2"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/"
+distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+# https://github.com/sadko4u/lsp-plugins/issues/191#issuecomment-812847630
+
+export SKIP_CC_LD_ARCH=yes
+if [ -n "$CROSS_BUILD" ]; then
+	echo "Cross"
+	export BUILD_ARCH=${XBPS_TARGET_MACHINE%%-musl}
+	export HOST_BUILD_PROFILE=${XBPS_MACHINE%%-musl}
+	export HOST_CXXFLAGS=$CXXFLAGS_host
+	export HOST_CXX=$CXX_host
+	export HOST_LD=$LD_host
+	echo "BUILD_CXXFLAGS ${CXXFLAGS_host}"
+	echo "BUILD_CXX      ${CXX_host}"
+	echo "BUILD_LD       ${LD_host}"
+	echo "BUILD_ARCH     ${BUILD_ARCH}"
+else
+	echo "Non cross"
+	export BUILD_ARCH=${XBPS_MACHINE%%-musl}
+	export HOST_BUILD_PROFILE=${XBPS_MACHINE%%-musl}
+	export HOST_CXXFLAGS=$BUILD_CXXFLAGS
+	export HOST_CXX=$BUILD_CXX
+	export HOST_LD=$BUILD_LD
+	echo "BUILD_ARCH    ${BUILD_ARCH}"
+	echo "HOST_CXXFLAGS ${HOST_CXXFLAGS}"
+	echo "HOST_CXX      ${HOST_CXX}"
+	echo "HOST_LD       ${HOST_LD}"
+fi
+
+do_check() {
+	export CXXFLAGS="$CXXFLAGS -DLSP_TESTING -DLSP_TRACE"
+	make ${makejobs} ${make_check_args} test
+	.test/lsp-plugins-test utest
+}
+
+lsp-plugins-jack_package() {
+	short_desc="${_desc} - JACK"
+	pkg_install() {
+		vmove usr/bin
+		vmove usr/lib/lsp-plugins/lsp-plugins-jack-core*
+		vmove usr/lib/lsp-plugins/lsp-plugins-r3d-glx.so
+		vmove usr/share/applications
+		vmove usr/share/desktop-directories
+		vmove usr/share/icons
+		vmove etc/xdg/menus
+	}
+}
+
+lsp-plugins-ladspa_package() {
+	short_desc="${_desc} - LADSPA"
+	pkg_install() {
+		vmove usr/lib/ladspa/lsp-plugins-ladspa.so
+	}
+}
+
+lsp-plugins-vst_package() {
+	short_desc="${_desc} - VST"
+	pkg_install() {
+		vmove usr/lib/vst
+	}
+}
+
+lsp-plugins_package() {
+	short_desc="${_desc} - LV2, JACK, LADSPA, VST"
+	depends="lsp-plugins-lv2 lsp-plugins-jack lsp-plugins-ladspa lsp-plugins-vst"
+	build_style=meta
+}
+
+lsp-plugins-doc_package() {
+	short_desc="${_desc} - documentation"
+	pkg_install() {
+		vmove usr/share/doc
+	}
+}
diff --git a/srcpkgs/lsp-plugins-vst b/srcpkgs/lsp-plugins-vst
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-vst
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Updated] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (55 preceding siblings ...)
  2021-08-02  3:57 ` Logarithmus
@ 2021-08-10  1:26 ` Logarithmus
  2021-08-10  1:28 ` Logarithmus
                   ` (10 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-08-10  1:26 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 2219 bytes --]

There is an updated pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.
Also used by `easyeffects`, `pulseeffects`' successor 
Continuation of https://github.com/void-linux/void-packages/pull/29932

TODO:
- [ ] wait for https://github.com/sadko4u/lsp-plugins/pull/198
- [ ] implement `VERBOSE` option into `lsp-plugins` Makefiles to save my sanity debugging them
https://github.com/sadko4u/lsp-plugins/pull/200
- [ ] polish & upstream cross build patch
- [ ] fix `i686`
- [ ] fix `armv6`
- [x] split the package (ladspa, lv2, vst, jack, doc)
- [ ] remove parallel check commit 

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 186125 bytes --]

From b31bc44e2e8a5f0de017b1155f5073e2b926481a Mon Sep 17 00:00:00 2001
From: Artur Sinila <freesoftware@logarithmus.dev>
Date: Mon, 5 Jul 2021 03:44:08 +0300
Subject: [PATCH 1/2] common/build-style/: enable running tests in parallel

---
 common/build-style/cmake.sh           | 6 +++++-
 common/build-style/configure.sh       | 6 +++++-
 common/build-style/gnu-configure.sh   | 6 +++++-
 common/build-style/gnu-makefile.sh    | 6 +++++-
 common/build-style/perl-module.sh     | 6 +++++-
 common/environment/setup/sourcepkg.sh | 3 ++-
 6 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/common/build-style/cmake.sh b/common/build-style/cmake.sh
index 401dabad31c8..c7ffd16fee21 100644
--- a/common/build-style/cmake.sh
+++ b/common/build-style/cmake.sh
@@ -113,7 +113,11 @@ do_check() {
 
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/configure.sh b/common/build-style/configure.sh
index 0963fc347934..b846a1a77572 100644
--- a/common/build-style/configure.sh
+++ b/common/build-style/configure.sh
@@ -29,7 +29,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-configure.sh b/common/build-style/gnu-configure.sh
index 8121136cd121..b09de442b05b 100644
--- a/common/build-style/gnu-configure.sh
+++ b/common/build-style/gnu-configure.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-makefile.sh b/common/build-style/gnu-makefile.sh
index d7ea148fc483..0f7afa7d3695 100644
--- a/common/build-style/gnu-makefile.sh
+++ b/common/build-style/gnu-makefile.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/perl-module.sh b/common/build-style/perl-module.sh
index b9a01b13cfa9..d47945b33d36 100644
--- a/common/build-style/perl-module.sh
+++ b/common/build-style/perl-module.sh
@@ -79,7 +79,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/environment/setup/sourcepkg.sh b/common/environment/setup/sourcepkg.sh
index bc06f745b78a..1fd541f1e715 100644
--- a/common/environment/setup/sourcepkg.sh
+++ b/common/environment/setup/sourcepkg.sh
@@ -13,7 +13,8 @@ unset -v cmake_builddir meson_builddir
 unset -v meson_crossfile
 unset -v gemspec
 unset -v go_import_path go_package go_mod_mode
-unset -v patch_args disable_parallel_build keep_libtool_archives make_use_env
+unset -v patch_args disable_parallel_build disable_parallel_check
+unset -v keep_libtool_archives make_use_env
 unset -v reverts subpackages makedepends hostmakedepends checkdepends depends restricted
 unset -v nopie build_options build_options_default bootstrap repository reverts
 unset -v CFLAGS CXXFLAGS FFLAGS CPPFLAGS LDFLAGS LD_LIBRARY_PATH

From e52cae3dfc98af817f4b4495fa35fc7248b8cf78 Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH 2/2] New package: lsp-plugins-1.1.30

---
 srcpkgs/lsp-plugins                           |    1 +
 srcpkgs/lsp-plugins-doc                       |    1 +
 srcpkgs/lsp-plugins-jack                      |    1 +
 srcpkgs/lsp-plugins-ladspa                    |    1 +
 .../00-makefile-test-remove-cflags.patch      |   12 +
 srcpkgs/lsp-plugins-lv2/files/01-musl.patch   |  391 ++++
 .../files/02-make-verbose.patch               | 1082 +++++++++
 .../files/03-improve-cross.patch              |  565 +++++
 srcpkgs/lsp-plugins-lv2/files/04-misc.patch   |  280 +++
 .../patches/00-patch-all.patch                | 2061 +++++++++++++++++
 srcpkgs/lsp-plugins-lv2/template              |   75 +
 srcpkgs/lsp-plugins-vst                       |    1 +
 12 files changed, 4471 insertions(+)
 create mode 120000 srcpkgs/lsp-plugins
 create mode 120000 srcpkgs/lsp-plugins-doc
 create mode 120000 srcpkgs/lsp-plugins-jack
 create mode 120000 srcpkgs/lsp-plugins-ladspa
 create mode 100644 srcpkgs/lsp-plugins-lv2/files/00-makefile-test-remove-cflags.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/files/01-musl.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/files/02-make-verbose.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/files/03-improve-cross.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/files/04-misc.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/patches/00-patch-all.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/template
 create mode 120000 srcpkgs/lsp-plugins-vst

diff --git a/srcpkgs/lsp-plugins b/srcpkgs/lsp-plugins
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-doc b/srcpkgs/lsp-plugins-doc
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-doc
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-jack b/srcpkgs/lsp-plugins-jack
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-jack
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-ladspa b/srcpkgs/lsp-plugins-ladspa
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-ladspa
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-lv2/files/00-makefile-test-remove-cflags.patch b/srcpkgs/lsp-plugins-lv2/files/00-makefile-test-remove-cflags.patch
new file mode 100644
index 000000000000..fd82f25d4a25
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/files/00-makefile-test-remove-cflags.patch
@@ -0,0 +1,12 @@
+https://github.com/void-linux/void-packages/pull/29932#discussion_r605695858
+--- a/Makefile
++++ b/Makefile
+@@ -108,8 +108,6 @@ trace: export EXE_FLAGS     += -g3
+ trace: compile
+ 
+ test: OBJDIR                 = $(TESTDIR)
+-test: export CFLAGS         += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-test: export CXXFLAGS       += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
diff --git a/srcpkgs/lsp-plugins-lv2/files/01-musl.patch b/srcpkgs/lsp-plugins-lv2/files/01-musl.patch
new file mode 100644
index 000000000000..6dc08949a87a
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/files/01-musl.patch
@@ -0,0 +1,391 @@
+diff --git a/TODO.txt b/TODO.txt
+index 4976293..3bb3db8 100644
+--- a/TODO.txt
++++ b/TODO.txt
+@@ -28,6 +28,11 @@
+ - Added possibility to change themes in runtime.
+ - Complicated plugin UIs now allow to switch between Advanced and Novice modes.
+ 
++=== 1.1.31 ===
++
++* Fixed X11 error handling routine that could crash under certain conditions.
++* Better support for musl libc (contributed by Artur Sinila).
++
+ *******************************************************************************
+ * New plugin check list before release
+ *******************************************************************************
+diff --git a/include/common/types.h b/include/common/types.h
+index dd1816e..59c794e 100644
+--- a/include/common/types.h
++++ b/include/common/types.h
+@@ -563,6 +563,12 @@
+     #define MINIMUM_ALIGN                   DEFAULT_ALIGN
+ #endif /* DEFAULT_ALIGN */
+ 
++//-----------------------------------------------------------------------------
++// Detect some libraries
++#ifdef __GLIBC__
++    #define USE_GLIBC                           __GLIBC__
++#endif /* GLIBC */
++
+ //-----------------------------------------------------------------------------
+ // Type definitions
+ __IF_32( typedef        uint32_t            umword_t );
+diff --git a/include/data/cvector.h b/include/data/cvector.h
+index eccc94a..17fe119 100644
+--- a/include/data/cvector.h
++++ b/include/data/cvector.h
+@@ -25,6 +25,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <sys/types.h>
+ 
+ #define CVECTOR_GROW        16
+ 
+diff --git a/include/test/main/executor.h b/include/test/main/executor.h
+index 0faf73f..5a0c016 100644
+--- a/include/test/main/executor.h
++++ b/include/test/main/executor.h
+@@ -633,7 +633,7 @@ namespace lsp
+     }
+ #endif /* PLATFORM_WINDOWS */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     void TestExecutor::start_memcheck(test::Test *v)
+     {
+         if (!pCfg->mtrace)
+diff --git a/include/test/main/types.h b/include/test/main/types.h
+index ef15800..0c5d7c2 100644
+--- a/include/test/main/types.h
++++ b/include/test/main/types.h
+@@ -42,7 +42,7 @@
+     #include <fcntl.h>
+ #endif /* PLATFORM_UNIX_COMPATIBLE */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     #include <mcheck.h>
+ #endif /* PLATFORM_LINUX */
+ 
+diff --git a/include/testing/mtest/3d/common/X11Renderer.h b/include/testing/mtest/3d/common/X11Renderer.h
+index e8ec205..f0a51e2 100644
+--- a/include/testing/mtest/3d/common/X11Renderer.h
++++ b/include/testing/mtest/3d/common/X11Renderer.h
+@@ -30,7 +30,7 @@
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include <rendering/backend.h>
+ #include <core/ipc/Library.h>
+diff --git a/src/testing/mtest/3d/boolean3d.cpp b/src/testing/mtest/3d/boolean3d.cpp
+deleted file mode 100644
+index 636dce1..0000000
+--- a/src/testing/mtest/3d/boolean3d.cpp
++++ /dev/null
+@@ -1,253 +0,0 @@
+-/*
+- * Copyright (C) 2020 Linux Studio Plugins Project <https://lsp-plug.in/>
+- *           (C) 2020 Vladimir Sadovnikov <sadko4u@gmail.com>
+- *
+- * This file is part of lsp-plugins
+- * Created on: 24 дек. 2018 г.
+- *
+- * lsp-plugins is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU Lesser General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * any later version.
+- *
+- * lsp-plugins is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU Lesser General Public License for more details.
+- *
+- * You should have received a copy of the GNU Lesser General Public License
+- * along with lsp-plugins. If not, see <https://www.gnu.org/licenses/>.
+- */
+-
+-#if 0
+-
+-#include <test/mtest.h>
+-#include <testing/mtest/3d/common/X11Renderer.h>
+-#include <core/files/Model3DFile.h>
+-#include <core/3d/rt_context.h>
+-#include <core/3d/RayTrace3D.h>
+-
+-#include <core/types.h>
+-#include <core/debug.h>
+-#include <core/sugar.h>
+-#include <core/status.h>
+-#include <stdlib.h>
+-#include <errno.h>
+-#include <data/cstorage.h>
+-
+-#include <X11/X.h>
+-#include <X11/Xlib.h>
+-#include <X11/keysymdef.h>
+-#include <GL/gl.h>
+-#include <GL/glx.h>
+-#include <GL/glu.h>
+-#include <sys/poll.h>
+-
+-//#define TEST_DEBUG
+-
+-#ifndef TEST_DEBUG
+-//    #define BREAKPOINT_STEP     -1
+-//    #define BREAKPOINT_STEP     27
+-//    #define BREAKPOINT_STEP     83
+-    #define BREAKPOINT_STEP     215
+-//    #define BREAKPOINT_STEP     0
+-
+-#else /* DEBUG */
+-    #define BREAKPOINT_STEP     0
+-#endif /* DEBUG */
+-
+-MTEST_BEGIN("3d", boolean)
+-
+-    class Renderer: public X11Renderer
+-    {
+-        private:
+-            Scene3D        *pScene;
+-            ssize_t         nTrace;
+-            bool            bDrawMatched;
+-            bool            bDrawIgnored;
+-            bool            bDrawDebug;
+-
+-        public:
+-            explicit Renderer(Scene3D *scene, View3D *view): X11Renderer(view)
+-            {
+-                pScene = scene;
+-                bDrawMatched    = true;
+-                bDrawIgnored    = true;
+-                bDrawDebug      = true;
+-                bDrawNormals    = false;
+-                nTrace          = BREAKPOINT_STEP;
+-
+-                update_view();
+-            }
+-
+-            virtual ~Renderer()
+-            {
+-            }
+-
+-        public:
+-            virtual void on_key_press(const XKeyEvent &ev, KeySym key)
+-            {
+-                switch (key)
+-                {
+-                    case XK_Up:
+-                        nTrace++;
+-                        lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                        update_view();
+-                        break;
+-                    case XK_Down:
+-                        if (nTrace >= 0)
+-                        {
+-                            nTrace--;
+-                            lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                            update_view();
+-                        }
+-                        break;
+-
+-                    case 'm':
+-                    {
+-                        bDrawMatched = ! bDrawMatched;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'i':
+-                    {
+-                        bDrawIgnored = ! bDrawIgnored;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'd':
+-                    {
+-                        bDrawDebug = ! bDrawDebug;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case '0': case '1': case '2': case '3': case '4':
+-                    case '5': case '6': case '7': case '8': case '9':
+-                    {
+-                        Object3D *obj = pScene->get_object(key - '0');
+-                        if (obj != NULL)
+-                        {
+-                            obj->set_visible(!obj->is_visible());
+-                            update_view();
+-                        }
+-                        break;
+-                    }
+-                    default:
+-                        X11Renderer::on_key_press(ev, key);
+-                        break;
+-                }
+-            }
+-
+-        protected:
+-            status_t perform_boolean(rt_debug_t *shared)
+-            {
+-                if (pScene->num_objects() <= 0)
+-                    return STATUS_OK;
+-
+-                rt_mesh_t mesh;
+-                mesh.set_debug_context(shared, &shared->trace);
+-
+-                Object3D *obj = pScene->object(0);
+-                status_t res = mesh.init(obj, 0, obj->matrix());
+-                if (res != STATUS_OK)
+-                    return res;
+-
+-                for (size_t i=1, n=pScene->num_objects(); i<n; ++i)
+-                {
+-                    obj = pScene->object(i);
+-                    res = mesh.subtract(obj, i, obj->matrix());
+-                    if (res != STATUS_OK)
+-                        return res;
+-                }
+-
+-                return STATUS_OK;
+-            }
+-
+-            status_t    update_view()
+-            {
+-                v_vertex3d_t v[3];
+-                status_t res = STATUS_OK;
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // List of ignored and matched triangles
+-                rt_debug_t global;
+-                global.breakpoint   = nTrace;
+-                global.step         = 0;
+-
+-                // Perform raytrace
+-                res     = perform_boolean(&global);
+-                if (res == STATUS_BREAKPOINT)
+-                {
+-                    pView->swap(&global.trace);
+-                    res         = STATUS_OK;
+-                }
+-
+-                if (!bDrawDebug)
+-                    pView->clear_all();
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // Build final scene from matched and ignored items
+-                if (bDrawIgnored)
+-                {
+-                    for (size_t i=0, m=global.ignored.size(); i < m; ++i)
+-                        pView->add_triangle_1c(global.ignored.at(i), &C_GRAY);
+-                }
+-
+-                if (bDrawMatched)
+-                {
+-                    for (size_t i=0, m=global.matched.size(); i < m; ++i)
+-                    {
+-                        v_triangle3d_t *t = global.matched.at(i);
+-                        v[0].p     = t->p[0];
+-                        v[0].n     = t->n[0];
+-                        v[0].c     = C_RED;
+-
+-                        v[1].p     = t->p[1];
+-                        v[1].n     = t->n[1];
+-                        v[1].c     = C_GREEN;
+-
+-                        v[2].p     = t->p[2];
+-                        v[2].n     = t->n[2];
+-                        v[2].c     = C_BLUE;
+-
+-                        pView->add_triangle(v);
+-                    }
+-                }
+-
+-                global.ignored.flush();
+-                global.matched.flush();
+-
+-                return res;
+-            }
+-    };
+-
+-    MTEST_MAIN
+-    {
+-        const char *scene_file = (argc < 1) ? "res/test/3d/cross.obj" : argv[0];
+-
+-        // Load scene
+-        Scene3D s;
+-        View3D v;
+-        status_t res = Model3DFile::load(&s, scene_file, true);
+-        MTEST_ASSERT_MSG(res == STATUS_OK, "Error loading scene from file %s", scene_file);
+-
+-        // Initialize renderer
+-        Renderer r(&s, &v);
+-        MTEST_ASSERT_MSG(r.init() == STATUS_OK, "Error initializing renderer");
+-        r.run();
+-        r.destroy();
+-
+-        // Destroy scene
+-        s.destroy();
+-    }
+-
+-MTEST_END
+-
+-#endif
+diff --git a/src/testing/mtest/3d/bsp_context.cpp b/src/testing/mtest/3d/bsp_context.cpp
+index de54427..f7b7a34 100644
+--- a/src/testing/mtest/3d/bsp_context.cpp
++++ b/src/testing/mtest/3d/bsp_context.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/reflections3d.cpp b/src/testing/mtest/3d/reflections3d.cpp
+index e250444..367f86c 100644
+--- a/src/testing/mtest/3d/reflections3d.cpp
++++ b/src/testing/mtest/3d/reflections3d.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/ui/ws/x11/X11Display.cpp b/src/ui/ws/x11/X11Display.cpp
+index d85db51..987e8a9 100644
+--- a/src/ui/ws/x11/X11Display.cpp
++++ b/src/ui/ws/x11/X11Display.cpp
+@@ -23,7 +23,7 @@
+ 
+ #ifdef USE_X11_DISPLAY
+ 
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ 
+@@ -233,7 +233,7 @@ namespace lsp
+                 while (!atomic_cas(&hLock, 0, 1)) { /* Wait */ }
+ 
+                 // Dispatch errors between Displays
+-                for (X11Display *dp = pHandlers; dp != NULL; ++dp)
++                for (X11Display *dp = pHandlers; dp != NULL; dp = dp->pNextHandler)
+                     if (dp->pDisplay == dpy)
+                         dp->handle_error(ev);
+ 
diff --git a/srcpkgs/lsp-plugins-lv2/files/02-make-verbose.patch b/srcpkgs/lsp-plugins-lv2/files/02-make-verbose.patch
new file mode 100644
index 000000000000..d6c4f6ce2f92
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/files/02-make-verbose.patch
@@ -0,0 +1,1082 @@
+diff --git a/Makefile b/Makefile
+index 2d9cb79..79ddcc6 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ # Common definitions
+ RELEASE_TEXT            = LICENSE.txt README.txt CHANGELOG.txt
+ RELEASE_SRC             = $(RELEASE_TEXT) src build-*.sh include res Makefile release.sh
+@@ -166,24 +172,24 @@ compile_info:
+ 	@echo "-------------------------------------------------------------------------------"
+ 
+ compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@mkdir -p $(CFGDIR)
+-	@test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
+-	@test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
+-	@test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
+-	@test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++	mkdir -p $(OBJDIR)/src
++	mkdir -p $(CFGDIR)
++	test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
++	test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
++	test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
++	test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Build OK"
+ 	
+ test_compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++	mkdir -p $(OBJDIR)/src
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
+ clean:
+-	@-rm -rf $(BUILDDIR)
+-	@-rm -rf $(TESTDIR)
+-	@-rm -rf $(CFGDIR)
++	-rm -rf $(BUILDDIR)
++	-rm -rf $(TESTDIR)
++	-rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+ 
+ # Build targets
+@@ -209,63 +215,63 @@ install: $(INSTALLATIONS)
+ 
+ install_ladspa: all
+ 	@echo "Installing LADSPA plugins to $(DESTDIR)$(LADSPA_PATH)/"
+-	@mkdir -p $(DESTDIR)$(LADSPA_PATH)
+-	@$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
++	mkdir -p $(DESTDIR)$(LADSPA_PATH)
++	$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
+ 	
+ install_lv2: all
+ 	@echo "Installing LV2 plugins to $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
+-	@$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
++	$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+ 	
+ install_vst: all
+ 	@echo "Installing VST plugins to $(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+-	@$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
++	$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+ 
+ install_jack: all
+ 	@echo "Installing JACK core to $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
++	$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+ 	@echo "Installing JACK standalone plugins to $(DESTDIR)$(BIN_PATH)"
+-	@mkdir -p "$(DESTDIR)$(BIN_PATH)"
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
++	mkdir -p "$(DESTDIR)$(BIN_PATH)"
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
+ 
+ install_xdg:
+ 	@echo "Installing desktop icons to $(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
+-	@mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
+-	@cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
+-	@cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
+-	@cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
+-	@cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
++	mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
++	cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
++	cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
++	cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
++	cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
+ 
+ install_doc: all
+ 	@echo "Installing documentation to $(DESTDIR)$(DOC_PATH)"
+-	@mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+ # Release targets
+ dbg_release: export CFLAGS        += -DLSP_TRACE -O2
+@@ -279,67 +285,67 @@ release: $(RELEASES)
+ 
+ release_prepare: all
+ 	@echo "Releasing plugins for architecture $(BUILD_PROFILE)"
+-	@mkdir -p $(RELEASE)
+-	@mkdir -p $(DESTDIR)
++	mkdir -p $(RELEASE)
++	mkdir -p $(DESTDIR)
+ 	
+ release_ladspa: DESTDIR=$(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_ladspa: | release_prepare install_ladspa
+ 	@echo "Releasing LADSPA binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_lv2: DESTDIR=$(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_lv2: | release_prepare install_lv2
+ 	@echo "Releasing LV2 binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_vst: DESTDIR=$(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_vst: | release_prepare install_vst
+ 	@echo "Releasing VST binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_jack: DESTDIR=$(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_jack: | release_prepare install_jack
+ 	@echo "Releasing JACK binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 
+ release_profile: DESTDIR=$(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_profile: | release_prepare
+ 	@echo "Releasing PROFILE binaries"
+-	@$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ 
+ release_src: DESTDIR=$(RELEASE)/$(SRC_ID)
+ release_src: | release_prepare
+ 	@echo "Releasing source code binaries"
+-	@mkdir -p $(DESTDIR)
+-	@mkdir -p $(DESTDIR)/scripts
+-	@cp -R $(RELEASE_SRC) $(DESTDIR)/
+-	@cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	mkdir -p $(DESTDIR)/scripts
++	cp -R $(RELEASE_SRC) $(DESTDIR)/
++	cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
++	rm -rf $(DESTDIR)
+ 
+ release_doc: DESTDIR=$(RELEASE)/$(DOC_ID)
+ release_doc: | release_prepare
+ 	@echo "Releasing documentation"
+-	@mkdir -p $(DESTDIR)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
++	rm -rf $(DESTDIR)
+ 
+ # Unrelease target
+ unrelease: clean
+-	@-rm -rf $(RELEASE)
++	-rm -rf $(RELEASE)
+ 	@echo "Unrelease OK"
+ 
+ # Uninstall target
+@@ -348,41 +354,41 @@ uninstall: $(UNINSTALLATIONS)
+ 	
+ uninstall_ladspa:
+ 	@echo "Uninstalling LADSPA"
+-	@-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
++	-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
+ 	
+ uninstall_lv2:
+ 	@echo "Uninstalling LV2"
+-	@-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
++	-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
+ 	
+ uninstall_vst:
+ 	@echo "Uninstalling VST"
+-	@-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
++	-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
++	-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
++	-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
+ 	
+ uninstall_jack:
+ 	@echo "Uninstalling JACK"
+-	@-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
+-	@-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
++	-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
++	-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
++	-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
++	-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
+ 
+ uninstall_xdg:
+ 	@echo "Uninstalling desktop icons"
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
+-	@-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
++	-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
++	-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
+ 
+ uninstall_doc:
+ 	@echo "Uninstalling DOC"
+-	@-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+diff --git a/TODO.txt b/TODO.txt
+index 3bb3db8..f8562ef 100644
+--- a/TODO.txt
++++ b/TODO.txt
+@@ -32,6 +32,7 @@
+ 
+ * Fixed X11 error handling routine that could crash under certain conditions.
+ * Better support for musl libc (contributed by Artur Sinila).
++* Added support of VERBOSE parameter for build system (contributed by Artur Sinila).
+ 
+ *******************************************************************************
+ * New plugin check list before release
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 1fb917e..565dbb1 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -25,7 +25,6 @@ CXX                      ?= $(TOOL_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
+ 
+-MAKE_OPTS                 = -s
+ CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+@@ -62,7 +61,6 @@ export CXX
+ export PHP
+ export LD
+ 
+-export MAKE_OPTS
+ export CFLAGS
+ export CXXFLAGS
+ export SO_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index 8546191..d960ad8 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+@@ -58,6 +64,7 @@ ifeq ($(NEED_UI),1)
+   CONTAINER_DEPS         += $(OBJ_UI_CORE) $(OBJ_RES_CORE) rendering
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all $(MODULES)
+ 
+ all: $(MODULES)
+@@ -67,8 +74,8 @@ target: all
+ # Rules
+ $(SUBDIRS):
+ 	@echo "Building $(@)"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+@@ -93,10 +100,10 @@ $(OBJ_TESTING_CORE): test testing rendering
+ 
+ $(OBJ_RES_CORE): $(OBJ_CORE) $(UTL_RESGEN)
+ 	@echo "Generating builtin resources"
+-	@mkdir -p $(OBJDIR)/res
+-	@$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	mkdir -p $(OBJDIR)/res
++	$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
++	-rm gmon.out >/dev/null 2>&1
++	$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ # Target dependencies
+ container: $(CONTAINER_DEPS)
+@@ -108,18 +115,18 @@ doc: utils $(PHP_PLUGINS)
+ # Additional processing
+ $(PHP_PLUGINS): $(UTL_GENPHP)
+ 	@echo "Generating PHP file $(notdir $(PHP_PLUGINS))"
+-	@$(UTL_GENPHP) $(PHP_PLUGINS)
++	$(UTL_GENPHP) $(PHP_PLUGINS)
+ 
+ vst_stub: $(UTL_VSTMAKE)
+ 	@echo "Building VST stub"
+-	@mkdir -p $(OBJDIR)/vst
+-	@$(UTL_VSTMAKE) $(OBJDIR)/vst
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
++	mkdir -p $(OBJDIR)/vst
++	$(UTL_VSTMAKE) $(OBJDIR)/vst
++	-rm gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
+ 
+ jack_stub: $(UTL_JACKMAKE)
+ 	@echo "Building JACK stub"
+-	@mkdir -p $(OBJDIR)/jack
+-	@$(UTL_JACKMAKE) $(OBJDIR)/jack
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
++	mkdir -p $(OBJDIR)/jack
++	$(UTL_JACKMAKE) $(OBJDIR)/jack
++	-rm gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
+diff --git a/src/container/Makefile b/src/container/Makefile
+index 8aa8196..23a2e7a 100644
+--- a/src/container/Makefile
++++ b/src/container/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ OBJ_HELPERS             = $(OBJDIR)/CairoCanvas.o
+@@ -53,46 +59,47 @@ ifeq ($(VST_UI),1)
+   X_VST_LIBS             += $(UI_LIBS)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(MODULES)
+ 
+ $(OBJ_HELPERS):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
+ 
+ $(LIB_LADSPA):
+ 	@echo "  $(CXX) ladspa.cpp"
+-	@$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_LADSPA))"
+-	@$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
++	$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
+ 
+ $(LIB_LV2): $(X_LV2_DEPS)
+ 	@echo "  $(CXX) lv2.cpp"
+-	@$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
+-	@echo "  $(CXX) $(notdir $(X_LIB_LV2))"
+-	@$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
++	$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
++	@echo "  $(CXX) $(notdir $(LIB_LV2))"
++	$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
+ 
+ $(LIB_VST):
+ 	@echo "  $(CXX) vst.cpp"
+-	@$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_VST))"
+-	@$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
++	$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
+ 
+ $(LIB_JACK): $(OBJ_HELPERS)
+ 	@echo "  $(CXX) jack.cpp"
+-	@$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
++	$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
+ 	@echo "  $(CXX) $(notdir $(LIB_JACK))"
+-	@$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
++	$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
+ 
+ $(BIN_PROFILE): $(LIB_JACK)
+ 	@echo "  $(CXX) profile.cpp"
+-	@$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_PROFILE))"
+-	@$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
++	$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
+ 
+ $(BIN_TEST): $(LIB_JACK)
+ 	@echo "  $(CXX) test.cpp"
+-	@$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_TEST))"
+-	@$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
++	$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
+diff --git a/src/core/Makefile b/src/core/Makefile
+index a9ce1a5..3ad14a5 100644
+--- a/src/core/Makefile
++++ b/src/core/Makefile
+@@ -1,18 +1,25 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(SNDFILE_HEADERS)
+ LIBS                    = $(PTHREAD_LIBS)
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(OBJ_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
+ 
+ $(OBJ_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_CORE))"
+-	@$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
++	$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
+diff --git a/src/doc/Makefile b/src/doc/Makefile
+index aac73bf..f7f18a1 100644
+--- a/src/doc/Makefile
++++ b/src/doc/Makefile
+@@ -1,6 +1,13 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ PHPDIR      = $(BUILDDIR)/src/doc
+ HTMLDIR     = $(BUILDDIR)/html
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -8,14 +15,14 @@ target: all
+ # Common rules
+ $(PHPDIR)/Makefile:
+ 	@echo "Preparing PHP documentation generator"
+-	@mkdir -p $(PHPDIR)
+-	@mkdir -p $(HTMLDIR)
+-	@cp -rf * $(PHPDIR)/
+-	@cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
+-	@cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
+-	@cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
+-	@$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
++	mkdir -p $(PHPDIR)
++	mkdir -p $(HTMLDIR)
++	cp -rf * $(PHPDIR)/
++	cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
++	cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
++	cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
++	$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
+ 
+ all: $(PHPDIR)/Makefile
+ 	@echo "Generating HTML documentation"
+-	@$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
++	$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
+diff --git a/src/dsp/Makefile b/src/dsp/Makefile
+index f3d9ab1..aac8007 100644
+--- a/src/dsp/Makefile
++++ b/src/dsp/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ NATIVE_IMPL             = $(OBJDIR)/native.o
+ 
+ X86_IMPL                = $(OBJDIR)/x86.o
+@@ -51,6 +57,7 @@ ifeq ($(BUILD_PROFILE), aarch64)
+ LINK_OBJECTS           += $(AARCH64_IMPL) $(ASIMD_IMPL)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -59,41 +66,41 @@ all: $(OBJ_DSP)
+ 
+ $(OBJ_DSP): $(LINK_OBJECTS)
+ 	@echo "  $(LD) $(notdir $(OBJ_DSP))"
+-	@$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
++	$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
+ 
+ $(DSP_IMPL) $(BITS_IMPL) $(NATIVE_IMPL) $(X86_IMPL) $(ARM_IMPL) $(AARCH64_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	
+ $(SSE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE3_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE4_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
+ 	
+ $(NEON_D32_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
+ 	
+ $(ASIMD_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
+ 
+diff --git a/src/metadata/Makefile b/src/metadata/Makefile
+index 201f89a..403f38a 100644
+--- a/src/metadata/Makefile
++++ b/src/metadata/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -10,8 +16,8 @@ target: all
+ 
+ $(OBJ_METADATA): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_METADATA))"
+-	@$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+diff --git a/src/plugins/Makefile b/src/plugins/Makefile
+index 1f197dc..85963ba 100644
+--- a/src/plugins/Makefile
++++ b/src/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,8 +14,8 @@ all:  $(OBJ_PLUGINS)
+ 
+ $(OBJ_PLUGINS): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(OBJ_PLUGINS))"
+-	@$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
++	$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
+diff --git a/src/rendering/Makefile b/src/rendering/Makefile
+index 897e327..65f3237 100644
+--- a/src/rendering/Makefile
++++ b/src/rendering/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ BASE_IMPL             	= $(OBJDIR)/base_backend.o
+ 
+ GLX_IMPL                = $(OBJDIR)/glx/backend.o $(OBJDIR)/glx/factory.o
+@@ -20,15 +26,15 @@ all: $(MODULES)
+ 
+ $(LIB_R3D_GLX): $(BASE_IMPL) $(GLX_IMPL)
+ 	@echo "  $(CXX) $(notdir $(LIB_R3D_GLX))"
+-	@$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
++	$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
+ 
+ $(BASE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 	
+ $(GLX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $(@))
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
++	mkdir -p $(dir $(@))
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
+ 
+ 
+diff --git a/src/test/Makefile b/src/test/Makefile
+index e8016e1..a89366e 100644
+--- a/src/test/Makefile
++++ b/src/test/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TEST_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TEST_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TEST_CORE))"
+-	@$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/testing/Makefile b/src/testing/Makefile
+index 705913d..d048065 100644
+--- a/src/testing/Makefile
++++ b/src/testing/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TESTING_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TESTING_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TESTING_CORE))"
+-	@$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/ui/Makefile b/src/ui/Makefile
+index 503111d..eb1e4c5 100644
+--- a/src/ui/Makefile
++++ b/src/ui/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= ws tk ctl plugins
+@@ -8,15 +14,15 @@ PACKAGES                = $(OBJ_WS_CORE) $(OBJ_TK_CORE) $(OBJ_CTL_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_UI_CORE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_UI_CORE)
+diff --git a/src/ui/ctl/Makefile b/src/ui/ctl/Makefile
+index 3f727db..692fe9d 100644
+--- a/src/ui/ctl/Makefile
++++ b/src/ui/ctl/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_CTL_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_CTL_CORE) $(SUBDIRS)
+diff --git a/src/ui/plugins/Makefile b/src/ui/plugins/Makefile
+index 8f8db8f..0e6c3d8 100644
+--- a/src/ui/plugins/Makefile
++++ b/src/ui/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_PLUGIN_UIS): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_PLUGIN_UIS) $(SUBDIRS)
+diff --git a/src/ui/tk/Makefile b/src/ui/tk/Makefile
+index 8700f63..cfb4c78 100644
+--- a/src/ui/tk/Makefile
++++ b/src/ui/tk/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -6,11 +12,11 @@ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_TK_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_TK_CORE)
+diff --git a/src/ui/ws/Makefile b/src/ui/ws/Makefile
+index 1109752..b9836d8 100644
+--- a/src/ui/ws/Makefile
++++ b/src/ui/ws/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= x11
+@@ -8,15 +14,15 @@ all: $(OBJ_WS_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ $(OBJ_WS_CORE): $(FILES) $(OBJ_WS_X11_CORE)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
++	$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
+ 
+ $(OBJ_WS_X11_CORE): $(SUBDIRS)
+diff --git a/src/ui/ws/x11/Makefile b/src/ui/ws/x11/Makefile
+index b99e93d..7bffca3 100644
+--- a/src/ui/ws/x11/Makefile
++++ b/src/ui/ws/x11/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(XLIB_HEADERS) $(CAIRO_HEADERS)
+@@ -8,9 +14,9 @@ all: $(OBJ_WS_X11_CORE)
+ 
+ $(OBJ_WS_X11_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
++	$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index 88b3739..fbddcaa 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -44,32 +50,32 @@ target: all
+ # Common rules
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+ $(UTL_GENTTL): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	@$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++	$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+ $(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	@$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	@$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_GENPHP): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	@$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_RESGEN): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	@$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 
+-	
+\ No newline at end of file
++	
+diff --git a/src/utils/jack_genmake.cpp b/src/utils/jack_genmake.cpp
+index 09974b0..3272ad8 100644
+--- a/src/utils/jack_genmake.cpp
++++ b/src/utils/jack_genmake.cpp
+@@ -97,6 +97,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%=%%.cpp)\n");
+@@ -107,11 +112,11 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
+ 
+         fprintf(out, "install: $(FILES)\n");
+-        fprintf(out, "\t@$(INSTALL) $(FILES) $(TARGET_PATH)/");
++        fprintf(out, "\t$(INSTALL) $(FILES) $(TARGET_PATH)/");
+ 
+         // Close file
+         fclose(out);
+diff --git a/src/utils/vst_genmake.cpp b/src/utils/vst_genmake.cpp
+index 9eeedeb..f47f783 100644
+--- a/src/utils/vst_genmake.cpp
++++ b/src/utils/vst_genmake.cpp
+@@ -100,6 +100,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%.so, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%.so=%%.cpp)\n");
+@@ -110,8 +115,8 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
+ 
+         // Close file
+         fclose(out);
diff --git a/srcpkgs/lsp-plugins-lv2/files/03-improve-cross.patch b/srcpkgs/lsp-plugins-lv2/files/03-improve-cross.patch
new file mode 100644
index 000000000000..ec096a4184e3
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/files/03-improve-cross.patch
@@ -0,0 +1,565 @@
+diff --git a/.gitignore b/.gitignore
+index 5bc0ecb..4a1edec 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -3,6 +3,7 @@
+ /design/*
+ /.builconfig/*
+ /.build/*
++/.host_build/*
+ /.buildconfig/*
+ /.test/*
+ /.release/*
+diff --git a/Makefile b/Makefile
+index 79ddcc6..ce3de4e 100644
+--- a/Makefile
++++ b/Makefile
+@@ -24,8 +24,10 @@ export RESDIR           = ${CURDIR}/res
+ export RELEASE          = ${CURDIR}/.release
+ export RELEASE_BIN      = $(RELEASE)/$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ export BUILDDIR         = ${CURDIR}/.build
++export HOST_BUILDDIR    = ${CURDIR}/.host_build
+ export TESTDIR          = ${CURDIR}/.test
+ OBJDIR                  = $(BUILDDIR)
++export HOST_OBJDIR      = $(HOST_BUILDDIR)
+ 
+ # Installation locations
+ BIN_PATH               ?= $(PREFIX)/bin
+@@ -41,20 +43,23 @@ VST_PATH                = $(LIB_PATH)/vst
+ export BASEDIR          = ${CURDIR}
+ 
+ # Objects
+-export OBJ_CORE         = $(OBJDIR)/core.o
+-export OBJ_DSP          = $(OBJDIR)/dsp.o
+-export OBJ_CTL_CORE     = $(OBJDIR)/ctl_core.o
+-export OBJ_TK_CORE      = $(OBJDIR)/tk_core.o
+-export OBJ_WS_CORE      = $(OBJDIR)/ws_core.o
+-export OBJ_WS_X11_CORE  = $(OBJDIR)/ws_x11_core.o
+-export OBJ_UI_CORE      = $(OBJDIR)/ui_core.o
+-export OBJ_RES_CORE     = $(OBJDIR)/res_core.o
+-export OBJ_TEST_CORE    = $(OBJDIR)/test_core.o
+-export OBJ_TESTING_CORE = $(OBJDIR)/testing_core.o
+-export OBJ_PLUGINS      = $(OBJDIR)/plugins.o
+-export OBJ_PLUGIN_UIS	= $(OBJDIR)/plugin_uis.o
+-export OBJ_METADATA     = $(OBJDIR)/metadata.o
+-export OBJ_FILES        = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
++export OBJ_CORE          = $(OBJDIR)/core.o
++export HOST_OBJ_CORE     = $(HOST_OBJDIR)/core.o
++export OBJ_DSP           = $(OBJDIR)/dsp.o
++export HOST_OBJ_DSP      = $(HOST_OBJDIR)/dsp.o
++export OBJ_CTL_CORE      = $(OBJDIR)/ctl_core.o
++export OBJ_TK_CORE       = $(OBJDIR)/tk_core.o
++export OBJ_WS_CORE       = $(OBJDIR)/ws_core.o
++export OBJ_WS_X11_CORE   = $(OBJDIR)/ws_x11_core.o
++export OBJ_UI_CORE       = $(OBJDIR)/ui_core.o
++export OBJ_RES_CORE      = $(OBJDIR)/res_core.o
++export OBJ_TEST_CORE     = $(OBJDIR)/test_core.o
++export OBJ_TESTING_CORE  = $(OBJDIR)/testing_core.o
++export OBJ_PLUGINS       = $(OBJDIR)/plugins.o
++export OBJ_PLUGIN_UIS	 = $(OBJDIR)/plugin_uis.o
++export OBJ_METADATA      = $(OBJDIR)/metadata.o
++export HOST_OBJ_METADATA = $(HOST_OBJDIR)/metadata.o
++export OBJ_FILES         = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
+ 
+ # Libraries
+ export LIB_LADSPA       = $(OBJDIR)/$(ARTIFACT_ID)-ladspa.so
+@@ -68,11 +73,14 @@ export BIN_PROFILE      = $(OBJDIR)/$(ARTIFACT_ID)-profile
+ export BIN_TEST         = $(OBJDIR)/$(ARTIFACT_ID)-test
+ 
+ # Utils
+-export UTL_GENTTL       = $(OBJDIR)/lv2_genttl.exe
+-export UTL_VSTMAKE      = $(OBJDIR)/vst_genmake.exe
+-export UTL_JACKMAKE     = $(OBJDIR)/jack_genmake.exe
+-export UTL_GENPHP       = $(OBJDIR)/gen_php.exe
+-export UTL_RESGEN       = $(OBJDIR)/gen_resources.exe
++ifeq ($(BUILD_SYSTEM),Windows)
++  BIN_SUFFIX := .exe
++endif
++export UTL_GENTTL       = $(HOST_OBJDIR)/lv2_genttl$(BIN_SUFFIX)
++export UTL_VSTMAKE      = $(HOST_OBJDIR)/vst_genmake$(BIN_SUFFIX)
++export UTL_JACKMAKE     = $(HOST_OBJDIR)/jack_genmake$(BIN_SUFFIX)
++export UTL_GENPHP       = $(HOST_OBJDIR)/gen_php$(BIN_SUFFIX)
++export UTL_RESGEN       = $(HOST_OBJDIR)/gen_resources$(BIN_SUFFIX)
+ export UTL_FILES        = $(UTL_GENTTL) $(UTL_VSTMAKE) $(UTL_GENPHP) $(UTL_RESGEN)
+ 
+ # Files
+@@ -104,6 +112,7 @@ all: export CXXFLAGS        += -O2 -DLSP_NO_EXPERIMENTAL
+ all: export EXE_FLAGS       += -pie -fPIE
+ all: compile
+ 
++
+ experimental: export CFLAGS += -O2
+ experimental: export CXXFLAGS += -O2
+ experimental: compile
+@@ -161,17 +170,17 @@ profile: compile
+ compile_info:
+ 	@echo "-------------------------------------------------------------------------------"
+ 	@echo "Building binaries"
+-	@echo "  target architecture : $(BUILD_PROFILE)"
+-	@echo "  target platform     : $(BUILD_PLATFORM)"
+-	@echo "  target system       : $(BUILD_SYSTEM)"
+-	@echo "  compiler            : $(BUILD_COMPILER)"
+-	@echo "  modules             : $(BUILD_MODULES)"
+-	@echo "  UI                  : LV2=$(LV2_UI), VST=$(VST_UI)"
+-	@echo "  3D rendering        : $(BUILD_R3D_BACKENDS)"
+-	@echo "  build directory     : $(OBJDIR)"
++	@echo "  platform             : $(BUILD_PLATFORM)"
++	@echo "  system               : $(BUILD_SYSTEM)"
++	@echo "  target compiler      : $(CXX)"
++	@echo "  target architecture  : $(BUILD_PROFILE)"
++	@echo "  modules              : $(BUILD_MODULES)"
++	@echo "  UI                   : LV2=$(LV2_UI), VST=$(VST_UI)"
++	@echo "  3D rendering         : $(BUILD_R3D_BACKENDS)"
++	@echo "  build directory      : $(OBJDIR)"
+ 	@echo "-------------------------------------------------------------------------------"
+ 
+-compile: | compile_info
++compile: utils | compile_info
+ 	mkdir -p $(OBJDIR)/src
+ 	mkdir -p $(CFGDIR)
+ 	test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
+@@ -181,13 +190,31 @@ compile: | compile_info
+ 	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Build OK"
+ 	
+-test_compile: | compile_info
++test_compile: utils | compile_info
+ 	mkdir -p $(OBJDIR)/src
+ 	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
++utils: export BUILD_PROFILE=$(HOST_BUILD_PROFILE)
++utils: export OBJDIR=$(HOST_OBJDIR)
++utils: export OBJ_CORE=$(HOST_OBJ_CORE)
++utils: export OBJ_DSP=$(HOST_OBJ_DSP)
++utils: export OBJ_METADATA=$(HOST_OBJ_METADATA)
++utils: export CXX=$(HOST_CXX)
++utils: export CXXFLAGS=$(HOST_CXXFLAGS)
++utils: export LD=$(HOST_LD)
++utils: export SNDFILE_HEADERS=$(HOST_SNDFILE_HEADERS)
++utils: export SNDFILE_LIBS=$(HOST_SNDFILE_LIBS)
++utils: export LV2_HEADERS=$(HOST_LV2_HEADERS)
++utils: export LV2_LIBS=$(HOST_LV2_LIBS)
++utils: | compile_info
++	mkdir -p $(HOST_OBJDIR)/src/utils
++	$(MAKE) $(MAKE_OPTS) -C src utils
++	@echo "Utils Build OK"
++
+ clean:
+ 	-rm -rf $(BUILDDIR)
++	-rm -rf $(HOST_BUILDDIR)
+ 	-rm -rf $(TESTDIR)
+ 	-rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+diff --git a/scripts/make/configure.mk b/scripts/make/configure.mk
+index 09aee9a..6951c5e 100644
+--- a/scripts/make/configure.mk
++++ b/scripts/make/configure.mk
+@@ -14,7 +14,8 @@ ifndef BUILD_R3D_BACKENDS
+   BUILD_R3D_BACKENDS     := $(shell if (test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" )  then cat "$(CFGDIR)/$(R3D_BACKENDS_FILE)" 2>/dev/null; else echo "glx"; fi;)
+ endif
+ 
+-BUILD_COMPILER         := $(shell $(CC) --version | head -n 1 || echo "unknown")
++BUILD_COMPILER         := $(shell $(CXX) --version | head -n 1 || echo "unknown")
++HOST_BUILD_COMPILER    := $(shell $(HOST_CXX) --version | head -n 1 || echo "unknown")
+ 
+ export BUILD_MODULES
+ export BUILD_R3D_BACKENDS
+@@ -23,7 +24,7 @@ export BUILD_R3D_BACKENDS
+ INSTALLATIONS           =
+ UNINSTALLATIONS         = uninstall_xdg
+ RELEASES                =
+-INCLUDE                 = -I"${CURDIR}/include"
++INCLUDE                 := -I"${CURDIR}/include"
+ 
+ ifeq ($(findstring ladspa,$(BUILD_MODULES)),ladspa)
+   INSTALLATIONS          += install_ladspa
+@@ -63,61 +64,62 @@ LD_ARCH         =
+ CC_ARCH         =
+ 
+ # Build profile
+-ifeq ($(BUILD_PROFILE),i586)
+-  CC_ARCH          = -m32
+-  ifeq ($(BUILD_PLATFORM), Linux)
+-    LD_ARCH          = -m elf_i386
++ifeq ($(SKIP_CC_LD_ARCH),)
++  ifeq ($(BUILD_PROFILE),i586)
++    CC_ARCH          = -m32
++    ifeq ($(BUILD_PLATFORM), Linux)
++      LD_ARCH          = -m elf_i386
++    endif
++    ifeq ($(BUILD_PLATFORM), BSD)
++      LD_ARCH          = -m elf_i386_fbsd
++    endif
+   endif
++  
++  ifeq ($(BUILD_PROFILE),x86_64)
++    CC_ARCH          = -m64
++    ifeq ($(BUILD_PLATFORM), Linux)
++      LD_ARCH          = -m elf_x86_64
++    endif
++    ifeq ($(BUILD_PLATFORM), BSD)
++      LD_ARCH          = -m elf_x86_64_fbsd
++    endif
++  endif
++  
+   ifeq ($(BUILD_PLATFORM), BSD)
+-    LD_ARCH          = -m elf_i386_fbsd
++    INCLUDE          += -I/usr/local/include
++    ifeq ($(BUILD_PROFILE),arm)
++      CC_ARCH          = -marm
++      ifneq ($(LD_PATH),)
++        CC_ARCH          += -Wl,-rpath=$(LD_PATH)
++      endif
++    endif
+   endif
+-endif
+-
+-ifeq ($(BUILD_PROFILE),x86_64)
+-  CC_ARCH          = -m64
+-  ifeq ($(BUILD_PLATFORM), Linux)
+-    LD_ARCH          = -m elf_x86_64
++  
++  ifeq ($(BUILD_PROFILE),armv6a)
++    CC_ARCH          = -march=armv6-a -marm
+   endif
+-  ifeq ($(BUILD_PLATFORM), BSD)
+-    LD_ARCH          = -m elf_x86_64_fbsd
++  
++  ifeq ($(BUILD_PROFILE),armv7a)
++    CC_ARCH          = -march=armv7-a -marm
+   endif
+-endif
+-
+-ifeq ($(BUILD_PLATFORM), BSD)
+-  INCLUDE          += -I/usr/local/include
+-  ifeq ($(BUILD_PROFILE),arm)
++  
++  ifeq ($(BUILD_PROFILE),armv7ve)
++    CC_ARCH          = -march=armv7ve -marm
++  endif
++  
++  ifeq ($(BUILD_PROFILE),arm32)
+     CC_ARCH          = -marm
+-    ifneq ($(LD_PATH),)
+-      CC_ARCH          += -Wl,-rpath=$(LD_PATH)
+-    endif
++  endif
++  
++  ifeq ($(BUILD_PROFILE),armv8a)
++    CC_ARCH          = -march=armv7-a -marm
++  endif
++  
++  ifeq ($(BUILD_PROFILE),aarch64)
++    CC_ARCH          = -march=armv8-a
+   endif
+ endif
+ 
+-ifeq ($(BUILD_PROFILE),armv6a)
+-  CC_ARCH          = -march=armv6-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv7a)
+-  CC_ARCH          = -march=armv7-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv7ve)
+-  CC_ARCH          = -march=armv7ve -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),arm32)
+-  CC_ARCH          = -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv8a)
+-  CC_ARCH          = -march=armv7-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),aarch64)
+-  CC_ARCH          = -march=armv8-a
+-endif
+-
+-
+ export CC_ARCH
+ export LD_ARCH
+ export LD_PATH
+@@ -127,21 +129,25 @@ export INCLUDE
+ ifeq ($(BUILD_SYSTEM),Windows)
+ # TODO
+ else
+-  export PTHREAD_LIBS     = -lpthread
+-  export ICONV_LIBS       = -liconv
+-  export MATH_LIBS        = -lm
+-  export DL_LIBS          = -ldl
+-  export CAIRO_HEADERS    = $(shell pkg-config --cflags cairo)
+-  export CAIRO_LIBS       = $(shell pkg-config --libs cairo)
+-  export XLIB_HEADERS     = $(shell pkg-config --cflags x11)
+-  export XLIB_LIBS        = $(shell pkg-config --libs x11)
+-  export LV2_HEADERS      = $(shell pkg-config --cflags lv2)
+-  export LV2_LIBS         = $(shell pkg-config --libs lv2)
+-  export SNDFILE_HEADERS  = $(shell pkg-config --cflags sndfile)
+-  export SNDFILE_LIBS     = $(shell pkg-config --libs sndfile)
+-  export JACK_HEADERS     = $(shell pkg-config --cflags jack)
+-  export JACK_LIBS        = $(shell pkg-config --libs jack)
+-  export OPENGL_HEADERS   = $(shell pkg-config --cflags gl 2>/dev/null || echo "")
+-  export OPENGL_LIBS      = $(shell pkg-config --libs gl 2>/dev/null || echo "")
++  export PTHREAD_LIBS         = -lpthread
++  export ICONV_LIBS           = -liconv
++  export MATH_LIBS            = -lm
++  export DL_LIBS              = -ldl
++  export CAIRO_HEADERS        = $(shell $(PKG_CONFIG) --cflags cairo)
++  export CAIRO_LIBS           = $(shell $(PKG_CONFIG) --libs cairo)
++  export XLIB_HEADERS         = $(shell $(PKG_CONFIG) --cflags x11)
++  export XLIB_LIBS            = $(shell $(PKG_CONFIG) --libs x11)
++  export LV2_HEADERS          = $(shell $(PKG_CONFIG) --cflags lv2)
++  export LV2_HEADERS          = $(shell $(PKG_CONFIG) --libs lv2)
++  export SNDFILE_HEADERS      = $(shell $(PKG_CONFIG) --cflags sndfile)
++  export SNDFILE_LIBS         = $(shell $(PKG_CONFIG) --libs sndfile)
++  export JACK_HEADERS         = $(shell $(PKG_CONFIG) --cflags jack)
++  export JACK_LIBS            = $(shell $(PKG_CONFIG) --libs jack)
++  export OPENGL_HEADERS       = $(shell $(PKG_CONFIG) --cflags gl 2>/dev/null || echo "")
++  export OPENGL_LIBS          = $(shell $(PKG_CONFIG) --libs gl 2>/dev/null || echo "")
++  export HOST_SNDFILE_HEADERS = $(shell $(HOST_PKG_CONFIG) --cflags sndfile)
++  export HOST_SNDFILE_LIBS    = $(shell $(HOST_PKG_CONFIG) --libs sndfile)
++  export HOST_LV2_HEADERS     = $(shell $(HOST_PKG_CONFIG) --cflags lv2)
++  export HOST_LV2_LIBS        = $(shell $(HOST_PKG_CONFIG) --libs lv2)
+ endif
+ 
+diff --git a/scripts/make/set_vars.mk b/scripts/make/set_vars.mk
+index a22531a..898b156 100644
+--- a/scripts/make/set_vars.mk
++++ b/scripts/make/set_vars.mk
+@@ -37,7 +37,7 @@ export BUILD_PLATFORM
+ export LV2_UI
+ export VST_UI
+ 
+-# Detect processor architecture
++# Detect target processor architecture
+ ifeq ($(BUILD_PLATFORM),Windows)
+   ifndef BUILD_PROFILE
+     BUILD_ARCH                = i586
+@@ -53,7 +53,7 @@ ifeq ($(BUILD_PLATFORM),Windows)
+   endif
+ else # BUILD_PLATFORM != Windows
+   ifndef BUILD_PROFILE
+-    BUILD_ARCH              = $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
++    BUILD_ARCH              ?= $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
+     BUILD_PROFILE           = $(BUILD_ARCH)
+     ifeq ($(patsubst armv6%,armv6,$(BUILD_ARCH)), armv6)
+       BUILD_PROFILE           = armv6a
+@@ -82,5 +82,7 @@ else # BUILD_PLATFORM != Windows
+   endif
+ endif # BUILD_PLATFORM != Windows
+ 
+-export BUILD_PROFILE
++HOST_BUILD_PROFILE ?= $(shell uname -m)
+ 
++export BUILD_PROFILE
++export HOST_BUILD_PROFILE
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 565dbb1..0cc859f 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -1,8 +1,12 @@
+ # Setup preferred tools
+ TOOL_LD                 = ld
++TOOL_HOST_LD            = ld
+ TOOL_CC                 = gcc
+ TOOL_CXX                = g++
++TOOL_HOST_CXX           = g++
+ TOOL_PHP                = php
++TOOL_PKG_CONFIG         = pkg-config
++TOOL_HOST_PKG_CONFIG    = PKG_CONFIG_SYSROOT_DIR=/ pkg-config
+ 
+ # Setup preferred flags
+ FLAG_RELRO              = -Wl,-z,relro,-z,now
+@@ -17,20 +21,27 @@ FLAG_CTUNE              = -std=c++98 \
+ ifeq ($(BUILD_PLATFORM),Solaris)
+   FLAG_RELRO              =
+   TOOL_LD                 = gld
++  TOOL_HOST_LD            = gld
+ endif
+ 
+ # Setup system variables
+ CC              		 ?= $(TOOL_CC)
+ CXX                      ?= $(TOOL_CXX)
++HOST_CXX                 ?= $(TOOL_HOST_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
++HOST_LD                  ?= $(TOOL_HOST_LD)
++PKG_CONFIG               ?= $(TOOL_PKG_CONFIG)
++HOST_PKG_CONFIG          ?= $(TOOL_HOST_PKG_CONFIG)
+ 
+ CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+-MERGE_FLAGS               = $(LD_ARCH) -r
+-EXE_TEST_FLAGS            = $(LDFLAGS) $(CC_ARCH)
+-EXE_FLAGS                 = $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++HOST_CXXFLAGS            += $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
++SO_FLAGS                 += $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
++MERGE_FLAGS              += $(LD_ARCH) -r
++EXE_TEST_FLAGS           += $(LDFLAGS) $(CC_ARCH)
++EXE_FLAGS                += $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++HOST_EXE_FLAGS           += $(HOST_LDFLAGS) $(FLAG_RELRO) -Wl,--gc-sections
+ 
+ ifeq ($(BUILD_PLATFORM), Linux)
+   SO_FLAGS                 += -Wl,--no-undefined
+@@ -58,12 +69,18 @@ endif
+ 
+ export CC
+ export CXX
++export HOST_CXX
+ export PHP
+ export LD
++export HOST_LD
++export PKG_CONFIG
++export HOST_PKG_CONFIG
+ 
+ export CFLAGS
+ export CXXFLAGS
++export HOST_CXXFLAGS
+ export SO_FLAGS
+ export MERGE_FLAGS
+ export EXE_TEST_FLAGS
+ export EXE_FLAGS
++export HOST_EXE_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index d960ad8..01ac70b 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,3 +1,5 @@
++# Estimate different pre-requisites before launching build
++
+ # Command-line flag to silence nested $(MAKE).
+ MAKE_OPTS              += VERBOSE=$(VERBOSE)
+ ifneq ($(VERBOSE),1)
+@@ -7,7 +9,8 @@ endif
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+-UTL_DEPS                = $(OBJ_CORE) $(OBJ_DSP) $(OBJ_METADATA)
++UTL_DEPS                = $(HOST_OBJ_CORE) $(HOST_OBJ_DSP) $(HOST_OBJ_METADATA)
++OBJDIR                  ?= $(BUILDDIR)
+ 
+ NEED_UI                 = 0
+ NEED_PLUGINS            = 0
+@@ -73,19 +76,34 @@ target: all
+ 
+ # Rules
+ $(SUBDIRS):
+-	@echo "Building $(@)"
++	@echo "$(BUILDDIR)"
+ 	mkdir -p $(OBJDIR)/$(@)
+-	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ all \
++		CXX="$(CXX)" \
++		CXXFLAGS="$(CXXFLAGS)" \
++		LD="$(LD)" \
++		OBJDIR="$(OBJDIR)/$(@)" \
++		BUILD_PROFILE="$(BUILD_PROFILE)" \
++		SNDFILE_HEADERS="$(SNDFILE_HEADERS)" \
++		SNDFILE_LIBS="$(SNDFILE_LIBS)" \
++		LV2_HEADERS="$(LV2_HEADERS)" \
++		LV2_LIBS="$(LV2_LIBS)"
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+ 
++$(HOST_OBJ_CORE): core
++
+ $(OBJ_DSP): dsp
+ 
++$(HOST_OBJ_DSP): dsp
++
+ $(OBJ_PLUGINS): plugins
+ 
+ $(OBJ_METADATA): metadata
+ 
++$(HOST_OBJ_METADATA): metadata
++
+ $(OBJ_UI_CORE): ui
+ 
+ $(UTL_FILES): utils
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index fbddcaa..4b4fd2e 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -4,15 +4,21 @@ ifneq ($(VERBOSE),1)
+ .SILENT:
+ endif
+ 
++CXX                     = $(HOST_CXX)
++CXXFLAGS                = $(HOST_CXXFLAGS)
++MAKE_OPTS              += CXX=$(HOST_CXX) CXXFLAGS=$(HOST_CXXFLAGS)
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS                 =
+-OBJ_FILES               = $(OBJ_CORE) $(OBJ_METADATA)
++OBJ_FILES               = $(HOST_OBJ_CORE) $(HOST_OBJ_METADATA) $(HOST_OBJ_DSP)
+ OBJ_LIBS                = $(PTHREAD_LIBS) $(MATH_LIBS)
+ OBJ_EXTRA               =
+ INCLUDE_EXTRA           =
+ 
++export PKG_CONFIG_SYSROOT_DIR = /
++
+ ifeq ($(BUILD_PLATFORM),BSD)
+   OBJ_LIBS               += $(ICONV_LIBS)
+ endif
+@@ -24,7 +30,7 @@ endif
+ ifeq ($(findstring lv2,$(BUILD_MODULES)),lv2)
+   MODULES                += $(UTL_GENTTL)
+   FILELIST               += lv2_genttl.o
+-  INCLUDE_EXTRA          += $(LV2_HEADERS)
++  INCLUDE_EXTRA          += $(HOST_LV2_HEADERS)
+ endif
+ ifeq ($(findstring vst,$(BUILD_MODULES)),vst)
+   MODULES                += $(UTL_VSTMAKE)
+@@ -54,28 +60,26 @@ $(SUBDIRS):
+ 	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	@echo "  $(HOST_CXX) $(FILE)"
++	$(HOST_CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(HOST_CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+-$(UTL_GENTTL): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++$(UTL_GENTTL): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENTTL))"
++	$(HOST_CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+-$(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_JACKMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_JACKMAKE))"
++	$(HOST_CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_VSTMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_VSTMAKE))"
++	$(HOST_CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_GENPHP): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+-	
+-$(UTL_RESGEN): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+-
++$(UTL_GENPHP): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENPHP))"
++	$(HOST_CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
++$(UTL_RESGEN): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_RESGEN))"
++	$(HOST_CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_EXTRA) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
diff --git a/srcpkgs/lsp-plugins-lv2/files/04-misc.patch b/srcpkgs/lsp-plugins-lv2/files/04-misc.patch
new file mode 100644
index 000000000000..e3b5c408759e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/files/04-misc.patch
@@ -0,0 +1,280 @@
+diff --git a/.gitmodules b/.gitmodules
+index ac5ea32..4480c1f 100644
+--- a/.gitmodules
++++ b/.gitmodules
+@@ -1,3 +1,3 @@
+ [submodule "Polynomial-Wiener-Hammerstein"]
+ 	path = Polynomial-Wiener-Hammerstein
+-	url = ../../CrocoDuckoDucks/Polynomial-Wiener-Hammerstein.git
++	url = https://github.com/CrocoDuckoDucks/Polynomial-Wiener-Hammerstein
+diff --git a/Makefile b/Makefile
+index ce3de4e..78cb2a9 100644
+--- a/Makefile
++++ b/Makefile
+@@ -98,7 +98,7 @@ SRC_ID                 := $(ARTIFACT_ID)-src-$(LSP_VERSION)
+ DOC_ID                 := $(ARTIFACT_ID)-doc-$(LSP_VERSION)
+ 
+ .DEFAULT_GOAL          := all
+-.PHONY: all experimental trace debug tracefile debugfile profile gdb test testdebug testprofile compile test_compile
++.PHONY: all experimental trace debug tracefile debugfile profile gdb test check testdebug testprofile compile test_compile
+ .PHONY: compile_info
+ .PHONY: install install_ladspa install_lv2 install_vst install_jack install_doc install_xdg
+ .PHONY: uninstall uninstall_ladspa uninstall_lv2 uninstall_vst uninstall_jack uninstall_doc uninstall_xdg
+@@ -129,10 +129,16 @@ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
+ test: test_compile
++	@echo "test: CXXFLAGS: $(CXXFLAGS)"
++	@echo "test: EXE_TEST_FLAGS: $(EXE_TEST_FLAGS)"
++
++# Run unit tests
++check: test
++	.test/lsp-plugins-test utest
+ 
+ testdebug: OBJDIR                 = $(TESTDIR)
+-testdebug: export CFLAGS         += -O0 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-testdebug: export CXXFLAGS       += -O0 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
++testdebug: export CFLAGS         += -Og -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
++testdebug: export CXXFLAGS       += -Og -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ testdebug: export EXE_TEST_FLAGS += -g3
+ testdebug: export MAKE_OPTS      += LSP_TESTING=1
+ testdebug: export BUILD_MODULES   = jack
+@@ -157,8 +163,11 @@ debugfile: export CFLAGS    += -DLSP_TRACEFILE
+ debugfile: export CXXFLAGS  += -DLSP_TRACEFILE
+ debugfile: debug
+ 
+-gdb: export CFLAGS          += -O0 -g3 -DLSP_TRACE
+-gdb: export CXXFLAGS        += -O0 -g3 -DLSP_TRACE
++gdb: export CFLAGS          = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export CXXFLAGS        = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export HOST_CXXFLAGS   = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export EXE_FLAGS       = -g3
++gdb: export HOST_EXE_FLAGS  = -g3
+ gdb: compile
+ 
+ profile: export CFLAGS      += -g -pg -DLSP_PROFILING -no-pie -fno-pie -fPIC
+@@ -192,6 +201,8 @@ compile: utils | compile_info
+ 	
+ test_compile: utils | compile_info
+ 	mkdir -p $(OBJDIR)/src
++	@echo "test_compile: CXXFLAGS: $(CXXFLAGS)"
++	@echo "test_compile: EXE_TEST_FLAGS: $(EXE_TEST_FLAGS)"
+ 	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
+@@ -213,10 +224,10 @@ utils: | compile_info
+ 	@echo "Utils Build OK"
+ 
+ clean:
+-	-rm -rf $(BUILDDIR)
+-	-rm -rf $(HOST_BUILDDIR)
+-	-rm -rf $(TESTDIR)
+-	-rm -rf $(CFGDIR)
++	rm -rf $(BUILDDIR)
++	rm -rf $(HOST_BUILDDIR)
++	rm -rf $(TESTDIR)
++	rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+ 
+ # Build targets
+@@ -372,7 +383,7 @@ release_doc: | release_prepare
+ 
+ # Unrelease target
+ unrelease: clean
+-	-rm -rf $(RELEASE)
++	rm -rf $(RELEASE)
+ 	@echo "Unrelease OK"
+ 
+ # Uninstall target
+@@ -381,41 +392,41 @@ uninstall: $(UNINSTALLATIONS)
+ 	
+ uninstall_ladspa:
+ 	@echo "Uninstalling LADSPA"
+-	-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
++	rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
+ 	
+ uninstall_lv2:
+ 	@echo "Uninstalling LV2"
+-	-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
++	rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
+ 	
+ uninstall_vst:
+ 	@echo "Uninstalling VST"
+-	-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
+-	-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
+-	-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
++	rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
++	rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
++	rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
+ 	
+ uninstall_jack:
+ 	@echo "Uninstalling JACK"
+-	-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
+-	-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
+-	-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
+-	-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
++	rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
++	rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
++	rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
++	rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
+ 
+ uninstall_xdg:
+ 	@echo "Uninstalling desktop icons"
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
+-	-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
++	rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
++	rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
+ 
+ uninstall_doc:
+ 	@echo "Uninstalling DOC"
+-	-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+diff --git a/include/metadata/metadata.h b/include/metadata/metadata.h
+index 0efaa9d..e009750 100644
+--- a/include/metadata/metadata.h
++++ b/include/metadata/metadata.h
+@@ -73,10 +73,18 @@
+     #define LSP_ARCHITECTURE                                "unknown"
+ #endif /* ARCH */
+ 
++#define STRINGIFY_(x) #x
++#define STRINGIFY(x) STRINGIFY_(x)
++
+ #ifndef LSP_MAIN_VERSION
+     #define LSP_MAIN_VERSION                                "0.0.0"
++#else
++    #define LSP_MAIN_VERSION_STR STRINGIFY(LSP_MAIN_VERSION)
++    #undef LSP_MAIN_VERSION
++    #define LSP_MAIN_VERSION LSP_MAIN_VERSION_STR
+ #endif /* LSP_MAIN_VERSION */
+ 
++
+ #define LSP_LV2_LATENCY_PORT                            "out_latency"
+ #define LSP_LV2_ATOM_PORT_IN                            "in_ui"
+ #define LSP_LV2_MIDI_PORT_IN                            "in_midi"
+@@ -86,7 +94,7 @@
+ #define LSP_LV2_OSC_PORT_OUT                            "out_osc"
+ 
+ #ifdef LSP_INSTALL_PREFIX
+-    #define LSP_LIB_PREFIX(x)       LSP_INSTALL_PREFIX x
++    #define LSP_LIB_PREFIX(x)       STRINGIFY(LSP_INSTALL_PREFIX) x
+ #else
+     #define LSP_LIB_PREFIX(x)       x
+ #endif /* PREFIX */
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 0cc859f..508f829 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -11,8 +11,8 @@ TOOL_HOST_PKG_CONFIG    = PKG_CONFIG_SYSROOT_DIR=/ pkg-config
+ # Setup preferred flags
+ FLAG_RELRO              = -Wl,-z,relro,-z,now
+ FLAG_VERSION            = -DLSP_MAIN_VERSION=\"$(LSP_VERSION)\" -DLSP_INSTALL_PREFIX=\"$(PREFIX)\"
+-FLAG_CTUNE              = -std=c++98 \
+-                          -fno-exceptions -fno-rtti \
++FLAG_CXXSTANDARD        = -std=c++98
++FLAGS_CTUNE             = -fno-exceptions -fno-rtti \
+                           -fdata-sections -ffunction-sections -fno-asynchronous-unwind-tables \
+                           -fvisibility=hidden \
+                           -pipe -Wall
+@@ -34,9 +34,11 @@ HOST_LD                  ?= $(TOOL_HOST_LD)
+ PKG_CONFIG               ?= $(TOOL_PKG_CONFIG)
+ HOST_PKG_CONFIG          ?= $(TOOL_HOST_PKG_CONFIG)
+ 
+-CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-HOST_CXXFLAGS            += $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
++CFLAGS                   += $(CC_ARCH) $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) \
++                            $(CC_FLAGS) $(FLAG_VERSION)
++CXXFLAGS                 += $(CC_ARCH) $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) \
++                            $(CC_FLAGS) $(FLAG_VERSION)
++HOST_CXXFLAGS            += $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ SO_FLAGS                 += $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+ MERGE_FLAGS              += $(LD_ARCH) -r
+ EXE_TEST_FLAGS           += $(LDFLAGS) $(CC_ARCH)
+diff --git a/src/Makefile b/src/Makefile
+index 01ac70b..01b9d92 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -120,7 +120,7 @@ $(OBJ_RES_CORE): $(OBJ_CORE) $(UTL_RESGEN)
+ 	@echo "Generating builtin resources"
+ 	mkdir -p $(OBJDIR)/res
+ 	$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
+-	-rm gmon.out >/dev/null 2>&1
++	rm -f gmon.out >/dev/null 2>&1
+ 	$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ # Target dependencies
+@@ -139,12 +139,12 @@ vst_stub: $(UTL_VSTMAKE)
+ 	@echo "Building VST stub"
+ 	mkdir -p $(OBJDIR)/vst
+ 	$(UTL_VSTMAKE) $(OBJDIR)/vst
+-	-rm gmon.out >/dev/null 2>&1
++	rm -f gmon.out >/dev/null 2>&1
+ 	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
+ 
+ jack_stub: $(UTL_JACKMAKE)
+ 	@echo "Building JACK stub"
+ 	mkdir -p $(OBJDIR)/jack
+ 	$(UTL_JACKMAKE) $(OBJDIR)/jack
+-	-rm gmon.out >/dev/null 2>&1
++	rm -f gmon.out >/dev/null 2>&1
+ 	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
+diff --git a/src/testing/Makefile b/src/testing/Makefile
+index d048065..a089309 100644
+--- a/src/testing/Makefile
++++ b/src/testing/Makefile
+@@ -14,6 +14,7 @@ all: $(OBJ_TESTING_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
++	@echo "testing: CXXFLAGS: $(CXXFLAGS)"
+ 	mkdir -p $(dir $@)
+ 	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index 4b4fd2e..a35d3a3 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -4,9 +4,9 @@ ifneq ($(VERBOSE),1)
+ .SILENT:
+ endif
+ 
+-CXX                     = $(HOST_CXX)
+-CXXFLAGS                = $(HOST_CXXFLAGS)
+-MAKE_OPTS              += CXX=$(HOST_CXX) CXXFLAGS=$(HOST_CXXFLAGS)
++# CXX                     = $(HOST_CXX)
++# CXXFLAGS                = $(HOST_CXXFLAGS)
++# MAKE_OPTS              += CXX=$(HOST_CXX) CXXFLAGS=$(HOST_CXXFLAGS)
+ 
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+diff --git a/tmp/.gitignore b/tmp/.gitignore
+index 22e8364..d6b7ef3 100644
+--- a/tmp/.gitignore
++++ b/tmp/.gitignore
+@@ -1 +1,2 @@
+-/*
+\ No newline at end of file
++*
++!.gitignore
diff --git a/srcpkgs/lsp-plugins-lv2/patches/00-patch-all.patch b/srcpkgs/lsp-plugins-lv2/patches/00-patch-all.patch
new file mode 100644
index 000000000000..5b72818d3c43
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/patches/00-patch-all.patch
@@ -0,0 +1,2061 @@
+diff --git a/.gitignore b/.gitignore
+index 5bc0ecb..4a1edec 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -3,6 +3,7 @@
+ /design/*
+ /.builconfig/*
+ /.build/*
++/.host_build/*
+ /.buildconfig/*
+ /.test/*
+ /.release/*
+diff --git a/.gitmodules b/.gitmodules
+index ac5ea32..4480c1f 100644
+--- a/.gitmodules
++++ b/.gitmodules
+@@ -1,3 +1,3 @@
+ [submodule "Polynomial-Wiener-Hammerstein"]
+ 	path = Polynomial-Wiener-Hammerstein
+-	url = ../../CrocoDuckoDucks/Polynomial-Wiener-Hammerstein.git
++	url = https://github.com/CrocoDuckoDucks/Polynomial-Wiener-Hammerstein
+diff --git a/Makefile b/Makefile
+index 2d9cb79..70cb6a4 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ # Common definitions
+ RELEASE_TEXT            = LICENSE.txt README.txt CHANGELOG.txt
+ RELEASE_SRC             = $(RELEASE_TEXT) src build-*.sh include res Makefile release.sh
+@@ -18,8 +24,10 @@ export RESDIR           = ${CURDIR}/res
+ export RELEASE          = ${CURDIR}/.release
+ export RELEASE_BIN      = $(RELEASE)/$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ export BUILDDIR         = ${CURDIR}/.build
++export HOST_BUILDDIR    = ${CURDIR}/.host_build
+ export TESTDIR          = ${CURDIR}/.test
+ OBJDIR                  = $(BUILDDIR)
++export HOST_OBJDIR      = $(HOST_BUILDDIR)
+ 
+ # Installation locations
+ BIN_PATH               ?= $(PREFIX)/bin
+@@ -35,20 +43,23 @@ VST_PATH                = $(LIB_PATH)/vst
+ export BASEDIR          = ${CURDIR}
+ 
+ # Objects
+-export OBJ_CORE         = $(OBJDIR)/core.o
+-export OBJ_DSP          = $(OBJDIR)/dsp.o
+-export OBJ_CTL_CORE     = $(OBJDIR)/ctl_core.o
+-export OBJ_TK_CORE      = $(OBJDIR)/tk_core.o
+-export OBJ_WS_CORE      = $(OBJDIR)/ws_core.o
+-export OBJ_WS_X11_CORE  = $(OBJDIR)/ws_x11_core.o
+-export OBJ_UI_CORE      = $(OBJDIR)/ui_core.o
+-export OBJ_RES_CORE     = $(OBJDIR)/res_core.o
+-export OBJ_TEST_CORE    = $(OBJDIR)/test_core.o
+-export OBJ_TESTING_CORE = $(OBJDIR)/testing_core.o
+-export OBJ_PLUGINS      = $(OBJDIR)/plugins.o
+-export OBJ_PLUGIN_UIS	= $(OBJDIR)/plugin_uis.o
+-export OBJ_METADATA     = $(OBJDIR)/metadata.o
+-export OBJ_FILES        = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
++export OBJ_CORE          = $(OBJDIR)/core.o
++export HOST_OBJ_CORE     = $(HOST_OBJDIR)/core.o
++export OBJ_DSP           = $(OBJDIR)/dsp.o
++export HOST_OBJ_DSP      = $(HOST_OBJDIR)/dsp.o
++export OBJ_CTL_CORE      = $(OBJDIR)/ctl_core.o
++export OBJ_TK_CORE       = $(OBJDIR)/tk_core.o
++export OBJ_WS_CORE       = $(OBJDIR)/ws_core.o
++export OBJ_WS_X11_CORE   = $(OBJDIR)/ws_x11_core.o
++export OBJ_UI_CORE       = $(OBJDIR)/ui_core.o
++export OBJ_RES_CORE      = $(OBJDIR)/res_core.o
++export OBJ_TEST_CORE     = $(OBJDIR)/test_core.o
++export OBJ_TESTING_CORE  = $(OBJDIR)/testing_core.o
++export OBJ_PLUGINS       = $(OBJDIR)/plugins.o
++export OBJ_PLUGIN_UIS	 = $(OBJDIR)/plugin_uis.o
++export OBJ_METADATA      = $(OBJDIR)/metadata.o
++export HOST_OBJ_METADATA = $(HOST_OBJDIR)/metadata.o
++export OBJ_FILES         = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
+ 
+ # Libraries
+ export LIB_LADSPA       = $(OBJDIR)/$(ARTIFACT_ID)-ladspa.so
+@@ -62,11 +73,14 @@ export BIN_PROFILE      = $(OBJDIR)/$(ARTIFACT_ID)-profile
+ export BIN_TEST         = $(OBJDIR)/$(ARTIFACT_ID)-test
+ 
+ # Utils
+-export UTL_GENTTL       = $(OBJDIR)/lv2_genttl.exe
+-export UTL_VSTMAKE      = $(OBJDIR)/vst_genmake.exe
+-export UTL_JACKMAKE     = $(OBJDIR)/jack_genmake.exe
+-export UTL_GENPHP       = $(OBJDIR)/gen_php.exe
+-export UTL_RESGEN       = $(OBJDIR)/gen_resources.exe
++ifeq ($(BUILD_SYSTEM),Windows)
++  BIN_SUFFIX := .exe
++endif
++export UTL_GENTTL       = $(HOST_OBJDIR)/lv2_genttl$(BIN_SUFFIX)
++export UTL_VSTMAKE      = $(HOST_OBJDIR)/vst_genmake$(BIN_SUFFIX)
++export UTL_JACKMAKE     = $(HOST_OBJDIR)/jack_genmake$(BIN_SUFFIX)
++export UTL_GENPHP       = $(HOST_OBJDIR)/gen_php$(BIN_SUFFIX)
++export UTL_RESGEN       = $(HOST_OBJDIR)/gen_resources$(BIN_SUFFIX)
+ export UTL_FILES        = $(UTL_GENTTL) $(UTL_VSTMAKE) $(UTL_GENPHP) $(UTL_RESGEN)
+ 
+ # Files
+@@ -84,7 +98,7 @@ SRC_ID                 := $(ARTIFACT_ID)-src-$(LSP_VERSION)
+ DOC_ID                 := $(ARTIFACT_ID)-doc-$(LSP_VERSION)
+ 
+ .DEFAULT_GOAL          := all
+-.PHONY: all experimental trace debug tracefile debugfile profile gdb test testdebug testprofile compile test_compile
++.PHONY: all experimental trace debug tracefile debugfile profile gdb test check testdebug testprofile compile test_compile
+ .PHONY: compile_info
+ .PHONY: install install_ladspa install_lv2 install_vst install_jack install_doc install_xdg
+ .PHONY: uninstall uninstall_ladspa uninstall_lv2 uninstall_vst uninstall_jack uninstall_doc uninstall_xdg
+@@ -98,6 +112,7 @@ all: export CXXFLAGS        += -O2 -DLSP_NO_EXPERIMENTAL
+ all: export EXE_FLAGS       += -pie -fPIE
+ all: compile
+ 
++
+ experimental: export CFLAGS += -O2
+ experimental: export CXXFLAGS += -O2
+ experimental: compile
+@@ -115,9 +130,13 @@ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
+ test: test_compile
+ 
++# Run unit tests
++check: test
++	.test/lsp-plugins-test utest
++
+ testdebug: OBJDIR                 = $(TESTDIR)
+-testdebug: export CFLAGS         += -O0 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-testdebug: export CXXFLAGS       += -O0 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
++testdebug: export CFLAGS         += -Og -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
++testdebug: export CXXFLAGS       += -Og -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ testdebug: export EXE_TEST_FLAGS += -g3
+ testdebug: export MAKE_OPTS      += LSP_TESTING=1
+ testdebug: export BUILD_MODULES   = jack
+@@ -142,8 +161,11 @@ debugfile: export CFLAGS    += -DLSP_TRACEFILE
+ debugfile: export CXXFLAGS  += -DLSP_TRACEFILE
+ debugfile: debug
+ 
+-gdb: export CFLAGS          += -O0 -g3 -DLSP_TRACE
+-gdb: export CXXFLAGS        += -O0 -g3 -DLSP_TRACE
++gdb: export CFLAGS          = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export CXXFLAGS        = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export HOST_CXXFLAGS   = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export EXE_FLAGS       = -g3
++gdb: export HOST_EXE_FLAGS  = -g3
+ gdb: compile
+ 
+ profile: export CFLAGS      += -g -pg -DLSP_PROFILING -no-pie -fno-pie -fPIC
+@@ -155,35 +177,53 @@ profile: compile
+ compile_info:
+ 	@echo "-------------------------------------------------------------------------------"
+ 	@echo "Building binaries"
+-	@echo "  target architecture : $(BUILD_PROFILE)"
+-	@echo "  target platform     : $(BUILD_PLATFORM)"
+-	@echo "  target system       : $(BUILD_SYSTEM)"
+-	@echo "  compiler            : $(BUILD_COMPILER)"
+-	@echo "  modules             : $(BUILD_MODULES)"
+-	@echo "  UI                  : LV2=$(LV2_UI), VST=$(VST_UI)"
+-	@echo "  3D rendering        : $(BUILD_R3D_BACKENDS)"
+-	@echo "  build directory     : $(OBJDIR)"
++	@echo "  platform             : $(BUILD_PLATFORM)"
++	@echo "  system               : $(BUILD_SYSTEM)"
++	@echo "  target compiler      : $(CXX)"
++	@echo "  target architecture  : $(BUILD_PROFILE)"
++	@echo "  modules              : $(BUILD_MODULES)"
++	@echo "  UI                   : LV2=$(LV2_UI), VST=$(VST_UI)"
++	@echo "  3D rendering         : $(BUILD_R3D_BACKENDS)"
++	@echo "  build directory      : $(OBJDIR)"
+ 	@echo "-------------------------------------------------------------------------------"
+ 
+-compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@mkdir -p $(CFGDIR)
+-	@test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
+-	@test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
+-	@test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
+-	@test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++compile: utils | compile_info
++	mkdir -p $(OBJDIR)/src
++	mkdir -p $(CFGDIR)
++	test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
++	test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
++	test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
++	test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Build OK"
+ 	
+-test_compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++test_compile: utils | compile_info
++	mkdir -p $(OBJDIR)/src
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
++utils: export BUILD_PROFILE=$(HOST_BUILD_PROFILE)
++utils: export OBJDIR=$(HOST_OBJDIR)
++utils: export OBJ_CORE=$(HOST_OBJ_CORE)
++utils: export OBJ_DSP=$(HOST_OBJ_DSP)
++utils: export OBJ_METADATA=$(HOST_OBJ_METADATA)
++utils: export CXX=$(HOST_CXX)
++utils: export CXXFLAGS=$(HOST_CXXFLAGS)
++utils: export LD=$(HOST_LD)
++utils: export SNDFILE_HEADERS=$(HOST_SNDFILE_HEADERS)
++utils: export SNDFILE_LIBS=$(HOST_SNDFILE_LIBS)
++utils: export LV2_HEADERS=$(HOST_LV2_HEADERS)
++utils: export LV2_LIBS=$(HOST_LV2_LIBS)
++utils: | compile_info
++	mkdir -p $(HOST_OBJDIR)/src/utils
++	$(MAKE) $(MAKE_OPTS) -C src utils
++	@echo "Utils Build OK"
++
+ clean:
+-	@-rm -rf $(BUILDDIR)
+-	@-rm -rf $(TESTDIR)
+-	@-rm -rf $(CFGDIR)
++	rm -rf $(BUILDDIR)
++	rm -rf $(HOST_BUILDDIR)
++	rm -rf $(TESTDIR)
++	rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+ 
+ # Build targets
+@@ -209,63 +249,63 @@ install: $(INSTALLATIONS)
+ 
+ install_ladspa: all
+ 	@echo "Installing LADSPA plugins to $(DESTDIR)$(LADSPA_PATH)/"
+-	@mkdir -p $(DESTDIR)$(LADSPA_PATH)
+-	@$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
++	mkdir -p $(DESTDIR)$(LADSPA_PATH)
++	$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
+ 	
+ install_lv2: all
+ 	@echo "Installing LV2 plugins to $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
+-	@$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
++	$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+ 	
+ install_vst: all
+ 	@echo "Installing VST plugins to $(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+-	@$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
++	$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+ 
+ install_jack: all
+ 	@echo "Installing JACK core to $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
++	$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+ 	@echo "Installing JACK standalone plugins to $(DESTDIR)$(BIN_PATH)"
+-	@mkdir -p "$(DESTDIR)$(BIN_PATH)"
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
++	mkdir -p "$(DESTDIR)$(BIN_PATH)"
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
+ 
+ install_xdg:
+ 	@echo "Installing desktop icons to $(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
+-	@mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
+-	@cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
+-	@cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
+-	@cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
+-	@cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
++	mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
++	cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
++	cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
++	cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
++	cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
+ 
+ install_doc: all
+ 	@echo "Installing documentation to $(DESTDIR)$(DOC_PATH)"
+-	@mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+ # Release targets
+ dbg_release: export CFLAGS        += -DLSP_TRACE -O2
+@@ -279,67 +319,67 @@ release: $(RELEASES)
+ 
+ release_prepare: all
+ 	@echo "Releasing plugins for architecture $(BUILD_PROFILE)"
+-	@mkdir -p $(RELEASE)
+-	@mkdir -p $(DESTDIR)
++	mkdir -p $(RELEASE)
++	mkdir -p $(DESTDIR)
+ 	
+ release_ladspa: DESTDIR=$(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_ladspa: | release_prepare install_ladspa
+ 	@echo "Releasing LADSPA binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_lv2: DESTDIR=$(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_lv2: | release_prepare install_lv2
+ 	@echo "Releasing LV2 binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_vst: DESTDIR=$(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_vst: | release_prepare install_vst
+ 	@echo "Releasing VST binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_jack: DESTDIR=$(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_jack: | release_prepare install_jack
+ 	@echo "Releasing JACK binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 
+ release_profile: DESTDIR=$(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_profile: | release_prepare
+ 	@echo "Releasing PROFILE binaries"
+-	@$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ 
+ release_src: DESTDIR=$(RELEASE)/$(SRC_ID)
+ release_src: | release_prepare
+ 	@echo "Releasing source code binaries"
+-	@mkdir -p $(DESTDIR)
+-	@mkdir -p $(DESTDIR)/scripts
+-	@cp -R $(RELEASE_SRC) $(DESTDIR)/
+-	@cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	mkdir -p $(DESTDIR)/scripts
++	cp -R $(RELEASE_SRC) $(DESTDIR)/
++	cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
++	rm -rf $(DESTDIR)
+ 
+ release_doc: DESTDIR=$(RELEASE)/$(DOC_ID)
+ release_doc: | release_prepare
+ 	@echo "Releasing documentation"
+-	@mkdir -p $(DESTDIR)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
++	rm -rf $(DESTDIR)
+ 
+ # Unrelease target
+ unrelease: clean
+-	@-rm -rf $(RELEASE)
++	rm -rf $(RELEASE)
+ 	@echo "Unrelease OK"
+ 
+ # Uninstall target
+@@ -348,41 +388,41 @@ uninstall: $(UNINSTALLATIONS)
+ 	
+ uninstall_ladspa:
+ 	@echo "Uninstalling LADSPA"
+-	@-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
++	rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
+ 	
+ uninstall_lv2:
+ 	@echo "Uninstalling LV2"
+-	@-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
++	rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
+ 	
+ uninstall_vst:
+ 	@echo "Uninstalling VST"
+-	@-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
++	rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
++	rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
++	rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
+ 	
+ uninstall_jack:
+ 	@echo "Uninstalling JACK"
+-	@-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
+-	@-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
++	rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
++	rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
++	rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
++	rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
+ 
+ uninstall_xdg:
+ 	@echo "Uninstalling desktop icons"
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
+-	@-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
++	rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
++	rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
+ 
+ uninstall_doc:
+ 	@echo "Uninstalling DOC"
+-	@-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+diff --git a/TODO.txt b/TODO.txt
+index 4976293..f8562ef 100644
+--- a/TODO.txt
++++ b/TODO.txt
+@@ -28,6 +28,12 @@
+ - Added possibility to change themes in runtime.
+ - Complicated plugin UIs now allow to switch between Advanced and Novice modes.
+ 
++=== 1.1.31 ===
++
++* Fixed X11 error handling routine that could crash under certain conditions.
++* Better support for musl libc (contributed by Artur Sinila).
++* Added support of VERBOSE parameter for build system (contributed by Artur Sinila).
++
+ *******************************************************************************
+ * New plugin check list before release
+ *******************************************************************************
+diff --git a/include/common/types.h b/include/common/types.h
+index dd1816e..59c794e 100644
+--- a/include/common/types.h
++++ b/include/common/types.h
+@@ -563,6 +563,12 @@
+     #define MINIMUM_ALIGN                   DEFAULT_ALIGN
+ #endif /* DEFAULT_ALIGN */
+ 
++//-----------------------------------------------------------------------------
++// Detect some libraries
++#ifdef __GLIBC__
++    #define USE_GLIBC                           __GLIBC__
++#endif /* GLIBC */
++
+ //-----------------------------------------------------------------------------
+ // Type definitions
+ __IF_32( typedef        uint32_t            umword_t );
+diff --git a/include/data/cvector.h b/include/data/cvector.h
+index eccc94a..17fe119 100644
+--- a/include/data/cvector.h
++++ b/include/data/cvector.h
+@@ -25,6 +25,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <sys/types.h>
+ 
+ #define CVECTOR_GROW        16
+ 
+diff --git a/include/metadata/metadata.h b/include/metadata/metadata.h
+index 0efaa9d..e009750 100644
+--- a/include/metadata/metadata.h
++++ b/include/metadata/metadata.h
+@@ -73,10 +73,18 @@
+     #define LSP_ARCHITECTURE                                "unknown"
+ #endif /* ARCH */
+ 
++#define STRINGIFY_(x) #x
++#define STRINGIFY(x) STRINGIFY_(x)
++
+ #ifndef LSP_MAIN_VERSION
+     #define LSP_MAIN_VERSION                                "0.0.0"
++#else
++    #define LSP_MAIN_VERSION_STR STRINGIFY(LSP_MAIN_VERSION)
++    #undef LSP_MAIN_VERSION
++    #define LSP_MAIN_VERSION LSP_MAIN_VERSION_STR
+ #endif /* LSP_MAIN_VERSION */
+ 
++
+ #define LSP_LV2_LATENCY_PORT                            "out_latency"
+ #define LSP_LV2_ATOM_PORT_IN                            "in_ui"
+ #define LSP_LV2_MIDI_PORT_IN                            "in_midi"
+@@ -86,7 +94,7 @@
+ #define LSP_LV2_OSC_PORT_OUT                            "out_osc"
+ 
+ #ifdef LSP_INSTALL_PREFIX
+-    #define LSP_LIB_PREFIX(x)       LSP_INSTALL_PREFIX x
++    #define LSP_LIB_PREFIX(x)       STRINGIFY(LSP_INSTALL_PREFIX) x
+ #else
+     #define LSP_LIB_PREFIX(x)       x
+ #endif /* PREFIX */
+diff --git a/include/test/main/executor.h b/include/test/main/executor.h
+index 0faf73f..5a0c016 100644
+--- a/include/test/main/executor.h
++++ b/include/test/main/executor.h
+@@ -633,7 +633,7 @@ namespace lsp
+     }
+ #endif /* PLATFORM_WINDOWS */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     void TestExecutor::start_memcheck(test::Test *v)
+     {
+         if (!pCfg->mtrace)
+diff --git a/include/test/main/types.h b/include/test/main/types.h
+index ef15800..0c5d7c2 100644
+--- a/include/test/main/types.h
++++ b/include/test/main/types.h
+@@ -42,7 +42,7 @@
+     #include <fcntl.h>
+ #endif /* PLATFORM_UNIX_COMPATIBLE */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     #include <mcheck.h>
+ #endif /* PLATFORM_LINUX */
+ 
+diff --git a/include/testing/mtest/3d/common/X11Renderer.h b/include/testing/mtest/3d/common/X11Renderer.h
+index e8ec205..f0a51e2 100644
+--- a/include/testing/mtest/3d/common/X11Renderer.h
++++ b/include/testing/mtest/3d/common/X11Renderer.h
+@@ -30,7 +30,7 @@
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include <rendering/backend.h>
+ #include <core/ipc/Library.h>
+diff --git a/scripts/make/configure.mk b/scripts/make/configure.mk
+index 09aee9a..6951c5e 100644
+--- a/scripts/make/configure.mk
++++ b/scripts/make/configure.mk
+@@ -14,7 +14,8 @@ ifndef BUILD_R3D_BACKENDS
+   BUILD_R3D_BACKENDS     := $(shell if (test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" )  then cat "$(CFGDIR)/$(R3D_BACKENDS_FILE)" 2>/dev/null; else echo "glx"; fi;)
+ endif
+ 
+-BUILD_COMPILER         := $(shell $(CC) --version | head -n 1 || echo "unknown")
++BUILD_COMPILER         := $(shell $(CXX) --version | head -n 1 || echo "unknown")
++HOST_BUILD_COMPILER    := $(shell $(HOST_CXX) --version | head -n 1 || echo "unknown")
+ 
+ export BUILD_MODULES
+ export BUILD_R3D_BACKENDS
+@@ -23,7 +24,7 @@ export BUILD_R3D_BACKENDS
+ INSTALLATIONS           =
+ UNINSTALLATIONS         = uninstall_xdg
+ RELEASES                =
+-INCLUDE                 = -I"${CURDIR}/include"
++INCLUDE                 := -I"${CURDIR}/include"
+ 
+ ifeq ($(findstring ladspa,$(BUILD_MODULES)),ladspa)
+   INSTALLATIONS          += install_ladspa
+@@ -63,61 +64,62 @@ LD_ARCH         =
+ CC_ARCH         =
+ 
+ # Build profile
+-ifeq ($(BUILD_PROFILE),i586)
+-  CC_ARCH          = -m32
+-  ifeq ($(BUILD_PLATFORM), Linux)
+-    LD_ARCH          = -m elf_i386
++ifeq ($(SKIP_CC_LD_ARCH),)
++  ifeq ($(BUILD_PROFILE),i586)
++    CC_ARCH          = -m32
++    ifeq ($(BUILD_PLATFORM), Linux)
++      LD_ARCH          = -m elf_i386
++    endif
++    ifeq ($(BUILD_PLATFORM), BSD)
++      LD_ARCH          = -m elf_i386_fbsd
++    endif
+   endif
++  
++  ifeq ($(BUILD_PROFILE),x86_64)
++    CC_ARCH          = -m64
++    ifeq ($(BUILD_PLATFORM), Linux)
++      LD_ARCH          = -m elf_x86_64
++    endif
++    ifeq ($(BUILD_PLATFORM), BSD)
++      LD_ARCH          = -m elf_x86_64_fbsd
++    endif
++  endif
++  
+   ifeq ($(BUILD_PLATFORM), BSD)
+-    LD_ARCH          = -m elf_i386_fbsd
++    INCLUDE          += -I/usr/local/include
++    ifeq ($(BUILD_PROFILE),arm)
++      CC_ARCH          = -marm
++      ifneq ($(LD_PATH),)
++        CC_ARCH          += -Wl,-rpath=$(LD_PATH)
++      endif
++    endif
+   endif
+-endif
+-
+-ifeq ($(BUILD_PROFILE),x86_64)
+-  CC_ARCH          = -m64
+-  ifeq ($(BUILD_PLATFORM), Linux)
+-    LD_ARCH          = -m elf_x86_64
++  
++  ifeq ($(BUILD_PROFILE),armv6a)
++    CC_ARCH          = -march=armv6-a -marm
+   endif
+-  ifeq ($(BUILD_PLATFORM), BSD)
+-    LD_ARCH          = -m elf_x86_64_fbsd
++  
++  ifeq ($(BUILD_PROFILE),armv7a)
++    CC_ARCH          = -march=armv7-a -marm
+   endif
+-endif
+-
+-ifeq ($(BUILD_PLATFORM), BSD)
+-  INCLUDE          += -I/usr/local/include
+-  ifeq ($(BUILD_PROFILE),arm)
++  
++  ifeq ($(BUILD_PROFILE),armv7ve)
++    CC_ARCH          = -march=armv7ve -marm
++  endif
++  
++  ifeq ($(BUILD_PROFILE),arm32)
+     CC_ARCH          = -marm
+-    ifneq ($(LD_PATH),)
+-      CC_ARCH          += -Wl,-rpath=$(LD_PATH)
+-    endif
++  endif
++  
++  ifeq ($(BUILD_PROFILE),armv8a)
++    CC_ARCH          = -march=armv7-a -marm
++  endif
++  
++  ifeq ($(BUILD_PROFILE),aarch64)
++    CC_ARCH          = -march=armv8-a
+   endif
+ endif
+ 
+-ifeq ($(BUILD_PROFILE),armv6a)
+-  CC_ARCH          = -march=armv6-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv7a)
+-  CC_ARCH          = -march=armv7-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv7ve)
+-  CC_ARCH          = -march=armv7ve -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),arm32)
+-  CC_ARCH          = -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv8a)
+-  CC_ARCH          = -march=armv7-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),aarch64)
+-  CC_ARCH          = -march=armv8-a
+-endif
+-
+-
+ export CC_ARCH
+ export LD_ARCH
+ export LD_PATH
+@@ -127,21 +129,25 @@ export INCLUDE
+ ifeq ($(BUILD_SYSTEM),Windows)
+ # TODO
+ else
+-  export PTHREAD_LIBS     = -lpthread
+-  export ICONV_LIBS       = -liconv
+-  export MATH_LIBS        = -lm
+-  export DL_LIBS          = -ldl
+-  export CAIRO_HEADERS    = $(shell pkg-config --cflags cairo)
+-  export CAIRO_LIBS       = $(shell pkg-config --libs cairo)
+-  export XLIB_HEADERS     = $(shell pkg-config --cflags x11)
+-  export XLIB_LIBS        = $(shell pkg-config --libs x11)
+-  export LV2_HEADERS      = $(shell pkg-config --cflags lv2)
+-  export LV2_LIBS         = $(shell pkg-config --libs lv2)
+-  export SNDFILE_HEADERS  = $(shell pkg-config --cflags sndfile)
+-  export SNDFILE_LIBS     = $(shell pkg-config --libs sndfile)
+-  export JACK_HEADERS     = $(shell pkg-config --cflags jack)
+-  export JACK_LIBS        = $(shell pkg-config --libs jack)
+-  export OPENGL_HEADERS   = $(shell pkg-config --cflags gl 2>/dev/null || echo "")
+-  export OPENGL_LIBS      = $(shell pkg-config --libs gl 2>/dev/null || echo "")
++  export PTHREAD_LIBS         = -lpthread
++  export ICONV_LIBS           = -liconv
++  export MATH_LIBS            = -lm
++  export DL_LIBS              = -ldl
++  export CAIRO_HEADERS        = $(shell $(PKG_CONFIG) --cflags cairo)
++  export CAIRO_LIBS           = $(shell $(PKG_CONFIG) --libs cairo)
++  export XLIB_HEADERS         = $(shell $(PKG_CONFIG) --cflags x11)
++  export XLIB_LIBS            = $(shell $(PKG_CONFIG) --libs x11)
++  export LV2_HEADERS          = $(shell $(PKG_CONFIG) --cflags lv2)
++  export LV2_HEADERS          = $(shell $(PKG_CONFIG) --libs lv2)
++  export SNDFILE_HEADERS      = $(shell $(PKG_CONFIG) --cflags sndfile)
++  export SNDFILE_LIBS         = $(shell $(PKG_CONFIG) --libs sndfile)
++  export JACK_HEADERS         = $(shell $(PKG_CONFIG) --cflags jack)
++  export JACK_LIBS            = $(shell $(PKG_CONFIG) --libs jack)
++  export OPENGL_HEADERS       = $(shell $(PKG_CONFIG) --cflags gl 2>/dev/null || echo "")
++  export OPENGL_LIBS          = $(shell $(PKG_CONFIG) --libs gl 2>/dev/null || echo "")
++  export HOST_SNDFILE_HEADERS = $(shell $(HOST_PKG_CONFIG) --cflags sndfile)
++  export HOST_SNDFILE_LIBS    = $(shell $(HOST_PKG_CONFIG) --libs sndfile)
++  export HOST_LV2_HEADERS     = $(shell $(HOST_PKG_CONFIG) --cflags lv2)
++  export HOST_LV2_LIBS        = $(shell $(HOST_PKG_CONFIG) --libs lv2)
+ endif
+ 
+diff --git a/scripts/make/set_vars.mk b/scripts/make/set_vars.mk
+index a22531a..93916ea 100644
+--- a/scripts/make/set_vars.mk
++++ b/scripts/make/set_vars.mk
+@@ -37,7 +37,52 @@ export BUILD_PLATFORM
+ export LV2_UI
+ export VST_UI
+ 
+-# Detect processor architecture
++# Detect host processor architecture
++ifeq ($(BUILD_PLATFORM),Windows)
++  ifndef HOST_BUILD_PROFILE
++    HOST_BUILD_ARCH           = i586
++    HOST_BUILD_PROFILE             = i586
++    ifeq ($(PROCESSOR_ARCHITECTURE),x86)
++      HOST_BUILD_ARCH         = i586
++      HOST_BUILD_PROFILE      = i586
++    endif
++    ifeq ($(PROCESSOR_ARCHITECTURE),AMD64)
++      HOST_BUILD_ARCH              = x86_64
++      HOST_BUILD_PROFILE           = x86_64
++    endif
++  endif
++else # BUILD_PLATFORM != Windows
++  ifndef HOST_BUILD_PROFILE
++    HOST_BUILD_ARCH    ?= $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
++    HOST_BUILD_PROFILE  = $(HOST_BUILD_ARCH)
++    ifeq ($(patsubst armv6%,armv6,$(HOST_BUILD_ARCH)), armv6)
++      HOST_BUILD_PROFILE      = armv6a
++    endif
++    ifeq ($(patsubst armv7%,armv7,$(HOST_BUILD_ARCH)), armv7)
++      HOST_BUILD_PROFILE      = armv7a
++    endif
++    ifeq ($(patsubst armv8%,armv8,$(HOST_BUILD_ARCH)), armv8)
++      HOST_BUILD_PROFILE      = armv8a
++    endif
++    ifeq ($(patsubst aarch64%,aarch64,$(HOST_BUILD_ARCH)), aarch64)
++      HOST_BUILD_PROFILE      = aarch64
++    endif
++    ifeq ($(HOST_BUILD_ARCH),x86_64)
++      HOST_BUILD_PROFILE      = x86_64
++    endif
++    ifeq ($(HOST_BUILD_ARCH),amd64)
++      HOST_BUILD_PROFILE      = x86_64
++    endif
++    ifeq ($(HOST_BUILD_ARCH),i86pc)
++      HOST_BUILD_PROFILE      = x86_64
++    endif
++    ifeq ($(patsubst i%86,i586,$(HOST_BUILD_ARCH)), i586)
++      HOST_BUILD_PROFILE      = i586
++    endif
++  endif
++endif # BUILD_PLATFORM != Windows
++
++# Detect target processor architecture
+ ifeq ($(BUILD_PLATFORM),Windows)
+   ifndef BUILD_PROFILE
+     BUILD_ARCH                = i586
+@@ -53,7 +98,7 @@ ifeq ($(BUILD_PLATFORM),Windows)
+   endif
+ else # BUILD_PLATFORM != Windows
+   ifndef BUILD_PROFILE
+-    BUILD_ARCH              = $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
++    BUILD_ARCH              ?= $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
+     BUILD_PROFILE           = $(BUILD_ARCH)
+     ifeq ($(patsubst armv6%,armv6,$(BUILD_ARCH)), armv6)
+       BUILD_PROFILE           = armv6a
+@@ -82,5 +127,7 @@ else # BUILD_PLATFORM != Windows
+   endif
+ endif # BUILD_PLATFORM != Windows
+ 
+-export BUILD_PROFILE
++HOST_BUILD_PROFILE ?= $(shell uname -m)
+ 
++export BUILD_PROFILE
++export HOST_BUILD_PROFILE
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 1fb917e..508f829 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -1,14 +1,18 @@
+ # Setup preferred tools
+ TOOL_LD                 = ld
++TOOL_HOST_LD            = ld
+ TOOL_CC                 = gcc
+ TOOL_CXX                = g++
++TOOL_HOST_CXX           = g++
+ TOOL_PHP                = php
++TOOL_PKG_CONFIG         = pkg-config
++TOOL_HOST_PKG_CONFIG    = PKG_CONFIG_SYSROOT_DIR=/ pkg-config
+ 
+ # Setup preferred flags
+ FLAG_RELRO              = -Wl,-z,relro,-z,now
+ FLAG_VERSION            = -DLSP_MAIN_VERSION=\"$(LSP_VERSION)\" -DLSP_INSTALL_PREFIX=\"$(PREFIX)\"
+-FLAG_CTUNE              = -std=c++98 \
+-                          -fno-exceptions -fno-rtti \
++FLAG_CXXSTANDARD        = -std=c++98
++FLAGS_CTUNE             = -fno-exceptions -fno-rtti \
+                           -fdata-sections -ffunction-sections -fno-asynchronous-unwind-tables \
+                           -fvisibility=hidden \
+                           -pipe -Wall
+@@ -17,21 +21,29 @@ FLAG_CTUNE              = -std=c++98 \
+ ifeq ($(BUILD_PLATFORM),Solaris)
+   FLAG_RELRO              =
+   TOOL_LD                 = gld
++  TOOL_HOST_LD            = gld
+ endif
+ 
+ # Setup system variables
+ CC              		 ?= $(TOOL_CC)
+ CXX                      ?= $(TOOL_CXX)
++HOST_CXX                 ?= $(TOOL_HOST_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
++HOST_LD                  ?= $(TOOL_HOST_LD)
++PKG_CONFIG               ?= $(TOOL_PKG_CONFIG)
++HOST_PKG_CONFIG          ?= $(TOOL_HOST_PKG_CONFIG)
+ 
+-MAKE_OPTS                 = -s
+-CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+-MERGE_FLAGS               = $(LD_ARCH) -r
+-EXE_TEST_FLAGS            = $(LDFLAGS) $(CC_ARCH)
+-EXE_FLAGS                 = $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++CFLAGS                   += $(CC_ARCH) $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) \
++                            $(CC_FLAGS) $(FLAG_VERSION)
++CXXFLAGS                 += $(CC_ARCH) $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) \
++                            $(CC_FLAGS) $(FLAG_VERSION)
++HOST_CXXFLAGS            += $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
++SO_FLAGS                 += $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
++MERGE_FLAGS              += $(LD_ARCH) -r
++EXE_TEST_FLAGS           += $(LDFLAGS) $(CC_ARCH)
++EXE_FLAGS                += $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++HOST_EXE_FLAGS           += $(HOST_LDFLAGS) $(FLAG_RELRO) -Wl,--gc-sections
+ 
+ ifeq ($(BUILD_PLATFORM), Linux)
+   SO_FLAGS                 += -Wl,--no-undefined
+@@ -59,13 +71,18 @@ endif
+ 
+ export CC
+ export CXX
++export HOST_CXX
+ export PHP
+ export LD
++export HOST_LD
++export PKG_CONFIG
++export HOST_PKG_CONFIG
+ 
+-export MAKE_OPTS
+ export CFLAGS
+ export CXXFLAGS
++export HOST_CXXFLAGS
+ export SO_FLAGS
+ export MERGE_FLAGS
+ export EXE_TEST_FLAGS
+ export EXE_FLAGS
++export HOST_EXE_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index 8546191..01b9d92 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,7 +1,16 @@
++# Estimate different pre-requisites before launching build
++
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+-UTL_DEPS                = $(OBJ_CORE) $(OBJ_DSP) $(OBJ_METADATA)
++UTL_DEPS                = $(HOST_OBJ_CORE) $(HOST_OBJ_DSP) $(HOST_OBJ_METADATA)
++OBJDIR                  ?= $(BUILDDIR)
+ 
+ NEED_UI                 = 0
+ NEED_PLUGINS            = 0
+@@ -58,6 +67,7 @@ ifeq ($(NEED_UI),1)
+   CONTAINER_DEPS         += $(OBJ_UI_CORE) $(OBJ_RES_CORE) rendering
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all $(MODULES)
+ 
+ all: $(MODULES)
+@@ -66,19 +76,34 @@ target: all
+ 
+ # Rules
+ $(SUBDIRS):
+-	@echo "Building $(@)"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	@echo "$(BUILDDIR)"
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ all \
++		CXX="$(CXX)" \
++		CXXFLAGS="$(CXXFLAGS)" \
++		LD="$(LD)" \
++		OBJDIR="$(OBJDIR)/$(@)" \
++		BUILD_PROFILE="$(BUILD_PROFILE)" \
++		SNDFILE_HEADERS="$(SNDFILE_HEADERS)" \
++		SNDFILE_LIBS="$(SNDFILE_LIBS)" \
++		LV2_HEADERS="$(LV2_HEADERS)" \
++		LV2_LIBS="$(LV2_LIBS)"
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+ 
++$(HOST_OBJ_CORE): core
++
+ $(OBJ_DSP): dsp
+ 
++$(HOST_OBJ_DSP): dsp
++
+ $(OBJ_PLUGINS): plugins
+ 
+ $(OBJ_METADATA): metadata
+ 
++$(HOST_OBJ_METADATA): metadata
++
+ $(OBJ_UI_CORE): ui
+ 
+ $(UTL_FILES): utils
+@@ -93,10 +118,10 @@ $(OBJ_TESTING_CORE): test testing rendering
+ 
+ $(OBJ_RES_CORE): $(OBJ_CORE) $(UTL_RESGEN)
+ 	@echo "Generating builtin resources"
+-	@mkdir -p $(OBJDIR)/res
+-	@$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	mkdir -p $(OBJDIR)/res
++	$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
++	rm -f gmon.out >/dev/null 2>&1
++	$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ # Target dependencies
+ container: $(CONTAINER_DEPS)
+@@ -108,18 +133,18 @@ doc: utils $(PHP_PLUGINS)
+ # Additional processing
+ $(PHP_PLUGINS): $(UTL_GENPHP)
+ 	@echo "Generating PHP file $(notdir $(PHP_PLUGINS))"
+-	@$(UTL_GENPHP) $(PHP_PLUGINS)
++	$(UTL_GENPHP) $(PHP_PLUGINS)
+ 
+ vst_stub: $(UTL_VSTMAKE)
+ 	@echo "Building VST stub"
+-	@mkdir -p $(OBJDIR)/vst
+-	@$(UTL_VSTMAKE) $(OBJDIR)/vst
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
++	mkdir -p $(OBJDIR)/vst
++	$(UTL_VSTMAKE) $(OBJDIR)/vst
++	rm -f gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
+ 
+ jack_stub: $(UTL_JACKMAKE)
+ 	@echo "Building JACK stub"
+-	@mkdir -p $(OBJDIR)/jack
+-	@$(UTL_JACKMAKE) $(OBJDIR)/jack
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
++	mkdir -p $(OBJDIR)/jack
++	$(UTL_JACKMAKE) $(OBJDIR)/jack
++	rm -f gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
+diff --git a/src/container/Makefile b/src/container/Makefile
+index 8aa8196..23a2e7a 100644
+--- a/src/container/Makefile
++++ b/src/container/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ OBJ_HELPERS             = $(OBJDIR)/CairoCanvas.o
+@@ -53,46 +59,47 @@ ifeq ($(VST_UI),1)
+   X_VST_LIBS             += $(UI_LIBS)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(MODULES)
+ 
+ $(OBJ_HELPERS):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
+ 
+ $(LIB_LADSPA):
+ 	@echo "  $(CXX) ladspa.cpp"
+-	@$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_LADSPA))"
+-	@$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
++	$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
+ 
+ $(LIB_LV2): $(X_LV2_DEPS)
+ 	@echo "  $(CXX) lv2.cpp"
+-	@$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
+-	@echo "  $(CXX) $(notdir $(X_LIB_LV2))"
+-	@$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
++	$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
++	@echo "  $(CXX) $(notdir $(LIB_LV2))"
++	$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
+ 
+ $(LIB_VST):
+ 	@echo "  $(CXX) vst.cpp"
+-	@$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_VST))"
+-	@$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
++	$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
+ 
+ $(LIB_JACK): $(OBJ_HELPERS)
+ 	@echo "  $(CXX) jack.cpp"
+-	@$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
++	$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
+ 	@echo "  $(CXX) $(notdir $(LIB_JACK))"
+-	@$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
++	$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
+ 
+ $(BIN_PROFILE): $(LIB_JACK)
+ 	@echo "  $(CXX) profile.cpp"
+-	@$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_PROFILE))"
+-	@$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
++	$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
+ 
+ $(BIN_TEST): $(LIB_JACK)
+ 	@echo "  $(CXX) test.cpp"
+-	@$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_TEST))"
+-	@$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
++	$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
+diff --git a/src/core/Makefile b/src/core/Makefile
+index a9ce1a5..3ad14a5 100644
+--- a/src/core/Makefile
++++ b/src/core/Makefile
+@@ -1,18 +1,25 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(SNDFILE_HEADERS)
+ LIBS                    = $(PTHREAD_LIBS)
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(OBJ_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
+ 
+ $(OBJ_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_CORE))"
+-	@$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
++	$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
+diff --git a/src/doc/Makefile b/src/doc/Makefile
+index aac73bf..f7f18a1 100644
+--- a/src/doc/Makefile
++++ b/src/doc/Makefile
+@@ -1,6 +1,13 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ PHPDIR      = $(BUILDDIR)/src/doc
+ HTMLDIR     = $(BUILDDIR)/html
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -8,14 +15,14 @@ target: all
+ # Common rules
+ $(PHPDIR)/Makefile:
+ 	@echo "Preparing PHP documentation generator"
+-	@mkdir -p $(PHPDIR)
+-	@mkdir -p $(HTMLDIR)
+-	@cp -rf * $(PHPDIR)/
+-	@cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
+-	@cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
+-	@cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
+-	@$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
++	mkdir -p $(PHPDIR)
++	mkdir -p $(HTMLDIR)
++	cp -rf * $(PHPDIR)/
++	cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
++	cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
++	cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
++	$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
+ 
+ all: $(PHPDIR)/Makefile
+ 	@echo "Generating HTML documentation"
+-	@$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
++	$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
+diff --git a/src/dsp/Makefile b/src/dsp/Makefile
+index f3d9ab1..aac8007 100644
+--- a/src/dsp/Makefile
++++ b/src/dsp/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ NATIVE_IMPL             = $(OBJDIR)/native.o
+ 
+ X86_IMPL                = $(OBJDIR)/x86.o
+@@ -51,6 +57,7 @@ ifeq ($(BUILD_PROFILE), aarch64)
+ LINK_OBJECTS           += $(AARCH64_IMPL) $(ASIMD_IMPL)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -59,41 +66,41 @@ all: $(OBJ_DSP)
+ 
+ $(OBJ_DSP): $(LINK_OBJECTS)
+ 	@echo "  $(LD) $(notdir $(OBJ_DSP))"
+-	@$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
++	$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
+ 
+ $(DSP_IMPL) $(BITS_IMPL) $(NATIVE_IMPL) $(X86_IMPL) $(ARM_IMPL) $(AARCH64_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	
+ $(SSE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE3_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE4_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
+ 	
+ $(NEON_D32_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
+ 	
+ $(ASIMD_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
+ 
+diff --git a/src/metadata/Makefile b/src/metadata/Makefile
+index 201f89a..403f38a 100644
+--- a/src/metadata/Makefile
++++ b/src/metadata/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -10,8 +16,8 @@ target: all
+ 
+ $(OBJ_METADATA): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_METADATA))"
+-	@$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+diff --git a/src/plugins/Makefile b/src/plugins/Makefile
+index 1f197dc..85963ba 100644
+--- a/src/plugins/Makefile
++++ b/src/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,8 +14,8 @@ all:  $(OBJ_PLUGINS)
+ 
+ $(OBJ_PLUGINS): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(OBJ_PLUGINS))"
+-	@$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
++	$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
+diff --git a/src/rendering/Makefile b/src/rendering/Makefile
+index 897e327..65f3237 100644
+--- a/src/rendering/Makefile
++++ b/src/rendering/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ BASE_IMPL             	= $(OBJDIR)/base_backend.o
+ 
+ GLX_IMPL                = $(OBJDIR)/glx/backend.o $(OBJDIR)/glx/factory.o
+@@ -20,15 +26,15 @@ all: $(MODULES)
+ 
+ $(LIB_R3D_GLX): $(BASE_IMPL) $(GLX_IMPL)
+ 	@echo "  $(CXX) $(notdir $(LIB_R3D_GLX))"
+-	@$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
++	$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
+ 
+ $(BASE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 	
+ $(GLX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $(@))
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
++	mkdir -p $(dir $(@))
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
+ 
+ 
+diff --git a/src/test/Makefile b/src/test/Makefile
+index e8016e1..a89366e 100644
+--- a/src/test/Makefile
++++ b/src/test/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TEST_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TEST_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TEST_CORE))"
+-	@$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/testing/Makefile b/src/testing/Makefile
+index 705913d..d048065 100644
+--- a/src/testing/Makefile
++++ b/src/testing/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TESTING_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TESTING_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TESTING_CORE))"
+-	@$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/testing/mtest/3d/boolean3d.cpp b/src/testing/mtest/3d/boolean3d.cpp
+deleted file mode 100644
+index 636dce1..0000000
+--- a/src/testing/mtest/3d/boolean3d.cpp
++++ /dev/null
+@@ -1,253 +0,0 @@
+-/*
+- * Copyright (C) 2020 Linux Studio Plugins Project <https://lsp-plug.in/>
+- *           (C) 2020 Vladimir Sadovnikov <sadko4u@gmail.com>
+- *
+- * This file is part of lsp-plugins
+- * Created on: 24 дек. 2018 г.
+- *
+- * lsp-plugins is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU Lesser General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * any later version.
+- *
+- * lsp-plugins is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU Lesser General Public License for more details.
+- *
+- * You should have received a copy of the GNU Lesser General Public License
+- * along with lsp-plugins. If not, see <https://www.gnu.org/licenses/>.
+- */
+-
+-#if 0
+-
+-#include <test/mtest.h>
+-#include <testing/mtest/3d/common/X11Renderer.h>
+-#include <core/files/Model3DFile.h>
+-#include <core/3d/rt_context.h>
+-#include <core/3d/RayTrace3D.h>
+-
+-#include <core/types.h>
+-#include <core/debug.h>
+-#include <core/sugar.h>
+-#include <core/status.h>
+-#include <stdlib.h>
+-#include <errno.h>
+-#include <data/cstorage.h>
+-
+-#include <X11/X.h>
+-#include <X11/Xlib.h>
+-#include <X11/keysymdef.h>
+-#include <GL/gl.h>
+-#include <GL/glx.h>
+-#include <GL/glu.h>
+-#include <sys/poll.h>
+-
+-//#define TEST_DEBUG
+-
+-#ifndef TEST_DEBUG
+-//    #define BREAKPOINT_STEP     -1
+-//    #define BREAKPOINT_STEP     27
+-//    #define BREAKPOINT_STEP     83
+-    #define BREAKPOINT_STEP     215
+-//    #define BREAKPOINT_STEP     0
+-
+-#else /* DEBUG */
+-    #define BREAKPOINT_STEP     0
+-#endif /* DEBUG */
+-
+-MTEST_BEGIN("3d", boolean)
+-
+-    class Renderer: public X11Renderer
+-    {
+-        private:
+-            Scene3D        *pScene;
+-            ssize_t         nTrace;
+-            bool            bDrawMatched;
+-            bool            bDrawIgnored;
+-            bool            bDrawDebug;
+-
+-        public:
+-            explicit Renderer(Scene3D *scene, View3D *view): X11Renderer(view)
+-            {
+-                pScene = scene;
+-                bDrawMatched    = true;
+-                bDrawIgnored    = true;
+-                bDrawDebug      = true;
+-                bDrawNormals    = false;
+-                nTrace          = BREAKPOINT_STEP;
+-
+-                update_view();
+-            }
+-
+-            virtual ~Renderer()
+-            {
+-            }
+-
+-        public:
+-            virtual void on_key_press(const XKeyEvent &ev, KeySym key)
+-            {
+-                switch (key)
+-                {
+-                    case XK_Up:
+-                        nTrace++;
+-                        lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                        update_view();
+-                        break;
+-                    case XK_Down:
+-                        if (nTrace >= 0)
+-                        {
+-                            nTrace--;
+-                            lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                            update_view();
+-                        }
+-                        break;
+-
+-                    case 'm':
+-                    {
+-                        bDrawMatched = ! bDrawMatched;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'i':
+-                    {
+-                        bDrawIgnored = ! bDrawIgnored;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'd':
+-                    {
+-                        bDrawDebug = ! bDrawDebug;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case '0': case '1': case '2': case '3': case '4':
+-                    case '5': case '6': case '7': case '8': case '9':
+-                    {
+-                        Object3D *obj = pScene->get_object(key - '0');
+-                        if (obj != NULL)
+-                        {
+-                            obj->set_visible(!obj->is_visible());
+-                            update_view();
+-                        }
+-                        break;
+-                    }
+-                    default:
+-                        X11Renderer::on_key_press(ev, key);
+-                        break;
+-                }
+-            }
+-
+-        protected:
+-            status_t perform_boolean(rt_debug_t *shared)
+-            {
+-                if (pScene->num_objects() <= 0)
+-                    return STATUS_OK;
+-
+-                rt_mesh_t mesh;
+-                mesh.set_debug_context(shared, &shared->trace);
+-
+-                Object3D *obj = pScene->object(0);
+-                status_t res = mesh.init(obj, 0, obj->matrix());
+-                if (res != STATUS_OK)
+-                    return res;
+-
+-                for (size_t i=1, n=pScene->num_objects(); i<n; ++i)
+-                {
+-                    obj = pScene->object(i);
+-                    res = mesh.subtract(obj, i, obj->matrix());
+-                    if (res != STATUS_OK)
+-                        return res;
+-                }
+-
+-                return STATUS_OK;
+-            }
+-
+-            status_t    update_view()
+-            {
+-                v_vertex3d_t v[3];
+-                status_t res = STATUS_OK;
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // List of ignored and matched triangles
+-                rt_debug_t global;
+-                global.breakpoint   = nTrace;
+-                global.step         = 0;
+-
+-                // Perform raytrace
+-                res     = perform_boolean(&global);
+-                if (res == STATUS_BREAKPOINT)
+-                {
+-                    pView->swap(&global.trace);
+-                    res         = STATUS_OK;
+-                }
+-
+-                if (!bDrawDebug)
+-                    pView->clear_all();
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // Build final scene from matched and ignored items
+-                if (bDrawIgnored)
+-                {
+-                    for (size_t i=0, m=global.ignored.size(); i < m; ++i)
+-                        pView->add_triangle_1c(global.ignored.at(i), &C_GRAY);
+-                }
+-
+-                if (bDrawMatched)
+-                {
+-                    for (size_t i=0, m=global.matched.size(); i < m; ++i)
+-                    {
+-                        v_triangle3d_t *t = global.matched.at(i);
+-                        v[0].p     = t->p[0];
+-                        v[0].n     = t->n[0];
+-                        v[0].c     = C_RED;
+-
+-                        v[1].p     = t->p[1];
+-                        v[1].n     = t->n[1];
+-                        v[1].c     = C_GREEN;
+-
+-                        v[2].p     = t->p[2];
+-                        v[2].n     = t->n[2];
+-                        v[2].c     = C_BLUE;
+-
+-                        pView->add_triangle(v);
+-                    }
+-                }
+-
+-                global.ignored.flush();
+-                global.matched.flush();
+-
+-                return res;
+-            }
+-    };
+-
+-    MTEST_MAIN
+-    {
+-        const char *scene_file = (argc < 1) ? "res/test/3d/cross.obj" : argv[0];
+-
+-        // Load scene
+-        Scene3D s;
+-        View3D v;
+-        status_t res = Model3DFile::load(&s, scene_file, true);
+-        MTEST_ASSERT_MSG(res == STATUS_OK, "Error loading scene from file %s", scene_file);
+-
+-        // Initialize renderer
+-        Renderer r(&s, &v);
+-        MTEST_ASSERT_MSG(r.init() == STATUS_OK, "Error initializing renderer");
+-        r.run();
+-        r.destroy();
+-
+-        // Destroy scene
+-        s.destroy();
+-    }
+-
+-MTEST_END
+-
+-#endif
+diff --git a/src/testing/mtest/3d/bsp_context.cpp b/src/testing/mtest/3d/bsp_context.cpp
+index de54427..f7b7a34 100644
+--- a/src/testing/mtest/3d/bsp_context.cpp
++++ b/src/testing/mtest/3d/bsp_context.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/reflections3d.cpp b/src/testing/mtest/3d/reflections3d.cpp
+index e250444..367f86c 100644
+--- a/src/testing/mtest/3d/reflections3d.cpp
++++ b/src/testing/mtest/3d/reflections3d.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/ui/Makefile b/src/ui/Makefile
+index 503111d..eb1e4c5 100644
+--- a/src/ui/Makefile
++++ b/src/ui/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= ws tk ctl plugins
+@@ -8,15 +14,15 @@ PACKAGES                = $(OBJ_WS_CORE) $(OBJ_TK_CORE) $(OBJ_CTL_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_UI_CORE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_UI_CORE)
+diff --git a/src/ui/ctl/Makefile b/src/ui/ctl/Makefile
+index 3f727db..692fe9d 100644
+--- a/src/ui/ctl/Makefile
++++ b/src/ui/ctl/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_CTL_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_CTL_CORE) $(SUBDIRS)
+diff --git a/src/ui/plugins/Makefile b/src/ui/plugins/Makefile
+index 8f8db8f..0e6c3d8 100644
+--- a/src/ui/plugins/Makefile
++++ b/src/ui/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_PLUGIN_UIS): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_PLUGIN_UIS) $(SUBDIRS)
+diff --git a/src/ui/tk/Makefile b/src/ui/tk/Makefile
+index 8700f63..cfb4c78 100644
+--- a/src/ui/tk/Makefile
++++ b/src/ui/tk/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -6,11 +12,11 @@ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_TK_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_TK_CORE)
+diff --git a/src/ui/ws/Makefile b/src/ui/ws/Makefile
+index 1109752..b9836d8 100644
+--- a/src/ui/ws/Makefile
++++ b/src/ui/ws/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= x11
+@@ -8,15 +14,15 @@ all: $(OBJ_WS_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ $(OBJ_WS_CORE): $(FILES) $(OBJ_WS_X11_CORE)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
++	$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
+ 
+ $(OBJ_WS_X11_CORE): $(SUBDIRS)
+diff --git a/src/ui/ws/x11/Makefile b/src/ui/ws/x11/Makefile
+index b99e93d..7bffca3 100644
+--- a/src/ui/ws/x11/Makefile
++++ b/src/ui/ws/x11/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(XLIB_HEADERS) $(CAIRO_HEADERS)
+@@ -8,9 +14,9 @@ all: $(OBJ_WS_X11_CORE)
+ 
+ $(OBJ_WS_X11_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
++	$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+diff --git a/src/ui/ws/x11/X11Display.cpp b/src/ui/ws/x11/X11Display.cpp
+index d85db51..987e8a9 100644
+--- a/src/ui/ws/x11/X11Display.cpp
++++ b/src/ui/ws/x11/X11Display.cpp
+@@ -23,7 +23,7 @@
+ 
+ #ifdef USE_X11_DISPLAY
+ 
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ 
+@@ -233,7 +233,7 @@ namespace lsp
+                 while (!atomic_cas(&hLock, 0, 1)) { /* Wait */ }
+ 
+                 // Dispatch errors between Displays
+-                for (X11Display *dp = pHandlers; dp != NULL; ++dp)
++                for (X11Display *dp = pHandlers; dp != NULL; dp = dp->pNextHandler)
+                     if (dp->pDisplay == dpy)
+                         dp->handle_error(ev);
+ 
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index 88b3739..4b4fd2e 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -1,12 +1,24 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
++CXX                     = $(HOST_CXX)
++CXXFLAGS                = $(HOST_CXXFLAGS)
++MAKE_OPTS              += CXX=$(HOST_CXX) CXXFLAGS=$(HOST_CXXFLAGS)
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS                 =
+-OBJ_FILES               = $(OBJ_CORE) $(OBJ_METADATA)
++OBJ_FILES               = $(HOST_OBJ_CORE) $(HOST_OBJ_METADATA) $(HOST_OBJ_DSP)
+ OBJ_LIBS                = $(PTHREAD_LIBS) $(MATH_LIBS)
+ OBJ_EXTRA               =
+ INCLUDE_EXTRA           =
+ 
++export PKG_CONFIG_SYSROOT_DIR = /
++
+ ifeq ($(BUILD_PLATFORM),BSD)
+   OBJ_LIBS               += $(ICONV_LIBS)
+ endif
+@@ -18,7 +30,7 @@ endif
+ ifeq ($(findstring lv2,$(BUILD_MODULES)),lv2)
+   MODULES                += $(UTL_GENTTL)
+   FILELIST               += lv2_genttl.o
+-  INCLUDE_EXTRA          += $(LV2_HEADERS)
++  INCLUDE_EXTRA          += $(HOST_LV2_HEADERS)
+ endif
+ ifeq ($(findstring vst,$(BUILD_MODULES)),vst)
+   MODULES                += $(UTL_VSTMAKE)
+@@ -44,32 +56,30 @@ target: all
+ # Common rules
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	@echo "  $(HOST_CXX) $(FILE)"
++	$(HOST_CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(HOST_CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+-$(UTL_GENTTL): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	@$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++$(UTL_GENTTL): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENTTL))"
++	$(HOST_CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+-$(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	@$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_JACKMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_JACKMAKE))"
++	$(HOST_CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	@$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_VSTMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_VSTMAKE))"
++	$(HOST_CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_GENPHP): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	@$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_GENPHP): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENPHP))"
++	$(HOST_CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_RESGEN): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	@$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+-
+-	
+\ No newline at end of file
++$(UTL_RESGEN): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_RESGEN))"
++	$(HOST_CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_EXTRA) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+diff --git a/src/utils/jack_genmake.cpp b/src/utils/jack_genmake.cpp
+index 09974b0..3272ad8 100644
+--- a/src/utils/jack_genmake.cpp
++++ b/src/utils/jack_genmake.cpp
+@@ -97,6 +97,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%=%%.cpp)\n");
+@@ -107,11 +112,11 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
+ 
+         fprintf(out, "install: $(FILES)\n");
+-        fprintf(out, "\t@$(INSTALL) $(FILES) $(TARGET_PATH)/");
++        fprintf(out, "\t$(INSTALL) $(FILES) $(TARGET_PATH)/");
+ 
+         // Close file
+         fclose(out);
+diff --git a/src/utils/vst_genmake.cpp b/src/utils/vst_genmake.cpp
+index 9eeedeb..f47f783 100644
+--- a/src/utils/vst_genmake.cpp
++++ b/src/utils/vst_genmake.cpp
+@@ -100,6 +100,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%.so, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%.so=%%.cpp)\n");
+@@ -110,8 +115,8 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
+ 
+         // Close file
+         fclose(out);
+diff --git a/tmp/.gitignore b/tmp/.gitignore
+index 22e8364..d6b7ef3 100644
+--- a/tmp/.gitignore
++++ b/tmp/.gitignore
+@@ -1 +1,2 @@
+-/*
+\ No newline at end of file
++*
++!.gitignore
diff --git a/srcpkgs/lsp-plugins-lv2/template b/srcpkgs/lsp-plugins-lv2/template
new file mode 100644
index 000000000000..fc02794b8dfc
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/template
@@ -0,0 +1,75 @@
+# Template file for 'lsp-plugins-lv2'
+pkgname=lsp-plugins-lv2
+version=1.1.30
+revision=1
+wrksrc=lsp-plugins-${version}
+build_style=gnu-makefile
+make_build_args="VERBOSE=1 PREFIX=/usr"
+make_check_args=$make_build_args
+make_install_target="install install_xdg"
+make_use_env=yes
+hostmakedepends="pkg-config php lv2 libsndfile-devel"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel
+ ladspa-sdk jack-devel"
+_desc="Collection of free audio plugins"
+short_desc="${_desc} - LV2"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/"
+distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+export SKIP_CC_LD_ARCH=yes
+export HOST_BUILD_ARCH="${XBPS_MACHINE%-*}"
+export HOST_PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
+if [ -n "$CROSS_BUILD" ]; then
+	export BUILD_ARCH="${XBPS_TARGET_MACHINE%-*}"
+	export HOST_CXXFLAGS="$CXXFLAGS_host"
+	export HOST_CXX="$CXX_host"
+	export HOST_LD="$LD_host"
+else
+	export BUILD_ARCH="${XBPS_MACHINE%-*}"
+	export HOST_CXXFLAGS="$BUILD_CXXFLAGS"
+	export HOST_CXX="$BUILD_CXX"
+	export HOST_LD="$BUILD_LD"
+fi
+
+lsp-plugins-jack_package() {
+	short_desc="${_desc} - JACK"
+	pkg_install() {
+		vmove usr/bin
+		vmove usr/lib/lsp-plugins/lsp-plugins-jack-core*
+		vmove usr/lib/lsp-plugins/lsp-plugins-r3d-glx.so
+		vmove usr/share/applications
+		vmove usr/share/desktop-directories
+		vmove usr/share/icons
+		vmove etc/xdg/menus
+	}
+}
+
+lsp-plugins-ladspa_package() {
+	short_desc="${_desc} - LADSPA"
+	pkg_install() {
+		vmove usr/lib/ladspa/lsp-plugins-ladspa.so
+	}
+}
+
+lsp-plugins-vst_package() {
+	short_desc="${_desc} - VST"
+	pkg_install() {
+		vmove usr/lib/vst
+	}
+}
+
+lsp-plugins_package() {
+	short_desc="${_desc} - LV2, JACK, LADSPA, VST"
+	depends="lsp-plugins-lv2 lsp-plugins-jack lsp-plugins-ladspa lsp-plugins-vst"
+	build_style=meta
+}
+
+lsp-plugins-doc_package() {
+	short_desc="${_desc} - documentation"
+	pkg_install() {
+		vmove usr/share/doc
+	}
+}
diff --git a/srcpkgs/lsp-plugins-vst b/srcpkgs/lsp-plugins-vst
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-vst
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Updated] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (56 preceding siblings ...)
  2021-08-10  1:26 ` Logarithmus
@ 2021-08-10  1:28 ` Logarithmus
  2021-08-10  1:49 ` Logarithmus
                   ` (9 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-08-10  1:28 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 2219 bytes --]

There is an updated pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.
Also used by `easyeffects`, `pulseeffects`' successor 
Continuation of https://github.com/void-linux/void-packages/pull/29932

TODO:
- [ ] wait for https://github.com/sadko4u/lsp-plugins/pull/198
- [ ] implement `VERBOSE` option into `lsp-plugins` Makefiles to save my sanity debugging them
https://github.com/sadko4u/lsp-plugins/pull/200
- [ ] polish & upstream cross build patch
- [ ] fix `i686`
- [ ] fix `armv6`
- [x] split the package (ladspa, lv2, vst, jack, doc)
- [ ] remove parallel check commit 

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 186125 bytes --]

From 82c1ccd82dcddcb5622e8a8b8b40f48de71ff56a Mon Sep 17 00:00:00 2001
From: Artur Sinila <freesoftware@logarithmus.dev>
Date: Mon, 5 Jul 2021 03:44:08 +0300
Subject: [PATCH 1/2] common/build-style/: enable running tests in parallel

---
 common/build-style/cmake.sh           | 6 +++++-
 common/build-style/configure.sh       | 6 +++++-
 common/build-style/gnu-configure.sh   | 6 +++++-
 common/build-style/gnu-makefile.sh    | 6 +++++-
 common/build-style/perl-module.sh     | 6 +++++-
 common/environment/setup/sourcepkg.sh | 3 ++-
 6 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/common/build-style/cmake.sh b/common/build-style/cmake.sh
index 401dabad31c8..c7ffd16fee21 100644
--- a/common/build-style/cmake.sh
+++ b/common/build-style/cmake.sh
@@ -113,7 +113,11 @@ do_check() {
 
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/configure.sh b/common/build-style/configure.sh
index 0963fc347934..b846a1a77572 100644
--- a/common/build-style/configure.sh
+++ b/common/build-style/configure.sh
@@ -29,7 +29,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-configure.sh b/common/build-style/gnu-configure.sh
index 8121136cd121..b09de442b05b 100644
--- a/common/build-style/gnu-configure.sh
+++ b/common/build-style/gnu-configure.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-makefile.sh b/common/build-style/gnu-makefile.sh
index d7ea148fc483..0f7afa7d3695 100644
--- a/common/build-style/gnu-makefile.sh
+++ b/common/build-style/gnu-makefile.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/perl-module.sh b/common/build-style/perl-module.sh
index b9a01b13cfa9..d47945b33d36 100644
--- a/common/build-style/perl-module.sh
+++ b/common/build-style/perl-module.sh
@@ -79,7 +79,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/environment/setup/sourcepkg.sh b/common/environment/setup/sourcepkg.sh
index bc06f745b78a..1fd541f1e715 100644
--- a/common/environment/setup/sourcepkg.sh
+++ b/common/environment/setup/sourcepkg.sh
@@ -13,7 +13,8 @@ unset -v cmake_builddir meson_builddir
 unset -v meson_crossfile
 unset -v gemspec
 unset -v go_import_path go_package go_mod_mode
-unset -v patch_args disable_parallel_build keep_libtool_archives make_use_env
+unset -v patch_args disable_parallel_build disable_parallel_check
+unset -v keep_libtool_archives make_use_env
 unset -v reverts subpackages makedepends hostmakedepends checkdepends depends restricted
 unset -v nopie build_options build_options_default bootstrap repository reverts
 unset -v CFLAGS CXXFLAGS FFLAGS CPPFLAGS LDFLAGS LD_LIBRARY_PATH

From ce97abae05b9568c1e314e023bada750dec997ad Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH 2/2] New package: lsp-plugins-1.1.30

---
 srcpkgs/lsp-plugins                           |    1 +
 srcpkgs/lsp-plugins-doc                       |    1 +
 srcpkgs/lsp-plugins-jack                      |    1 +
 srcpkgs/lsp-plugins-ladspa                    |    1 +
 .../00-makefile-test-remove-cflags.patch      |   12 +
 srcpkgs/lsp-plugins-lv2/files/01-musl.patch   |  391 ++++
 .../files/02-make-verbose.patch               | 1082 +++++++++
 .../files/03-improve-cross.patch              |  565 +++++
 srcpkgs/lsp-plugins-lv2/files/04-misc.patch   |  280 +++
 .../patches/00-patch-all.patch                | 2061 +++++++++++++++++
 srcpkgs/lsp-plugins-lv2/template              |   75 +
 srcpkgs/lsp-plugins-vst                       |    1 +
 12 files changed, 4471 insertions(+)
 create mode 120000 srcpkgs/lsp-plugins
 create mode 120000 srcpkgs/lsp-plugins-doc
 create mode 120000 srcpkgs/lsp-plugins-jack
 create mode 120000 srcpkgs/lsp-plugins-ladspa
 create mode 100644 srcpkgs/lsp-plugins-lv2/files/00-makefile-test-remove-cflags.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/files/01-musl.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/files/02-make-verbose.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/files/03-improve-cross.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/files/04-misc.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/patches/00-patch-all.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/template
 create mode 120000 srcpkgs/lsp-plugins-vst

diff --git a/srcpkgs/lsp-plugins b/srcpkgs/lsp-plugins
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-doc b/srcpkgs/lsp-plugins-doc
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-doc
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-jack b/srcpkgs/lsp-plugins-jack
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-jack
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-ladspa b/srcpkgs/lsp-plugins-ladspa
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-ladspa
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-lv2/files/00-makefile-test-remove-cflags.patch b/srcpkgs/lsp-plugins-lv2/files/00-makefile-test-remove-cflags.patch
new file mode 100644
index 000000000000..fd82f25d4a25
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/files/00-makefile-test-remove-cflags.patch
@@ -0,0 +1,12 @@
+https://github.com/void-linux/void-packages/pull/29932#discussion_r605695858
+--- a/Makefile
++++ b/Makefile
+@@ -108,8 +108,6 @@ trace: export EXE_FLAGS     += -g3
+ trace: compile
+ 
+ test: OBJDIR                 = $(TESTDIR)
+-test: export CFLAGS         += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-test: export CXXFLAGS       += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
diff --git a/srcpkgs/lsp-plugins-lv2/files/01-musl.patch b/srcpkgs/lsp-plugins-lv2/files/01-musl.patch
new file mode 100644
index 000000000000..6dc08949a87a
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/files/01-musl.patch
@@ -0,0 +1,391 @@
+diff --git a/TODO.txt b/TODO.txt
+index 4976293..3bb3db8 100644
+--- a/TODO.txt
++++ b/TODO.txt
+@@ -28,6 +28,11 @@
+ - Added possibility to change themes in runtime.
+ - Complicated plugin UIs now allow to switch between Advanced and Novice modes.
+ 
++=== 1.1.31 ===
++
++* Fixed X11 error handling routine that could crash under certain conditions.
++* Better support for musl libc (contributed by Artur Sinila).
++
+ *******************************************************************************
+ * New plugin check list before release
+ *******************************************************************************
+diff --git a/include/common/types.h b/include/common/types.h
+index dd1816e..59c794e 100644
+--- a/include/common/types.h
++++ b/include/common/types.h
+@@ -563,6 +563,12 @@
+     #define MINIMUM_ALIGN                   DEFAULT_ALIGN
+ #endif /* DEFAULT_ALIGN */
+ 
++//-----------------------------------------------------------------------------
++// Detect some libraries
++#ifdef __GLIBC__
++    #define USE_GLIBC                           __GLIBC__
++#endif /* GLIBC */
++
+ //-----------------------------------------------------------------------------
+ // Type definitions
+ __IF_32( typedef        uint32_t            umword_t );
+diff --git a/include/data/cvector.h b/include/data/cvector.h
+index eccc94a..17fe119 100644
+--- a/include/data/cvector.h
++++ b/include/data/cvector.h
+@@ -25,6 +25,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <sys/types.h>
+ 
+ #define CVECTOR_GROW        16
+ 
+diff --git a/include/test/main/executor.h b/include/test/main/executor.h
+index 0faf73f..5a0c016 100644
+--- a/include/test/main/executor.h
++++ b/include/test/main/executor.h
+@@ -633,7 +633,7 @@ namespace lsp
+     }
+ #endif /* PLATFORM_WINDOWS */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     void TestExecutor::start_memcheck(test::Test *v)
+     {
+         if (!pCfg->mtrace)
+diff --git a/include/test/main/types.h b/include/test/main/types.h
+index ef15800..0c5d7c2 100644
+--- a/include/test/main/types.h
++++ b/include/test/main/types.h
+@@ -42,7 +42,7 @@
+     #include <fcntl.h>
+ #endif /* PLATFORM_UNIX_COMPATIBLE */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     #include <mcheck.h>
+ #endif /* PLATFORM_LINUX */
+ 
+diff --git a/include/testing/mtest/3d/common/X11Renderer.h b/include/testing/mtest/3d/common/X11Renderer.h
+index e8ec205..f0a51e2 100644
+--- a/include/testing/mtest/3d/common/X11Renderer.h
++++ b/include/testing/mtest/3d/common/X11Renderer.h
+@@ -30,7 +30,7 @@
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include <rendering/backend.h>
+ #include <core/ipc/Library.h>
+diff --git a/src/testing/mtest/3d/boolean3d.cpp b/src/testing/mtest/3d/boolean3d.cpp
+deleted file mode 100644
+index 636dce1..0000000
+--- a/src/testing/mtest/3d/boolean3d.cpp
++++ /dev/null
+@@ -1,253 +0,0 @@
+-/*
+- * Copyright (C) 2020 Linux Studio Plugins Project <https://lsp-plug.in/>
+- *           (C) 2020 Vladimir Sadovnikov <sadko4u@gmail.com>
+- *
+- * This file is part of lsp-plugins
+- * Created on: 24 дек. 2018 г.
+- *
+- * lsp-plugins is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU Lesser General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * any later version.
+- *
+- * lsp-plugins is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU Lesser General Public License for more details.
+- *
+- * You should have received a copy of the GNU Lesser General Public License
+- * along with lsp-plugins. If not, see <https://www.gnu.org/licenses/>.
+- */
+-
+-#if 0
+-
+-#include <test/mtest.h>
+-#include <testing/mtest/3d/common/X11Renderer.h>
+-#include <core/files/Model3DFile.h>
+-#include <core/3d/rt_context.h>
+-#include <core/3d/RayTrace3D.h>
+-
+-#include <core/types.h>
+-#include <core/debug.h>
+-#include <core/sugar.h>
+-#include <core/status.h>
+-#include <stdlib.h>
+-#include <errno.h>
+-#include <data/cstorage.h>
+-
+-#include <X11/X.h>
+-#include <X11/Xlib.h>
+-#include <X11/keysymdef.h>
+-#include <GL/gl.h>
+-#include <GL/glx.h>
+-#include <GL/glu.h>
+-#include <sys/poll.h>
+-
+-//#define TEST_DEBUG
+-
+-#ifndef TEST_DEBUG
+-//    #define BREAKPOINT_STEP     -1
+-//    #define BREAKPOINT_STEP     27
+-//    #define BREAKPOINT_STEP     83
+-    #define BREAKPOINT_STEP     215
+-//    #define BREAKPOINT_STEP     0
+-
+-#else /* DEBUG */
+-    #define BREAKPOINT_STEP     0
+-#endif /* DEBUG */
+-
+-MTEST_BEGIN("3d", boolean)
+-
+-    class Renderer: public X11Renderer
+-    {
+-        private:
+-            Scene3D        *pScene;
+-            ssize_t         nTrace;
+-            bool            bDrawMatched;
+-            bool            bDrawIgnored;
+-            bool            bDrawDebug;
+-
+-        public:
+-            explicit Renderer(Scene3D *scene, View3D *view): X11Renderer(view)
+-            {
+-                pScene = scene;
+-                bDrawMatched    = true;
+-                bDrawIgnored    = true;
+-                bDrawDebug      = true;
+-                bDrawNormals    = false;
+-                nTrace          = BREAKPOINT_STEP;
+-
+-                update_view();
+-            }
+-
+-            virtual ~Renderer()
+-            {
+-            }
+-
+-        public:
+-            virtual void on_key_press(const XKeyEvent &ev, KeySym key)
+-            {
+-                switch (key)
+-                {
+-                    case XK_Up:
+-                        nTrace++;
+-                        lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                        update_view();
+-                        break;
+-                    case XK_Down:
+-                        if (nTrace >= 0)
+-                        {
+-                            nTrace--;
+-                            lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                            update_view();
+-                        }
+-                        break;
+-
+-                    case 'm':
+-                    {
+-                        bDrawMatched = ! bDrawMatched;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'i':
+-                    {
+-                        bDrawIgnored = ! bDrawIgnored;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'd':
+-                    {
+-                        bDrawDebug = ! bDrawDebug;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case '0': case '1': case '2': case '3': case '4':
+-                    case '5': case '6': case '7': case '8': case '9':
+-                    {
+-                        Object3D *obj = pScene->get_object(key - '0');
+-                        if (obj != NULL)
+-                        {
+-                            obj->set_visible(!obj->is_visible());
+-                            update_view();
+-                        }
+-                        break;
+-                    }
+-                    default:
+-                        X11Renderer::on_key_press(ev, key);
+-                        break;
+-                }
+-            }
+-
+-        protected:
+-            status_t perform_boolean(rt_debug_t *shared)
+-            {
+-                if (pScene->num_objects() <= 0)
+-                    return STATUS_OK;
+-
+-                rt_mesh_t mesh;
+-                mesh.set_debug_context(shared, &shared->trace);
+-
+-                Object3D *obj = pScene->object(0);
+-                status_t res = mesh.init(obj, 0, obj->matrix());
+-                if (res != STATUS_OK)
+-                    return res;
+-
+-                for (size_t i=1, n=pScene->num_objects(); i<n; ++i)
+-                {
+-                    obj = pScene->object(i);
+-                    res = mesh.subtract(obj, i, obj->matrix());
+-                    if (res != STATUS_OK)
+-                        return res;
+-                }
+-
+-                return STATUS_OK;
+-            }
+-
+-            status_t    update_view()
+-            {
+-                v_vertex3d_t v[3];
+-                status_t res = STATUS_OK;
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // List of ignored and matched triangles
+-                rt_debug_t global;
+-                global.breakpoint   = nTrace;
+-                global.step         = 0;
+-
+-                // Perform raytrace
+-                res     = perform_boolean(&global);
+-                if (res == STATUS_BREAKPOINT)
+-                {
+-                    pView->swap(&global.trace);
+-                    res         = STATUS_OK;
+-                }
+-
+-                if (!bDrawDebug)
+-                    pView->clear_all();
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // Build final scene from matched and ignored items
+-                if (bDrawIgnored)
+-                {
+-                    for (size_t i=0, m=global.ignored.size(); i < m; ++i)
+-                        pView->add_triangle_1c(global.ignored.at(i), &C_GRAY);
+-                }
+-
+-                if (bDrawMatched)
+-                {
+-                    for (size_t i=0, m=global.matched.size(); i < m; ++i)
+-                    {
+-                        v_triangle3d_t *t = global.matched.at(i);
+-                        v[0].p     = t->p[0];
+-                        v[0].n     = t->n[0];
+-                        v[0].c     = C_RED;
+-
+-                        v[1].p     = t->p[1];
+-                        v[1].n     = t->n[1];
+-                        v[1].c     = C_GREEN;
+-
+-                        v[2].p     = t->p[2];
+-                        v[2].n     = t->n[2];
+-                        v[2].c     = C_BLUE;
+-
+-                        pView->add_triangle(v);
+-                    }
+-                }
+-
+-                global.ignored.flush();
+-                global.matched.flush();
+-
+-                return res;
+-            }
+-    };
+-
+-    MTEST_MAIN
+-    {
+-        const char *scene_file = (argc < 1) ? "res/test/3d/cross.obj" : argv[0];
+-
+-        // Load scene
+-        Scene3D s;
+-        View3D v;
+-        status_t res = Model3DFile::load(&s, scene_file, true);
+-        MTEST_ASSERT_MSG(res == STATUS_OK, "Error loading scene from file %s", scene_file);
+-
+-        // Initialize renderer
+-        Renderer r(&s, &v);
+-        MTEST_ASSERT_MSG(r.init() == STATUS_OK, "Error initializing renderer");
+-        r.run();
+-        r.destroy();
+-
+-        // Destroy scene
+-        s.destroy();
+-    }
+-
+-MTEST_END
+-
+-#endif
+diff --git a/src/testing/mtest/3d/bsp_context.cpp b/src/testing/mtest/3d/bsp_context.cpp
+index de54427..f7b7a34 100644
+--- a/src/testing/mtest/3d/bsp_context.cpp
++++ b/src/testing/mtest/3d/bsp_context.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/reflections3d.cpp b/src/testing/mtest/3d/reflections3d.cpp
+index e250444..367f86c 100644
+--- a/src/testing/mtest/3d/reflections3d.cpp
++++ b/src/testing/mtest/3d/reflections3d.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/ui/ws/x11/X11Display.cpp b/src/ui/ws/x11/X11Display.cpp
+index d85db51..987e8a9 100644
+--- a/src/ui/ws/x11/X11Display.cpp
++++ b/src/ui/ws/x11/X11Display.cpp
+@@ -23,7 +23,7 @@
+ 
+ #ifdef USE_X11_DISPLAY
+ 
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ 
+@@ -233,7 +233,7 @@ namespace lsp
+                 while (!atomic_cas(&hLock, 0, 1)) { /* Wait */ }
+ 
+                 // Dispatch errors between Displays
+-                for (X11Display *dp = pHandlers; dp != NULL; ++dp)
++                for (X11Display *dp = pHandlers; dp != NULL; dp = dp->pNextHandler)
+                     if (dp->pDisplay == dpy)
+                         dp->handle_error(ev);
+ 
diff --git a/srcpkgs/lsp-plugins-lv2/files/02-make-verbose.patch b/srcpkgs/lsp-plugins-lv2/files/02-make-verbose.patch
new file mode 100644
index 000000000000..d6c4f6ce2f92
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/files/02-make-verbose.patch
@@ -0,0 +1,1082 @@
+diff --git a/Makefile b/Makefile
+index 2d9cb79..79ddcc6 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ # Common definitions
+ RELEASE_TEXT            = LICENSE.txt README.txt CHANGELOG.txt
+ RELEASE_SRC             = $(RELEASE_TEXT) src build-*.sh include res Makefile release.sh
+@@ -166,24 +172,24 @@ compile_info:
+ 	@echo "-------------------------------------------------------------------------------"
+ 
+ compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@mkdir -p $(CFGDIR)
+-	@test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
+-	@test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
+-	@test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
+-	@test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++	mkdir -p $(OBJDIR)/src
++	mkdir -p $(CFGDIR)
++	test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
++	test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
++	test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
++	test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Build OK"
+ 	
+ test_compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++	mkdir -p $(OBJDIR)/src
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
+ clean:
+-	@-rm -rf $(BUILDDIR)
+-	@-rm -rf $(TESTDIR)
+-	@-rm -rf $(CFGDIR)
++	-rm -rf $(BUILDDIR)
++	-rm -rf $(TESTDIR)
++	-rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+ 
+ # Build targets
+@@ -209,63 +215,63 @@ install: $(INSTALLATIONS)
+ 
+ install_ladspa: all
+ 	@echo "Installing LADSPA plugins to $(DESTDIR)$(LADSPA_PATH)/"
+-	@mkdir -p $(DESTDIR)$(LADSPA_PATH)
+-	@$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
++	mkdir -p $(DESTDIR)$(LADSPA_PATH)
++	$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
+ 	
+ install_lv2: all
+ 	@echo "Installing LV2 plugins to $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
+-	@$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
++	$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+ 	
+ install_vst: all
+ 	@echo "Installing VST plugins to $(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+-	@$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
++	$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+ 
+ install_jack: all
+ 	@echo "Installing JACK core to $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
++	$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+ 	@echo "Installing JACK standalone plugins to $(DESTDIR)$(BIN_PATH)"
+-	@mkdir -p "$(DESTDIR)$(BIN_PATH)"
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
++	mkdir -p "$(DESTDIR)$(BIN_PATH)"
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
+ 
+ install_xdg:
+ 	@echo "Installing desktop icons to $(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
+-	@mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
+-	@cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
+-	@cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
+-	@cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
+-	@cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
++	mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
++	cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
++	cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
++	cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
++	cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
+ 
+ install_doc: all
+ 	@echo "Installing documentation to $(DESTDIR)$(DOC_PATH)"
+-	@mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+ # Release targets
+ dbg_release: export CFLAGS        += -DLSP_TRACE -O2
+@@ -279,67 +285,67 @@ release: $(RELEASES)
+ 
+ release_prepare: all
+ 	@echo "Releasing plugins for architecture $(BUILD_PROFILE)"
+-	@mkdir -p $(RELEASE)
+-	@mkdir -p $(DESTDIR)
++	mkdir -p $(RELEASE)
++	mkdir -p $(DESTDIR)
+ 	
+ release_ladspa: DESTDIR=$(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_ladspa: | release_prepare install_ladspa
+ 	@echo "Releasing LADSPA binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_lv2: DESTDIR=$(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_lv2: | release_prepare install_lv2
+ 	@echo "Releasing LV2 binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_vst: DESTDIR=$(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_vst: | release_prepare install_vst
+ 	@echo "Releasing VST binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_jack: DESTDIR=$(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_jack: | release_prepare install_jack
+ 	@echo "Releasing JACK binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 
+ release_profile: DESTDIR=$(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_profile: | release_prepare
+ 	@echo "Releasing PROFILE binaries"
+-	@$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ 
+ release_src: DESTDIR=$(RELEASE)/$(SRC_ID)
+ release_src: | release_prepare
+ 	@echo "Releasing source code binaries"
+-	@mkdir -p $(DESTDIR)
+-	@mkdir -p $(DESTDIR)/scripts
+-	@cp -R $(RELEASE_SRC) $(DESTDIR)/
+-	@cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	mkdir -p $(DESTDIR)/scripts
++	cp -R $(RELEASE_SRC) $(DESTDIR)/
++	cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
++	rm -rf $(DESTDIR)
+ 
+ release_doc: DESTDIR=$(RELEASE)/$(DOC_ID)
+ release_doc: | release_prepare
+ 	@echo "Releasing documentation"
+-	@mkdir -p $(DESTDIR)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
++	rm -rf $(DESTDIR)
+ 
+ # Unrelease target
+ unrelease: clean
+-	@-rm -rf $(RELEASE)
++	-rm -rf $(RELEASE)
+ 	@echo "Unrelease OK"
+ 
+ # Uninstall target
+@@ -348,41 +354,41 @@ uninstall: $(UNINSTALLATIONS)
+ 	
+ uninstall_ladspa:
+ 	@echo "Uninstalling LADSPA"
+-	@-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
++	-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
+ 	
+ uninstall_lv2:
+ 	@echo "Uninstalling LV2"
+-	@-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
++	-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
+ 	
+ uninstall_vst:
+ 	@echo "Uninstalling VST"
+-	@-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
++	-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
++	-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
++	-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
+ 	
+ uninstall_jack:
+ 	@echo "Uninstalling JACK"
+-	@-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
+-	@-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
++	-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
++	-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
++	-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
++	-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
+ 
+ uninstall_xdg:
+ 	@echo "Uninstalling desktop icons"
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
+-	@-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
++	-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
++	-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
+ 
+ uninstall_doc:
+ 	@echo "Uninstalling DOC"
+-	@-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+diff --git a/TODO.txt b/TODO.txt
+index 3bb3db8..f8562ef 100644
+--- a/TODO.txt
++++ b/TODO.txt
+@@ -32,6 +32,7 @@
+ 
+ * Fixed X11 error handling routine that could crash under certain conditions.
+ * Better support for musl libc (contributed by Artur Sinila).
++* Added support of VERBOSE parameter for build system (contributed by Artur Sinila).
+ 
+ *******************************************************************************
+ * New plugin check list before release
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 1fb917e..565dbb1 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -25,7 +25,6 @@ CXX                      ?= $(TOOL_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
+ 
+-MAKE_OPTS                 = -s
+ CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+@@ -62,7 +61,6 @@ export CXX
+ export PHP
+ export LD
+ 
+-export MAKE_OPTS
+ export CFLAGS
+ export CXXFLAGS
+ export SO_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index 8546191..d960ad8 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+@@ -58,6 +64,7 @@ ifeq ($(NEED_UI),1)
+   CONTAINER_DEPS         += $(OBJ_UI_CORE) $(OBJ_RES_CORE) rendering
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all $(MODULES)
+ 
+ all: $(MODULES)
+@@ -67,8 +74,8 @@ target: all
+ # Rules
+ $(SUBDIRS):
+ 	@echo "Building $(@)"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+@@ -93,10 +100,10 @@ $(OBJ_TESTING_CORE): test testing rendering
+ 
+ $(OBJ_RES_CORE): $(OBJ_CORE) $(UTL_RESGEN)
+ 	@echo "Generating builtin resources"
+-	@mkdir -p $(OBJDIR)/res
+-	@$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	mkdir -p $(OBJDIR)/res
++	$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
++	-rm gmon.out >/dev/null 2>&1
++	$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ # Target dependencies
+ container: $(CONTAINER_DEPS)
+@@ -108,18 +115,18 @@ doc: utils $(PHP_PLUGINS)
+ # Additional processing
+ $(PHP_PLUGINS): $(UTL_GENPHP)
+ 	@echo "Generating PHP file $(notdir $(PHP_PLUGINS))"
+-	@$(UTL_GENPHP) $(PHP_PLUGINS)
++	$(UTL_GENPHP) $(PHP_PLUGINS)
+ 
+ vst_stub: $(UTL_VSTMAKE)
+ 	@echo "Building VST stub"
+-	@mkdir -p $(OBJDIR)/vst
+-	@$(UTL_VSTMAKE) $(OBJDIR)/vst
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
++	mkdir -p $(OBJDIR)/vst
++	$(UTL_VSTMAKE) $(OBJDIR)/vst
++	-rm gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
+ 
+ jack_stub: $(UTL_JACKMAKE)
+ 	@echo "Building JACK stub"
+-	@mkdir -p $(OBJDIR)/jack
+-	@$(UTL_JACKMAKE) $(OBJDIR)/jack
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
++	mkdir -p $(OBJDIR)/jack
++	$(UTL_JACKMAKE) $(OBJDIR)/jack
++	-rm gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
+diff --git a/src/container/Makefile b/src/container/Makefile
+index 8aa8196..23a2e7a 100644
+--- a/src/container/Makefile
++++ b/src/container/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ OBJ_HELPERS             = $(OBJDIR)/CairoCanvas.o
+@@ -53,46 +59,47 @@ ifeq ($(VST_UI),1)
+   X_VST_LIBS             += $(UI_LIBS)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(MODULES)
+ 
+ $(OBJ_HELPERS):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
+ 
+ $(LIB_LADSPA):
+ 	@echo "  $(CXX) ladspa.cpp"
+-	@$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_LADSPA))"
+-	@$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
++	$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
+ 
+ $(LIB_LV2): $(X_LV2_DEPS)
+ 	@echo "  $(CXX) lv2.cpp"
+-	@$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
+-	@echo "  $(CXX) $(notdir $(X_LIB_LV2))"
+-	@$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
++	$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
++	@echo "  $(CXX) $(notdir $(LIB_LV2))"
++	$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
+ 
+ $(LIB_VST):
+ 	@echo "  $(CXX) vst.cpp"
+-	@$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_VST))"
+-	@$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
++	$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
+ 
+ $(LIB_JACK): $(OBJ_HELPERS)
+ 	@echo "  $(CXX) jack.cpp"
+-	@$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
++	$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
+ 	@echo "  $(CXX) $(notdir $(LIB_JACK))"
+-	@$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
++	$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
+ 
+ $(BIN_PROFILE): $(LIB_JACK)
+ 	@echo "  $(CXX) profile.cpp"
+-	@$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_PROFILE))"
+-	@$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
++	$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
+ 
+ $(BIN_TEST): $(LIB_JACK)
+ 	@echo "  $(CXX) test.cpp"
+-	@$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_TEST))"
+-	@$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
++	$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
+diff --git a/src/core/Makefile b/src/core/Makefile
+index a9ce1a5..3ad14a5 100644
+--- a/src/core/Makefile
++++ b/src/core/Makefile
+@@ -1,18 +1,25 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(SNDFILE_HEADERS)
+ LIBS                    = $(PTHREAD_LIBS)
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(OBJ_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
+ 
+ $(OBJ_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_CORE))"
+-	@$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
++	$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
+diff --git a/src/doc/Makefile b/src/doc/Makefile
+index aac73bf..f7f18a1 100644
+--- a/src/doc/Makefile
++++ b/src/doc/Makefile
+@@ -1,6 +1,13 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ PHPDIR      = $(BUILDDIR)/src/doc
+ HTMLDIR     = $(BUILDDIR)/html
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -8,14 +15,14 @@ target: all
+ # Common rules
+ $(PHPDIR)/Makefile:
+ 	@echo "Preparing PHP documentation generator"
+-	@mkdir -p $(PHPDIR)
+-	@mkdir -p $(HTMLDIR)
+-	@cp -rf * $(PHPDIR)/
+-	@cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
+-	@cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
+-	@cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
+-	@$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
++	mkdir -p $(PHPDIR)
++	mkdir -p $(HTMLDIR)
++	cp -rf * $(PHPDIR)/
++	cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
++	cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
++	cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
++	$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
+ 
+ all: $(PHPDIR)/Makefile
+ 	@echo "Generating HTML documentation"
+-	@$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
++	$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
+diff --git a/src/dsp/Makefile b/src/dsp/Makefile
+index f3d9ab1..aac8007 100644
+--- a/src/dsp/Makefile
++++ b/src/dsp/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ NATIVE_IMPL             = $(OBJDIR)/native.o
+ 
+ X86_IMPL                = $(OBJDIR)/x86.o
+@@ -51,6 +57,7 @@ ifeq ($(BUILD_PROFILE), aarch64)
+ LINK_OBJECTS           += $(AARCH64_IMPL) $(ASIMD_IMPL)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -59,41 +66,41 @@ all: $(OBJ_DSP)
+ 
+ $(OBJ_DSP): $(LINK_OBJECTS)
+ 	@echo "  $(LD) $(notdir $(OBJ_DSP))"
+-	@$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
++	$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
+ 
+ $(DSP_IMPL) $(BITS_IMPL) $(NATIVE_IMPL) $(X86_IMPL) $(ARM_IMPL) $(AARCH64_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	
+ $(SSE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE3_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE4_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
+ 	
+ $(NEON_D32_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
+ 	
+ $(ASIMD_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
+ 
+diff --git a/src/metadata/Makefile b/src/metadata/Makefile
+index 201f89a..403f38a 100644
+--- a/src/metadata/Makefile
++++ b/src/metadata/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -10,8 +16,8 @@ target: all
+ 
+ $(OBJ_METADATA): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_METADATA))"
+-	@$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+diff --git a/src/plugins/Makefile b/src/plugins/Makefile
+index 1f197dc..85963ba 100644
+--- a/src/plugins/Makefile
++++ b/src/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,8 +14,8 @@ all:  $(OBJ_PLUGINS)
+ 
+ $(OBJ_PLUGINS): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(OBJ_PLUGINS))"
+-	@$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
++	$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
+diff --git a/src/rendering/Makefile b/src/rendering/Makefile
+index 897e327..65f3237 100644
+--- a/src/rendering/Makefile
++++ b/src/rendering/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ BASE_IMPL             	= $(OBJDIR)/base_backend.o
+ 
+ GLX_IMPL                = $(OBJDIR)/glx/backend.o $(OBJDIR)/glx/factory.o
+@@ -20,15 +26,15 @@ all: $(MODULES)
+ 
+ $(LIB_R3D_GLX): $(BASE_IMPL) $(GLX_IMPL)
+ 	@echo "  $(CXX) $(notdir $(LIB_R3D_GLX))"
+-	@$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
++	$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
+ 
+ $(BASE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 	
+ $(GLX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $(@))
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
++	mkdir -p $(dir $(@))
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
+ 
+ 
+diff --git a/src/test/Makefile b/src/test/Makefile
+index e8016e1..a89366e 100644
+--- a/src/test/Makefile
++++ b/src/test/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TEST_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TEST_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TEST_CORE))"
+-	@$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/testing/Makefile b/src/testing/Makefile
+index 705913d..d048065 100644
+--- a/src/testing/Makefile
++++ b/src/testing/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TESTING_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TESTING_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TESTING_CORE))"
+-	@$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/ui/Makefile b/src/ui/Makefile
+index 503111d..eb1e4c5 100644
+--- a/src/ui/Makefile
++++ b/src/ui/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= ws tk ctl plugins
+@@ -8,15 +14,15 @@ PACKAGES                = $(OBJ_WS_CORE) $(OBJ_TK_CORE) $(OBJ_CTL_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_UI_CORE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_UI_CORE)
+diff --git a/src/ui/ctl/Makefile b/src/ui/ctl/Makefile
+index 3f727db..692fe9d 100644
+--- a/src/ui/ctl/Makefile
++++ b/src/ui/ctl/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_CTL_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_CTL_CORE) $(SUBDIRS)
+diff --git a/src/ui/plugins/Makefile b/src/ui/plugins/Makefile
+index 8f8db8f..0e6c3d8 100644
+--- a/src/ui/plugins/Makefile
++++ b/src/ui/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_PLUGIN_UIS): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_PLUGIN_UIS) $(SUBDIRS)
+diff --git a/src/ui/tk/Makefile b/src/ui/tk/Makefile
+index 8700f63..cfb4c78 100644
+--- a/src/ui/tk/Makefile
++++ b/src/ui/tk/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -6,11 +12,11 @@ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_TK_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_TK_CORE)
+diff --git a/src/ui/ws/Makefile b/src/ui/ws/Makefile
+index 1109752..b9836d8 100644
+--- a/src/ui/ws/Makefile
++++ b/src/ui/ws/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= x11
+@@ -8,15 +14,15 @@ all: $(OBJ_WS_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ $(OBJ_WS_CORE): $(FILES) $(OBJ_WS_X11_CORE)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
++	$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
+ 
+ $(OBJ_WS_X11_CORE): $(SUBDIRS)
+diff --git a/src/ui/ws/x11/Makefile b/src/ui/ws/x11/Makefile
+index b99e93d..7bffca3 100644
+--- a/src/ui/ws/x11/Makefile
++++ b/src/ui/ws/x11/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(XLIB_HEADERS) $(CAIRO_HEADERS)
+@@ -8,9 +14,9 @@ all: $(OBJ_WS_X11_CORE)
+ 
+ $(OBJ_WS_X11_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
++	$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index 88b3739..fbddcaa 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -44,32 +50,32 @@ target: all
+ # Common rules
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+ $(UTL_GENTTL): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	@$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++	$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+ $(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	@$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	@$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_GENPHP): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	@$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_RESGEN): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	@$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 
+-	
+\ No newline at end of file
++	
+diff --git a/src/utils/jack_genmake.cpp b/src/utils/jack_genmake.cpp
+index 09974b0..3272ad8 100644
+--- a/src/utils/jack_genmake.cpp
++++ b/src/utils/jack_genmake.cpp
+@@ -97,6 +97,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%=%%.cpp)\n");
+@@ -107,11 +112,11 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
+ 
+         fprintf(out, "install: $(FILES)\n");
+-        fprintf(out, "\t@$(INSTALL) $(FILES) $(TARGET_PATH)/");
++        fprintf(out, "\t$(INSTALL) $(FILES) $(TARGET_PATH)/");
+ 
+         // Close file
+         fclose(out);
+diff --git a/src/utils/vst_genmake.cpp b/src/utils/vst_genmake.cpp
+index 9eeedeb..f47f783 100644
+--- a/src/utils/vst_genmake.cpp
++++ b/src/utils/vst_genmake.cpp
+@@ -100,6 +100,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%.so, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%.so=%%.cpp)\n");
+@@ -110,8 +115,8 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
+ 
+         // Close file
+         fclose(out);
diff --git a/srcpkgs/lsp-plugins-lv2/files/03-improve-cross.patch b/srcpkgs/lsp-plugins-lv2/files/03-improve-cross.patch
new file mode 100644
index 000000000000..ec096a4184e3
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/files/03-improve-cross.patch
@@ -0,0 +1,565 @@
+diff --git a/.gitignore b/.gitignore
+index 5bc0ecb..4a1edec 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -3,6 +3,7 @@
+ /design/*
+ /.builconfig/*
+ /.build/*
++/.host_build/*
+ /.buildconfig/*
+ /.test/*
+ /.release/*
+diff --git a/Makefile b/Makefile
+index 79ddcc6..ce3de4e 100644
+--- a/Makefile
++++ b/Makefile
+@@ -24,8 +24,10 @@ export RESDIR           = ${CURDIR}/res
+ export RELEASE          = ${CURDIR}/.release
+ export RELEASE_BIN      = $(RELEASE)/$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ export BUILDDIR         = ${CURDIR}/.build
++export HOST_BUILDDIR    = ${CURDIR}/.host_build
+ export TESTDIR          = ${CURDIR}/.test
+ OBJDIR                  = $(BUILDDIR)
++export HOST_OBJDIR      = $(HOST_BUILDDIR)
+ 
+ # Installation locations
+ BIN_PATH               ?= $(PREFIX)/bin
+@@ -41,20 +43,23 @@ VST_PATH                = $(LIB_PATH)/vst
+ export BASEDIR          = ${CURDIR}
+ 
+ # Objects
+-export OBJ_CORE         = $(OBJDIR)/core.o
+-export OBJ_DSP          = $(OBJDIR)/dsp.o
+-export OBJ_CTL_CORE     = $(OBJDIR)/ctl_core.o
+-export OBJ_TK_CORE      = $(OBJDIR)/tk_core.o
+-export OBJ_WS_CORE      = $(OBJDIR)/ws_core.o
+-export OBJ_WS_X11_CORE  = $(OBJDIR)/ws_x11_core.o
+-export OBJ_UI_CORE      = $(OBJDIR)/ui_core.o
+-export OBJ_RES_CORE     = $(OBJDIR)/res_core.o
+-export OBJ_TEST_CORE    = $(OBJDIR)/test_core.o
+-export OBJ_TESTING_CORE = $(OBJDIR)/testing_core.o
+-export OBJ_PLUGINS      = $(OBJDIR)/plugins.o
+-export OBJ_PLUGIN_UIS	= $(OBJDIR)/plugin_uis.o
+-export OBJ_METADATA     = $(OBJDIR)/metadata.o
+-export OBJ_FILES        = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
++export OBJ_CORE          = $(OBJDIR)/core.o
++export HOST_OBJ_CORE     = $(HOST_OBJDIR)/core.o
++export OBJ_DSP           = $(OBJDIR)/dsp.o
++export HOST_OBJ_DSP      = $(HOST_OBJDIR)/dsp.o
++export OBJ_CTL_CORE      = $(OBJDIR)/ctl_core.o
++export OBJ_TK_CORE       = $(OBJDIR)/tk_core.o
++export OBJ_WS_CORE       = $(OBJDIR)/ws_core.o
++export OBJ_WS_X11_CORE   = $(OBJDIR)/ws_x11_core.o
++export OBJ_UI_CORE       = $(OBJDIR)/ui_core.o
++export OBJ_RES_CORE      = $(OBJDIR)/res_core.o
++export OBJ_TEST_CORE     = $(OBJDIR)/test_core.o
++export OBJ_TESTING_CORE  = $(OBJDIR)/testing_core.o
++export OBJ_PLUGINS       = $(OBJDIR)/plugins.o
++export OBJ_PLUGIN_UIS	 = $(OBJDIR)/plugin_uis.o
++export OBJ_METADATA      = $(OBJDIR)/metadata.o
++export HOST_OBJ_METADATA = $(HOST_OBJDIR)/metadata.o
++export OBJ_FILES         = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
+ 
+ # Libraries
+ export LIB_LADSPA       = $(OBJDIR)/$(ARTIFACT_ID)-ladspa.so
+@@ -68,11 +73,14 @@ export BIN_PROFILE      = $(OBJDIR)/$(ARTIFACT_ID)-profile
+ export BIN_TEST         = $(OBJDIR)/$(ARTIFACT_ID)-test
+ 
+ # Utils
+-export UTL_GENTTL       = $(OBJDIR)/lv2_genttl.exe
+-export UTL_VSTMAKE      = $(OBJDIR)/vst_genmake.exe
+-export UTL_JACKMAKE     = $(OBJDIR)/jack_genmake.exe
+-export UTL_GENPHP       = $(OBJDIR)/gen_php.exe
+-export UTL_RESGEN       = $(OBJDIR)/gen_resources.exe
++ifeq ($(BUILD_SYSTEM),Windows)
++  BIN_SUFFIX := .exe
++endif
++export UTL_GENTTL       = $(HOST_OBJDIR)/lv2_genttl$(BIN_SUFFIX)
++export UTL_VSTMAKE      = $(HOST_OBJDIR)/vst_genmake$(BIN_SUFFIX)
++export UTL_JACKMAKE     = $(HOST_OBJDIR)/jack_genmake$(BIN_SUFFIX)
++export UTL_GENPHP       = $(HOST_OBJDIR)/gen_php$(BIN_SUFFIX)
++export UTL_RESGEN       = $(HOST_OBJDIR)/gen_resources$(BIN_SUFFIX)
+ export UTL_FILES        = $(UTL_GENTTL) $(UTL_VSTMAKE) $(UTL_GENPHP) $(UTL_RESGEN)
+ 
+ # Files
+@@ -104,6 +112,7 @@ all: export CXXFLAGS        += -O2 -DLSP_NO_EXPERIMENTAL
+ all: export EXE_FLAGS       += -pie -fPIE
+ all: compile
+ 
++
+ experimental: export CFLAGS += -O2
+ experimental: export CXXFLAGS += -O2
+ experimental: compile
+@@ -161,17 +170,17 @@ profile: compile
+ compile_info:
+ 	@echo "-------------------------------------------------------------------------------"
+ 	@echo "Building binaries"
+-	@echo "  target architecture : $(BUILD_PROFILE)"
+-	@echo "  target platform     : $(BUILD_PLATFORM)"
+-	@echo "  target system       : $(BUILD_SYSTEM)"
+-	@echo "  compiler            : $(BUILD_COMPILER)"
+-	@echo "  modules             : $(BUILD_MODULES)"
+-	@echo "  UI                  : LV2=$(LV2_UI), VST=$(VST_UI)"
+-	@echo "  3D rendering        : $(BUILD_R3D_BACKENDS)"
+-	@echo "  build directory     : $(OBJDIR)"
++	@echo "  platform             : $(BUILD_PLATFORM)"
++	@echo "  system               : $(BUILD_SYSTEM)"
++	@echo "  target compiler      : $(CXX)"
++	@echo "  target architecture  : $(BUILD_PROFILE)"
++	@echo "  modules              : $(BUILD_MODULES)"
++	@echo "  UI                   : LV2=$(LV2_UI), VST=$(VST_UI)"
++	@echo "  3D rendering         : $(BUILD_R3D_BACKENDS)"
++	@echo "  build directory      : $(OBJDIR)"
+ 	@echo "-------------------------------------------------------------------------------"
+ 
+-compile: | compile_info
++compile: utils | compile_info
+ 	mkdir -p $(OBJDIR)/src
+ 	mkdir -p $(CFGDIR)
+ 	test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
+@@ -181,13 +190,31 @@ compile: | compile_info
+ 	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Build OK"
+ 	
+-test_compile: | compile_info
++test_compile: utils | compile_info
+ 	mkdir -p $(OBJDIR)/src
+ 	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
++utils: export BUILD_PROFILE=$(HOST_BUILD_PROFILE)
++utils: export OBJDIR=$(HOST_OBJDIR)
++utils: export OBJ_CORE=$(HOST_OBJ_CORE)
++utils: export OBJ_DSP=$(HOST_OBJ_DSP)
++utils: export OBJ_METADATA=$(HOST_OBJ_METADATA)
++utils: export CXX=$(HOST_CXX)
++utils: export CXXFLAGS=$(HOST_CXXFLAGS)
++utils: export LD=$(HOST_LD)
++utils: export SNDFILE_HEADERS=$(HOST_SNDFILE_HEADERS)
++utils: export SNDFILE_LIBS=$(HOST_SNDFILE_LIBS)
++utils: export LV2_HEADERS=$(HOST_LV2_HEADERS)
++utils: export LV2_LIBS=$(HOST_LV2_LIBS)
++utils: | compile_info
++	mkdir -p $(HOST_OBJDIR)/src/utils
++	$(MAKE) $(MAKE_OPTS) -C src utils
++	@echo "Utils Build OK"
++
+ clean:
+ 	-rm -rf $(BUILDDIR)
++	-rm -rf $(HOST_BUILDDIR)
+ 	-rm -rf $(TESTDIR)
+ 	-rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+diff --git a/scripts/make/configure.mk b/scripts/make/configure.mk
+index 09aee9a..6951c5e 100644
+--- a/scripts/make/configure.mk
++++ b/scripts/make/configure.mk
+@@ -14,7 +14,8 @@ ifndef BUILD_R3D_BACKENDS
+   BUILD_R3D_BACKENDS     := $(shell if (test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" )  then cat "$(CFGDIR)/$(R3D_BACKENDS_FILE)" 2>/dev/null; else echo "glx"; fi;)
+ endif
+ 
+-BUILD_COMPILER         := $(shell $(CC) --version | head -n 1 || echo "unknown")
++BUILD_COMPILER         := $(shell $(CXX) --version | head -n 1 || echo "unknown")
++HOST_BUILD_COMPILER    := $(shell $(HOST_CXX) --version | head -n 1 || echo "unknown")
+ 
+ export BUILD_MODULES
+ export BUILD_R3D_BACKENDS
+@@ -23,7 +24,7 @@ export BUILD_R3D_BACKENDS
+ INSTALLATIONS           =
+ UNINSTALLATIONS         = uninstall_xdg
+ RELEASES                =
+-INCLUDE                 = -I"${CURDIR}/include"
++INCLUDE                 := -I"${CURDIR}/include"
+ 
+ ifeq ($(findstring ladspa,$(BUILD_MODULES)),ladspa)
+   INSTALLATIONS          += install_ladspa
+@@ -63,61 +64,62 @@ LD_ARCH         =
+ CC_ARCH         =
+ 
+ # Build profile
+-ifeq ($(BUILD_PROFILE),i586)
+-  CC_ARCH          = -m32
+-  ifeq ($(BUILD_PLATFORM), Linux)
+-    LD_ARCH          = -m elf_i386
++ifeq ($(SKIP_CC_LD_ARCH),)
++  ifeq ($(BUILD_PROFILE),i586)
++    CC_ARCH          = -m32
++    ifeq ($(BUILD_PLATFORM), Linux)
++      LD_ARCH          = -m elf_i386
++    endif
++    ifeq ($(BUILD_PLATFORM), BSD)
++      LD_ARCH          = -m elf_i386_fbsd
++    endif
+   endif
++  
++  ifeq ($(BUILD_PROFILE),x86_64)
++    CC_ARCH          = -m64
++    ifeq ($(BUILD_PLATFORM), Linux)
++      LD_ARCH          = -m elf_x86_64
++    endif
++    ifeq ($(BUILD_PLATFORM), BSD)
++      LD_ARCH          = -m elf_x86_64_fbsd
++    endif
++  endif
++  
+   ifeq ($(BUILD_PLATFORM), BSD)
+-    LD_ARCH          = -m elf_i386_fbsd
++    INCLUDE          += -I/usr/local/include
++    ifeq ($(BUILD_PROFILE),arm)
++      CC_ARCH          = -marm
++      ifneq ($(LD_PATH),)
++        CC_ARCH          += -Wl,-rpath=$(LD_PATH)
++      endif
++    endif
+   endif
+-endif
+-
+-ifeq ($(BUILD_PROFILE),x86_64)
+-  CC_ARCH          = -m64
+-  ifeq ($(BUILD_PLATFORM), Linux)
+-    LD_ARCH          = -m elf_x86_64
++  
++  ifeq ($(BUILD_PROFILE),armv6a)
++    CC_ARCH          = -march=armv6-a -marm
+   endif
+-  ifeq ($(BUILD_PLATFORM), BSD)
+-    LD_ARCH          = -m elf_x86_64_fbsd
++  
++  ifeq ($(BUILD_PROFILE),armv7a)
++    CC_ARCH          = -march=armv7-a -marm
+   endif
+-endif
+-
+-ifeq ($(BUILD_PLATFORM), BSD)
+-  INCLUDE          += -I/usr/local/include
+-  ifeq ($(BUILD_PROFILE),arm)
++  
++  ifeq ($(BUILD_PROFILE),armv7ve)
++    CC_ARCH          = -march=armv7ve -marm
++  endif
++  
++  ifeq ($(BUILD_PROFILE),arm32)
+     CC_ARCH          = -marm
+-    ifneq ($(LD_PATH),)
+-      CC_ARCH          += -Wl,-rpath=$(LD_PATH)
+-    endif
++  endif
++  
++  ifeq ($(BUILD_PROFILE),armv8a)
++    CC_ARCH          = -march=armv7-a -marm
++  endif
++  
++  ifeq ($(BUILD_PROFILE),aarch64)
++    CC_ARCH          = -march=armv8-a
+   endif
+ endif
+ 
+-ifeq ($(BUILD_PROFILE),armv6a)
+-  CC_ARCH          = -march=armv6-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv7a)
+-  CC_ARCH          = -march=armv7-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv7ve)
+-  CC_ARCH          = -march=armv7ve -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),arm32)
+-  CC_ARCH          = -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv8a)
+-  CC_ARCH          = -march=armv7-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),aarch64)
+-  CC_ARCH          = -march=armv8-a
+-endif
+-
+-
+ export CC_ARCH
+ export LD_ARCH
+ export LD_PATH
+@@ -127,21 +129,25 @@ export INCLUDE
+ ifeq ($(BUILD_SYSTEM),Windows)
+ # TODO
+ else
+-  export PTHREAD_LIBS     = -lpthread
+-  export ICONV_LIBS       = -liconv
+-  export MATH_LIBS        = -lm
+-  export DL_LIBS          = -ldl
+-  export CAIRO_HEADERS    = $(shell pkg-config --cflags cairo)
+-  export CAIRO_LIBS       = $(shell pkg-config --libs cairo)
+-  export XLIB_HEADERS     = $(shell pkg-config --cflags x11)
+-  export XLIB_LIBS        = $(shell pkg-config --libs x11)
+-  export LV2_HEADERS      = $(shell pkg-config --cflags lv2)
+-  export LV2_LIBS         = $(shell pkg-config --libs lv2)
+-  export SNDFILE_HEADERS  = $(shell pkg-config --cflags sndfile)
+-  export SNDFILE_LIBS     = $(shell pkg-config --libs sndfile)
+-  export JACK_HEADERS     = $(shell pkg-config --cflags jack)
+-  export JACK_LIBS        = $(shell pkg-config --libs jack)
+-  export OPENGL_HEADERS   = $(shell pkg-config --cflags gl 2>/dev/null || echo "")
+-  export OPENGL_LIBS      = $(shell pkg-config --libs gl 2>/dev/null || echo "")
++  export PTHREAD_LIBS         = -lpthread
++  export ICONV_LIBS           = -liconv
++  export MATH_LIBS            = -lm
++  export DL_LIBS              = -ldl
++  export CAIRO_HEADERS        = $(shell $(PKG_CONFIG) --cflags cairo)
++  export CAIRO_LIBS           = $(shell $(PKG_CONFIG) --libs cairo)
++  export XLIB_HEADERS         = $(shell $(PKG_CONFIG) --cflags x11)
++  export XLIB_LIBS            = $(shell $(PKG_CONFIG) --libs x11)
++  export LV2_HEADERS          = $(shell $(PKG_CONFIG) --cflags lv2)
++  export LV2_HEADERS          = $(shell $(PKG_CONFIG) --libs lv2)
++  export SNDFILE_HEADERS      = $(shell $(PKG_CONFIG) --cflags sndfile)
++  export SNDFILE_LIBS         = $(shell $(PKG_CONFIG) --libs sndfile)
++  export JACK_HEADERS         = $(shell $(PKG_CONFIG) --cflags jack)
++  export JACK_LIBS            = $(shell $(PKG_CONFIG) --libs jack)
++  export OPENGL_HEADERS       = $(shell $(PKG_CONFIG) --cflags gl 2>/dev/null || echo "")
++  export OPENGL_LIBS          = $(shell $(PKG_CONFIG) --libs gl 2>/dev/null || echo "")
++  export HOST_SNDFILE_HEADERS = $(shell $(HOST_PKG_CONFIG) --cflags sndfile)
++  export HOST_SNDFILE_LIBS    = $(shell $(HOST_PKG_CONFIG) --libs sndfile)
++  export HOST_LV2_HEADERS     = $(shell $(HOST_PKG_CONFIG) --cflags lv2)
++  export HOST_LV2_LIBS        = $(shell $(HOST_PKG_CONFIG) --libs lv2)
+ endif
+ 
+diff --git a/scripts/make/set_vars.mk b/scripts/make/set_vars.mk
+index a22531a..898b156 100644
+--- a/scripts/make/set_vars.mk
++++ b/scripts/make/set_vars.mk
+@@ -37,7 +37,7 @@ export BUILD_PLATFORM
+ export LV2_UI
+ export VST_UI
+ 
+-# Detect processor architecture
++# Detect target processor architecture
+ ifeq ($(BUILD_PLATFORM),Windows)
+   ifndef BUILD_PROFILE
+     BUILD_ARCH                = i586
+@@ -53,7 +53,7 @@ ifeq ($(BUILD_PLATFORM),Windows)
+   endif
+ else # BUILD_PLATFORM != Windows
+   ifndef BUILD_PROFILE
+-    BUILD_ARCH              = $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
++    BUILD_ARCH              ?= $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
+     BUILD_PROFILE           = $(BUILD_ARCH)
+     ifeq ($(patsubst armv6%,armv6,$(BUILD_ARCH)), armv6)
+       BUILD_PROFILE           = armv6a
+@@ -82,5 +82,7 @@ else # BUILD_PLATFORM != Windows
+   endif
+ endif # BUILD_PLATFORM != Windows
+ 
+-export BUILD_PROFILE
++HOST_BUILD_PROFILE ?= $(shell uname -m)
+ 
++export BUILD_PROFILE
++export HOST_BUILD_PROFILE
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 565dbb1..0cc859f 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -1,8 +1,12 @@
+ # Setup preferred tools
+ TOOL_LD                 = ld
++TOOL_HOST_LD            = ld
+ TOOL_CC                 = gcc
+ TOOL_CXX                = g++
++TOOL_HOST_CXX           = g++
+ TOOL_PHP                = php
++TOOL_PKG_CONFIG         = pkg-config
++TOOL_HOST_PKG_CONFIG    = PKG_CONFIG_SYSROOT_DIR=/ pkg-config
+ 
+ # Setup preferred flags
+ FLAG_RELRO              = -Wl,-z,relro,-z,now
+@@ -17,20 +21,27 @@ FLAG_CTUNE              = -std=c++98 \
+ ifeq ($(BUILD_PLATFORM),Solaris)
+   FLAG_RELRO              =
+   TOOL_LD                 = gld
++  TOOL_HOST_LD            = gld
+ endif
+ 
+ # Setup system variables
+ CC              		 ?= $(TOOL_CC)
+ CXX                      ?= $(TOOL_CXX)
++HOST_CXX                 ?= $(TOOL_HOST_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
++HOST_LD                  ?= $(TOOL_HOST_LD)
++PKG_CONFIG               ?= $(TOOL_PKG_CONFIG)
++HOST_PKG_CONFIG          ?= $(TOOL_HOST_PKG_CONFIG)
+ 
+ CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+-MERGE_FLAGS               = $(LD_ARCH) -r
+-EXE_TEST_FLAGS            = $(LDFLAGS) $(CC_ARCH)
+-EXE_FLAGS                 = $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++HOST_CXXFLAGS            += $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
++SO_FLAGS                 += $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
++MERGE_FLAGS              += $(LD_ARCH) -r
++EXE_TEST_FLAGS           += $(LDFLAGS) $(CC_ARCH)
++EXE_FLAGS                += $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++HOST_EXE_FLAGS           += $(HOST_LDFLAGS) $(FLAG_RELRO) -Wl,--gc-sections
+ 
+ ifeq ($(BUILD_PLATFORM), Linux)
+   SO_FLAGS                 += -Wl,--no-undefined
+@@ -58,12 +69,18 @@ endif
+ 
+ export CC
+ export CXX
++export HOST_CXX
+ export PHP
+ export LD
++export HOST_LD
++export PKG_CONFIG
++export HOST_PKG_CONFIG
+ 
+ export CFLAGS
+ export CXXFLAGS
++export HOST_CXXFLAGS
+ export SO_FLAGS
+ export MERGE_FLAGS
+ export EXE_TEST_FLAGS
+ export EXE_FLAGS
++export HOST_EXE_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index d960ad8..01ac70b 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,3 +1,5 @@
++# Estimate different pre-requisites before launching build
++
+ # Command-line flag to silence nested $(MAKE).
+ MAKE_OPTS              += VERBOSE=$(VERBOSE)
+ ifneq ($(VERBOSE),1)
+@@ -7,7 +9,8 @@ endif
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+-UTL_DEPS                = $(OBJ_CORE) $(OBJ_DSP) $(OBJ_METADATA)
++UTL_DEPS                = $(HOST_OBJ_CORE) $(HOST_OBJ_DSP) $(HOST_OBJ_METADATA)
++OBJDIR                  ?= $(BUILDDIR)
+ 
+ NEED_UI                 = 0
+ NEED_PLUGINS            = 0
+@@ -73,19 +76,34 @@ target: all
+ 
+ # Rules
+ $(SUBDIRS):
+-	@echo "Building $(@)"
++	@echo "$(BUILDDIR)"
+ 	mkdir -p $(OBJDIR)/$(@)
+-	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ all \
++		CXX="$(CXX)" \
++		CXXFLAGS="$(CXXFLAGS)" \
++		LD="$(LD)" \
++		OBJDIR="$(OBJDIR)/$(@)" \
++		BUILD_PROFILE="$(BUILD_PROFILE)" \
++		SNDFILE_HEADERS="$(SNDFILE_HEADERS)" \
++		SNDFILE_LIBS="$(SNDFILE_LIBS)" \
++		LV2_HEADERS="$(LV2_HEADERS)" \
++		LV2_LIBS="$(LV2_LIBS)"
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+ 
++$(HOST_OBJ_CORE): core
++
+ $(OBJ_DSP): dsp
+ 
++$(HOST_OBJ_DSP): dsp
++
+ $(OBJ_PLUGINS): plugins
+ 
+ $(OBJ_METADATA): metadata
+ 
++$(HOST_OBJ_METADATA): metadata
++
+ $(OBJ_UI_CORE): ui
+ 
+ $(UTL_FILES): utils
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index fbddcaa..4b4fd2e 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -4,15 +4,21 @@ ifneq ($(VERBOSE),1)
+ .SILENT:
+ endif
+ 
++CXX                     = $(HOST_CXX)
++CXXFLAGS                = $(HOST_CXXFLAGS)
++MAKE_OPTS              += CXX=$(HOST_CXX) CXXFLAGS=$(HOST_CXXFLAGS)
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS                 =
+-OBJ_FILES               = $(OBJ_CORE) $(OBJ_METADATA)
++OBJ_FILES               = $(HOST_OBJ_CORE) $(HOST_OBJ_METADATA) $(HOST_OBJ_DSP)
+ OBJ_LIBS                = $(PTHREAD_LIBS) $(MATH_LIBS)
+ OBJ_EXTRA               =
+ INCLUDE_EXTRA           =
+ 
++export PKG_CONFIG_SYSROOT_DIR = /
++
+ ifeq ($(BUILD_PLATFORM),BSD)
+   OBJ_LIBS               += $(ICONV_LIBS)
+ endif
+@@ -24,7 +30,7 @@ endif
+ ifeq ($(findstring lv2,$(BUILD_MODULES)),lv2)
+   MODULES                += $(UTL_GENTTL)
+   FILELIST               += lv2_genttl.o
+-  INCLUDE_EXTRA          += $(LV2_HEADERS)
++  INCLUDE_EXTRA          += $(HOST_LV2_HEADERS)
+ endif
+ ifeq ($(findstring vst,$(BUILD_MODULES)),vst)
+   MODULES                += $(UTL_VSTMAKE)
+@@ -54,28 +60,26 @@ $(SUBDIRS):
+ 	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	@echo "  $(HOST_CXX) $(FILE)"
++	$(HOST_CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(HOST_CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+-$(UTL_GENTTL): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++$(UTL_GENTTL): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENTTL))"
++	$(HOST_CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+-$(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_JACKMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_JACKMAKE))"
++	$(HOST_CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_VSTMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_VSTMAKE))"
++	$(HOST_CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_GENPHP): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+-	
+-$(UTL_RESGEN): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+-
++$(UTL_GENPHP): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENPHP))"
++	$(HOST_CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
++$(UTL_RESGEN): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_RESGEN))"
++	$(HOST_CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_EXTRA) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
diff --git a/srcpkgs/lsp-plugins-lv2/files/04-misc.patch b/srcpkgs/lsp-plugins-lv2/files/04-misc.patch
new file mode 100644
index 000000000000..e3b5c408759e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/files/04-misc.patch
@@ -0,0 +1,280 @@
+diff --git a/.gitmodules b/.gitmodules
+index ac5ea32..4480c1f 100644
+--- a/.gitmodules
++++ b/.gitmodules
+@@ -1,3 +1,3 @@
+ [submodule "Polynomial-Wiener-Hammerstein"]
+ 	path = Polynomial-Wiener-Hammerstein
+-	url = ../../CrocoDuckoDucks/Polynomial-Wiener-Hammerstein.git
++	url = https://github.com/CrocoDuckoDucks/Polynomial-Wiener-Hammerstein
+diff --git a/Makefile b/Makefile
+index ce3de4e..78cb2a9 100644
+--- a/Makefile
++++ b/Makefile
+@@ -98,7 +98,7 @@ SRC_ID                 := $(ARTIFACT_ID)-src-$(LSP_VERSION)
+ DOC_ID                 := $(ARTIFACT_ID)-doc-$(LSP_VERSION)
+ 
+ .DEFAULT_GOAL          := all
+-.PHONY: all experimental trace debug tracefile debugfile profile gdb test testdebug testprofile compile test_compile
++.PHONY: all experimental trace debug tracefile debugfile profile gdb test check testdebug testprofile compile test_compile
+ .PHONY: compile_info
+ .PHONY: install install_ladspa install_lv2 install_vst install_jack install_doc install_xdg
+ .PHONY: uninstall uninstall_ladspa uninstall_lv2 uninstall_vst uninstall_jack uninstall_doc uninstall_xdg
+@@ -129,10 +129,16 @@ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
+ test: test_compile
++	@echo "test: CXXFLAGS: $(CXXFLAGS)"
++	@echo "test: EXE_TEST_FLAGS: $(EXE_TEST_FLAGS)"
++
++# Run unit tests
++check: test
++	.test/lsp-plugins-test utest
+ 
+ testdebug: OBJDIR                 = $(TESTDIR)
+-testdebug: export CFLAGS         += -O0 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-testdebug: export CXXFLAGS       += -O0 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
++testdebug: export CFLAGS         += -Og -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
++testdebug: export CXXFLAGS       += -Og -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ testdebug: export EXE_TEST_FLAGS += -g3
+ testdebug: export MAKE_OPTS      += LSP_TESTING=1
+ testdebug: export BUILD_MODULES   = jack
+@@ -157,8 +163,11 @@ debugfile: export CFLAGS    += -DLSP_TRACEFILE
+ debugfile: export CXXFLAGS  += -DLSP_TRACEFILE
+ debugfile: debug
+ 
+-gdb: export CFLAGS          += -O0 -g3 -DLSP_TRACE
+-gdb: export CXXFLAGS        += -O0 -g3 -DLSP_TRACE
++gdb: export CFLAGS          = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export CXXFLAGS        = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export HOST_CXXFLAGS   = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export EXE_FLAGS       = -g3
++gdb: export HOST_EXE_FLAGS  = -g3
+ gdb: compile
+ 
+ profile: export CFLAGS      += -g -pg -DLSP_PROFILING -no-pie -fno-pie -fPIC
+@@ -192,6 +201,8 @@ compile: utils | compile_info
+ 	
+ test_compile: utils | compile_info
+ 	mkdir -p $(OBJDIR)/src
++	@echo "test_compile: CXXFLAGS: $(CXXFLAGS)"
++	@echo "test_compile: EXE_TEST_FLAGS: $(EXE_TEST_FLAGS)"
+ 	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
+@@ -213,10 +224,10 @@ utils: | compile_info
+ 	@echo "Utils Build OK"
+ 
+ clean:
+-	-rm -rf $(BUILDDIR)
+-	-rm -rf $(HOST_BUILDDIR)
+-	-rm -rf $(TESTDIR)
+-	-rm -rf $(CFGDIR)
++	rm -rf $(BUILDDIR)
++	rm -rf $(HOST_BUILDDIR)
++	rm -rf $(TESTDIR)
++	rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+ 
+ # Build targets
+@@ -372,7 +383,7 @@ release_doc: | release_prepare
+ 
+ # Unrelease target
+ unrelease: clean
+-	-rm -rf $(RELEASE)
++	rm -rf $(RELEASE)
+ 	@echo "Unrelease OK"
+ 
+ # Uninstall target
+@@ -381,41 +392,41 @@ uninstall: $(UNINSTALLATIONS)
+ 	
+ uninstall_ladspa:
+ 	@echo "Uninstalling LADSPA"
+-	-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
++	rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
+ 	
+ uninstall_lv2:
+ 	@echo "Uninstalling LV2"
+-	-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
++	rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
+ 	
+ uninstall_vst:
+ 	@echo "Uninstalling VST"
+-	-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
+-	-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
+-	-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
++	rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
++	rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
++	rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
+ 	
+ uninstall_jack:
+ 	@echo "Uninstalling JACK"
+-	-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
+-	-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
+-	-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
+-	-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
++	rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
++	rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
++	rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
++	rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
+ 
+ uninstall_xdg:
+ 	@echo "Uninstalling desktop icons"
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
+-	-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
++	rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
++	rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
+ 
+ uninstall_doc:
+ 	@echo "Uninstalling DOC"
+-	-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+diff --git a/include/metadata/metadata.h b/include/metadata/metadata.h
+index 0efaa9d..e009750 100644
+--- a/include/metadata/metadata.h
++++ b/include/metadata/metadata.h
+@@ -73,10 +73,18 @@
+     #define LSP_ARCHITECTURE                                "unknown"
+ #endif /* ARCH */
+ 
++#define STRINGIFY_(x) #x
++#define STRINGIFY(x) STRINGIFY_(x)
++
+ #ifndef LSP_MAIN_VERSION
+     #define LSP_MAIN_VERSION                                "0.0.0"
++#else
++    #define LSP_MAIN_VERSION_STR STRINGIFY(LSP_MAIN_VERSION)
++    #undef LSP_MAIN_VERSION
++    #define LSP_MAIN_VERSION LSP_MAIN_VERSION_STR
+ #endif /* LSP_MAIN_VERSION */
+ 
++
+ #define LSP_LV2_LATENCY_PORT                            "out_latency"
+ #define LSP_LV2_ATOM_PORT_IN                            "in_ui"
+ #define LSP_LV2_MIDI_PORT_IN                            "in_midi"
+@@ -86,7 +94,7 @@
+ #define LSP_LV2_OSC_PORT_OUT                            "out_osc"
+ 
+ #ifdef LSP_INSTALL_PREFIX
+-    #define LSP_LIB_PREFIX(x)       LSP_INSTALL_PREFIX x
++    #define LSP_LIB_PREFIX(x)       STRINGIFY(LSP_INSTALL_PREFIX) x
+ #else
+     #define LSP_LIB_PREFIX(x)       x
+ #endif /* PREFIX */
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 0cc859f..508f829 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -11,8 +11,8 @@ TOOL_HOST_PKG_CONFIG    = PKG_CONFIG_SYSROOT_DIR=/ pkg-config
+ # Setup preferred flags
+ FLAG_RELRO              = -Wl,-z,relro,-z,now
+ FLAG_VERSION            = -DLSP_MAIN_VERSION=\"$(LSP_VERSION)\" -DLSP_INSTALL_PREFIX=\"$(PREFIX)\"
+-FLAG_CTUNE              = -std=c++98 \
+-                          -fno-exceptions -fno-rtti \
++FLAG_CXXSTANDARD        = -std=c++98
++FLAGS_CTUNE             = -fno-exceptions -fno-rtti \
+                           -fdata-sections -ffunction-sections -fno-asynchronous-unwind-tables \
+                           -fvisibility=hidden \
+                           -pipe -Wall
+@@ -34,9 +34,11 @@ HOST_LD                  ?= $(TOOL_HOST_LD)
+ PKG_CONFIG               ?= $(TOOL_PKG_CONFIG)
+ HOST_PKG_CONFIG          ?= $(TOOL_HOST_PKG_CONFIG)
+ 
+-CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-HOST_CXXFLAGS            += $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
++CFLAGS                   += $(CC_ARCH) $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) \
++                            $(CC_FLAGS) $(FLAG_VERSION)
++CXXFLAGS                 += $(CC_ARCH) $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) \
++                            $(CC_FLAGS) $(FLAG_VERSION)
++HOST_CXXFLAGS            += $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ SO_FLAGS                 += $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+ MERGE_FLAGS              += $(LD_ARCH) -r
+ EXE_TEST_FLAGS           += $(LDFLAGS) $(CC_ARCH)
+diff --git a/src/Makefile b/src/Makefile
+index 01ac70b..01b9d92 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -120,7 +120,7 @@ $(OBJ_RES_CORE): $(OBJ_CORE) $(UTL_RESGEN)
+ 	@echo "Generating builtin resources"
+ 	mkdir -p $(OBJDIR)/res
+ 	$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
+-	-rm gmon.out >/dev/null 2>&1
++	rm -f gmon.out >/dev/null 2>&1
+ 	$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ # Target dependencies
+@@ -139,12 +139,12 @@ vst_stub: $(UTL_VSTMAKE)
+ 	@echo "Building VST stub"
+ 	mkdir -p $(OBJDIR)/vst
+ 	$(UTL_VSTMAKE) $(OBJDIR)/vst
+-	-rm gmon.out >/dev/null 2>&1
++	rm -f gmon.out >/dev/null 2>&1
+ 	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
+ 
+ jack_stub: $(UTL_JACKMAKE)
+ 	@echo "Building JACK stub"
+ 	mkdir -p $(OBJDIR)/jack
+ 	$(UTL_JACKMAKE) $(OBJDIR)/jack
+-	-rm gmon.out >/dev/null 2>&1
++	rm -f gmon.out >/dev/null 2>&1
+ 	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
+diff --git a/src/testing/Makefile b/src/testing/Makefile
+index d048065..a089309 100644
+--- a/src/testing/Makefile
++++ b/src/testing/Makefile
+@@ -14,6 +14,7 @@ all: $(OBJ_TESTING_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
++	@echo "testing: CXXFLAGS: $(CXXFLAGS)"
+ 	mkdir -p $(dir $@)
+ 	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index 4b4fd2e..a35d3a3 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -4,9 +4,9 @@ ifneq ($(VERBOSE),1)
+ .SILENT:
+ endif
+ 
+-CXX                     = $(HOST_CXX)
+-CXXFLAGS                = $(HOST_CXXFLAGS)
+-MAKE_OPTS              += CXX=$(HOST_CXX) CXXFLAGS=$(HOST_CXXFLAGS)
++# CXX                     = $(HOST_CXX)
++# CXXFLAGS                = $(HOST_CXXFLAGS)
++# MAKE_OPTS              += CXX=$(HOST_CXX) CXXFLAGS=$(HOST_CXXFLAGS)
+ 
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+diff --git a/tmp/.gitignore b/tmp/.gitignore
+index 22e8364..d6b7ef3 100644
+--- a/tmp/.gitignore
++++ b/tmp/.gitignore
+@@ -1 +1,2 @@
+-/*
+\ No newline at end of file
++*
++!.gitignore
diff --git a/srcpkgs/lsp-plugins-lv2/patches/00-patch-all.patch b/srcpkgs/lsp-plugins-lv2/patches/00-patch-all.patch
new file mode 100644
index 000000000000..5b72818d3c43
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/patches/00-patch-all.patch
@@ -0,0 +1,2061 @@
+diff --git a/.gitignore b/.gitignore
+index 5bc0ecb..4a1edec 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -3,6 +3,7 @@
+ /design/*
+ /.builconfig/*
+ /.build/*
++/.host_build/*
+ /.buildconfig/*
+ /.test/*
+ /.release/*
+diff --git a/.gitmodules b/.gitmodules
+index ac5ea32..4480c1f 100644
+--- a/.gitmodules
++++ b/.gitmodules
+@@ -1,3 +1,3 @@
+ [submodule "Polynomial-Wiener-Hammerstein"]
+ 	path = Polynomial-Wiener-Hammerstein
+-	url = ../../CrocoDuckoDucks/Polynomial-Wiener-Hammerstein.git
++	url = https://github.com/CrocoDuckoDucks/Polynomial-Wiener-Hammerstein
+diff --git a/Makefile b/Makefile
+index 2d9cb79..70cb6a4 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ # Common definitions
+ RELEASE_TEXT            = LICENSE.txt README.txt CHANGELOG.txt
+ RELEASE_SRC             = $(RELEASE_TEXT) src build-*.sh include res Makefile release.sh
+@@ -18,8 +24,10 @@ export RESDIR           = ${CURDIR}/res
+ export RELEASE          = ${CURDIR}/.release
+ export RELEASE_BIN      = $(RELEASE)/$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ export BUILDDIR         = ${CURDIR}/.build
++export HOST_BUILDDIR    = ${CURDIR}/.host_build
+ export TESTDIR          = ${CURDIR}/.test
+ OBJDIR                  = $(BUILDDIR)
++export HOST_OBJDIR      = $(HOST_BUILDDIR)
+ 
+ # Installation locations
+ BIN_PATH               ?= $(PREFIX)/bin
+@@ -35,20 +43,23 @@ VST_PATH                = $(LIB_PATH)/vst
+ export BASEDIR          = ${CURDIR}
+ 
+ # Objects
+-export OBJ_CORE         = $(OBJDIR)/core.o
+-export OBJ_DSP          = $(OBJDIR)/dsp.o
+-export OBJ_CTL_CORE     = $(OBJDIR)/ctl_core.o
+-export OBJ_TK_CORE      = $(OBJDIR)/tk_core.o
+-export OBJ_WS_CORE      = $(OBJDIR)/ws_core.o
+-export OBJ_WS_X11_CORE  = $(OBJDIR)/ws_x11_core.o
+-export OBJ_UI_CORE      = $(OBJDIR)/ui_core.o
+-export OBJ_RES_CORE     = $(OBJDIR)/res_core.o
+-export OBJ_TEST_CORE    = $(OBJDIR)/test_core.o
+-export OBJ_TESTING_CORE = $(OBJDIR)/testing_core.o
+-export OBJ_PLUGINS      = $(OBJDIR)/plugins.o
+-export OBJ_PLUGIN_UIS	= $(OBJDIR)/plugin_uis.o
+-export OBJ_METADATA     = $(OBJDIR)/metadata.o
+-export OBJ_FILES        = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
++export OBJ_CORE          = $(OBJDIR)/core.o
++export HOST_OBJ_CORE     = $(HOST_OBJDIR)/core.o
++export OBJ_DSP           = $(OBJDIR)/dsp.o
++export HOST_OBJ_DSP      = $(HOST_OBJDIR)/dsp.o
++export OBJ_CTL_CORE      = $(OBJDIR)/ctl_core.o
++export OBJ_TK_CORE       = $(OBJDIR)/tk_core.o
++export OBJ_WS_CORE       = $(OBJDIR)/ws_core.o
++export OBJ_WS_X11_CORE   = $(OBJDIR)/ws_x11_core.o
++export OBJ_UI_CORE       = $(OBJDIR)/ui_core.o
++export OBJ_RES_CORE      = $(OBJDIR)/res_core.o
++export OBJ_TEST_CORE     = $(OBJDIR)/test_core.o
++export OBJ_TESTING_CORE  = $(OBJDIR)/testing_core.o
++export OBJ_PLUGINS       = $(OBJDIR)/plugins.o
++export OBJ_PLUGIN_UIS	 = $(OBJDIR)/plugin_uis.o
++export OBJ_METADATA      = $(OBJDIR)/metadata.o
++export HOST_OBJ_METADATA = $(HOST_OBJDIR)/metadata.o
++export OBJ_FILES         = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
+ 
+ # Libraries
+ export LIB_LADSPA       = $(OBJDIR)/$(ARTIFACT_ID)-ladspa.so
+@@ -62,11 +73,14 @@ export BIN_PROFILE      = $(OBJDIR)/$(ARTIFACT_ID)-profile
+ export BIN_TEST         = $(OBJDIR)/$(ARTIFACT_ID)-test
+ 
+ # Utils
+-export UTL_GENTTL       = $(OBJDIR)/lv2_genttl.exe
+-export UTL_VSTMAKE      = $(OBJDIR)/vst_genmake.exe
+-export UTL_JACKMAKE     = $(OBJDIR)/jack_genmake.exe
+-export UTL_GENPHP       = $(OBJDIR)/gen_php.exe
+-export UTL_RESGEN       = $(OBJDIR)/gen_resources.exe
++ifeq ($(BUILD_SYSTEM),Windows)
++  BIN_SUFFIX := .exe
++endif
++export UTL_GENTTL       = $(HOST_OBJDIR)/lv2_genttl$(BIN_SUFFIX)
++export UTL_VSTMAKE      = $(HOST_OBJDIR)/vst_genmake$(BIN_SUFFIX)
++export UTL_JACKMAKE     = $(HOST_OBJDIR)/jack_genmake$(BIN_SUFFIX)
++export UTL_GENPHP       = $(HOST_OBJDIR)/gen_php$(BIN_SUFFIX)
++export UTL_RESGEN       = $(HOST_OBJDIR)/gen_resources$(BIN_SUFFIX)
+ export UTL_FILES        = $(UTL_GENTTL) $(UTL_VSTMAKE) $(UTL_GENPHP) $(UTL_RESGEN)
+ 
+ # Files
+@@ -84,7 +98,7 @@ SRC_ID                 := $(ARTIFACT_ID)-src-$(LSP_VERSION)
+ DOC_ID                 := $(ARTIFACT_ID)-doc-$(LSP_VERSION)
+ 
+ .DEFAULT_GOAL          := all
+-.PHONY: all experimental trace debug tracefile debugfile profile gdb test testdebug testprofile compile test_compile
++.PHONY: all experimental trace debug tracefile debugfile profile gdb test check testdebug testprofile compile test_compile
+ .PHONY: compile_info
+ .PHONY: install install_ladspa install_lv2 install_vst install_jack install_doc install_xdg
+ .PHONY: uninstall uninstall_ladspa uninstall_lv2 uninstall_vst uninstall_jack uninstall_doc uninstall_xdg
+@@ -98,6 +112,7 @@ all: export CXXFLAGS        += -O2 -DLSP_NO_EXPERIMENTAL
+ all: export EXE_FLAGS       += -pie -fPIE
+ all: compile
+ 
++
+ experimental: export CFLAGS += -O2
+ experimental: export CXXFLAGS += -O2
+ experimental: compile
+@@ -115,9 +130,13 @@ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
+ test: test_compile
+ 
++# Run unit tests
++check: test
++	.test/lsp-plugins-test utest
++
+ testdebug: OBJDIR                 = $(TESTDIR)
+-testdebug: export CFLAGS         += -O0 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-testdebug: export CXXFLAGS       += -O0 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
++testdebug: export CFLAGS         += -Og -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
++testdebug: export CXXFLAGS       += -Og -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ testdebug: export EXE_TEST_FLAGS += -g3
+ testdebug: export MAKE_OPTS      += LSP_TESTING=1
+ testdebug: export BUILD_MODULES   = jack
+@@ -142,8 +161,11 @@ debugfile: export CFLAGS    += -DLSP_TRACEFILE
+ debugfile: export CXXFLAGS  += -DLSP_TRACEFILE
+ debugfile: debug
+ 
+-gdb: export CFLAGS          += -O0 -g3 -DLSP_TRACE
+-gdb: export CXXFLAGS        += -O0 -g3 -DLSP_TRACE
++gdb: export CFLAGS          = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export CXXFLAGS        = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export HOST_CXXFLAGS   = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export EXE_FLAGS       = -g3
++gdb: export HOST_EXE_FLAGS  = -g3
+ gdb: compile
+ 
+ profile: export CFLAGS      += -g -pg -DLSP_PROFILING -no-pie -fno-pie -fPIC
+@@ -155,35 +177,53 @@ profile: compile
+ compile_info:
+ 	@echo "-------------------------------------------------------------------------------"
+ 	@echo "Building binaries"
+-	@echo "  target architecture : $(BUILD_PROFILE)"
+-	@echo "  target platform     : $(BUILD_PLATFORM)"
+-	@echo "  target system       : $(BUILD_SYSTEM)"
+-	@echo "  compiler            : $(BUILD_COMPILER)"
+-	@echo "  modules             : $(BUILD_MODULES)"
+-	@echo "  UI                  : LV2=$(LV2_UI), VST=$(VST_UI)"
+-	@echo "  3D rendering        : $(BUILD_R3D_BACKENDS)"
+-	@echo "  build directory     : $(OBJDIR)"
++	@echo "  platform             : $(BUILD_PLATFORM)"
++	@echo "  system               : $(BUILD_SYSTEM)"
++	@echo "  target compiler      : $(CXX)"
++	@echo "  target architecture  : $(BUILD_PROFILE)"
++	@echo "  modules              : $(BUILD_MODULES)"
++	@echo "  UI                   : LV2=$(LV2_UI), VST=$(VST_UI)"
++	@echo "  3D rendering         : $(BUILD_R3D_BACKENDS)"
++	@echo "  build directory      : $(OBJDIR)"
+ 	@echo "-------------------------------------------------------------------------------"
+ 
+-compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@mkdir -p $(CFGDIR)
+-	@test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
+-	@test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
+-	@test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
+-	@test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++compile: utils | compile_info
++	mkdir -p $(OBJDIR)/src
++	mkdir -p $(CFGDIR)
++	test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
++	test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
++	test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
++	test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Build OK"
+ 	
+-test_compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++test_compile: utils | compile_info
++	mkdir -p $(OBJDIR)/src
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
++utils: export BUILD_PROFILE=$(HOST_BUILD_PROFILE)
++utils: export OBJDIR=$(HOST_OBJDIR)
++utils: export OBJ_CORE=$(HOST_OBJ_CORE)
++utils: export OBJ_DSP=$(HOST_OBJ_DSP)
++utils: export OBJ_METADATA=$(HOST_OBJ_METADATA)
++utils: export CXX=$(HOST_CXX)
++utils: export CXXFLAGS=$(HOST_CXXFLAGS)
++utils: export LD=$(HOST_LD)
++utils: export SNDFILE_HEADERS=$(HOST_SNDFILE_HEADERS)
++utils: export SNDFILE_LIBS=$(HOST_SNDFILE_LIBS)
++utils: export LV2_HEADERS=$(HOST_LV2_HEADERS)
++utils: export LV2_LIBS=$(HOST_LV2_LIBS)
++utils: | compile_info
++	mkdir -p $(HOST_OBJDIR)/src/utils
++	$(MAKE) $(MAKE_OPTS) -C src utils
++	@echo "Utils Build OK"
++
+ clean:
+-	@-rm -rf $(BUILDDIR)
+-	@-rm -rf $(TESTDIR)
+-	@-rm -rf $(CFGDIR)
++	rm -rf $(BUILDDIR)
++	rm -rf $(HOST_BUILDDIR)
++	rm -rf $(TESTDIR)
++	rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+ 
+ # Build targets
+@@ -209,63 +249,63 @@ install: $(INSTALLATIONS)
+ 
+ install_ladspa: all
+ 	@echo "Installing LADSPA plugins to $(DESTDIR)$(LADSPA_PATH)/"
+-	@mkdir -p $(DESTDIR)$(LADSPA_PATH)
+-	@$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
++	mkdir -p $(DESTDIR)$(LADSPA_PATH)
++	$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
+ 	
+ install_lv2: all
+ 	@echo "Installing LV2 plugins to $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
+-	@$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
++	$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+ 	
+ install_vst: all
+ 	@echo "Installing VST plugins to $(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+-	@$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
++	$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+ 
+ install_jack: all
+ 	@echo "Installing JACK core to $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
++	$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+ 	@echo "Installing JACK standalone plugins to $(DESTDIR)$(BIN_PATH)"
+-	@mkdir -p "$(DESTDIR)$(BIN_PATH)"
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
++	mkdir -p "$(DESTDIR)$(BIN_PATH)"
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
+ 
+ install_xdg:
+ 	@echo "Installing desktop icons to $(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
+-	@mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
+-	@cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
+-	@cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
+-	@cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
+-	@cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
++	mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
++	cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
++	cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
++	cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
++	cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
+ 
+ install_doc: all
+ 	@echo "Installing documentation to $(DESTDIR)$(DOC_PATH)"
+-	@mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+ # Release targets
+ dbg_release: export CFLAGS        += -DLSP_TRACE -O2
+@@ -279,67 +319,67 @@ release: $(RELEASES)
+ 
+ release_prepare: all
+ 	@echo "Releasing plugins for architecture $(BUILD_PROFILE)"
+-	@mkdir -p $(RELEASE)
+-	@mkdir -p $(DESTDIR)
++	mkdir -p $(RELEASE)
++	mkdir -p $(DESTDIR)
+ 	
+ release_ladspa: DESTDIR=$(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_ladspa: | release_prepare install_ladspa
+ 	@echo "Releasing LADSPA binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_lv2: DESTDIR=$(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_lv2: | release_prepare install_lv2
+ 	@echo "Releasing LV2 binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_vst: DESTDIR=$(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_vst: | release_prepare install_vst
+ 	@echo "Releasing VST binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_jack: DESTDIR=$(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_jack: | release_prepare install_jack
+ 	@echo "Releasing JACK binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 
+ release_profile: DESTDIR=$(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_profile: | release_prepare
+ 	@echo "Releasing PROFILE binaries"
+-	@$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ 
+ release_src: DESTDIR=$(RELEASE)/$(SRC_ID)
+ release_src: | release_prepare
+ 	@echo "Releasing source code binaries"
+-	@mkdir -p $(DESTDIR)
+-	@mkdir -p $(DESTDIR)/scripts
+-	@cp -R $(RELEASE_SRC) $(DESTDIR)/
+-	@cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	mkdir -p $(DESTDIR)/scripts
++	cp -R $(RELEASE_SRC) $(DESTDIR)/
++	cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
++	rm -rf $(DESTDIR)
+ 
+ release_doc: DESTDIR=$(RELEASE)/$(DOC_ID)
+ release_doc: | release_prepare
+ 	@echo "Releasing documentation"
+-	@mkdir -p $(DESTDIR)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
++	rm -rf $(DESTDIR)
+ 
+ # Unrelease target
+ unrelease: clean
+-	@-rm -rf $(RELEASE)
++	rm -rf $(RELEASE)
+ 	@echo "Unrelease OK"
+ 
+ # Uninstall target
+@@ -348,41 +388,41 @@ uninstall: $(UNINSTALLATIONS)
+ 	
+ uninstall_ladspa:
+ 	@echo "Uninstalling LADSPA"
+-	@-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
++	rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
+ 	
+ uninstall_lv2:
+ 	@echo "Uninstalling LV2"
+-	@-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
++	rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
+ 	
+ uninstall_vst:
+ 	@echo "Uninstalling VST"
+-	@-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
++	rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
++	rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
++	rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
+ 	
+ uninstall_jack:
+ 	@echo "Uninstalling JACK"
+-	@-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
+-	@-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
++	rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
++	rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
++	rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
++	rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
+ 
+ uninstall_xdg:
+ 	@echo "Uninstalling desktop icons"
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
+-	@-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
++	rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
++	rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
+ 
+ uninstall_doc:
+ 	@echo "Uninstalling DOC"
+-	@-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+diff --git a/TODO.txt b/TODO.txt
+index 4976293..f8562ef 100644
+--- a/TODO.txt
++++ b/TODO.txt
+@@ -28,6 +28,12 @@
+ - Added possibility to change themes in runtime.
+ - Complicated plugin UIs now allow to switch between Advanced and Novice modes.
+ 
++=== 1.1.31 ===
++
++* Fixed X11 error handling routine that could crash under certain conditions.
++* Better support for musl libc (contributed by Artur Sinila).
++* Added support of VERBOSE parameter for build system (contributed by Artur Sinila).
++
+ *******************************************************************************
+ * New plugin check list before release
+ *******************************************************************************
+diff --git a/include/common/types.h b/include/common/types.h
+index dd1816e..59c794e 100644
+--- a/include/common/types.h
++++ b/include/common/types.h
+@@ -563,6 +563,12 @@
+     #define MINIMUM_ALIGN                   DEFAULT_ALIGN
+ #endif /* DEFAULT_ALIGN */
+ 
++//-----------------------------------------------------------------------------
++// Detect some libraries
++#ifdef __GLIBC__
++    #define USE_GLIBC                           __GLIBC__
++#endif /* GLIBC */
++
+ //-----------------------------------------------------------------------------
+ // Type definitions
+ __IF_32( typedef        uint32_t            umword_t );
+diff --git a/include/data/cvector.h b/include/data/cvector.h
+index eccc94a..17fe119 100644
+--- a/include/data/cvector.h
++++ b/include/data/cvector.h
+@@ -25,6 +25,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <sys/types.h>
+ 
+ #define CVECTOR_GROW        16
+ 
+diff --git a/include/metadata/metadata.h b/include/metadata/metadata.h
+index 0efaa9d..e009750 100644
+--- a/include/metadata/metadata.h
++++ b/include/metadata/metadata.h
+@@ -73,10 +73,18 @@
+     #define LSP_ARCHITECTURE                                "unknown"
+ #endif /* ARCH */
+ 
++#define STRINGIFY_(x) #x
++#define STRINGIFY(x) STRINGIFY_(x)
++
+ #ifndef LSP_MAIN_VERSION
+     #define LSP_MAIN_VERSION                                "0.0.0"
++#else
++    #define LSP_MAIN_VERSION_STR STRINGIFY(LSP_MAIN_VERSION)
++    #undef LSP_MAIN_VERSION
++    #define LSP_MAIN_VERSION LSP_MAIN_VERSION_STR
+ #endif /* LSP_MAIN_VERSION */
+ 
++
+ #define LSP_LV2_LATENCY_PORT                            "out_latency"
+ #define LSP_LV2_ATOM_PORT_IN                            "in_ui"
+ #define LSP_LV2_MIDI_PORT_IN                            "in_midi"
+@@ -86,7 +94,7 @@
+ #define LSP_LV2_OSC_PORT_OUT                            "out_osc"
+ 
+ #ifdef LSP_INSTALL_PREFIX
+-    #define LSP_LIB_PREFIX(x)       LSP_INSTALL_PREFIX x
++    #define LSP_LIB_PREFIX(x)       STRINGIFY(LSP_INSTALL_PREFIX) x
+ #else
+     #define LSP_LIB_PREFIX(x)       x
+ #endif /* PREFIX */
+diff --git a/include/test/main/executor.h b/include/test/main/executor.h
+index 0faf73f..5a0c016 100644
+--- a/include/test/main/executor.h
++++ b/include/test/main/executor.h
+@@ -633,7 +633,7 @@ namespace lsp
+     }
+ #endif /* PLATFORM_WINDOWS */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     void TestExecutor::start_memcheck(test::Test *v)
+     {
+         if (!pCfg->mtrace)
+diff --git a/include/test/main/types.h b/include/test/main/types.h
+index ef15800..0c5d7c2 100644
+--- a/include/test/main/types.h
++++ b/include/test/main/types.h
+@@ -42,7 +42,7 @@
+     #include <fcntl.h>
+ #endif /* PLATFORM_UNIX_COMPATIBLE */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     #include <mcheck.h>
+ #endif /* PLATFORM_LINUX */
+ 
+diff --git a/include/testing/mtest/3d/common/X11Renderer.h b/include/testing/mtest/3d/common/X11Renderer.h
+index e8ec205..f0a51e2 100644
+--- a/include/testing/mtest/3d/common/X11Renderer.h
++++ b/include/testing/mtest/3d/common/X11Renderer.h
+@@ -30,7 +30,7 @@
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include <rendering/backend.h>
+ #include <core/ipc/Library.h>
+diff --git a/scripts/make/configure.mk b/scripts/make/configure.mk
+index 09aee9a..6951c5e 100644
+--- a/scripts/make/configure.mk
++++ b/scripts/make/configure.mk
+@@ -14,7 +14,8 @@ ifndef BUILD_R3D_BACKENDS
+   BUILD_R3D_BACKENDS     := $(shell if (test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" )  then cat "$(CFGDIR)/$(R3D_BACKENDS_FILE)" 2>/dev/null; else echo "glx"; fi;)
+ endif
+ 
+-BUILD_COMPILER         := $(shell $(CC) --version | head -n 1 || echo "unknown")
++BUILD_COMPILER         := $(shell $(CXX) --version | head -n 1 || echo "unknown")
++HOST_BUILD_COMPILER    := $(shell $(HOST_CXX) --version | head -n 1 || echo "unknown")
+ 
+ export BUILD_MODULES
+ export BUILD_R3D_BACKENDS
+@@ -23,7 +24,7 @@ export BUILD_R3D_BACKENDS
+ INSTALLATIONS           =
+ UNINSTALLATIONS         = uninstall_xdg
+ RELEASES                =
+-INCLUDE                 = -I"${CURDIR}/include"
++INCLUDE                 := -I"${CURDIR}/include"
+ 
+ ifeq ($(findstring ladspa,$(BUILD_MODULES)),ladspa)
+   INSTALLATIONS          += install_ladspa
+@@ -63,61 +64,62 @@ LD_ARCH         =
+ CC_ARCH         =
+ 
+ # Build profile
+-ifeq ($(BUILD_PROFILE),i586)
+-  CC_ARCH          = -m32
+-  ifeq ($(BUILD_PLATFORM), Linux)
+-    LD_ARCH          = -m elf_i386
++ifeq ($(SKIP_CC_LD_ARCH),)
++  ifeq ($(BUILD_PROFILE),i586)
++    CC_ARCH          = -m32
++    ifeq ($(BUILD_PLATFORM), Linux)
++      LD_ARCH          = -m elf_i386
++    endif
++    ifeq ($(BUILD_PLATFORM), BSD)
++      LD_ARCH          = -m elf_i386_fbsd
++    endif
+   endif
++  
++  ifeq ($(BUILD_PROFILE),x86_64)
++    CC_ARCH          = -m64
++    ifeq ($(BUILD_PLATFORM), Linux)
++      LD_ARCH          = -m elf_x86_64
++    endif
++    ifeq ($(BUILD_PLATFORM), BSD)
++      LD_ARCH          = -m elf_x86_64_fbsd
++    endif
++  endif
++  
+   ifeq ($(BUILD_PLATFORM), BSD)
+-    LD_ARCH          = -m elf_i386_fbsd
++    INCLUDE          += -I/usr/local/include
++    ifeq ($(BUILD_PROFILE),arm)
++      CC_ARCH          = -marm
++      ifneq ($(LD_PATH),)
++        CC_ARCH          += -Wl,-rpath=$(LD_PATH)
++      endif
++    endif
+   endif
+-endif
+-
+-ifeq ($(BUILD_PROFILE),x86_64)
+-  CC_ARCH          = -m64
+-  ifeq ($(BUILD_PLATFORM), Linux)
+-    LD_ARCH          = -m elf_x86_64
++  
++  ifeq ($(BUILD_PROFILE),armv6a)
++    CC_ARCH          = -march=armv6-a -marm
+   endif
+-  ifeq ($(BUILD_PLATFORM), BSD)
+-    LD_ARCH          = -m elf_x86_64_fbsd
++  
++  ifeq ($(BUILD_PROFILE),armv7a)
++    CC_ARCH          = -march=armv7-a -marm
+   endif
+-endif
+-
+-ifeq ($(BUILD_PLATFORM), BSD)
+-  INCLUDE          += -I/usr/local/include
+-  ifeq ($(BUILD_PROFILE),arm)
++  
++  ifeq ($(BUILD_PROFILE),armv7ve)
++    CC_ARCH          = -march=armv7ve -marm
++  endif
++  
++  ifeq ($(BUILD_PROFILE),arm32)
+     CC_ARCH          = -marm
+-    ifneq ($(LD_PATH),)
+-      CC_ARCH          += -Wl,-rpath=$(LD_PATH)
+-    endif
++  endif
++  
++  ifeq ($(BUILD_PROFILE),armv8a)
++    CC_ARCH          = -march=armv7-a -marm
++  endif
++  
++  ifeq ($(BUILD_PROFILE),aarch64)
++    CC_ARCH          = -march=armv8-a
+   endif
+ endif
+ 
+-ifeq ($(BUILD_PROFILE),armv6a)
+-  CC_ARCH          = -march=armv6-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv7a)
+-  CC_ARCH          = -march=armv7-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv7ve)
+-  CC_ARCH          = -march=armv7ve -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),arm32)
+-  CC_ARCH          = -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv8a)
+-  CC_ARCH          = -march=armv7-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),aarch64)
+-  CC_ARCH          = -march=armv8-a
+-endif
+-
+-
+ export CC_ARCH
+ export LD_ARCH
+ export LD_PATH
+@@ -127,21 +129,25 @@ export INCLUDE
+ ifeq ($(BUILD_SYSTEM),Windows)
+ # TODO
+ else
+-  export PTHREAD_LIBS     = -lpthread
+-  export ICONV_LIBS       = -liconv
+-  export MATH_LIBS        = -lm
+-  export DL_LIBS          = -ldl
+-  export CAIRO_HEADERS    = $(shell pkg-config --cflags cairo)
+-  export CAIRO_LIBS       = $(shell pkg-config --libs cairo)
+-  export XLIB_HEADERS     = $(shell pkg-config --cflags x11)
+-  export XLIB_LIBS        = $(shell pkg-config --libs x11)
+-  export LV2_HEADERS      = $(shell pkg-config --cflags lv2)
+-  export LV2_LIBS         = $(shell pkg-config --libs lv2)
+-  export SNDFILE_HEADERS  = $(shell pkg-config --cflags sndfile)
+-  export SNDFILE_LIBS     = $(shell pkg-config --libs sndfile)
+-  export JACK_HEADERS     = $(shell pkg-config --cflags jack)
+-  export JACK_LIBS        = $(shell pkg-config --libs jack)
+-  export OPENGL_HEADERS   = $(shell pkg-config --cflags gl 2>/dev/null || echo "")
+-  export OPENGL_LIBS      = $(shell pkg-config --libs gl 2>/dev/null || echo "")
++  export PTHREAD_LIBS         = -lpthread
++  export ICONV_LIBS           = -liconv
++  export MATH_LIBS            = -lm
++  export DL_LIBS              = -ldl
++  export CAIRO_HEADERS        = $(shell $(PKG_CONFIG) --cflags cairo)
++  export CAIRO_LIBS           = $(shell $(PKG_CONFIG) --libs cairo)
++  export XLIB_HEADERS         = $(shell $(PKG_CONFIG) --cflags x11)
++  export XLIB_LIBS            = $(shell $(PKG_CONFIG) --libs x11)
++  export LV2_HEADERS          = $(shell $(PKG_CONFIG) --cflags lv2)
++  export LV2_HEADERS          = $(shell $(PKG_CONFIG) --libs lv2)
++  export SNDFILE_HEADERS      = $(shell $(PKG_CONFIG) --cflags sndfile)
++  export SNDFILE_LIBS         = $(shell $(PKG_CONFIG) --libs sndfile)
++  export JACK_HEADERS         = $(shell $(PKG_CONFIG) --cflags jack)
++  export JACK_LIBS            = $(shell $(PKG_CONFIG) --libs jack)
++  export OPENGL_HEADERS       = $(shell $(PKG_CONFIG) --cflags gl 2>/dev/null || echo "")
++  export OPENGL_LIBS          = $(shell $(PKG_CONFIG) --libs gl 2>/dev/null || echo "")
++  export HOST_SNDFILE_HEADERS = $(shell $(HOST_PKG_CONFIG) --cflags sndfile)
++  export HOST_SNDFILE_LIBS    = $(shell $(HOST_PKG_CONFIG) --libs sndfile)
++  export HOST_LV2_HEADERS     = $(shell $(HOST_PKG_CONFIG) --cflags lv2)
++  export HOST_LV2_LIBS        = $(shell $(HOST_PKG_CONFIG) --libs lv2)
+ endif
+ 
+diff --git a/scripts/make/set_vars.mk b/scripts/make/set_vars.mk
+index a22531a..93916ea 100644
+--- a/scripts/make/set_vars.mk
++++ b/scripts/make/set_vars.mk
+@@ -37,7 +37,52 @@ export BUILD_PLATFORM
+ export LV2_UI
+ export VST_UI
+ 
+-# Detect processor architecture
++# Detect host processor architecture
++ifeq ($(BUILD_PLATFORM),Windows)
++  ifndef HOST_BUILD_PROFILE
++    HOST_BUILD_ARCH           = i586
++    HOST_BUILD_PROFILE             = i586
++    ifeq ($(PROCESSOR_ARCHITECTURE),x86)
++      HOST_BUILD_ARCH         = i586
++      HOST_BUILD_PROFILE      = i586
++    endif
++    ifeq ($(PROCESSOR_ARCHITECTURE),AMD64)
++      HOST_BUILD_ARCH              = x86_64
++      HOST_BUILD_PROFILE           = x86_64
++    endif
++  endif
++else # BUILD_PLATFORM != Windows
++  ifndef HOST_BUILD_PROFILE
++    HOST_BUILD_ARCH    ?= $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
++    HOST_BUILD_PROFILE  = $(HOST_BUILD_ARCH)
++    ifeq ($(patsubst armv6%,armv6,$(HOST_BUILD_ARCH)), armv6)
++      HOST_BUILD_PROFILE      = armv6a
++    endif
++    ifeq ($(patsubst armv7%,armv7,$(HOST_BUILD_ARCH)), armv7)
++      HOST_BUILD_PROFILE      = armv7a
++    endif
++    ifeq ($(patsubst armv8%,armv8,$(HOST_BUILD_ARCH)), armv8)
++      HOST_BUILD_PROFILE      = armv8a
++    endif
++    ifeq ($(patsubst aarch64%,aarch64,$(HOST_BUILD_ARCH)), aarch64)
++      HOST_BUILD_PROFILE      = aarch64
++    endif
++    ifeq ($(HOST_BUILD_ARCH),x86_64)
++      HOST_BUILD_PROFILE      = x86_64
++    endif
++    ifeq ($(HOST_BUILD_ARCH),amd64)
++      HOST_BUILD_PROFILE      = x86_64
++    endif
++    ifeq ($(HOST_BUILD_ARCH),i86pc)
++      HOST_BUILD_PROFILE      = x86_64
++    endif
++    ifeq ($(patsubst i%86,i586,$(HOST_BUILD_ARCH)), i586)
++      HOST_BUILD_PROFILE      = i586
++    endif
++  endif
++endif # BUILD_PLATFORM != Windows
++
++# Detect target processor architecture
+ ifeq ($(BUILD_PLATFORM),Windows)
+   ifndef BUILD_PROFILE
+     BUILD_ARCH                = i586
+@@ -53,7 +98,7 @@ ifeq ($(BUILD_PLATFORM),Windows)
+   endif
+ else # BUILD_PLATFORM != Windows
+   ifndef BUILD_PROFILE
+-    BUILD_ARCH              = $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
++    BUILD_ARCH              ?= $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
+     BUILD_PROFILE           = $(BUILD_ARCH)
+     ifeq ($(patsubst armv6%,armv6,$(BUILD_ARCH)), armv6)
+       BUILD_PROFILE           = armv6a
+@@ -82,5 +127,7 @@ else # BUILD_PLATFORM != Windows
+   endif
+ endif # BUILD_PLATFORM != Windows
+ 
+-export BUILD_PROFILE
++HOST_BUILD_PROFILE ?= $(shell uname -m)
+ 
++export BUILD_PROFILE
++export HOST_BUILD_PROFILE
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 1fb917e..508f829 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -1,14 +1,18 @@
+ # Setup preferred tools
+ TOOL_LD                 = ld
++TOOL_HOST_LD            = ld
+ TOOL_CC                 = gcc
+ TOOL_CXX                = g++
++TOOL_HOST_CXX           = g++
+ TOOL_PHP                = php
++TOOL_PKG_CONFIG         = pkg-config
++TOOL_HOST_PKG_CONFIG    = PKG_CONFIG_SYSROOT_DIR=/ pkg-config
+ 
+ # Setup preferred flags
+ FLAG_RELRO              = -Wl,-z,relro,-z,now
+ FLAG_VERSION            = -DLSP_MAIN_VERSION=\"$(LSP_VERSION)\" -DLSP_INSTALL_PREFIX=\"$(PREFIX)\"
+-FLAG_CTUNE              = -std=c++98 \
+-                          -fno-exceptions -fno-rtti \
++FLAG_CXXSTANDARD        = -std=c++98
++FLAGS_CTUNE             = -fno-exceptions -fno-rtti \
+                           -fdata-sections -ffunction-sections -fno-asynchronous-unwind-tables \
+                           -fvisibility=hidden \
+                           -pipe -Wall
+@@ -17,21 +21,29 @@ FLAG_CTUNE              = -std=c++98 \
+ ifeq ($(BUILD_PLATFORM),Solaris)
+   FLAG_RELRO              =
+   TOOL_LD                 = gld
++  TOOL_HOST_LD            = gld
+ endif
+ 
+ # Setup system variables
+ CC              		 ?= $(TOOL_CC)
+ CXX                      ?= $(TOOL_CXX)
++HOST_CXX                 ?= $(TOOL_HOST_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
++HOST_LD                  ?= $(TOOL_HOST_LD)
++PKG_CONFIG               ?= $(TOOL_PKG_CONFIG)
++HOST_PKG_CONFIG          ?= $(TOOL_HOST_PKG_CONFIG)
+ 
+-MAKE_OPTS                 = -s
+-CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+-MERGE_FLAGS               = $(LD_ARCH) -r
+-EXE_TEST_FLAGS            = $(LDFLAGS) $(CC_ARCH)
+-EXE_FLAGS                 = $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++CFLAGS                   += $(CC_ARCH) $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) \
++                            $(CC_FLAGS) $(FLAG_VERSION)
++CXXFLAGS                 += $(CC_ARCH) $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) \
++                            $(CC_FLAGS) $(FLAG_VERSION)
++HOST_CXXFLAGS            += $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
++SO_FLAGS                 += $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
++MERGE_FLAGS              += $(LD_ARCH) -r
++EXE_TEST_FLAGS           += $(LDFLAGS) $(CC_ARCH)
++EXE_FLAGS                += $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++HOST_EXE_FLAGS           += $(HOST_LDFLAGS) $(FLAG_RELRO) -Wl,--gc-sections
+ 
+ ifeq ($(BUILD_PLATFORM), Linux)
+   SO_FLAGS                 += -Wl,--no-undefined
+@@ -59,13 +71,18 @@ endif
+ 
+ export CC
+ export CXX
++export HOST_CXX
+ export PHP
+ export LD
++export HOST_LD
++export PKG_CONFIG
++export HOST_PKG_CONFIG
+ 
+-export MAKE_OPTS
+ export CFLAGS
+ export CXXFLAGS
++export HOST_CXXFLAGS
+ export SO_FLAGS
+ export MERGE_FLAGS
+ export EXE_TEST_FLAGS
+ export EXE_FLAGS
++export HOST_EXE_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index 8546191..01b9d92 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,7 +1,16 @@
++# Estimate different pre-requisites before launching build
++
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+-UTL_DEPS                = $(OBJ_CORE) $(OBJ_DSP) $(OBJ_METADATA)
++UTL_DEPS                = $(HOST_OBJ_CORE) $(HOST_OBJ_DSP) $(HOST_OBJ_METADATA)
++OBJDIR                  ?= $(BUILDDIR)
+ 
+ NEED_UI                 = 0
+ NEED_PLUGINS            = 0
+@@ -58,6 +67,7 @@ ifeq ($(NEED_UI),1)
+   CONTAINER_DEPS         += $(OBJ_UI_CORE) $(OBJ_RES_CORE) rendering
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all $(MODULES)
+ 
+ all: $(MODULES)
+@@ -66,19 +76,34 @@ target: all
+ 
+ # Rules
+ $(SUBDIRS):
+-	@echo "Building $(@)"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	@echo "$(BUILDDIR)"
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ all \
++		CXX="$(CXX)" \
++		CXXFLAGS="$(CXXFLAGS)" \
++		LD="$(LD)" \
++		OBJDIR="$(OBJDIR)/$(@)" \
++		BUILD_PROFILE="$(BUILD_PROFILE)" \
++		SNDFILE_HEADERS="$(SNDFILE_HEADERS)" \
++		SNDFILE_LIBS="$(SNDFILE_LIBS)" \
++		LV2_HEADERS="$(LV2_HEADERS)" \
++		LV2_LIBS="$(LV2_LIBS)"
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+ 
++$(HOST_OBJ_CORE): core
++
+ $(OBJ_DSP): dsp
+ 
++$(HOST_OBJ_DSP): dsp
++
+ $(OBJ_PLUGINS): plugins
+ 
+ $(OBJ_METADATA): metadata
+ 
++$(HOST_OBJ_METADATA): metadata
++
+ $(OBJ_UI_CORE): ui
+ 
+ $(UTL_FILES): utils
+@@ -93,10 +118,10 @@ $(OBJ_TESTING_CORE): test testing rendering
+ 
+ $(OBJ_RES_CORE): $(OBJ_CORE) $(UTL_RESGEN)
+ 	@echo "Generating builtin resources"
+-	@mkdir -p $(OBJDIR)/res
+-	@$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	mkdir -p $(OBJDIR)/res
++	$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
++	rm -f gmon.out >/dev/null 2>&1
++	$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ # Target dependencies
+ container: $(CONTAINER_DEPS)
+@@ -108,18 +133,18 @@ doc: utils $(PHP_PLUGINS)
+ # Additional processing
+ $(PHP_PLUGINS): $(UTL_GENPHP)
+ 	@echo "Generating PHP file $(notdir $(PHP_PLUGINS))"
+-	@$(UTL_GENPHP) $(PHP_PLUGINS)
++	$(UTL_GENPHP) $(PHP_PLUGINS)
+ 
+ vst_stub: $(UTL_VSTMAKE)
+ 	@echo "Building VST stub"
+-	@mkdir -p $(OBJDIR)/vst
+-	@$(UTL_VSTMAKE) $(OBJDIR)/vst
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
++	mkdir -p $(OBJDIR)/vst
++	$(UTL_VSTMAKE) $(OBJDIR)/vst
++	rm -f gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
+ 
+ jack_stub: $(UTL_JACKMAKE)
+ 	@echo "Building JACK stub"
+-	@mkdir -p $(OBJDIR)/jack
+-	@$(UTL_JACKMAKE) $(OBJDIR)/jack
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
++	mkdir -p $(OBJDIR)/jack
++	$(UTL_JACKMAKE) $(OBJDIR)/jack
++	rm -f gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
+diff --git a/src/container/Makefile b/src/container/Makefile
+index 8aa8196..23a2e7a 100644
+--- a/src/container/Makefile
++++ b/src/container/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ OBJ_HELPERS             = $(OBJDIR)/CairoCanvas.o
+@@ -53,46 +59,47 @@ ifeq ($(VST_UI),1)
+   X_VST_LIBS             += $(UI_LIBS)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(MODULES)
+ 
+ $(OBJ_HELPERS):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
+ 
+ $(LIB_LADSPA):
+ 	@echo "  $(CXX) ladspa.cpp"
+-	@$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_LADSPA))"
+-	@$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
++	$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
+ 
+ $(LIB_LV2): $(X_LV2_DEPS)
+ 	@echo "  $(CXX) lv2.cpp"
+-	@$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
+-	@echo "  $(CXX) $(notdir $(X_LIB_LV2))"
+-	@$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
++	$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
++	@echo "  $(CXX) $(notdir $(LIB_LV2))"
++	$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
+ 
+ $(LIB_VST):
+ 	@echo "  $(CXX) vst.cpp"
+-	@$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_VST))"
+-	@$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
++	$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
+ 
+ $(LIB_JACK): $(OBJ_HELPERS)
+ 	@echo "  $(CXX) jack.cpp"
+-	@$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
++	$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
+ 	@echo "  $(CXX) $(notdir $(LIB_JACK))"
+-	@$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
++	$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
+ 
+ $(BIN_PROFILE): $(LIB_JACK)
+ 	@echo "  $(CXX) profile.cpp"
+-	@$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_PROFILE))"
+-	@$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
++	$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
+ 
+ $(BIN_TEST): $(LIB_JACK)
+ 	@echo "  $(CXX) test.cpp"
+-	@$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_TEST))"
+-	@$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
++	$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
+diff --git a/src/core/Makefile b/src/core/Makefile
+index a9ce1a5..3ad14a5 100644
+--- a/src/core/Makefile
++++ b/src/core/Makefile
+@@ -1,18 +1,25 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(SNDFILE_HEADERS)
+ LIBS                    = $(PTHREAD_LIBS)
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(OBJ_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
+ 
+ $(OBJ_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_CORE))"
+-	@$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
++	$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
+diff --git a/src/doc/Makefile b/src/doc/Makefile
+index aac73bf..f7f18a1 100644
+--- a/src/doc/Makefile
++++ b/src/doc/Makefile
+@@ -1,6 +1,13 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ PHPDIR      = $(BUILDDIR)/src/doc
+ HTMLDIR     = $(BUILDDIR)/html
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -8,14 +15,14 @@ target: all
+ # Common rules
+ $(PHPDIR)/Makefile:
+ 	@echo "Preparing PHP documentation generator"
+-	@mkdir -p $(PHPDIR)
+-	@mkdir -p $(HTMLDIR)
+-	@cp -rf * $(PHPDIR)/
+-	@cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
+-	@cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
+-	@cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
+-	@$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
++	mkdir -p $(PHPDIR)
++	mkdir -p $(HTMLDIR)
++	cp -rf * $(PHPDIR)/
++	cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
++	cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
++	cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
++	$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
+ 
+ all: $(PHPDIR)/Makefile
+ 	@echo "Generating HTML documentation"
+-	@$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
++	$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
+diff --git a/src/dsp/Makefile b/src/dsp/Makefile
+index f3d9ab1..aac8007 100644
+--- a/src/dsp/Makefile
++++ b/src/dsp/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ NATIVE_IMPL             = $(OBJDIR)/native.o
+ 
+ X86_IMPL                = $(OBJDIR)/x86.o
+@@ -51,6 +57,7 @@ ifeq ($(BUILD_PROFILE), aarch64)
+ LINK_OBJECTS           += $(AARCH64_IMPL) $(ASIMD_IMPL)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -59,41 +66,41 @@ all: $(OBJ_DSP)
+ 
+ $(OBJ_DSP): $(LINK_OBJECTS)
+ 	@echo "  $(LD) $(notdir $(OBJ_DSP))"
+-	@$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
++	$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
+ 
+ $(DSP_IMPL) $(BITS_IMPL) $(NATIVE_IMPL) $(X86_IMPL) $(ARM_IMPL) $(AARCH64_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	
+ $(SSE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE3_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE4_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
+ 	
+ $(NEON_D32_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
+ 	
+ $(ASIMD_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
+ 
+diff --git a/src/metadata/Makefile b/src/metadata/Makefile
+index 201f89a..403f38a 100644
+--- a/src/metadata/Makefile
++++ b/src/metadata/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -10,8 +16,8 @@ target: all
+ 
+ $(OBJ_METADATA): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_METADATA))"
+-	@$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+diff --git a/src/plugins/Makefile b/src/plugins/Makefile
+index 1f197dc..85963ba 100644
+--- a/src/plugins/Makefile
++++ b/src/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,8 +14,8 @@ all:  $(OBJ_PLUGINS)
+ 
+ $(OBJ_PLUGINS): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(OBJ_PLUGINS))"
+-	@$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
++	$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
+diff --git a/src/rendering/Makefile b/src/rendering/Makefile
+index 897e327..65f3237 100644
+--- a/src/rendering/Makefile
++++ b/src/rendering/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ BASE_IMPL             	= $(OBJDIR)/base_backend.o
+ 
+ GLX_IMPL                = $(OBJDIR)/glx/backend.o $(OBJDIR)/glx/factory.o
+@@ -20,15 +26,15 @@ all: $(MODULES)
+ 
+ $(LIB_R3D_GLX): $(BASE_IMPL) $(GLX_IMPL)
+ 	@echo "  $(CXX) $(notdir $(LIB_R3D_GLX))"
+-	@$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
++	$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
+ 
+ $(BASE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 	
+ $(GLX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $(@))
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
++	mkdir -p $(dir $(@))
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
+ 
+ 
+diff --git a/src/test/Makefile b/src/test/Makefile
+index e8016e1..a89366e 100644
+--- a/src/test/Makefile
++++ b/src/test/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TEST_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TEST_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TEST_CORE))"
+-	@$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/testing/Makefile b/src/testing/Makefile
+index 705913d..d048065 100644
+--- a/src/testing/Makefile
++++ b/src/testing/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TESTING_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TESTING_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TESTING_CORE))"
+-	@$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/testing/mtest/3d/boolean3d.cpp b/src/testing/mtest/3d/boolean3d.cpp
+deleted file mode 100644
+index 636dce1..0000000
+--- a/src/testing/mtest/3d/boolean3d.cpp
++++ /dev/null
+@@ -1,253 +0,0 @@
+-/*
+- * Copyright (C) 2020 Linux Studio Plugins Project <https://lsp-plug.in/>
+- *           (C) 2020 Vladimir Sadovnikov <sadko4u@gmail.com>
+- *
+- * This file is part of lsp-plugins
+- * Created on: 24 дек. 2018 г.
+- *
+- * lsp-plugins is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU Lesser General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * any later version.
+- *
+- * lsp-plugins is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU Lesser General Public License for more details.
+- *
+- * You should have received a copy of the GNU Lesser General Public License
+- * along with lsp-plugins. If not, see <https://www.gnu.org/licenses/>.
+- */
+-
+-#if 0
+-
+-#include <test/mtest.h>
+-#include <testing/mtest/3d/common/X11Renderer.h>
+-#include <core/files/Model3DFile.h>
+-#include <core/3d/rt_context.h>
+-#include <core/3d/RayTrace3D.h>
+-
+-#include <core/types.h>
+-#include <core/debug.h>
+-#include <core/sugar.h>
+-#include <core/status.h>
+-#include <stdlib.h>
+-#include <errno.h>
+-#include <data/cstorage.h>
+-
+-#include <X11/X.h>
+-#include <X11/Xlib.h>
+-#include <X11/keysymdef.h>
+-#include <GL/gl.h>
+-#include <GL/glx.h>
+-#include <GL/glu.h>
+-#include <sys/poll.h>
+-
+-//#define TEST_DEBUG
+-
+-#ifndef TEST_DEBUG
+-//    #define BREAKPOINT_STEP     -1
+-//    #define BREAKPOINT_STEP     27
+-//    #define BREAKPOINT_STEP     83
+-    #define BREAKPOINT_STEP     215
+-//    #define BREAKPOINT_STEP     0
+-
+-#else /* DEBUG */
+-    #define BREAKPOINT_STEP     0
+-#endif /* DEBUG */
+-
+-MTEST_BEGIN("3d", boolean)
+-
+-    class Renderer: public X11Renderer
+-    {
+-        private:
+-            Scene3D        *pScene;
+-            ssize_t         nTrace;
+-            bool            bDrawMatched;
+-            bool            bDrawIgnored;
+-            bool            bDrawDebug;
+-
+-        public:
+-            explicit Renderer(Scene3D *scene, View3D *view): X11Renderer(view)
+-            {
+-                pScene = scene;
+-                bDrawMatched    = true;
+-                bDrawIgnored    = true;
+-                bDrawDebug      = true;
+-                bDrawNormals    = false;
+-                nTrace          = BREAKPOINT_STEP;
+-
+-                update_view();
+-            }
+-
+-            virtual ~Renderer()
+-            {
+-            }
+-
+-        public:
+-            virtual void on_key_press(const XKeyEvent &ev, KeySym key)
+-            {
+-                switch (key)
+-                {
+-                    case XK_Up:
+-                        nTrace++;
+-                        lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                        update_view();
+-                        break;
+-                    case XK_Down:
+-                        if (nTrace >= 0)
+-                        {
+-                            nTrace--;
+-                            lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                            update_view();
+-                        }
+-                        break;
+-
+-                    case 'm':
+-                    {
+-                        bDrawMatched = ! bDrawMatched;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'i':
+-                    {
+-                        bDrawIgnored = ! bDrawIgnored;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'd':
+-                    {
+-                        bDrawDebug = ! bDrawDebug;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case '0': case '1': case '2': case '3': case '4':
+-                    case '5': case '6': case '7': case '8': case '9':
+-                    {
+-                        Object3D *obj = pScene->get_object(key - '0');
+-                        if (obj != NULL)
+-                        {
+-                            obj->set_visible(!obj->is_visible());
+-                            update_view();
+-                        }
+-                        break;
+-                    }
+-                    default:
+-                        X11Renderer::on_key_press(ev, key);
+-                        break;
+-                }
+-            }
+-
+-        protected:
+-            status_t perform_boolean(rt_debug_t *shared)
+-            {
+-                if (pScene->num_objects() <= 0)
+-                    return STATUS_OK;
+-
+-                rt_mesh_t mesh;
+-                mesh.set_debug_context(shared, &shared->trace);
+-
+-                Object3D *obj = pScene->object(0);
+-                status_t res = mesh.init(obj, 0, obj->matrix());
+-                if (res != STATUS_OK)
+-                    return res;
+-
+-                for (size_t i=1, n=pScene->num_objects(); i<n; ++i)
+-                {
+-                    obj = pScene->object(i);
+-                    res = mesh.subtract(obj, i, obj->matrix());
+-                    if (res != STATUS_OK)
+-                        return res;
+-                }
+-
+-                return STATUS_OK;
+-            }
+-
+-            status_t    update_view()
+-            {
+-                v_vertex3d_t v[3];
+-                status_t res = STATUS_OK;
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // List of ignored and matched triangles
+-                rt_debug_t global;
+-                global.breakpoint   = nTrace;
+-                global.step         = 0;
+-
+-                // Perform raytrace
+-                res     = perform_boolean(&global);
+-                if (res == STATUS_BREAKPOINT)
+-                {
+-                    pView->swap(&global.trace);
+-                    res         = STATUS_OK;
+-                }
+-
+-                if (!bDrawDebug)
+-                    pView->clear_all();
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // Build final scene from matched and ignored items
+-                if (bDrawIgnored)
+-                {
+-                    for (size_t i=0, m=global.ignored.size(); i < m; ++i)
+-                        pView->add_triangle_1c(global.ignored.at(i), &C_GRAY);
+-                }
+-
+-                if (bDrawMatched)
+-                {
+-                    for (size_t i=0, m=global.matched.size(); i < m; ++i)
+-                    {
+-                        v_triangle3d_t *t = global.matched.at(i);
+-                        v[0].p     = t->p[0];
+-                        v[0].n     = t->n[0];
+-                        v[0].c     = C_RED;
+-
+-                        v[1].p     = t->p[1];
+-                        v[1].n     = t->n[1];
+-                        v[1].c     = C_GREEN;
+-
+-                        v[2].p     = t->p[2];
+-                        v[2].n     = t->n[2];
+-                        v[2].c     = C_BLUE;
+-
+-                        pView->add_triangle(v);
+-                    }
+-                }
+-
+-                global.ignored.flush();
+-                global.matched.flush();
+-
+-                return res;
+-            }
+-    };
+-
+-    MTEST_MAIN
+-    {
+-        const char *scene_file = (argc < 1) ? "res/test/3d/cross.obj" : argv[0];
+-
+-        // Load scene
+-        Scene3D s;
+-        View3D v;
+-        status_t res = Model3DFile::load(&s, scene_file, true);
+-        MTEST_ASSERT_MSG(res == STATUS_OK, "Error loading scene from file %s", scene_file);
+-
+-        // Initialize renderer
+-        Renderer r(&s, &v);
+-        MTEST_ASSERT_MSG(r.init() == STATUS_OK, "Error initializing renderer");
+-        r.run();
+-        r.destroy();
+-
+-        // Destroy scene
+-        s.destroy();
+-    }
+-
+-MTEST_END
+-
+-#endif
+diff --git a/src/testing/mtest/3d/bsp_context.cpp b/src/testing/mtest/3d/bsp_context.cpp
+index de54427..f7b7a34 100644
+--- a/src/testing/mtest/3d/bsp_context.cpp
++++ b/src/testing/mtest/3d/bsp_context.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/reflections3d.cpp b/src/testing/mtest/3d/reflections3d.cpp
+index e250444..367f86c 100644
+--- a/src/testing/mtest/3d/reflections3d.cpp
++++ b/src/testing/mtest/3d/reflections3d.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/ui/Makefile b/src/ui/Makefile
+index 503111d..eb1e4c5 100644
+--- a/src/ui/Makefile
++++ b/src/ui/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= ws tk ctl plugins
+@@ -8,15 +14,15 @@ PACKAGES                = $(OBJ_WS_CORE) $(OBJ_TK_CORE) $(OBJ_CTL_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_UI_CORE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_UI_CORE)
+diff --git a/src/ui/ctl/Makefile b/src/ui/ctl/Makefile
+index 3f727db..692fe9d 100644
+--- a/src/ui/ctl/Makefile
++++ b/src/ui/ctl/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_CTL_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_CTL_CORE) $(SUBDIRS)
+diff --git a/src/ui/plugins/Makefile b/src/ui/plugins/Makefile
+index 8f8db8f..0e6c3d8 100644
+--- a/src/ui/plugins/Makefile
++++ b/src/ui/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_PLUGIN_UIS): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_PLUGIN_UIS) $(SUBDIRS)
+diff --git a/src/ui/tk/Makefile b/src/ui/tk/Makefile
+index 8700f63..cfb4c78 100644
+--- a/src/ui/tk/Makefile
++++ b/src/ui/tk/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -6,11 +12,11 @@ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_TK_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_TK_CORE)
+diff --git a/src/ui/ws/Makefile b/src/ui/ws/Makefile
+index 1109752..b9836d8 100644
+--- a/src/ui/ws/Makefile
++++ b/src/ui/ws/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= x11
+@@ -8,15 +14,15 @@ all: $(OBJ_WS_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ $(OBJ_WS_CORE): $(FILES) $(OBJ_WS_X11_CORE)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
++	$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
+ 
+ $(OBJ_WS_X11_CORE): $(SUBDIRS)
+diff --git a/src/ui/ws/x11/Makefile b/src/ui/ws/x11/Makefile
+index b99e93d..7bffca3 100644
+--- a/src/ui/ws/x11/Makefile
++++ b/src/ui/ws/x11/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(XLIB_HEADERS) $(CAIRO_HEADERS)
+@@ -8,9 +14,9 @@ all: $(OBJ_WS_X11_CORE)
+ 
+ $(OBJ_WS_X11_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
++	$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+diff --git a/src/ui/ws/x11/X11Display.cpp b/src/ui/ws/x11/X11Display.cpp
+index d85db51..987e8a9 100644
+--- a/src/ui/ws/x11/X11Display.cpp
++++ b/src/ui/ws/x11/X11Display.cpp
+@@ -23,7 +23,7 @@
+ 
+ #ifdef USE_X11_DISPLAY
+ 
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ 
+@@ -233,7 +233,7 @@ namespace lsp
+                 while (!atomic_cas(&hLock, 0, 1)) { /* Wait */ }
+ 
+                 // Dispatch errors between Displays
+-                for (X11Display *dp = pHandlers; dp != NULL; ++dp)
++                for (X11Display *dp = pHandlers; dp != NULL; dp = dp->pNextHandler)
+                     if (dp->pDisplay == dpy)
+                         dp->handle_error(ev);
+ 
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index 88b3739..4b4fd2e 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -1,12 +1,24 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
++CXX                     = $(HOST_CXX)
++CXXFLAGS                = $(HOST_CXXFLAGS)
++MAKE_OPTS              += CXX=$(HOST_CXX) CXXFLAGS=$(HOST_CXXFLAGS)
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS                 =
+-OBJ_FILES               = $(OBJ_CORE) $(OBJ_METADATA)
++OBJ_FILES               = $(HOST_OBJ_CORE) $(HOST_OBJ_METADATA) $(HOST_OBJ_DSP)
+ OBJ_LIBS                = $(PTHREAD_LIBS) $(MATH_LIBS)
+ OBJ_EXTRA               =
+ INCLUDE_EXTRA           =
+ 
++export PKG_CONFIG_SYSROOT_DIR = /
++
+ ifeq ($(BUILD_PLATFORM),BSD)
+   OBJ_LIBS               += $(ICONV_LIBS)
+ endif
+@@ -18,7 +30,7 @@ endif
+ ifeq ($(findstring lv2,$(BUILD_MODULES)),lv2)
+   MODULES                += $(UTL_GENTTL)
+   FILELIST               += lv2_genttl.o
+-  INCLUDE_EXTRA          += $(LV2_HEADERS)
++  INCLUDE_EXTRA          += $(HOST_LV2_HEADERS)
+ endif
+ ifeq ($(findstring vst,$(BUILD_MODULES)),vst)
+   MODULES                += $(UTL_VSTMAKE)
+@@ -44,32 +56,30 @@ target: all
+ # Common rules
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	@echo "  $(HOST_CXX) $(FILE)"
++	$(HOST_CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(HOST_CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+-$(UTL_GENTTL): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	@$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++$(UTL_GENTTL): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENTTL))"
++	$(HOST_CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+-$(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	@$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_JACKMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_JACKMAKE))"
++	$(HOST_CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	@$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_VSTMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_VSTMAKE))"
++	$(HOST_CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_GENPHP): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	@$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_GENPHP): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENPHP))"
++	$(HOST_CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_RESGEN): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	@$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+-
+-	
+\ No newline at end of file
++$(UTL_RESGEN): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_RESGEN))"
++	$(HOST_CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_EXTRA) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+diff --git a/src/utils/jack_genmake.cpp b/src/utils/jack_genmake.cpp
+index 09974b0..3272ad8 100644
+--- a/src/utils/jack_genmake.cpp
++++ b/src/utils/jack_genmake.cpp
+@@ -97,6 +97,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%=%%.cpp)\n");
+@@ -107,11 +112,11 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
+ 
+         fprintf(out, "install: $(FILES)\n");
+-        fprintf(out, "\t@$(INSTALL) $(FILES) $(TARGET_PATH)/");
++        fprintf(out, "\t$(INSTALL) $(FILES) $(TARGET_PATH)/");
+ 
+         // Close file
+         fclose(out);
+diff --git a/src/utils/vst_genmake.cpp b/src/utils/vst_genmake.cpp
+index 9eeedeb..f47f783 100644
+--- a/src/utils/vst_genmake.cpp
++++ b/src/utils/vst_genmake.cpp
+@@ -100,6 +100,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%.so, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%.so=%%.cpp)\n");
+@@ -110,8 +115,8 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
+ 
+         // Close file
+         fclose(out);
+diff --git a/tmp/.gitignore b/tmp/.gitignore
+index 22e8364..d6b7ef3 100644
+--- a/tmp/.gitignore
++++ b/tmp/.gitignore
+@@ -1 +1,2 @@
+-/*
+\ No newline at end of file
++*
++!.gitignore
diff --git a/srcpkgs/lsp-plugins-lv2/template b/srcpkgs/lsp-plugins-lv2/template
new file mode 100644
index 000000000000..fc02794b8dfc
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/template
@@ -0,0 +1,75 @@
+# Template file for 'lsp-plugins-lv2'
+pkgname=lsp-plugins-lv2
+version=1.1.30
+revision=1
+wrksrc=lsp-plugins-${version}
+build_style=gnu-makefile
+make_build_args="VERBOSE=1 PREFIX=/usr"
+make_check_args=$make_build_args
+make_install_target="install install_xdg"
+make_use_env=yes
+hostmakedepends="pkg-config php lv2 libsndfile-devel"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel
+ ladspa-sdk jack-devel"
+_desc="Collection of free audio plugins"
+short_desc="${_desc} - LV2"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/"
+distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+export SKIP_CC_LD_ARCH=yes
+export HOST_BUILD_ARCH="${XBPS_MACHINE%-*}"
+export HOST_PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
+if [ -n "$CROSS_BUILD" ]; then
+	export BUILD_ARCH="${XBPS_TARGET_MACHINE%-*}"
+	export HOST_CXXFLAGS="$CXXFLAGS_host"
+	export HOST_CXX="$CXX_host"
+	export HOST_LD="$LD_host"
+else
+	export BUILD_ARCH="${XBPS_MACHINE%-*}"
+	export HOST_CXXFLAGS="$BUILD_CXXFLAGS"
+	export HOST_CXX="$BUILD_CXX"
+	export HOST_LD="$BUILD_LD"
+fi
+
+lsp-plugins-jack_package() {
+	short_desc="${_desc} - JACK"
+	pkg_install() {
+		vmove usr/bin
+		vmove usr/lib/lsp-plugins/lsp-plugins-jack-core*
+		vmove usr/lib/lsp-plugins/lsp-plugins-r3d-glx.so
+		vmove usr/share/applications
+		vmove usr/share/desktop-directories
+		vmove usr/share/icons
+		vmove etc/xdg/menus
+	}
+}
+
+lsp-plugins-ladspa_package() {
+	short_desc="${_desc} - LADSPA"
+	pkg_install() {
+		vmove usr/lib/ladspa/lsp-plugins-ladspa.so
+	}
+}
+
+lsp-plugins-vst_package() {
+	short_desc="${_desc} - VST"
+	pkg_install() {
+		vmove usr/lib/vst
+	}
+}
+
+lsp-plugins_package() {
+	short_desc="${_desc} - LV2, JACK, LADSPA, VST"
+	depends="lsp-plugins-lv2 lsp-plugins-jack lsp-plugins-ladspa lsp-plugins-vst"
+	build_style=meta
+}
+
+lsp-plugins-doc_package() {
+	short_desc="${_desc} - documentation"
+	pkg_install() {
+		vmove usr/share/doc
+	}
+}
diff --git a/srcpkgs/lsp-plugins-vst b/srcpkgs/lsp-plugins-vst
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-vst
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Updated] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (57 preceding siblings ...)
  2021-08-10  1:28 ` Logarithmus
@ 2021-08-10  1:49 ` Logarithmus
  2021-08-10  2:09 ` Logarithmus
                   ` (8 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-08-10  1:49 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 2219 bytes --]

There is an updated pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.
Also used by `easyeffects`, `pulseeffects`' successor 
Continuation of https://github.com/void-linux/void-packages/pull/29932

TODO:
- [ ] wait for https://github.com/sadko4u/lsp-plugins/pull/198
- [ ] implement `VERBOSE` option into `lsp-plugins` Makefiles to save my sanity debugging them
https://github.com/sadko4u/lsp-plugins/pull/200
- [ ] polish & upstream cross build patch
- [x] fix `i686`
- [ ] fix `armv6`
- [x] split the package (ladspa, lv2, vst, jack, doc)
- [ ] remove parallel check commit 

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 187816 bytes --]

From 82c1ccd82dcddcb5622e8a8b8b40f48de71ff56a Mon Sep 17 00:00:00 2001
From: Artur Sinila <freesoftware@logarithmus.dev>
Date: Mon, 5 Jul 2021 03:44:08 +0300
Subject: [PATCH 1/2] common/build-style/: enable running tests in parallel

---
 common/build-style/cmake.sh           | 6 +++++-
 common/build-style/configure.sh       | 6 +++++-
 common/build-style/gnu-configure.sh   | 6 +++++-
 common/build-style/gnu-makefile.sh    | 6 +++++-
 common/build-style/perl-module.sh     | 6 +++++-
 common/environment/setup/sourcepkg.sh | 3 ++-
 6 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/common/build-style/cmake.sh b/common/build-style/cmake.sh
index 401dabad31c8..c7ffd16fee21 100644
--- a/common/build-style/cmake.sh
+++ b/common/build-style/cmake.sh
@@ -113,7 +113,11 @@ do_check() {
 
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/configure.sh b/common/build-style/configure.sh
index 0963fc347934..b846a1a77572 100644
--- a/common/build-style/configure.sh
+++ b/common/build-style/configure.sh
@@ -29,7 +29,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-configure.sh b/common/build-style/gnu-configure.sh
index 8121136cd121..b09de442b05b 100644
--- a/common/build-style/gnu-configure.sh
+++ b/common/build-style/gnu-configure.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/gnu-makefile.sh b/common/build-style/gnu-makefile.sh
index d7ea148fc483..0f7afa7d3695 100644
--- a/common/build-style/gnu-makefile.sh
+++ b/common/build-style/gnu-makefile.sh
@@ -30,7 +30,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=check}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/build-style/perl-module.sh b/common/build-style/perl-module.sh
index b9a01b13cfa9..d47945b33d36 100644
--- a/common/build-style/perl-module.sh
+++ b/common/build-style/perl-module.sh
@@ -79,7 +79,11 @@ do_check() {
 	: ${make_cmd:=make}
 	: ${make_check_target:=test}
 
-	${make_cmd} ${make_check_args} ${make_check_target}
+	if [ -z "$disable_parallel_check" ]; then
+		${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
+	else
+		${make_cmd} ${make_check_args} ${make_check_target}
+	fi
 }
 
 do_install() {
diff --git a/common/environment/setup/sourcepkg.sh b/common/environment/setup/sourcepkg.sh
index bc06f745b78a..1fd541f1e715 100644
--- a/common/environment/setup/sourcepkg.sh
+++ b/common/environment/setup/sourcepkg.sh
@@ -13,7 +13,8 @@ unset -v cmake_builddir meson_builddir
 unset -v meson_crossfile
 unset -v gemspec
 unset -v go_import_path go_package go_mod_mode
-unset -v patch_args disable_parallel_build keep_libtool_archives make_use_env
+unset -v patch_args disable_parallel_build disable_parallel_check
+unset -v keep_libtool_archives make_use_env
 unset -v reverts subpackages makedepends hostmakedepends checkdepends depends restricted
 unset -v nopie build_options build_options_default bootstrap repository reverts
 unset -v CFLAGS CXXFLAGS FFLAGS CPPFLAGS LDFLAGS LD_LIBRARY_PATH

From 5b5dd1ab838c1ed57c0ad7296bb6355b90cf50a6 Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH 2/2] New package: lsp-plugins-1.1.30

---
 srcpkgs/lsp-plugins                           |    1 +
 srcpkgs/lsp-plugins-doc                       |    1 +
 srcpkgs/lsp-plugins-jack                      |    1 +
 srcpkgs/lsp-plugins-ladspa                    |    1 +
 .../00-makefile-test-remove-cflags.patch      |   12 +
 srcpkgs/lsp-plugins-lv2/files/01-musl.patch   |  391 +++
 .../files/02-make-verbose.patch               | 1082 +++++++++
 .../files/03-improve-cross.patch              |  565 +++++
 srcpkgs/lsp-plugins-lv2/files/04-misc.patch   |  280 +++
 .../patches/00-patch-all.patch                | 2098 +++++++++++++++++
 srcpkgs/lsp-plugins-lv2/template              |   75 +
 srcpkgs/lsp-plugins-vst                       |    1 +
 12 files changed, 4508 insertions(+)
 create mode 120000 srcpkgs/lsp-plugins
 create mode 120000 srcpkgs/lsp-plugins-doc
 create mode 120000 srcpkgs/lsp-plugins-jack
 create mode 120000 srcpkgs/lsp-plugins-ladspa
 create mode 100644 srcpkgs/lsp-plugins-lv2/files/00-makefile-test-remove-cflags.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/files/01-musl.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/files/02-make-verbose.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/files/03-improve-cross.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/files/04-misc.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/patches/00-patch-all.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/template
 create mode 120000 srcpkgs/lsp-plugins-vst

diff --git a/srcpkgs/lsp-plugins b/srcpkgs/lsp-plugins
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-doc b/srcpkgs/lsp-plugins-doc
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-doc
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-jack b/srcpkgs/lsp-plugins-jack
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-jack
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-ladspa b/srcpkgs/lsp-plugins-ladspa
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-ladspa
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-lv2/files/00-makefile-test-remove-cflags.patch b/srcpkgs/lsp-plugins-lv2/files/00-makefile-test-remove-cflags.patch
new file mode 100644
index 000000000000..fd82f25d4a25
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/files/00-makefile-test-remove-cflags.patch
@@ -0,0 +1,12 @@
+https://github.com/void-linux/void-packages/pull/29932#discussion_r605695858
+--- a/Makefile
++++ b/Makefile
+@@ -108,8 +108,6 @@ trace: export EXE_FLAGS     += -g3
+ trace: compile
+ 
+ test: OBJDIR                 = $(TESTDIR)
+-test: export CFLAGS         += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-test: export CXXFLAGS       += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
diff --git a/srcpkgs/lsp-plugins-lv2/files/01-musl.patch b/srcpkgs/lsp-plugins-lv2/files/01-musl.patch
new file mode 100644
index 000000000000..6dc08949a87a
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/files/01-musl.patch
@@ -0,0 +1,391 @@
+diff --git a/TODO.txt b/TODO.txt
+index 4976293..3bb3db8 100644
+--- a/TODO.txt
++++ b/TODO.txt
+@@ -28,6 +28,11 @@
+ - Added possibility to change themes in runtime.
+ - Complicated plugin UIs now allow to switch between Advanced and Novice modes.
+ 
++=== 1.1.31 ===
++
++* Fixed X11 error handling routine that could crash under certain conditions.
++* Better support for musl libc (contributed by Artur Sinila).
++
+ *******************************************************************************
+ * New plugin check list before release
+ *******************************************************************************
+diff --git a/include/common/types.h b/include/common/types.h
+index dd1816e..59c794e 100644
+--- a/include/common/types.h
++++ b/include/common/types.h
+@@ -563,6 +563,12 @@
+     #define MINIMUM_ALIGN                   DEFAULT_ALIGN
+ #endif /* DEFAULT_ALIGN */
+ 
++//-----------------------------------------------------------------------------
++// Detect some libraries
++#ifdef __GLIBC__
++    #define USE_GLIBC                           __GLIBC__
++#endif /* GLIBC */
++
+ //-----------------------------------------------------------------------------
+ // Type definitions
+ __IF_32( typedef        uint32_t            umword_t );
+diff --git a/include/data/cvector.h b/include/data/cvector.h
+index eccc94a..17fe119 100644
+--- a/include/data/cvector.h
++++ b/include/data/cvector.h
+@@ -25,6 +25,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <sys/types.h>
+ 
+ #define CVECTOR_GROW        16
+ 
+diff --git a/include/test/main/executor.h b/include/test/main/executor.h
+index 0faf73f..5a0c016 100644
+--- a/include/test/main/executor.h
++++ b/include/test/main/executor.h
+@@ -633,7 +633,7 @@ namespace lsp
+     }
+ #endif /* PLATFORM_WINDOWS */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     void TestExecutor::start_memcheck(test::Test *v)
+     {
+         if (!pCfg->mtrace)
+diff --git a/include/test/main/types.h b/include/test/main/types.h
+index ef15800..0c5d7c2 100644
+--- a/include/test/main/types.h
++++ b/include/test/main/types.h
+@@ -42,7 +42,7 @@
+     #include <fcntl.h>
+ #endif /* PLATFORM_UNIX_COMPATIBLE */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     #include <mcheck.h>
+ #endif /* PLATFORM_LINUX */
+ 
+diff --git a/include/testing/mtest/3d/common/X11Renderer.h b/include/testing/mtest/3d/common/X11Renderer.h
+index e8ec205..f0a51e2 100644
+--- a/include/testing/mtest/3d/common/X11Renderer.h
++++ b/include/testing/mtest/3d/common/X11Renderer.h
+@@ -30,7 +30,7 @@
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include <rendering/backend.h>
+ #include <core/ipc/Library.h>
+diff --git a/src/testing/mtest/3d/boolean3d.cpp b/src/testing/mtest/3d/boolean3d.cpp
+deleted file mode 100644
+index 636dce1..0000000
+--- a/src/testing/mtest/3d/boolean3d.cpp
++++ /dev/null
+@@ -1,253 +0,0 @@
+-/*
+- * Copyright (C) 2020 Linux Studio Plugins Project <https://lsp-plug.in/>
+- *           (C) 2020 Vladimir Sadovnikov <sadko4u@gmail.com>
+- *
+- * This file is part of lsp-plugins
+- * Created on: 24 дек. 2018 г.
+- *
+- * lsp-plugins is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU Lesser General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * any later version.
+- *
+- * lsp-plugins is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU Lesser General Public License for more details.
+- *
+- * You should have received a copy of the GNU Lesser General Public License
+- * along with lsp-plugins. If not, see <https://www.gnu.org/licenses/>.
+- */
+-
+-#if 0
+-
+-#include <test/mtest.h>
+-#include <testing/mtest/3d/common/X11Renderer.h>
+-#include <core/files/Model3DFile.h>
+-#include <core/3d/rt_context.h>
+-#include <core/3d/RayTrace3D.h>
+-
+-#include <core/types.h>
+-#include <core/debug.h>
+-#include <core/sugar.h>
+-#include <core/status.h>
+-#include <stdlib.h>
+-#include <errno.h>
+-#include <data/cstorage.h>
+-
+-#include <X11/X.h>
+-#include <X11/Xlib.h>
+-#include <X11/keysymdef.h>
+-#include <GL/gl.h>
+-#include <GL/glx.h>
+-#include <GL/glu.h>
+-#include <sys/poll.h>
+-
+-//#define TEST_DEBUG
+-
+-#ifndef TEST_DEBUG
+-//    #define BREAKPOINT_STEP     -1
+-//    #define BREAKPOINT_STEP     27
+-//    #define BREAKPOINT_STEP     83
+-    #define BREAKPOINT_STEP     215
+-//    #define BREAKPOINT_STEP     0
+-
+-#else /* DEBUG */
+-    #define BREAKPOINT_STEP     0
+-#endif /* DEBUG */
+-
+-MTEST_BEGIN("3d", boolean)
+-
+-    class Renderer: public X11Renderer
+-    {
+-        private:
+-            Scene3D        *pScene;
+-            ssize_t         nTrace;
+-            bool            bDrawMatched;
+-            bool            bDrawIgnored;
+-            bool            bDrawDebug;
+-
+-        public:
+-            explicit Renderer(Scene3D *scene, View3D *view): X11Renderer(view)
+-            {
+-                pScene = scene;
+-                bDrawMatched    = true;
+-                bDrawIgnored    = true;
+-                bDrawDebug      = true;
+-                bDrawNormals    = false;
+-                nTrace          = BREAKPOINT_STEP;
+-
+-                update_view();
+-            }
+-
+-            virtual ~Renderer()
+-            {
+-            }
+-
+-        public:
+-            virtual void on_key_press(const XKeyEvent &ev, KeySym key)
+-            {
+-                switch (key)
+-                {
+-                    case XK_Up:
+-                        nTrace++;
+-                        lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                        update_view();
+-                        break;
+-                    case XK_Down:
+-                        if (nTrace >= 0)
+-                        {
+-                            nTrace--;
+-                            lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                            update_view();
+-                        }
+-                        break;
+-
+-                    case 'm':
+-                    {
+-                        bDrawMatched = ! bDrawMatched;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'i':
+-                    {
+-                        bDrawIgnored = ! bDrawIgnored;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'd':
+-                    {
+-                        bDrawDebug = ! bDrawDebug;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case '0': case '1': case '2': case '3': case '4':
+-                    case '5': case '6': case '7': case '8': case '9':
+-                    {
+-                        Object3D *obj = pScene->get_object(key - '0');
+-                        if (obj != NULL)
+-                        {
+-                            obj->set_visible(!obj->is_visible());
+-                            update_view();
+-                        }
+-                        break;
+-                    }
+-                    default:
+-                        X11Renderer::on_key_press(ev, key);
+-                        break;
+-                }
+-            }
+-
+-        protected:
+-            status_t perform_boolean(rt_debug_t *shared)
+-            {
+-                if (pScene->num_objects() <= 0)
+-                    return STATUS_OK;
+-
+-                rt_mesh_t mesh;
+-                mesh.set_debug_context(shared, &shared->trace);
+-
+-                Object3D *obj = pScene->object(0);
+-                status_t res = mesh.init(obj, 0, obj->matrix());
+-                if (res != STATUS_OK)
+-                    return res;
+-
+-                for (size_t i=1, n=pScene->num_objects(); i<n; ++i)
+-                {
+-                    obj = pScene->object(i);
+-                    res = mesh.subtract(obj, i, obj->matrix());
+-                    if (res != STATUS_OK)
+-                        return res;
+-                }
+-
+-                return STATUS_OK;
+-            }
+-
+-            status_t    update_view()
+-            {
+-                v_vertex3d_t v[3];
+-                status_t res = STATUS_OK;
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // List of ignored and matched triangles
+-                rt_debug_t global;
+-                global.breakpoint   = nTrace;
+-                global.step         = 0;
+-
+-                // Perform raytrace
+-                res     = perform_boolean(&global);
+-                if (res == STATUS_BREAKPOINT)
+-                {
+-                    pView->swap(&global.trace);
+-                    res         = STATUS_OK;
+-                }
+-
+-                if (!bDrawDebug)
+-                    pView->clear_all();
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // Build final scene from matched and ignored items
+-                if (bDrawIgnored)
+-                {
+-                    for (size_t i=0, m=global.ignored.size(); i < m; ++i)
+-                        pView->add_triangle_1c(global.ignored.at(i), &C_GRAY);
+-                }
+-
+-                if (bDrawMatched)
+-                {
+-                    for (size_t i=0, m=global.matched.size(); i < m; ++i)
+-                    {
+-                        v_triangle3d_t *t = global.matched.at(i);
+-                        v[0].p     = t->p[0];
+-                        v[0].n     = t->n[0];
+-                        v[0].c     = C_RED;
+-
+-                        v[1].p     = t->p[1];
+-                        v[1].n     = t->n[1];
+-                        v[1].c     = C_GREEN;
+-
+-                        v[2].p     = t->p[2];
+-                        v[2].n     = t->n[2];
+-                        v[2].c     = C_BLUE;
+-
+-                        pView->add_triangle(v);
+-                    }
+-                }
+-
+-                global.ignored.flush();
+-                global.matched.flush();
+-
+-                return res;
+-            }
+-    };
+-
+-    MTEST_MAIN
+-    {
+-        const char *scene_file = (argc < 1) ? "res/test/3d/cross.obj" : argv[0];
+-
+-        // Load scene
+-        Scene3D s;
+-        View3D v;
+-        status_t res = Model3DFile::load(&s, scene_file, true);
+-        MTEST_ASSERT_MSG(res == STATUS_OK, "Error loading scene from file %s", scene_file);
+-
+-        // Initialize renderer
+-        Renderer r(&s, &v);
+-        MTEST_ASSERT_MSG(r.init() == STATUS_OK, "Error initializing renderer");
+-        r.run();
+-        r.destroy();
+-
+-        // Destroy scene
+-        s.destroy();
+-    }
+-
+-MTEST_END
+-
+-#endif
+diff --git a/src/testing/mtest/3d/bsp_context.cpp b/src/testing/mtest/3d/bsp_context.cpp
+index de54427..f7b7a34 100644
+--- a/src/testing/mtest/3d/bsp_context.cpp
++++ b/src/testing/mtest/3d/bsp_context.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/reflections3d.cpp b/src/testing/mtest/3d/reflections3d.cpp
+index e250444..367f86c 100644
+--- a/src/testing/mtest/3d/reflections3d.cpp
++++ b/src/testing/mtest/3d/reflections3d.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/ui/ws/x11/X11Display.cpp b/src/ui/ws/x11/X11Display.cpp
+index d85db51..987e8a9 100644
+--- a/src/ui/ws/x11/X11Display.cpp
++++ b/src/ui/ws/x11/X11Display.cpp
+@@ -23,7 +23,7 @@
+ 
+ #ifdef USE_X11_DISPLAY
+ 
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ 
+@@ -233,7 +233,7 @@ namespace lsp
+                 while (!atomic_cas(&hLock, 0, 1)) { /* Wait */ }
+ 
+                 // Dispatch errors between Displays
+-                for (X11Display *dp = pHandlers; dp != NULL; ++dp)
++                for (X11Display *dp = pHandlers; dp != NULL; dp = dp->pNextHandler)
+                     if (dp->pDisplay == dpy)
+                         dp->handle_error(ev);
+ 
diff --git a/srcpkgs/lsp-plugins-lv2/files/02-make-verbose.patch b/srcpkgs/lsp-plugins-lv2/files/02-make-verbose.patch
new file mode 100644
index 000000000000..d6c4f6ce2f92
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/files/02-make-verbose.patch
@@ -0,0 +1,1082 @@
+diff --git a/Makefile b/Makefile
+index 2d9cb79..79ddcc6 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ # Common definitions
+ RELEASE_TEXT            = LICENSE.txt README.txt CHANGELOG.txt
+ RELEASE_SRC             = $(RELEASE_TEXT) src build-*.sh include res Makefile release.sh
+@@ -166,24 +172,24 @@ compile_info:
+ 	@echo "-------------------------------------------------------------------------------"
+ 
+ compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@mkdir -p $(CFGDIR)
+-	@test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
+-	@test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
+-	@test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
+-	@test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++	mkdir -p $(OBJDIR)/src
++	mkdir -p $(CFGDIR)
++	test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
++	test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
++	test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
++	test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Build OK"
+ 	
+ test_compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++	mkdir -p $(OBJDIR)/src
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
+ clean:
+-	@-rm -rf $(BUILDDIR)
+-	@-rm -rf $(TESTDIR)
+-	@-rm -rf $(CFGDIR)
++	-rm -rf $(BUILDDIR)
++	-rm -rf $(TESTDIR)
++	-rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+ 
+ # Build targets
+@@ -209,63 +215,63 @@ install: $(INSTALLATIONS)
+ 
+ install_ladspa: all
+ 	@echo "Installing LADSPA plugins to $(DESTDIR)$(LADSPA_PATH)/"
+-	@mkdir -p $(DESTDIR)$(LADSPA_PATH)
+-	@$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
++	mkdir -p $(DESTDIR)$(LADSPA_PATH)
++	$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
+ 	
+ install_lv2: all
+ 	@echo "Installing LV2 plugins to $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
+-	@$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
++	$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+ 	
+ install_vst: all
+ 	@echo "Installing VST plugins to $(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+-	@$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
++	$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+ 
+ install_jack: all
+ 	@echo "Installing JACK core to $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
++	$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+ 	@echo "Installing JACK standalone plugins to $(DESTDIR)$(BIN_PATH)"
+-	@mkdir -p "$(DESTDIR)$(BIN_PATH)"
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
++	mkdir -p "$(DESTDIR)$(BIN_PATH)"
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
+ 
+ install_xdg:
+ 	@echo "Installing desktop icons to $(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
+-	@mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
+-	@cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
+-	@cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
+-	@cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
+-	@cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
++	mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
++	cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
++	cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
++	cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
++	cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
+ 
+ install_doc: all
+ 	@echo "Installing documentation to $(DESTDIR)$(DOC_PATH)"
+-	@mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+ # Release targets
+ dbg_release: export CFLAGS        += -DLSP_TRACE -O2
+@@ -279,67 +285,67 @@ release: $(RELEASES)
+ 
+ release_prepare: all
+ 	@echo "Releasing plugins for architecture $(BUILD_PROFILE)"
+-	@mkdir -p $(RELEASE)
+-	@mkdir -p $(DESTDIR)
++	mkdir -p $(RELEASE)
++	mkdir -p $(DESTDIR)
+ 	
+ release_ladspa: DESTDIR=$(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_ladspa: | release_prepare install_ladspa
+ 	@echo "Releasing LADSPA binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_lv2: DESTDIR=$(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_lv2: | release_prepare install_lv2
+ 	@echo "Releasing LV2 binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_vst: DESTDIR=$(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_vst: | release_prepare install_vst
+ 	@echo "Releasing VST binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_jack: DESTDIR=$(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_jack: | release_prepare install_jack
+ 	@echo "Releasing JACK binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 
+ release_profile: DESTDIR=$(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_profile: | release_prepare
+ 	@echo "Releasing PROFILE binaries"
+-	@$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ 
+ release_src: DESTDIR=$(RELEASE)/$(SRC_ID)
+ release_src: | release_prepare
+ 	@echo "Releasing source code binaries"
+-	@mkdir -p $(DESTDIR)
+-	@mkdir -p $(DESTDIR)/scripts
+-	@cp -R $(RELEASE_SRC) $(DESTDIR)/
+-	@cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	mkdir -p $(DESTDIR)/scripts
++	cp -R $(RELEASE_SRC) $(DESTDIR)/
++	cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
++	rm -rf $(DESTDIR)
+ 
+ release_doc: DESTDIR=$(RELEASE)/$(DOC_ID)
+ release_doc: | release_prepare
+ 	@echo "Releasing documentation"
+-	@mkdir -p $(DESTDIR)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
++	rm -rf $(DESTDIR)
+ 
+ # Unrelease target
+ unrelease: clean
+-	@-rm -rf $(RELEASE)
++	-rm -rf $(RELEASE)
+ 	@echo "Unrelease OK"
+ 
+ # Uninstall target
+@@ -348,41 +354,41 @@ uninstall: $(UNINSTALLATIONS)
+ 	
+ uninstall_ladspa:
+ 	@echo "Uninstalling LADSPA"
+-	@-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
++	-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
+ 	
+ uninstall_lv2:
+ 	@echo "Uninstalling LV2"
+-	@-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
++	-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
+ 	
+ uninstall_vst:
+ 	@echo "Uninstalling VST"
+-	@-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
++	-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
++	-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
++	-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
+ 	
+ uninstall_jack:
+ 	@echo "Uninstalling JACK"
+-	@-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
+-	@-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
++	-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
++	-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
++	-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
++	-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
+ 
+ uninstall_xdg:
+ 	@echo "Uninstalling desktop icons"
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
+-	@-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
++	-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
++	-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
+ 
+ uninstall_doc:
+ 	@echo "Uninstalling DOC"
+-	@-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+diff --git a/TODO.txt b/TODO.txt
+index 3bb3db8..f8562ef 100644
+--- a/TODO.txt
++++ b/TODO.txt
+@@ -32,6 +32,7 @@
+ 
+ * Fixed X11 error handling routine that could crash under certain conditions.
+ * Better support for musl libc (contributed by Artur Sinila).
++* Added support of VERBOSE parameter for build system (contributed by Artur Sinila).
+ 
+ *******************************************************************************
+ * New plugin check list before release
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 1fb917e..565dbb1 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -25,7 +25,6 @@ CXX                      ?= $(TOOL_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
+ 
+-MAKE_OPTS                 = -s
+ CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+@@ -62,7 +61,6 @@ export CXX
+ export PHP
+ export LD
+ 
+-export MAKE_OPTS
+ export CFLAGS
+ export CXXFLAGS
+ export SO_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index 8546191..d960ad8 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+@@ -58,6 +64,7 @@ ifeq ($(NEED_UI),1)
+   CONTAINER_DEPS         += $(OBJ_UI_CORE) $(OBJ_RES_CORE) rendering
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all $(MODULES)
+ 
+ all: $(MODULES)
+@@ -67,8 +74,8 @@ target: all
+ # Rules
+ $(SUBDIRS):
+ 	@echo "Building $(@)"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+@@ -93,10 +100,10 @@ $(OBJ_TESTING_CORE): test testing rendering
+ 
+ $(OBJ_RES_CORE): $(OBJ_CORE) $(UTL_RESGEN)
+ 	@echo "Generating builtin resources"
+-	@mkdir -p $(OBJDIR)/res
+-	@$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	mkdir -p $(OBJDIR)/res
++	$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
++	-rm gmon.out >/dev/null 2>&1
++	$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ # Target dependencies
+ container: $(CONTAINER_DEPS)
+@@ -108,18 +115,18 @@ doc: utils $(PHP_PLUGINS)
+ # Additional processing
+ $(PHP_PLUGINS): $(UTL_GENPHP)
+ 	@echo "Generating PHP file $(notdir $(PHP_PLUGINS))"
+-	@$(UTL_GENPHP) $(PHP_PLUGINS)
++	$(UTL_GENPHP) $(PHP_PLUGINS)
+ 
+ vst_stub: $(UTL_VSTMAKE)
+ 	@echo "Building VST stub"
+-	@mkdir -p $(OBJDIR)/vst
+-	@$(UTL_VSTMAKE) $(OBJDIR)/vst
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
++	mkdir -p $(OBJDIR)/vst
++	$(UTL_VSTMAKE) $(OBJDIR)/vst
++	-rm gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
+ 
+ jack_stub: $(UTL_JACKMAKE)
+ 	@echo "Building JACK stub"
+-	@mkdir -p $(OBJDIR)/jack
+-	@$(UTL_JACKMAKE) $(OBJDIR)/jack
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
++	mkdir -p $(OBJDIR)/jack
++	$(UTL_JACKMAKE) $(OBJDIR)/jack
++	-rm gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
+diff --git a/src/container/Makefile b/src/container/Makefile
+index 8aa8196..23a2e7a 100644
+--- a/src/container/Makefile
++++ b/src/container/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ OBJ_HELPERS             = $(OBJDIR)/CairoCanvas.o
+@@ -53,46 +59,47 @@ ifeq ($(VST_UI),1)
+   X_VST_LIBS             += $(UI_LIBS)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(MODULES)
+ 
+ $(OBJ_HELPERS):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
+ 
+ $(LIB_LADSPA):
+ 	@echo "  $(CXX) ladspa.cpp"
+-	@$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_LADSPA))"
+-	@$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
++	$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
+ 
+ $(LIB_LV2): $(X_LV2_DEPS)
+ 	@echo "  $(CXX) lv2.cpp"
+-	@$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
+-	@echo "  $(CXX) $(notdir $(X_LIB_LV2))"
+-	@$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
++	$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
++	@echo "  $(CXX) $(notdir $(LIB_LV2))"
++	$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
+ 
+ $(LIB_VST):
+ 	@echo "  $(CXX) vst.cpp"
+-	@$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_VST))"
+-	@$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
++	$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
+ 
+ $(LIB_JACK): $(OBJ_HELPERS)
+ 	@echo "  $(CXX) jack.cpp"
+-	@$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
++	$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
+ 	@echo "  $(CXX) $(notdir $(LIB_JACK))"
+-	@$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
++	$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
+ 
+ $(BIN_PROFILE): $(LIB_JACK)
+ 	@echo "  $(CXX) profile.cpp"
+-	@$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_PROFILE))"
+-	@$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
++	$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
+ 
+ $(BIN_TEST): $(LIB_JACK)
+ 	@echo "  $(CXX) test.cpp"
+-	@$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_TEST))"
+-	@$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
++	$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
+diff --git a/src/core/Makefile b/src/core/Makefile
+index a9ce1a5..3ad14a5 100644
+--- a/src/core/Makefile
++++ b/src/core/Makefile
+@@ -1,18 +1,25 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(SNDFILE_HEADERS)
+ LIBS                    = $(PTHREAD_LIBS)
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(OBJ_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
+ 
+ $(OBJ_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_CORE))"
+-	@$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
++	$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
+diff --git a/src/doc/Makefile b/src/doc/Makefile
+index aac73bf..f7f18a1 100644
+--- a/src/doc/Makefile
++++ b/src/doc/Makefile
+@@ -1,6 +1,13 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ PHPDIR      = $(BUILDDIR)/src/doc
+ HTMLDIR     = $(BUILDDIR)/html
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -8,14 +15,14 @@ target: all
+ # Common rules
+ $(PHPDIR)/Makefile:
+ 	@echo "Preparing PHP documentation generator"
+-	@mkdir -p $(PHPDIR)
+-	@mkdir -p $(HTMLDIR)
+-	@cp -rf * $(PHPDIR)/
+-	@cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
+-	@cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
+-	@cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
+-	@$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
++	mkdir -p $(PHPDIR)
++	mkdir -p $(HTMLDIR)
++	cp -rf * $(PHPDIR)/
++	cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
++	cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
++	cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
++	$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
+ 
+ all: $(PHPDIR)/Makefile
+ 	@echo "Generating HTML documentation"
+-	@$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
++	$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
+diff --git a/src/dsp/Makefile b/src/dsp/Makefile
+index f3d9ab1..aac8007 100644
+--- a/src/dsp/Makefile
++++ b/src/dsp/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ NATIVE_IMPL             = $(OBJDIR)/native.o
+ 
+ X86_IMPL                = $(OBJDIR)/x86.o
+@@ -51,6 +57,7 @@ ifeq ($(BUILD_PROFILE), aarch64)
+ LINK_OBJECTS           += $(AARCH64_IMPL) $(ASIMD_IMPL)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -59,41 +66,41 @@ all: $(OBJ_DSP)
+ 
+ $(OBJ_DSP): $(LINK_OBJECTS)
+ 	@echo "  $(LD) $(notdir $(OBJ_DSP))"
+-	@$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
++	$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
+ 
+ $(DSP_IMPL) $(BITS_IMPL) $(NATIVE_IMPL) $(X86_IMPL) $(ARM_IMPL) $(AARCH64_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	
+ $(SSE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE3_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE4_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
+ 	
+ $(NEON_D32_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
+ 	
+ $(ASIMD_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
+ 
+diff --git a/src/metadata/Makefile b/src/metadata/Makefile
+index 201f89a..403f38a 100644
+--- a/src/metadata/Makefile
++++ b/src/metadata/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -10,8 +16,8 @@ target: all
+ 
+ $(OBJ_METADATA): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_METADATA))"
+-	@$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+diff --git a/src/plugins/Makefile b/src/plugins/Makefile
+index 1f197dc..85963ba 100644
+--- a/src/plugins/Makefile
++++ b/src/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,8 +14,8 @@ all:  $(OBJ_PLUGINS)
+ 
+ $(OBJ_PLUGINS): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(OBJ_PLUGINS))"
+-	@$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
++	$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
+diff --git a/src/rendering/Makefile b/src/rendering/Makefile
+index 897e327..65f3237 100644
+--- a/src/rendering/Makefile
++++ b/src/rendering/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ BASE_IMPL             	= $(OBJDIR)/base_backend.o
+ 
+ GLX_IMPL                = $(OBJDIR)/glx/backend.o $(OBJDIR)/glx/factory.o
+@@ -20,15 +26,15 @@ all: $(MODULES)
+ 
+ $(LIB_R3D_GLX): $(BASE_IMPL) $(GLX_IMPL)
+ 	@echo "  $(CXX) $(notdir $(LIB_R3D_GLX))"
+-	@$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
++	$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
+ 
+ $(BASE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 	
+ $(GLX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $(@))
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
++	mkdir -p $(dir $(@))
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
+ 
+ 
+diff --git a/src/test/Makefile b/src/test/Makefile
+index e8016e1..a89366e 100644
+--- a/src/test/Makefile
++++ b/src/test/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TEST_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TEST_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TEST_CORE))"
+-	@$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/testing/Makefile b/src/testing/Makefile
+index 705913d..d048065 100644
+--- a/src/testing/Makefile
++++ b/src/testing/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TESTING_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TESTING_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TESTING_CORE))"
+-	@$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/ui/Makefile b/src/ui/Makefile
+index 503111d..eb1e4c5 100644
+--- a/src/ui/Makefile
++++ b/src/ui/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= ws tk ctl plugins
+@@ -8,15 +14,15 @@ PACKAGES                = $(OBJ_WS_CORE) $(OBJ_TK_CORE) $(OBJ_CTL_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_UI_CORE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_UI_CORE)
+diff --git a/src/ui/ctl/Makefile b/src/ui/ctl/Makefile
+index 3f727db..692fe9d 100644
+--- a/src/ui/ctl/Makefile
++++ b/src/ui/ctl/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_CTL_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_CTL_CORE) $(SUBDIRS)
+diff --git a/src/ui/plugins/Makefile b/src/ui/plugins/Makefile
+index 8f8db8f..0e6c3d8 100644
+--- a/src/ui/plugins/Makefile
++++ b/src/ui/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_PLUGIN_UIS): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_PLUGIN_UIS) $(SUBDIRS)
+diff --git a/src/ui/tk/Makefile b/src/ui/tk/Makefile
+index 8700f63..cfb4c78 100644
+--- a/src/ui/tk/Makefile
++++ b/src/ui/tk/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -6,11 +12,11 @@ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_TK_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_TK_CORE)
+diff --git a/src/ui/ws/Makefile b/src/ui/ws/Makefile
+index 1109752..b9836d8 100644
+--- a/src/ui/ws/Makefile
++++ b/src/ui/ws/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= x11
+@@ -8,15 +14,15 @@ all: $(OBJ_WS_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ $(OBJ_WS_CORE): $(FILES) $(OBJ_WS_X11_CORE)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
++	$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
+ 
+ $(OBJ_WS_X11_CORE): $(SUBDIRS)
+diff --git a/src/ui/ws/x11/Makefile b/src/ui/ws/x11/Makefile
+index b99e93d..7bffca3 100644
+--- a/src/ui/ws/x11/Makefile
++++ b/src/ui/ws/x11/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(XLIB_HEADERS) $(CAIRO_HEADERS)
+@@ -8,9 +14,9 @@ all: $(OBJ_WS_X11_CORE)
+ 
+ $(OBJ_WS_X11_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
++	$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index 88b3739..fbddcaa 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -44,32 +50,32 @@ target: all
+ # Common rules
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+ $(UTL_GENTTL): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	@$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++	$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+ $(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	@$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	@$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_GENPHP): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	@$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_RESGEN): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	@$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 
+-	
+\ No newline at end of file
++	
+diff --git a/src/utils/jack_genmake.cpp b/src/utils/jack_genmake.cpp
+index 09974b0..3272ad8 100644
+--- a/src/utils/jack_genmake.cpp
++++ b/src/utils/jack_genmake.cpp
+@@ -97,6 +97,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%=%%.cpp)\n");
+@@ -107,11 +112,11 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
+ 
+         fprintf(out, "install: $(FILES)\n");
+-        fprintf(out, "\t@$(INSTALL) $(FILES) $(TARGET_PATH)/");
++        fprintf(out, "\t$(INSTALL) $(FILES) $(TARGET_PATH)/");
+ 
+         // Close file
+         fclose(out);
+diff --git a/src/utils/vst_genmake.cpp b/src/utils/vst_genmake.cpp
+index 9eeedeb..f47f783 100644
+--- a/src/utils/vst_genmake.cpp
++++ b/src/utils/vst_genmake.cpp
+@@ -100,6 +100,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%.so, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%.so=%%.cpp)\n");
+@@ -110,8 +115,8 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
+ 
+         // Close file
+         fclose(out);
diff --git a/srcpkgs/lsp-plugins-lv2/files/03-improve-cross.patch b/srcpkgs/lsp-plugins-lv2/files/03-improve-cross.patch
new file mode 100644
index 000000000000..ec096a4184e3
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/files/03-improve-cross.patch
@@ -0,0 +1,565 @@
+diff --git a/.gitignore b/.gitignore
+index 5bc0ecb..4a1edec 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -3,6 +3,7 @@
+ /design/*
+ /.builconfig/*
+ /.build/*
++/.host_build/*
+ /.buildconfig/*
+ /.test/*
+ /.release/*
+diff --git a/Makefile b/Makefile
+index 79ddcc6..ce3de4e 100644
+--- a/Makefile
++++ b/Makefile
+@@ -24,8 +24,10 @@ export RESDIR           = ${CURDIR}/res
+ export RELEASE          = ${CURDIR}/.release
+ export RELEASE_BIN      = $(RELEASE)/$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ export BUILDDIR         = ${CURDIR}/.build
++export HOST_BUILDDIR    = ${CURDIR}/.host_build
+ export TESTDIR          = ${CURDIR}/.test
+ OBJDIR                  = $(BUILDDIR)
++export HOST_OBJDIR      = $(HOST_BUILDDIR)
+ 
+ # Installation locations
+ BIN_PATH               ?= $(PREFIX)/bin
+@@ -41,20 +43,23 @@ VST_PATH                = $(LIB_PATH)/vst
+ export BASEDIR          = ${CURDIR}
+ 
+ # Objects
+-export OBJ_CORE         = $(OBJDIR)/core.o
+-export OBJ_DSP          = $(OBJDIR)/dsp.o
+-export OBJ_CTL_CORE     = $(OBJDIR)/ctl_core.o
+-export OBJ_TK_CORE      = $(OBJDIR)/tk_core.o
+-export OBJ_WS_CORE      = $(OBJDIR)/ws_core.o
+-export OBJ_WS_X11_CORE  = $(OBJDIR)/ws_x11_core.o
+-export OBJ_UI_CORE      = $(OBJDIR)/ui_core.o
+-export OBJ_RES_CORE     = $(OBJDIR)/res_core.o
+-export OBJ_TEST_CORE    = $(OBJDIR)/test_core.o
+-export OBJ_TESTING_CORE = $(OBJDIR)/testing_core.o
+-export OBJ_PLUGINS      = $(OBJDIR)/plugins.o
+-export OBJ_PLUGIN_UIS	= $(OBJDIR)/plugin_uis.o
+-export OBJ_METADATA     = $(OBJDIR)/metadata.o
+-export OBJ_FILES        = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
++export OBJ_CORE          = $(OBJDIR)/core.o
++export HOST_OBJ_CORE     = $(HOST_OBJDIR)/core.o
++export OBJ_DSP           = $(OBJDIR)/dsp.o
++export HOST_OBJ_DSP      = $(HOST_OBJDIR)/dsp.o
++export OBJ_CTL_CORE      = $(OBJDIR)/ctl_core.o
++export OBJ_TK_CORE       = $(OBJDIR)/tk_core.o
++export OBJ_WS_CORE       = $(OBJDIR)/ws_core.o
++export OBJ_WS_X11_CORE   = $(OBJDIR)/ws_x11_core.o
++export OBJ_UI_CORE       = $(OBJDIR)/ui_core.o
++export OBJ_RES_CORE      = $(OBJDIR)/res_core.o
++export OBJ_TEST_CORE     = $(OBJDIR)/test_core.o
++export OBJ_TESTING_CORE  = $(OBJDIR)/testing_core.o
++export OBJ_PLUGINS       = $(OBJDIR)/plugins.o
++export OBJ_PLUGIN_UIS	 = $(OBJDIR)/plugin_uis.o
++export OBJ_METADATA      = $(OBJDIR)/metadata.o
++export HOST_OBJ_METADATA = $(HOST_OBJDIR)/metadata.o
++export OBJ_FILES         = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
+ 
+ # Libraries
+ export LIB_LADSPA       = $(OBJDIR)/$(ARTIFACT_ID)-ladspa.so
+@@ -68,11 +73,14 @@ export BIN_PROFILE      = $(OBJDIR)/$(ARTIFACT_ID)-profile
+ export BIN_TEST         = $(OBJDIR)/$(ARTIFACT_ID)-test
+ 
+ # Utils
+-export UTL_GENTTL       = $(OBJDIR)/lv2_genttl.exe
+-export UTL_VSTMAKE      = $(OBJDIR)/vst_genmake.exe
+-export UTL_JACKMAKE     = $(OBJDIR)/jack_genmake.exe
+-export UTL_GENPHP       = $(OBJDIR)/gen_php.exe
+-export UTL_RESGEN       = $(OBJDIR)/gen_resources.exe
++ifeq ($(BUILD_SYSTEM),Windows)
++  BIN_SUFFIX := .exe
++endif
++export UTL_GENTTL       = $(HOST_OBJDIR)/lv2_genttl$(BIN_SUFFIX)
++export UTL_VSTMAKE      = $(HOST_OBJDIR)/vst_genmake$(BIN_SUFFIX)
++export UTL_JACKMAKE     = $(HOST_OBJDIR)/jack_genmake$(BIN_SUFFIX)
++export UTL_GENPHP       = $(HOST_OBJDIR)/gen_php$(BIN_SUFFIX)
++export UTL_RESGEN       = $(HOST_OBJDIR)/gen_resources$(BIN_SUFFIX)
+ export UTL_FILES        = $(UTL_GENTTL) $(UTL_VSTMAKE) $(UTL_GENPHP) $(UTL_RESGEN)
+ 
+ # Files
+@@ -104,6 +112,7 @@ all: export CXXFLAGS        += -O2 -DLSP_NO_EXPERIMENTAL
+ all: export EXE_FLAGS       += -pie -fPIE
+ all: compile
+ 
++
+ experimental: export CFLAGS += -O2
+ experimental: export CXXFLAGS += -O2
+ experimental: compile
+@@ -161,17 +170,17 @@ profile: compile
+ compile_info:
+ 	@echo "-------------------------------------------------------------------------------"
+ 	@echo "Building binaries"
+-	@echo "  target architecture : $(BUILD_PROFILE)"
+-	@echo "  target platform     : $(BUILD_PLATFORM)"
+-	@echo "  target system       : $(BUILD_SYSTEM)"
+-	@echo "  compiler            : $(BUILD_COMPILER)"
+-	@echo "  modules             : $(BUILD_MODULES)"
+-	@echo "  UI                  : LV2=$(LV2_UI), VST=$(VST_UI)"
+-	@echo "  3D rendering        : $(BUILD_R3D_BACKENDS)"
+-	@echo "  build directory     : $(OBJDIR)"
++	@echo "  platform             : $(BUILD_PLATFORM)"
++	@echo "  system               : $(BUILD_SYSTEM)"
++	@echo "  target compiler      : $(CXX)"
++	@echo "  target architecture  : $(BUILD_PROFILE)"
++	@echo "  modules              : $(BUILD_MODULES)"
++	@echo "  UI                   : LV2=$(LV2_UI), VST=$(VST_UI)"
++	@echo "  3D rendering         : $(BUILD_R3D_BACKENDS)"
++	@echo "  build directory      : $(OBJDIR)"
+ 	@echo "-------------------------------------------------------------------------------"
+ 
+-compile: | compile_info
++compile: utils | compile_info
+ 	mkdir -p $(OBJDIR)/src
+ 	mkdir -p $(CFGDIR)
+ 	test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
+@@ -181,13 +190,31 @@ compile: | compile_info
+ 	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Build OK"
+ 	
+-test_compile: | compile_info
++test_compile: utils | compile_info
+ 	mkdir -p $(OBJDIR)/src
+ 	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
++utils: export BUILD_PROFILE=$(HOST_BUILD_PROFILE)
++utils: export OBJDIR=$(HOST_OBJDIR)
++utils: export OBJ_CORE=$(HOST_OBJ_CORE)
++utils: export OBJ_DSP=$(HOST_OBJ_DSP)
++utils: export OBJ_METADATA=$(HOST_OBJ_METADATA)
++utils: export CXX=$(HOST_CXX)
++utils: export CXXFLAGS=$(HOST_CXXFLAGS)
++utils: export LD=$(HOST_LD)
++utils: export SNDFILE_HEADERS=$(HOST_SNDFILE_HEADERS)
++utils: export SNDFILE_LIBS=$(HOST_SNDFILE_LIBS)
++utils: export LV2_HEADERS=$(HOST_LV2_HEADERS)
++utils: export LV2_LIBS=$(HOST_LV2_LIBS)
++utils: | compile_info
++	mkdir -p $(HOST_OBJDIR)/src/utils
++	$(MAKE) $(MAKE_OPTS) -C src utils
++	@echo "Utils Build OK"
++
+ clean:
+ 	-rm -rf $(BUILDDIR)
++	-rm -rf $(HOST_BUILDDIR)
+ 	-rm -rf $(TESTDIR)
+ 	-rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+diff --git a/scripts/make/configure.mk b/scripts/make/configure.mk
+index 09aee9a..6951c5e 100644
+--- a/scripts/make/configure.mk
++++ b/scripts/make/configure.mk
+@@ -14,7 +14,8 @@ ifndef BUILD_R3D_BACKENDS
+   BUILD_R3D_BACKENDS     := $(shell if (test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" )  then cat "$(CFGDIR)/$(R3D_BACKENDS_FILE)" 2>/dev/null; else echo "glx"; fi;)
+ endif
+ 
+-BUILD_COMPILER         := $(shell $(CC) --version | head -n 1 || echo "unknown")
++BUILD_COMPILER         := $(shell $(CXX) --version | head -n 1 || echo "unknown")
++HOST_BUILD_COMPILER    := $(shell $(HOST_CXX) --version | head -n 1 || echo "unknown")
+ 
+ export BUILD_MODULES
+ export BUILD_R3D_BACKENDS
+@@ -23,7 +24,7 @@ export BUILD_R3D_BACKENDS
+ INSTALLATIONS           =
+ UNINSTALLATIONS         = uninstall_xdg
+ RELEASES                =
+-INCLUDE                 = -I"${CURDIR}/include"
++INCLUDE                 := -I"${CURDIR}/include"
+ 
+ ifeq ($(findstring ladspa,$(BUILD_MODULES)),ladspa)
+   INSTALLATIONS          += install_ladspa
+@@ -63,61 +64,62 @@ LD_ARCH         =
+ CC_ARCH         =
+ 
+ # Build profile
+-ifeq ($(BUILD_PROFILE),i586)
+-  CC_ARCH          = -m32
+-  ifeq ($(BUILD_PLATFORM), Linux)
+-    LD_ARCH          = -m elf_i386
++ifeq ($(SKIP_CC_LD_ARCH),)
++  ifeq ($(BUILD_PROFILE),i586)
++    CC_ARCH          = -m32
++    ifeq ($(BUILD_PLATFORM), Linux)
++      LD_ARCH          = -m elf_i386
++    endif
++    ifeq ($(BUILD_PLATFORM), BSD)
++      LD_ARCH          = -m elf_i386_fbsd
++    endif
+   endif
++  
++  ifeq ($(BUILD_PROFILE),x86_64)
++    CC_ARCH          = -m64
++    ifeq ($(BUILD_PLATFORM), Linux)
++      LD_ARCH          = -m elf_x86_64
++    endif
++    ifeq ($(BUILD_PLATFORM), BSD)
++      LD_ARCH          = -m elf_x86_64_fbsd
++    endif
++  endif
++  
+   ifeq ($(BUILD_PLATFORM), BSD)
+-    LD_ARCH          = -m elf_i386_fbsd
++    INCLUDE          += -I/usr/local/include
++    ifeq ($(BUILD_PROFILE),arm)
++      CC_ARCH          = -marm
++      ifneq ($(LD_PATH),)
++        CC_ARCH          += -Wl,-rpath=$(LD_PATH)
++      endif
++    endif
+   endif
+-endif
+-
+-ifeq ($(BUILD_PROFILE),x86_64)
+-  CC_ARCH          = -m64
+-  ifeq ($(BUILD_PLATFORM), Linux)
+-    LD_ARCH          = -m elf_x86_64
++  
++  ifeq ($(BUILD_PROFILE),armv6a)
++    CC_ARCH          = -march=armv6-a -marm
+   endif
+-  ifeq ($(BUILD_PLATFORM), BSD)
+-    LD_ARCH          = -m elf_x86_64_fbsd
++  
++  ifeq ($(BUILD_PROFILE),armv7a)
++    CC_ARCH          = -march=armv7-a -marm
+   endif
+-endif
+-
+-ifeq ($(BUILD_PLATFORM), BSD)
+-  INCLUDE          += -I/usr/local/include
+-  ifeq ($(BUILD_PROFILE),arm)
++  
++  ifeq ($(BUILD_PROFILE),armv7ve)
++    CC_ARCH          = -march=armv7ve -marm
++  endif
++  
++  ifeq ($(BUILD_PROFILE),arm32)
+     CC_ARCH          = -marm
+-    ifneq ($(LD_PATH),)
+-      CC_ARCH          += -Wl,-rpath=$(LD_PATH)
+-    endif
++  endif
++  
++  ifeq ($(BUILD_PROFILE),armv8a)
++    CC_ARCH          = -march=armv7-a -marm
++  endif
++  
++  ifeq ($(BUILD_PROFILE),aarch64)
++    CC_ARCH          = -march=armv8-a
+   endif
+ endif
+ 
+-ifeq ($(BUILD_PROFILE),armv6a)
+-  CC_ARCH          = -march=armv6-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv7a)
+-  CC_ARCH          = -march=armv7-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv7ve)
+-  CC_ARCH          = -march=armv7ve -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),arm32)
+-  CC_ARCH          = -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv8a)
+-  CC_ARCH          = -march=armv7-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),aarch64)
+-  CC_ARCH          = -march=armv8-a
+-endif
+-
+-
+ export CC_ARCH
+ export LD_ARCH
+ export LD_PATH
+@@ -127,21 +129,25 @@ export INCLUDE
+ ifeq ($(BUILD_SYSTEM),Windows)
+ # TODO
+ else
+-  export PTHREAD_LIBS     = -lpthread
+-  export ICONV_LIBS       = -liconv
+-  export MATH_LIBS        = -lm
+-  export DL_LIBS          = -ldl
+-  export CAIRO_HEADERS    = $(shell pkg-config --cflags cairo)
+-  export CAIRO_LIBS       = $(shell pkg-config --libs cairo)
+-  export XLIB_HEADERS     = $(shell pkg-config --cflags x11)
+-  export XLIB_LIBS        = $(shell pkg-config --libs x11)
+-  export LV2_HEADERS      = $(shell pkg-config --cflags lv2)
+-  export LV2_LIBS         = $(shell pkg-config --libs lv2)
+-  export SNDFILE_HEADERS  = $(shell pkg-config --cflags sndfile)
+-  export SNDFILE_LIBS     = $(shell pkg-config --libs sndfile)
+-  export JACK_HEADERS     = $(shell pkg-config --cflags jack)
+-  export JACK_LIBS        = $(shell pkg-config --libs jack)
+-  export OPENGL_HEADERS   = $(shell pkg-config --cflags gl 2>/dev/null || echo "")
+-  export OPENGL_LIBS      = $(shell pkg-config --libs gl 2>/dev/null || echo "")
++  export PTHREAD_LIBS         = -lpthread
++  export ICONV_LIBS           = -liconv
++  export MATH_LIBS            = -lm
++  export DL_LIBS              = -ldl
++  export CAIRO_HEADERS        = $(shell $(PKG_CONFIG) --cflags cairo)
++  export CAIRO_LIBS           = $(shell $(PKG_CONFIG) --libs cairo)
++  export XLIB_HEADERS         = $(shell $(PKG_CONFIG) --cflags x11)
++  export XLIB_LIBS            = $(shell $(PKG_CONFIG) --libs x11)
++  export LV2_HEADERS          = $(shell $(PKG_CONFIG) --cflags lv2)
++  export LV2_HEADERS          = $(shell $(PKG_CONFIG) --libs lv2)
++  export SNDFILE_HEADERS      = $(shell $(PKG_CONFIG) --cflags sndfile)
++  export SNDFILE_LIBS         = $(shell $(PKG_CONFIG) --libs sndfile)
++  export JACK_HEADERS         = $(shell $(PKG_CONFIG) --cflags jack)
++  export JACK_LIBS            = $(shell $(PKG_CONFIG) --libs jack)
++  export OPENGL_HEADERS       = $(shell $(PKG_CONFIG) --cflags gl 2>/dev/null || echo "")
++  export OPENGL_LIBS          = $(shell $(PKG_CONFIG) --libs gl 2>/dev/null || echo "")
++  export HOST_SNDFILE_HEADERS = $(shell $(HOST_PKG_CONFIG) --cflags sndfile)
++  export HOST_SNDFILE_LIBS    = $(shell $(HOST_PKG_CONFIG) --libs sndfile)
++  export HOST_LV2_HEADERS     = $(shell $(HOST_PKG_CONFIG) --cflags lv2)
++  export HOST_LV2_LIBS        = $(shell $(HOST_PKG_CONFIG) --libs lv2)
+ endif
+ 
+diff --git a/scripts/make/set_vars.mk b/scripts/make/set_vars.mk
+index a22531a..898b156 100644
+--- a/scripts/make/set_vars.mk
++++ b/scripts/make/set_vars.mk
+@@ -37,7 +37,7 @@ export BUILD_PLATFORM
+ export LV2_UI
+ export VST_UI
+ 
+-# Detect processor architecture
++# Detect target processor architecture
+ ifeq ($(BUILD_PLATFORM),Windows)
+   ifndef BUILD_PROFILE
+     BUILD_ARCH                = i586
+@@ -53,7 +53,7 @@ ifeq ($(BUILD_PLATFORM),Windows)
+   endif
+ else # BUILD_PLATFORM != Windows
+   ifndef BUILD_PROFILE
+-    BUILD_ARCH              = $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
++    BUILD_ARCH              ?= $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
+     BUILD_PROFILE           = $(BUILD_ARCH)
+     ifeq ($(patsubst armv6%,armv6,$(BUILD_ARCH)), armv6)
+       BUILD_PROFILE           = armv6a
+@@ -82,5 +82,7 @@ else # BUILD_PLATFORM != Windows
+   endif
+ endif # BUILD_PLATFORM != Windows
+ 
+-export BUILD_PROFILE
++HOST_BUILD_PROFILE ?= $(shell uname -m)
+ 
++export BUILD_PROFILE
++export HOST_BUILD_PROFILE
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 565dbb1..0cc859f 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -1,8 +1,12 @@
+ # Setup preferred tools
+ TOOL_LD                 = ld
++TOOL_HOST_LD            = ld
+ TOOL_CC                 = gcc
+ TOOL_CXX                = g++
++TOOL_HOST_CXX           = g++
+ TOOL_PHP                = php
++TOOL_PKG_CONFIG         = pkg-config
++TOOL_HOST_PKG_CONFIG    = PKG_CONFIG_SYSROOT_DIR=/ pkg-config
+ 
+ # Setup preferred flags
+ FLAG_RELRO              = -Wl,-z,relro,-z,now
+@@ -17,20 +21,27 @@ FLAG_CTUNE              = -std=c++98 \
+ ifeq ($(BUILD_PLATFORM),Solaris)
+   FLAG_RELRO              =
+   TOOL_LD                 = gld
++  TOOL_HOST_LD            = gld
+ endif
+ 
+ # Setup system variables
+ CC              		 ?= $(TOOL_CC)
+ CXX                      ?= $(TOOL_CXX)
++HOST_CXX                 ?= $(TOOL_HOST_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
++HOST_LD                  ?= $(TOOL_HOST_LD)
++PKG_CONFIG               ?= $(TOOL_PKG_CONFIG)
++HOST_PKG_CONFIG          ?= $(TOOL_HOST_PKG_CONFIG)
+ 
+ CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+-MERGE_FLAGS               = $(LD_ARCH) -r
+-EXE_TEST_FLAGS            = $(LDFLAGS) $(CC_ARCH)
+-EXE_FLAGS                 = $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++HOST_CXXFLAGS            += $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
++SO_FLAGS                 += $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
++MERGE_FLAGS              += $(LD_ARCH) -r
++EXE_TEST_FLAGS           += $(LDFLAGS) $(CC_ARCH)
++EXE_FLAGS                += $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++HOST_EXE_FLAGS           += $(HOST_LDFLAGS) $(FLAG_RELRO) -Wl,--gc-sections
+ 
+ ifeq ($(BUILD_PLATFORM), Linux)
+   SO_FLAGS                 += -Wl,--no-undefined
+@@ -58,12 +69,18 @@ endif
+ 
+ export CC
+ export CXX
++export HOST_CXX
+ export PHP
+ export LD
++export HOST_LD
++export PKG_CONFIG
++export HOST_PKG_CONFIG
+ 
+ export CFLAGS
+ export CXXFLAGS
++export HOST_CXXFLAGS
+ export SO_FLAGS
+ export MERGE_FLAGS
+ export EXE_TEST_FLAGS
+ export EXE_FLAGS
++export HOST_EXE_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index d960ad8..01ac70b 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,3 +1,5 @@
++# Estimate different pre-requisites before launching build
++
+ # Command-line flag to silence nested $(MAKE).
+ MAKE_OPTS              += VERBOSE=$(VERBOSE)
+ ifneq ($(VERBOSE),1)
+@@ -7,7 +9,8 @@ endif
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+-UTL_DEPS                = $(OBJ_CORE) $(OBJ_DSP) $(OBJ_METADATA)
++UTL_DEPS                = $(HOST_OBJ_CORE) $(HOST_OBJ_DSP) $(HOST_OBJ_METADATA)
++OBJDIR                  ?= $(BUILDDIR)
+ 
+ NEED_UI                 = 0
+ NEED_PLUGINS            = 0
+@@ -73,19 +76,34 @@ target: all
+ 
+ # Rules
+ $(SUBDIRS):
+-	@echo "Building $(@)"
++	@echo "$(BUILDDIR)"
+ 	mkdir -p $(OBJDIR)/$(@)
+-	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ all \
++		CXX="$(CXX)" \
++		CXXFLAGS="$(CXXFLAGS)" \
++		LD="$(LD)" \
++		OBJDIR="$(OBJDIR)/$(@)" \
++		BUILD_PROFILE="$(BUILD_PROFILE)" \
++		SNDFILE_HEADERS="$(SNDFILE_HEADERS)" \
++		SNDFILE_LIBS="$(SNDFILE_LIBS)" \
++		LV2_HEADERS="$(LV2_HEADERS)" \
++		LV2_LIBS="$(LV2_LIBS)"
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+ 
++$(HOST_OBJ_CORE): core
++
+ $(OBJ_DSP): dsp
+ 
++$(HOST_OBJ_DSP): dsp
++
+ $(OBJ_PLUGINS): plugins
+ 
+ $(OBJ_METADATA): metadata
+ 
++$(HOST_OBJ_METADATA): metadata
++
+ $(OBJ_UI_CORE): ui
+ 
+ $(UTL_FILES): utils
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index fbddcaa..4b4fd2e 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -4,15 +4,21 @@ ifneq ($(VERBOSE),1)
+ .SILENT:
+ endif
+ 
++CXX                     = $(HOST_CXX)
++CXXFLAGS                = $(HOST_CXXFLAGS)
++MAKE_OPTS              += CXX=$(HOST_CXX) CXXFLAGS=$(HOST_CXXFLAGS)
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS                 =
+-OBJ_FILES               = $(OBJ_CORE) $(OBJ_METADATA)
++OBJ_FILES               = $(HOST_OBJ_CORE) $(HOST_OBJ_METADATA) $(HOST_OBJ_DSP)
+ OBJ_LIBS                = $(PTHREAD_LIBS) $(MATH_LIBS)
+ OBJ_EXTRA               =
+ INCLUDE_EXTRA           =
+ 
++export PKG_CONFIG_SYSROOT_DIR = /
++
+ ifeq ($(BUILD_PLATFORM),BSD)
+   OBJ_LIBS               += $(ICONV_LIBS)
+ endif
+@@ -24,7 +30,7 @@ endif
+ ifeq ($(findstring lv2,$(BUILD_MODULES)),lv2)
+   MODULES                += $(UTL_GENTTL)
+   FILELIST               += lv2_genttl.o
+-  INCLUDE_EXTRA          += $(LV2_HEADERS)
++  INCLUDE_EXTRA          += $(HOST_LV2_HEADERS)
+ endif
+ ifeq ($(findstring vst,$(BUILD_MODULES)),vst)
+   MODULES                += $(UTL_VSTMAKE)
+@@ -54,28 +60,26 @@ $(SUBDIRS):
+ 	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	@echo "  $(HOST_CXX) $(FILE)"
++	$(HOST_CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(HOST_CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+-$(UTL_GENTTL): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++$(UTL_GENTTL): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENTTL))"
++	$(HOST_CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+-$(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_JACKMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_JACKMAKE))"
++	$(HOST_CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_VSTMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_VSTMAKE))"
++	$(HOST_CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_GENPHP): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+-	
+-$(UTL_RESGEN): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+-
++$(UTL_GENPHP): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENPHP))"
++	$(HOST_CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
++$(UTL_RESGEN): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_RESGEN))"
++	$(HOST_CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_EXTRA) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
diff --git a/srcpkgs/lsp-plugins-lv2/files/04-misc.patch b/srcpkgs/lsp-plugins-lv2/files/04-misc.patch
new file mode 100644
index 000000000000..e3b5c408759e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/files/04-misc.patch
@@ -0,0 +1,280 @@
+diff --git a/.gitmodules b/.gitmodules
+index ac5ea32..4480c1f 100644
+--- a/.gitmodules
++++ b/.gitmodules
+@@ -1,3 +1,3 @@
+ [submodule "Polynomial-Wiener-Hammerstein"]
+ 	path = Polynomial-Wiener-Hammerstein
+-	url = ../../CrocoDuckoDucks/Polynomial-Wiener-Hammerstein.git
++	url = https://github.com/CrocoDuckoDucks/Polynomial-Wiener-Hammerstein
+diff --git a/Makefile b/Makefile
+index ce3de4e..78cb2a9 100644
+--- a/Makefile
++++ b/Makefile
+@@ -98,7 +98,7 @@ SRC_ID                 := $(ARTIFACT_ID)-src-$(LSP_VERSION)
+ DOC_ID                 := $(ARTIFACT_ID)-doc-$(LSP_VERSION)
+ 
+ .DEFAULT_GOAL          := all
+-.PHONY: all experimental trace debug tracefile debugfile profile gdb test testdebug testprofile compile test_compile
++.PHONY: all experimental trace debug tracefile debugfile profile gdb test check testdebug testprofile compile test_compile
+ .PHONY: compile_info
+ .PHONY: install install_ladspa install_lv2 install_vst install_jack install_doc install_xdg
+ .PHONY: uninstall uninstall_ladspa uninstall_lv2 uninstall_vst uninstall_jack uninstall_doc uninstall_xdg
+@@ -129,10 +129,16 @@ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
+ test: test_compile
++	@echo "test: CXXFLAGS: $(CXXFLAGS)"
++	@echo "test: EXE_TEST_FLAGS: $(EXE_TEST_FLAGS)"
++
++# Run unit tests
++check: test
++	.test/lsp-plugins-test utest
+ 
+ testdebug: OBJDIR                 = $(TESTDIR)
+-testdebug: export CFLAGS         += -O0 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-testdebug: export CXXFLAGS       += -O0 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
++testdebug: export CFLAGS         += -Og -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
++testdebug: export CXXFLAGS       += -Og -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ testdebug: export EXE_TEST_FLAGS += -g3
+ testdebug: export MAKE_OPTS      += LSP_TESTING=1
+ testdebug: export BUILD_MODULES   = jack
+@@ -157,8 +163,11 @@ debugfile: export CFLAGS    += -DLSP_TRACEFILE
+ debugfile: export CXXFLAGS  += -DLSP_TRACEFILE
+ debugfile: debug
+ 
+-gdb: export CFLAGS          += -O0 -g3 -DLSP_TRACE
+-gdb: export CXXFLAGS        += -O0 -g3 -DLSP_TRACE
++gdb: export CFLAGS          = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export CXXFLAGS        = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export HOST_CXXFLAGS   = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export EXE_FLAGS       = -g3
++gdb: export HOST_EXE_FLAGS  = -g3
+ gdb: compile
+ 
+ profile: export CFLAGS      += -g -pg -DLSP_PROFILING -no-pie -fno-pie -fPIC
+@@ -192,6 +201,8 @@ compile: utils | compile_info
+ 	
+ test_compile: utils | compile_info
+ 	mkdir -p $(OBJDIR)/src
++	@echo "test_compile: CXXFLAGS: $(CXXFLAGS)"
++	@echo "test_compile: EXE_TEST_FLAGS: $(EXE_TEST_FLAGS)"
+ 	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
+@@ -213,10 +224,10 @@ utils: | compile_info
+ 	@echo "Utils Build OK"
+ 
+ clean:
+-	-rm -rf $(BUILDDIR)
+-	-rm -rf $(HOST_BUILDDIR)
+-	-rm -rf $(TESTDIR)
+-	-rm -rf $(CFGDIR)
++	rm -rf $(BUILDDIR)
++	rm -rf $(HOST_BUILDDIR)
++	rm -rf $(TESTDIR)
++	rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+ 
+ # Build targets
+@@ -372,7 +383,7 @@ release_doc: | release_prepare
+ 
+ # Unrelease target
+ unrelease: clean
+-	-rm -rf $(RELEASE)
++	rm -rf $(RELEASE)
+ 	@echo "Unrelease OK"
+ 
+ # Uninstall target
+@@ -381,41 +392,41 @@ uninstall: $(UNINSTALLATIONS)
+ 	
+ uninstall_ladspa:
+ 	@echo "Uninstalling LADSPA"
+-	-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
++	rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
+ 	
+ uninstall_lv2:
+ 	@echo "Uninstalling LV2"
+-	-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
++	rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
+ 	
+ uninstall_vst:
+ 	@echo "Uninstalling VST"
+-	-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
+-	-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
+-	-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
++	rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
++	rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
++	rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
+ 	
+ uninstall_jack:
+ 	@echo "Uninstalling JACK"
+-	-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
+-	-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
+-	-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
+-	-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
++	rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
++	rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
++	rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
++	rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
+ 
+ uninstall_xdg:
+ 	@echo "Uninstalling desktop icons"
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
+-	-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
++	rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
++	rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
+ 
+ uninstall_doc:
+ 	@echo "Uninstalling DOC"
+-	-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+diff --git a/include/metadata/metadata.h b/include/metadata/metadata.h
+index 0efaa9d..e009750 100644
+--- a/include/metadata/metadata.h
++++ b/include/metadata/metadata.h
+@@ -73,10 +73,18 @@
+     #define LSP_ARCHITECTURE                                "unknown"
+ #endif /* ARCH */
+ 
++#define STRINGIFY_(x) #x
++#define STRINGIFY(x) STRINGIFY_(x)
++
+ #ifndef LSP_MAIN_VERSION
+     #define LSP_MAIN_VERSION                                "0.0.0"
++#else
++    #define LSP_MAIN_VERSION_STR STRINGIFY(LSP_MAIN_VERSION)
++    #undef LSP_MAIN_VERSION
++    #define LSP_MAIN_VERSION LSP_MAIN_VERSION_STR
+ #endif /* LSP_MAIN_VERSION */
+ 
++
+ #define LSP_LV2_LATENCY_PORT                            "out_latency"
+ #define LSP_LV2_ATOM_PORT_IN                            "in_ui"
+ #define LSP_LV2_MIDI_PORT_IN                            "in_midi"
+@@ -86,7 +94,7 @@
+ #define LSP_LV2_OSC_PORT_OUT                            "out_osc"
+ 
+ #ifdef LSP_INSTALL_PREFIX
+-    #define LSP_LIB_PREFIX(x)       LSP_INSTALL_PREFIX x
++    #define LSP_LIB_PREFIX(x)       STRINGIFY(LSP_INSTALL_PREFIX) x
+ #else
+     #define LSP_LIB_PREFIX(x)       x
+ #endif /* PREFIX */
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 0cc859f..508f829 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -11,8 +11,8 @@ TOOL_HOST_PKG_CONFIG    = PKG_CONFIG_SYSROOT_DIR=/ pkg-config
+ # Setup preferred flags
+ FLAG_RELRO              = -Wl,-z,relro,-z,now
+ FLAG_VERSION            = -DLSP_MAIN_VERSION=\"$(LSP_VERSION)\" -DLSP_INSTALL_PREFIX=\"$(PREFIX)\"
+-FLAG_CTUNE              = -std=c++98 \
+-                          -fno-exceptions -fno-rtti \
++FLAG_CXXSTANDARD        = -std=c++98
++FLAGS_CTUNE             = -fno-exceptions -fno-rtti \
+                           -fdata-sections -ffunction-sections -fno-asynchronous-unwind-tables \
+                           -fvisibility=hidden \
+                           -pipe -Wall
+@@ -34,9 +34,11 @@ HOST_LD                  ?= $(TOOL_HOST_LD)
+ PKG_CONFIG               ?= $(TOOL_PKG_CONFIG)
+ HOST_PKG_CONFIG          ?= $(TOOL_HOST_PKG_CONFIG)
+ 
+-CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-HOST_CXXFLAGS            += $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
++CFLAGS                   += $(CC_ARCH) $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) \
++                            $(CC_FLAGS) $(FLAG_VERSION)
++CXXFLAGS                 += $(CC_ARCH) $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) \
++                            $(CC_FLAGS) $(FLAG_VERSION)
++HOST_CXXFLAGS            += $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ SO_FLAGS                 += $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+ MERGE_FLAGS              += $(LD_ARCH) -r
+ EXE_TEST_FLAGS           += $(LDFLAGS) $(CC_ARCH)
+diff --git a/src/Makefile b/src/Makefile
+index 01ac70b..01b9d92 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -120,7 +120,7 @@ $(OBJ_RES_CORE): $(OBJ_CORE) $(UTL_RESGEN)
+ 	@echo "Generating builtin resources"
+ 	mkdir -p $(OBJDIR)/res
+ 	$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
+-	-rm gmon.out >/dev/null 2>&1
++	rm -f gmon.out >/dev/null 2>&1
+ 	$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ # Target dependencies
+@@ -139,12 +139,12 @@ vst_stub: $(UTL_VSTMAKE)
+ 	@echo "Building VST stub"
+ 	mkdir -p $(OBJDIR)/vst
+ 	$(UTL_VSTMAKE) $(OBJDIR)/vst
+-	-rm gmon.out >/dev/null 2>&1
++	rm -f gmon.out >/dev/null 2>&1
+ 	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
+ 
+ jack_stub: $(UTL_JACKMAKE)
+ 	@echo "Building JACK stub"
+ 	mkdir -p $(OBJDIR)/jack
+ 	$(UTL_JACKMAKE) $(OBJDIR)/jack
+-	-rm gmon.out >/dev/null 2>&1
++	rm -f gmon.out >/dev/null 2>&1
+ 	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
+diff --git a/src/testing/Makefile b/src/testing/Makefile
+index d048065..a089309 100644
+--- a/src/testing/Makefile
++++ b/src/testing/Makefile
+@@ -14,6 +14,7 @@ all: $(OBJ_TESTING_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
++	@echo "testing: CXXFLAGS: $(CXXFLAGS)"
+ 	mkdir -p $(dir $@)
+ 	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index 4b4fd2e..a35d3a3 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -4,9 +4,9 @@ ifneq ($(VERBOSE),1)
+ .SILENT:
+ endif
+ 
+-CXX                     = $(HOST_CXX)
+-CXXFLAGS                = $(HOST_CXXFLAGS)
+-MAKE_OPTS              += CXX=$(HOST_CXX) CXXFLAGS=$(HOST_CXXFLAGS)
++# CXX                     = $(HOST_CXX)
++# CXXFLAGS                = $(HOST_CXXFLAGS)
++# MAKE_OPTS              += CXX=$(HOST_CXX) CXXFLAGS=$(HOST_CXXFLAGS)
+ 
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+diff --git a/tmp/.gitignore b/tmp/.gitignore
+index 22e8364..d6b7ef3 100644
+--- a/tmp/.gitignore
++++ b/tmp/.gitignore
+@@ -1 +1,2 @@
+-/*
+\ No newline at end of file
++*
++!.gitignore
diff --git a/srcpkgs/lsp-plugins-lv2/patches/00-patch-all.patch b/srcpkgs/lsp-plugins-lv2/patches/00-patch-all.patch
new file mode 100644
index 000000000000..ceb42e3c5a55
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/patches/00-patch-all.patch
@@ -0,0 +1,2098 @@
+diff --git a/.gitignore b/.gitignore
+index 5bc0ecb..4a1edec 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -3,6 +3,7 @@
+ /design/*
+ /.builconfig/*
+ /.build/*
++/.host_build/*
+ /.buildconfig/*
+ /.test/*
+ /.release/*
+diff --git a/.gitmodules b/.gitmodules
+index ac5ea32..4480c1f 100644
+--- a/.gitmodules
++++ b/.gitmodules
+@@ -1,3 +1,3 @@
+ [submodule "Polynomial-Wiener-Hammerstein"]
+ 	path = Polynomial-Wiener-Hammerstein
+-	url = ../../CrocoDuckoDucks/Polynomial-Wiener-Hammerstein.git
++	url = https://github.com/CrocoDuckoDucks/Polynomial-Wiener-Hammerstein
+diff --git a/Makefile b/Makefile
+index 2d9cb79..70cb6a4 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ # Common definitions
+ RELEASE_TEXT            = LICENSE.txt README.txt CHANGELOG.txt
+ RELEASE_SRC             = $(RELEASE_TEXT) src build-*.sh include res Makefile release.sh
+@@ -18,8 +24,10 @@ export RESDIR           = ${CURDIR}/res
+ export RELEASE          = ${CURDIR}/.release
+ export RELEASE_BIN      = $(RELEASE)/$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ export BUILDDIR         = ${CURDIR}/.build
++export HOST_BUILDDIR    = ${CURDIR}/.host_build
+ export TESTDIR          = ${CURDIR}/.test
+ OBJDIR                  = $(BUILDDIR)
++export HOST_OBJDIR      = $(HOST_BUILDDIR)
+ 
+ # Installation locations
+ BIN_PATH               ?= $(PREFIX)/bin
+@@ -35,20 +43,23 @@ VST_PATH                = $(LIB_PATH)/vst
+ export BASEDIR          = ${CURDIR}
+ 
+ # Objects
+-export OBJ_CORE         = $(OBJDIR)/core.o
+-export OBJ_DSP          = $(OBJDIR)/dsp.o
+-export OBJ_CTL_CORE     = $(OBJDIR)/ctl_core.o
+-export OBJ_TK_CORE      = $(OBJDIR)/tk_core.o
+-export OBJ_WS_CORE      = $(OBJDIR)/ws_core.o
+-export OBJ_WS_X11_CORE  = $(OBJDIR)/ws_x11_core.o
+-export OBJ_UI_CORE      = $(OBJDIR)/ui_core.o
+-export OBJ_RES_CORE     = $(OBJDIR)/res_core.o
+-export OBJ_TEST_CORE    = $(OBJDIR)/test_core.o
+-export OBJ_TESTING_CORE = $(OBJDIR)/testing_core.o
+-export OBJ_PLUGINS      = $(OBJDIR)/plugins.o
+-export OBJ_PLUGIN_UIS	= $(OBJDIR)/plugin_uis.o
+-export OBJ_METADATA     = $(OBJDIR)/metadata.o
+-export OBJ_FILES        = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
++export OBJ_CORE          = $(OBJDIR)/core.o
++export HOST_OBJ_CORE     = $(HOST_OBJDIR)/core.o
++export OBJ_DSP           = $(OBJDIR)/dsp.o
++export HOST_OBJ_DSP      = $(HOST_OBJDIR)/dsp.o
++export OBJ_CTL_CORE      = $(OBJDIR)/ctl_core.o
++export OBJ_TK_CORE       = $(OBJDIR)/tk_core.o
++export OBJ_WS_CORE       = $(OBJDIR)/ws_core.o
++export OBJ_WS_X11_CORE   = $(OBJDIR)/ws_x11_core.o
++export OBJ_UI_CORE       = $(OBJDIR)/ui_core.o
++export OBJ_RES_CORE      = $(OBJDIR)/res_core.o
++export OBJ_TEST_CORE     = $(OBJDIR)/test_core.o
++export OBJ_TESTING_CORE  = $(OBJDIR)/testing_core.o
++export OBJ_PLUGINS       = $(OBJDIR)/plugins.o
++export OBJ_PLUGIN_UIS	 = $(OBJDIR)/plugin_uis.o
++export OBJ_METADATA      = $(OBJDIR)/metadata.o
++export HOST_OBJ_METADATA = $(HOST_OBJDIR)/metadata.o
++export OBJ_FILES         = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
+ 
+ # Libraries
+ export LIB_LADSPA       = $(OBJDIR)/$(ARTIFACT_ID)-ladspa.so
+@@ -62,11 +73,14 @@ export BIN_PROFILE      = $(OBJDIR)/$(ARTIFACT_ID)-profile
+ export BIN_TEST         = $(OBJDIR)/$(ARTIFACT_ID)-test
+ 
+ # Utils
+-export UTL_GENTTL       = $(OBJDIR)/lv2_genttl.exe
+-export UTL_VSTMAKE      = $(OBJDIR)/vst_genmake.exe
+-export UTL_JACKMAKE     = $(OBJDIR)/jack_genmake.exe
+-export UTL_GENPHP       = $(OBJDIR)/gen_php.exe
+-export UTL_RESGEN       = $(OBJDIR)/gen_resources.exe
++ifeq ($(BUILD_SYSTEM),Windows)
++  BIN_SUFFIX := .exe
++endif
++export UTL_GENTTL       = $(HOST_OBJDIR)/lv2_genttl$(BIN_SUFFIX)
++export UTL_VSTMAKE      = $(HOST_OBJDIR)/vst_genmake$(BIN_SUFFIX)
++export UTL_JACKMAKE     = $(HOST_OBJDIR)/jack_genmake$(BIN_SUFFIX)
++export UTL_GENPHP       = $(HOST_OBJDIR)/gen_php$(BIN_SUFFIX)
++export UTL_RESGEN       = $(HOST_OBJDIR)/gen_resources$(BIN_SUFFIX)
+ export UTL_FILES        = $(UTL_GENTTL) $(UTL_VSTMAKE) $(UTL_GENPHP) $(UTL_RESGEN)
+ 
+ # Files
+@@ -84,7 +98,7 @@ SRC_ID                 := $(ARTIFACT_ID)-src-$(LSP_VERSION)
+ DOC_ID                 := $(ARTIFACT_ID)-doc-$(LSP_VERSION)
+ 
+ .DEFAULT_GOAL          := all
+-.PHONY: all experimental trace debug tracefile debugfile profile gdb test testdebug testprofile compile test_compile
++.PHONY: all experimental trace debug tracefile debugfile profile gdb test check testdebug testprofile compile test_compile
+ .PHONY: compile_info
+ .PHONY: install install_ladspa install_lv2 install_vst install_jack install_doc install_xdg
+ .PHONY: uninstall uninstall_ladspa uninstall_lv2 uninstall_vst uninstall_jack uninstall_doc uninstall_xdg
+@@ -98,6 +112,7 @@ all: export CXXFLAGS        += -O2 -DLSP_NO_EXPERIMENTAL
+ all: export EXE_FLAGS       += -pie -fPIE
+ all: compile
+ 
++
+ experimental: export CFLAGS += -O2
+ experimental: export CXXFLAGS += -O2
+ experimental: compile
+@@ -115,9 +130,13 @@ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
+ test: test_compile
+ 
++# Run unit tests
++check: test
++	.test/lsp-plugins-test utest
++
+ testdebug: OBJDIR                 = $(TESTDIR)
+-testdebug: export CFLAGS         += -O0 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-testdebug: export CXXFLAGS       += -O0 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
++testdebug: export CFLAGS         += -Og -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
++testdebug: export CXXFLAGS       += -Og -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ testdebug: export EXE_TEST_FLAGS += -g3
+ testdebug: export MAKE_OPTS      += LSP_TESTING=1
+ testdebug: export BUILD_MODULES   = jack
+@@ -142,8 +161,11 @@ debugfile: export CFLAGS    += -DLSP_TRACEFILE
+ debugfile: export CXXFLAGS  += -DLSP_TRACEFILE
+ debugfile: debug
+ 
+-gdb: export CFLAGS          += -O0 -g3 -DLSP_TRACE
+-gdb: export CXXFLAGS        += -O0 -g3 -DLSP_TRACE
++gdb: export CFLAGS          = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export CXXFLAGS        = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export HOST_CXXFLAGS   = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export EXE_FLAGS       = -g3
++gdb: export HOST_EXE_FLAGS  = -g3
+ gdb: compile
+ 
+ profile: export CFLAGS      += -g -pg -DLSP_PROFILING -no-pie -fno-pie -fPIC
+@@ -155,35 +177,53 @@ profile: compile
+ compile_info:
+ 	@echo "-------------------------------------------------------------------------------"
+ 	@echo "Building binaries"
+-	@echo "  target architecture : $(BUILD_PROFILE)"
+-	@echo "  target platform     : $(BUILD_PLATFORM)"
+-	@echo "  target system       : $(BUILD_SYSTEM)"
+-	@echo "  compiler            : $(BUILD_COMPILER)"
+-	@echo "  modules             : $(BUILD_MODULES)"
+-	@echo "  UI                  : LV2=$(LV2_UI), VST=$(VST_UI)"
+-	@echo "  3D rendering        : $(BUILD_R3D_BACKENDS)"
+-	@echo "  build directory     : $(OBJDIR)"
++	@echo "  platform             : $(BUILD_PLATFORM)"
++	@echo "  system               : $(BUILD_SYSTEM)"
++	@echo "  target compiler      : $(CXX)"
++	@echo "  target architecture  : $(BUILD_PROFILE)"
++	@echo "  modules              : $(BUILD_MODULES)"
++	@echo "  UI                   : LV2=$(LV2_UI), VST=$(VST_UI)"
++	@echo "  3D rendering         : $(BUILD_R3D_BACKENDS)"
++	@echo "  build directory      : $(OBJDIR)"
+ 	@echo "-------------------------------------------------------------------------------"
+ 
+-compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@mkdir -p $(CFGDIR)
+-	@test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
+-	@test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
+-	@test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
+-	@test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++compile: utils | compile_info
++	mkdir -p $(OBJDIR)/src
++	mkdir -p $(CFGDIR)
++	test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
++	test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
++	test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
++	test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Build OK"
+ 	
+-test_compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++test_compile: utils | compile_info
++	mkdir -p $(OBJDIR)/src
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
++utils: export BUILD_PROFILE=$(HOST_BUILD_PROFILE)
++utils: export OBJDIR=$(HOST_OBJDIR)
++utils: export OBJ_CORE=$(HOST_OBJ_CORE)
++utils: export OBJ_DSP=$(HOST_OBJ_DSP)
++utils: export OBJ_METADATA=$(HOST_OBJ_METADATA)
++utils: export CXX=$(HOST_CXX)
++utils: export CXXFLAGS=$(HOST_CXXFLAGS)
++utils: export LD=$(HOST_LD)
++utils: export SNDFILE_HEADERS=$(HOST_SNDFILE_HEADERS)
++utils: export SNDFILE_LIBS=$(HOST_SNDFILE_LIBS)
++utils: export LV2_HEADERS=$(HOST_LV2_HEADERS)
++utils: export LV2_LIBS=$(HOST_LV2_LIBS)
++utils: | compile_info
++	mkdir -p $(HOST_OBJDIR)/src/utils
++	$(MAKE) $(MAKE_OPTS) -C src utils
++	@echo "Utils Build OK"
++
+ clean:
+-	@-rm -rf $(BUILDDIR)
+-	@-rm -rf $(TESTDIR)
+-	@-rm -rf $(CFGDIR)
++	rm -rf $(BUILDDIR)
++	rm -rf $(HOST_BUILDDIR)
++	rm -rf $(TESTDIR)
++	rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+ 
+ # Build targets
+@@ -209,63 +249,63 @@ install: $(INSTALLATIONS)
+ 
+ install_ladspa: all
+ 	@echo "Installing LADSPA plugins to $(DESTDIR)$(LADSPA_PATH)/"
+-	@mkdir -p $(DESTDIR)$(LADSPA_PATH)
+-	@$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
++	mkdir -p $(DESTDIR)$(LADSPA_PATH)
++	$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
+ 	
+ install_lv2: all
+ 	@echo "Installing LV2 plugins to $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
+-	@$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
++	$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+ 	
+ install_vst: all
+ 	@echo "Installing VST plugins to $(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+-	@$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
++	$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+ 
+ install_jack: all
+ 	@echo "Installing JACK core to $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
++	$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+ 	@echo "Installing JACK standalone plugins to $(DESTDIR)$(BIN_PATH)"
+-	@mkdir -p "$(DESTDIR)$(BIN_PATH)"
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
++	mkdir -p "$(DESTDIR)$(BIN_PATH)"
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
+ 
+ install_xdg:
+ 	@echo "Installing desktop icons to $(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
+-	@mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
+-	@cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
+-	@cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
+-	@cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
+-	@cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
++	mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
++	cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
++	cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
++	cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
++	cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
+ 
+ install_doc: all
+ 	@echo "Installing documentation to $(DESTDIR)$(DOC_PATH)"
+-	@mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+ # Release targets
+ dbg_release: export CFLAGS        += -DLSP_TRACE -O2
+@@ -279,67 +319,67 @@ release: $(RELEASES)
+ 
+ release_prepare: all
+ 	@echo "Releasing plugins for architecture $(BUILD_PROFILE)"
+-	@mkdir -p $(RELEASE)
+-	@mkdir -p $(DESTDIR)
++	mkdir -p $(RELEASE)
++	mkdir -p $(DESTDIR)
+ 	
+ release_ladspa: DESTDIR=$(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_ladspa: | release_prepare install_ladspa
+ 	@echo "Releasing LADSPA binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_lv2: DESTDIR=$(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_lv2: | release_prepare install_lv2
+ 	@echo "Releasing LV2 binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_vst: DESTDIR=$(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_vst: | release_prepare install_vst
+ 	@echo "Releasing VST binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_jack: DESTDIR=$(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_jack: | release_prepare install_jack
+ 	@echo "Releasing JACK binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 
+ release_profile: DESTDIR=$(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_profile: | release_prepare
+ 	@echo "Releasing PROFILE binaries"
+-	@$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ 
+ release_src: DESTDIR=$(RELEASE)/$(SRC_ID)
+ release_src: | release_prepare
+ 	@echo "Releasing source code binaries"
+-	@mkdir -p $(DESTDIR)
+-	@mkdir -p $(DESTDIR)/scripts
+-	@cp -R $(RELEASE_SRC) $(DESTDIR)/
+-	@cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	mkdir -p $(DESTDIR)/scripts
++	cp -R $(RELEASE_SRC) $(DESTDIR)/
++	cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
++	rm -rf $(DESTDIR)
+ 
+ release_doc: DESTDIR=$(RELEASE)/$(DOC_ID)
+ release_doc: | release_prepare
+ 	@echo "Releasing documentation"
+-	@mkdir -p $(DESTDIR)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
++	rm -rf $(DESTDIR)
+ 
+ # Unrelease target
+ unrelease: clean
+-	@-rm -rf $(RELEASE)
++	rm -rf $(RELEASE)
+ 	@echo "Unrelease OK"
+ 
+ # Uninstall target
+@@ -348,41 +388,41 @@ uninstall: $(UNINSTALLATIONS)
+ 	
+ uninstall_ladspa:
+ 	@echo "Uninstalling LADSPA"
+-	@-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
++	rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
+ 	
+ uninstall_lv2:
+ 	@echo "Uninstalling LV2"
+-	@-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
++	rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
+ 	
+ uninstall_vst:
+ 	@echo "Uninstalling VST"
+-	@-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
++	rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
++	rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
++	rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
+ 	
+ uninstall_jack:
+ 	@echo "Uninstalling JACK"
+-	@-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
+-	@-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
++	rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
++	rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
++	rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
++	rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
+ 
+ uninstall_xdg:
+ 	@echo "Uninstalling desktop icons"
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
+-	@-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
++	rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
++	rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
+ 
+ uninstall_doc:
+ 	@echo "Uninstalling DOC"
+-	@-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+diff --git a/TODO.txt b/TODO.txt
+index 4976293..f8562ef 100644
+--- a/TODO.txt
++++ b/TODO.txt
+@@ -28,6 +28,12 @@
+ - Added possibility to change themes in runtime.
+ - Complicated plugin UIs now allow to switch between Advanced and Novice modes.
+ 
++=== 1.1.31 ===
++
++* Fixed X11 error handling routine that could crash under certain conditions.
++* Better support for musl libc (contributed by Artur Sinila).
++* Added support of VERBOSE parameter for build system (contributed by Artur Sinila).
++
+ *******************************************************************************
+ * New plugin check list before release
+ *******************************************************************************
+diff --git a/include/common/types.h b/include/common/types.h
+index dd1816e..59c794e 100644
+--- a/include/common/types.h
++++ b/include/common/types.h
+@@ -563,6 +563,12 @@
+     #define MINIMUM_ALIGN                   DEFAULT_ALIGN
+ #endif /* DEFAULT_ALIGN */
+ 
++//-----------------------------------------------------------------------------
++// Detect some libraries
++#ifdef __GLIBC__
++    #define USE_GLIBC                           __GLIBC__
++#endif /* GLIBC */
++
+ //-----------------------------------------------------------------------------
+ // Type definitions
+ __IF_32( typedef        uint32_t            umword_t );
+diff --git a/include/data/cvector.h b/include/data/cvector.h
+index eccc94a..17fe119 100644
+--- a/include/data/cvector.h
++++ b/include/data/cvector.h
+@@ -25,6 +25,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <sys/types.h>
+ 
+ #define CVECTOR_GROW        16
+ 
+diff --git a/include/metadata/metadata.h b/include/metadata/metadata.h
+index 0efaa9d..e009750 100644
+--- a/include/metadata/metadata.h
++++ b/include/metadata/metadata.h
+@@ -73,10 +73,18 @@
+     #define LSP_ARCHITECTURE                                "unknown"
+ #endif /* ARCH */
+ 
++#define STRINGIFY_(x) #x
++#define STRINGIFY(x) STRINGIFY_(x)
++
+ #ifndef LSP_MAIN_VERSION
+     #define LSP_MAIN_VERSION                                "0.0.0"
++#else
++    #define LSP_MAIN_VERSION_STR STRINGIFY(LSP_MAIN_VERSION)
++    #undef LSP_MAIN_VERSION
++    #define LSP_MAIN_VERSION LSP_MAIN_VERSION_STR
+ #endif /* LSP_MAIN_VERSION */
+ 
++
+ #define LSP_LV2_LATENCY_PORT                            "out_latency"
+ #define LSP_LV2_ATOM_PORT_IN                            "in_ui"
+ #define LSP_LV2_MIDI_PORT_IN                            "in_midi"
+@@ -86,7 +94,7 @@
+ #define LSP_LV2_OSC_PORT_OUT                            "out_osc"
+ 
+ #ifdef LSP_INSTALL_PREFIX
+-    #define LSP_LIB_PREFIX(x)       LSP_INSTALL_PREFIX x
++    #define LSP_LIB_PREFIX(x)       STRINGIFY(LSP_INSTALL_PREFIX) x
+ #else
+     #define LSP_LIB_PREFIX(x)       x
+ #endif /* PREFIX */
+diff --git a/include/test/main/executor.h b/include/test/main/executor.h
+index 0faf73f..5a0c016 100644
+--- a/include/test/main/executor.h
++++ b/include/test/main/executor.h
+@@ -633,7 +633,7 @@ namespace lsp
+     }
+ #endif /* PLATFORM_WINDOWS */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     void TestExecutor::start_memcheck(test::Test *v)
+     {
+         if (!pCfg->mtrace)
+diff --git a/include/test/main/types.h b/include/test/main/types.h
+index ef15800..0c5d7c2 100644
+--- a/include/test/main/types.h
++++ b/include/test/main/types.h
+@@ -42,7 +42,7 @@
+     #include <fcntl.h>
+ #endif /* PLATFORM_UNIX_COMPATIBLE */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     #include <mcheck.h>
+ #endif /* PLATFORM_LINUX */
+ 
+diff --git a/include/testing/mtest/3d/common/X11Renderer.h b/include/testing/mtest/3d/common/X11Renderer.h
+index e8ec205..f0a51e2 100644
+--- a/include/testing/mtest/3d/common/X11Renderer.h
++++ b/include/testing/mtest/3d/common/X11Renderer.h
+@@ -30,7 +30,7 @@
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include <rendering/backend.h>
+ #include <core/ipc/Library.h>
+diff --git a/scripts/make/configure.mk b/scripts/make/configure.mk
+index 09aee9a..1f3cf7b 100644
+--- a/scripts/make/configure.mk
++++ b/scripts/make/configure.mk
+@@ -14,7 +14,8 @@ ifndef BUILD_R3D_BACKENDS
+   BUILD_R3D_BACKENDS     := $(shell if (test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" )  then cat "$(CFGDIR)/$(R3D_BACKENDS_FILE)" 2>/dev/null; else echo "glx"; fi;)
+ endif
+ 
+-BUILD_COMPILER         := $(shell $(CC) --version | head -n 1 || echo "unknown")
++BUILD_COMPILER         := $(shell $(CXX) --version | head -n 1 || echo "unknown")
++HOST_BUILD_COMPILER    := $(shell $(HOST_CXX) --version | head -n 1 || echo "unknown")
+ 
+ export BUILD_MODULES
+ export BUILD_R3D_BACKENDS
+@@ -23,7 +24,7 @@ export BUILD_R3D_BACKENDS
+ INSTALLATIONS           =
+ UNINSTALLATIONS         = uninstall_xdg
+ RELEASES                =
+-INCLUDE                 = -I"${CURDIR}/include"
++INCLUDE                 := -I"${CURDIR}/include"
+ 
+ ifeq ($(findstring ladspa,$(BUILD_MODULES)),ladspa)
+   INSTALLATIONS          += install_ladspa
+@@ -63,61 +64,64 @@ LD_ARCH         =
+ CC_ARCH         =
+ 
+ # Build profile
+-ifeq ($(BUILD_PROFILE),i586)
+-  CC_ARCH          = -m32
+-  ifeq ($(BUILD_PLATFORM), Linux)
+-    LD_ARCH          = -m elf_i386
++# SKIP_CC_LD_ARCH is set by distro package build systems
++# which manage cross-compilation flags on their own
++ifeq ($(SKIP_CC_LD_ARCH),)
++  ifeq ($(BUILD_PROFILE),i586)
++    CC_ARCH          = -m32
++    ifeq ($(BUILD_PLATFORM), Linux)
++      LD_ARCH          = -m elf_i386
++    endif
++    ifeq ($(BUILD_PLATFORM), BSD)
++      LD_ARCH          = -m elf_i386_fbsd
++    endif
+   endif
++  
++  ifeq ($(BUILD_PROFILE),x86_64)
++    CC_ARCH          = -m64
++    ifeq ($(BUILD_PLATFORM), Linux)
++      LD_ARCH          = -m elf_x86_64
++    endif
++    ifeq ($(BUILD_PLATFORM), BSD)
++      LD_ARCH          = -m elf_x86_64_fbsd
++    endif
++  endif
++  
+   ifeq ($(BUILD_PLATFORM), BSD)
+-    LD_ARCH          = -m elf_i386_fbsd
++    INCLUDE          += -I/usr/local/include
++    ifeq ($(BUILD_PROFILE),arm)
++      CC_ARCH          = -marm
++      ifneq ($(LD_PATH),)
++        CC_ARCH          += -Wl,-rpath=$(LD_PATH)
++      endif
++    endif
+   endif
+-endif
+-
+-ifeq ($(BUILD_PROFILE),x86_64)
+-  CC_ARCH          = -m64
+-  ifeq ($(BUILD_PLATFORM), Linux)
+-    LD_ARCH          = -m elf_x86_64
++  
++  ifeq ($(BUILD_PROFILE),armv6a)
++    CC_ARCH          = -march=armv6-a -marm
+   endif
+-  ifeq ($(BUILD_PLATFORM), BSD)
+-    LD_ARCH          = -m elf_x86_64_fbsd
++  
++  ifeq ($(BUILD_PROFILE),armv7a)
++    CC_ARCH          = -march=armv7-a -marm
+   endif
+-endif
+-
+-ifeq ($(BUILD_PLATFORM), BSD)
+-  INCLUDE          += -I/usr/local/include
+-  ifeq ($(BUILD_PROFILE),arm)
++  
++  ifeq ($(BUILD_PROFILE),armv7ve)
++    CC_ARCH          = -march=armv7ve -marm
++  endif
++  
++  ifeq ($(BUILD_PROFILE),arm32)
+     CC_ARCH          = -marm
+-    ifneq ($(LD_PATH),)
+-      CC_ARCH          += -Wl,-rpath=$(LD_PATH)
+-    endif
++  endif
++  
++  ifeq ($(BUILD_PROFILE),armv8a)
++    CC_ARCH          = -march=armv7-a -marm
++  endif
++  
++  ifeq ($(BUILD_PROFILE),aarch64)
++    CC_ARCH          = -march=armv8-a
+   endif
+ endif
+ 
+-ifeq ($(BUILD_PROFILE),armv6a)
+-  CC_ARCH          = -march=armv6-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv7a)
+-  CC_ARCH          = -march=armv7-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv7ve)
+-  CC_ARCH          = -march=armv7ve -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),arm32)
+-  CC_ARCH          = -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv8a)
+-  CC_ARCH          = -march=armv7-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),aarch64)
+-  CC_ARCH          = -march=armv8-a
+-endif
+-
+-
+ export CC_ARCH
+ export LD_ARCH
+ export LD_PATH
+@@ -127,21 +131,25 @@ export INCLUDE
+ ifeq ($(BUILD_SYSTEM),Windows)
+ # TODO
+ else
+-  export PTHREAD_LIBS     = -lpthread
+-  export ICONV_LIBS       = -liconv
+-  export MATH_LIBS        = -lm
+-  export DL_LIBS          = -ldl
+-  export CAIRO_HEADERS    = $(shell pkg-config --cflags cairo)
+-  export CAIRO_LIBS       = $(shell pkg-config --libs cairo)
+-  export XLIB_HEADERS     = $(shell pkg-config --cflags x11)
+-  export XLIB_LIBS        = $(shell pkg-config --libs x11)
+-  export LV2_HEADERS      = $(shell pkg-config --cflags lv2)
+-  export LV2_LIBS         = $(shell pkg-config --libs lv2)
+-  export SNDFILE_HEADERS  = $(shell pkg-config --cflags sndfile)
+-  export SNDFILE_LIBS     = $(shell pkg-config --libs sndfile)
+-  export JACK_HEADERS     = $(shell pkg-config --cflags jack)
+-  export JACK_LIBS        = $(shell pkg-config --libs jack)
+-  export OPENGL_HEADERS   = $(shell pkg-config --cflags gl 2>/dev/null || echo "")
+-  export OPENGL_LIBS      = $(shell pkg-config --libs gl 2>/dev/null || echo "")
++  export PTHREAD_LIBS         = -lpthread
++  export ICONV_LIBS           = -liconv
++  export MATH_LIBS            = -lm
++  export DL_LIBS              = -ldl
++  export CAIRO_HEADERS        = $(shell $(PKG_CONFIG) --cflags cairo)
++  export CAIRO_LIBS           = $(shell $(PKG_CONFIG) --libs cairo)
++  export XLIB_HEADERS         = $(shell $(PKG_CONFIG) --cflags x11)
++  export XLIB_LIBS            = $(shell $(PKG_CONFIG) --libs x11)
++  export LV2_HEADERS          = $(shell $(PKG_CONFIG) --cflags lv2)
++  export LV2_HEADERS          = $(shell $(PKG_CONFIG) --libs lv2)
++  export SNDFILE_HEADERS      = $(shell $(PKG_CONFIG) --cflags sndfile)
++  export SNDFILE_LIBS         = $(shell $(PKG_CONFIG) --libs sndfile)
++  export JACK_HEADERS         = $(shell $(PKG_CONFIG) --cflags jack)
++  export JACK_LIBS            = $(shell $(PKG_CONFIG) --libs jack)
++  export OPENGL_HEADERS       = $(shell $(PKG_CONFIG) --cflags gl 2>/dev/null || echo "")
++  export OPENGL_LIBS          = $(shell $(PKG_CONFIG) --libs gl 2>/dev/null || echo "")
++  export HOST_SNDFILE_HEADERS = $(shell $(HOST_PKG_CONFIG) --cflags sndfile)
++  export HOST_SNDFILE_LIBS    = $(shell $(HOST_PKG_CONFIG) --libs sndfile)
++  export HOST_LV2_HEADERS     = $(shell $(HOST_PKG_CONFIG) --cflags lv2)
++  export HOST_LV2_LIBS        = $(shell $(HOST_PKG_CONFIG) --libs lv2)
+ endif
+ 
+diff --git a/scripts/make/set_vars.mk b/scripts/make/set_vars.mk
+index a22531a..93916ea 100644
+--- a/scripts/make/set_vars.mk
++++ b/scripts/make/set_vars.mk
+@@ -37,7 +37,52 @@ export BUILD_PLATFORM
+ export LV2_UI
+ export VST_UI
+ 
+-# Detect processor architecture
++# Detect host processor architecture
++ifeq ($(BUILD_PLATFORM),Windows)
++  ifndef HOST_BUILD_PROFILE
++    HOST_BUILD_ARCH           = i586
++    HOST_BUILD_PROFILE             = i586
++    ifeq ($(PROCESSOR_ARCHITECTURE),x86)
++      HOST_BUILD_ARCH         = i586
++      HOST_BUILD_PROFILE      = i586
++    endif
++    ifeq ($(PROCESSOR_ARCHITECTURE),AMD64)
++      HOST_BUILD_ARCH              = x86_64
++      HOST_BUILD_PROFILE           = x86_64
++    endif
++  endif
++else # BUILD_PLATFORM != Windows
++  ifndef HOST_BUILD_PROFILE
++    HOST_BUILD_ARCH    ?= $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
++    HOST_BUILD_PROFILE  = $(HOST_BUILD_ARCH)
++    ifeq ($(patsubst armv6%,armv6,$(HOST_BUILD_ARCH)), armv6)
++      HOST_BUILD_PROFILE      = armv6a
++    endif
++    ifeq ($(patsubst armv7%,armv7,$(HOST_BUILD_ARCH)), armv7)
++      HOST_BUILD_PROFILE      = armv7a
++    endif
++    ifeq ($(patsubst armv8%,armv8,$(HOST_BUILD_ARCH)), armv8)
++      HOST_BUILD_PROFILE      = armv8a
++    endif
++    ifeq ($(patsubst aarch64%,aarch64,$(HOST_BUILD_ARCH)), aarch64)
++      HOST_BUILD_PROFILE      = aarch64
++    endif
++    ifeq ($(HOST_BUILD_ARCH),x86_64)
++      HOST_BUILD_PROFILE      = x86_64
++    endif
++    ifeq ($(HOST_BUILD_ARCH),amd64)
++      HOST_BUILD_PROFILE      = x86_64
++    endif
++    ifeq ($(HOST_BUILD_ARCH),i86pc)
++      HOST_BUILD_PROFILE      = x86_64
++    endif
++    ifeq ($(patsubst i%86,i586,$(HOST_BUILD_ARCH)), i586)
++      HOST_BUILD_PROFILE      = i586
++    endif
++  endif
++endif # BUILD_PLATFORM != Windows
++
++# Detect target processor architecture
+ ifeq ($(BUILD_PLATFORM),Windows)
+   ifndef BUILD_PROFILE
+     BUILD_ARCH                = i586
+@@ -53,7 +98,7 @@ ifeq ($(BUILD_PLATFORM),Windows)
+   endif
+ else # BUILD_PLATFORM != Windows
+   ifndef BUILD_PROFILE
+-    BUILD_ARCH              = $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
++    BUILD_ARCH              ?= $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
+     BUILD_PROFILE           = $(BUILD_ARCH)
+     ifeq ($(patsubst armv6%,armv6,$(BUILD_ARCH)), armv6)
+       BUILD_PROFILE           = armv6a
+@@ -82,5 +127,7 @@ else # BUILD_PLATFORM != Windows
+   endif
+ endif # BUILD_PLATFORM != Windows
+ 
+-export BUILD_PROFILE
++HOST_BUILD_PROFILE ?= $(shell uname -m)
+ 
++export BUILD_PROFILE
++export HOST_BUILD_PROFILE
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 1fb917e..508f829 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -1,14 +1,18 @@
+ # Setup preferred tools
+ TOOL_LD                 = ld
++TOOL_HOST_LD            = ld
+ TOOL_CC                 = gcc
+ TOOL_CXX                = g++
++TOOL_HOST_CXX           = g++
+ TOOL_PHP                = php
++TOOL_PKG_CONFIG         = pkg-config
++TOOL_HOST_PKG_CONFIG    = PKG_CONFIG_SYSROOT_DIR=/ pkg-config
+ 
+ # Setup preferred flags
+ FLAG_RELRO              = -Wl,-z,relro,-z,now
+ FLAG_VERSION            = -DLSP_MAIN_VERSION=\"$(LSP_VERSION)\" -DLSP_INSTALL_PREFIX=\"$(PREFIX)\"
+-FLAG_CTUNE              = -std=c++98 \
+-                          -fno-exceptions -fno-rtti \
++FLAG_CXXSTANDARD        = -std=c++98
++FLAGS_CTUNE             = -fno-exceptions -fno-rtti \
+                           -fdata-sections -ffunction-sections -fno-asynchronous-unwind-tables \
+                           -fvisibility=hidden \
+                           -pipe -Wall
+@@ -17,21 +21,29 @@ FLAG_CTUNE              = -std=c++98 \
+ ifeq ($(BUILD_PLATFORM),Solaris)
+   FLAG_RELRO              =
+   TOOL_LD                 = gld
++  TOOL_HOST_LD            = gld
+ endif
+ 
+ # Setup system variables
+ CC              		 ?= $(TOOL_CC)
+ CXX                      ?= $(TOOL_CXX)
++HOST_CXX                 ?= $(TOOL_HOST_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
++HOST_LD                  ?= $(TOOL_HOST_LD)
++PKG_CONFIG               ?= $(TOOL_PKG_CONFIG)
++HOST_PKG_CONFIG          ?= $(TOOL_HOST_PKG_CONFIG)
+ 
+-MAKE_OPTS                 = -s
+-CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+-MERGE_FLAGS               = $(LD_ARCH) -r
+-EXE_TEST_FLAGS            = $(LDFLAGS) $(CC_ARCH)
+-EXE_FLAGS                 = $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++CFLAGS                   += $(CC_ARCH) $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) \
++                            $(CC_FLAGS) $(FLAG_VERSION)
++CXXFLAGS                 += $(CC_ARCH) $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) \
++                            $(CC_FLAGS) $(FLAG_VERSION)
++HOST_CXXFLAGS            += $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
++SO_FLAGS                 += $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
++MERGE_FLAGS              += $(LD_ARCH) -r
++EXE_TEST_FLAGS           += $(LDFLAGS) $(CC_ARCH)
++EXE_FLAGS                += $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++HOST_EXE_FLAGS           += $(HOST_LDFLAGS) $(FLAG_RELRO) -Wl,--gc-sections
+ 
+ ifeq ($(BUILD_PLATFORM), Linux)
+   SO_FLAGS                 += -Wl,--no-undefined
+@@ -59,13 +71,18 @@ endif
+ 
+ export CC
+ export CXX
++export HOST_CXX
+ export PHP
+ export LD
++export HOST_LD
++export PKG_CONFIG
++export HOST_PKG_CONFIG
+ 
+-export MAKE_OPTS
+ export CFLAGS
+ export CXXFLAGS
++export HOST_CXXFLAGS
+ export SO_FLAGS
+ export MERGE_FLAGS
+ export EXE_TEST_FLAGS
+ export EXE_FLAGS
++export HOST_EXE_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index 8546191..01b9d92 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,7 +1,16 @@
++# Estimate different pre-requisites before launching build
++
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+-UTL_DEPS                = $(OBJ_CORE) $(OBJ_DSP) $(OBJ_METADATA)
++UTL_DEPS                = $(HOST_OBJ_CORE) $(HOST_OBJ_DSP) $(HOST_OBJ_METADATA)
++OBJDIR                  ?= $(BUILDDIR)
+ 
+ NEED_UI                 = 0
+ NEED_PLUGINS            = 0
+@@ -58,6 +67,7 @@ ifeq ($(NEED_UI),1)
+   CONTAINER_DEPS         += $(OBJ_UI_CORE) $(OBJ_RES_CORE) rendering
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all $(MODULES)
+ 
+ all: $(MODULES)
+@@ -66,19 +76,34 @@ target: all
+ 
+ # Rules
+ $(SUBDIRS):
+-	@echo "Building $(@)"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	@echo "$(BUILDDIR)"
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ all \
++		CXX="$(CXX)" \
++		CXXFLAGS="$(CXXFLAGS)" \
++		LD="$(LD)" \
++		OBJDIR="$(OBJDIR)/$(@)" \
++		BUILD_PROFILE="$(BUILD_PROFILE)" \
++		SNDFILE_HEADERS="$(SNDFILE_HEADERS)" \
++		SNDFILE_LIBS="$(SNDFILE_LIBS)" \
++		LV2_HEADERS="$(LV2_HEADERS)" \
++		LV2_LIBS="$(LV2_LIBS)"
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+ 
++$(HOST_OBJ_CORE): core
++
+ $(OBJ_DSP): dsp
+ 
++$(HOST_OBJ_DSP): dsp
++
+ $(OBJ_PLUGINS): plugins
+ 
+ $(OBJ_METADATA): metadata
+ 
++$(HOST_OBJ_METADATA): metadata
++
+ $(OBJ_UI_CORE): ui
+ 
+ $(UTL_FILES): utils
+@@ -93,10 +118,10 @@ $(OBJ_TESTING_CORE): test testing rendering
+ 
+ $(OBJ_RES_CORE): $(OBJ_CORE) $(UTL_RESGEN)
+ 	@echo "Generating builtin resources"
+-	@mkdir -p $(OBJDIR)/res
+-	@$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	mkdir -p $(OBJDIR)/res
++	$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
++	rm -f gmon.out >/dev/null 2>&1
++	$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ # Target dependencies
+ container: $(CONTAINER_DEPS)
+@@ -108,18 +133,18 @@ doc: utils $(PHP_PLUGINS)
+ # Additional processing
+ $(PHP_PLUGINS): $(UTL_GENPHP)
+ 	@echo "Generating PHP file $(notdir $(PHP_PLUGINS))"
+-	@$(UTL_GENPHP) $(PHP_PLUGINS)
++	$(UTL_GENPHP) $(PHP_PLUGINS)
+ 
+ vst_stub: $(UTL_VSTMAKE)
+ 	@echo "Building VST stub"
+-	@mkdir -p $(OBJDIR)/vst
+-	@$(UTL_VSTMAKE) $(OBJDIR)/vst
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
++	mkdir -p $(OBJDIR)/vst
++	$(UTL_VSTMAKE) $(OBJDIR)/vst
++	rm -f gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
+ 
+ jack_stub: $(UTL_JACKMAKE)
+ 	@echo "Building JACK stub"
+-	@mkdir -p $(OBJDIR)/jack
+-	@$(UTL_JACKMAKE) $(OBJDIR)/jack
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
++	mkdir -p $(OBJDIR)/jack
++	$(UTL_JACKMAKE) $(OBJDIR)/jack
++	rm -f gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
+diff --git a/src/container/Makefile b/src/container/Makefile
+index 8aa8196..23a2e7a 100644
+--- a/src/container/Makefile
++++ b/src/container/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ OBJ_HELPERS             = $(OBJDIR)/CairoCanvas.o
+@@ -53,46 +59,47 @@ ifeq ($(VST_UI),1)
+   X_VST_LIBS             += $(UI_LIBS)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(MODULES)
+ 
+ $(OBJ_HELPERS):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
+ 
+ $(LIB_LADSPA):
+ 	@echo "  $(CXX) ladspa.cpp"
+-	@$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_LADSPA))"
+-	@$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
++	$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
+ 
+ $(LIB_LV2): $(X_LV2_DEPS)
+ 	@echo "  $(CXX) lv2.cpp"
+-	@$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
+-	@echo "  $(CXX) $(notdir $(X_LIB_LV2))"
+-	@$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
++	$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
++	@echo "  $(CXX) $(notdir $(LIB_LV2))"
++	$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
+ 
+ $(LIB_VST):
+ 	@echo "  $(CXX) vst.cpp"
+-	@$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_VST))"
+-	@$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
++	$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
+ 
+ $(LIB_JACK): $(OBJ_HELPERS)
+ 	@echo "  $(CXX) jack.cpp"
+-	@$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
++	$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
+ 	@echo "  $(CXX) $(notdir $(LIB_JACK))"
+-	@$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
++	$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
+ 
+ $(BIN_PROFILE): $(LIB_JACK)
+ 	@echo "  $(CXX) profile.cpp"
+-	@$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_PROFILE))"
+-	@$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
++	$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
+ 
+ $(BIN_TEST): $(LIB_JACK)
+ 	@echo "  $(CXX) test.cpp"
+-	@$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_TEST))"
+-	@$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
++	$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
+diff --git a/src/core/Makefile b/src/core/Makefile
+index a9ce1a5..3ad14a5 100644
+--- a/src/core/Makefile
++++ b/src/core/Makefile
+@@ -1,18 +1,25 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(SNDFILE_HEADERS)
+ LIBS                    = $(PTHREAD_LIBS)
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(OBJ_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
+ 
+ $(OBJ_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_CORE))"
+-	@$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
++	$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
+diff --git a/src/doc/Makefile b/src/doc/Makefile
+index aac73bf..f7f18a1 100644
+--- a/src/doc/Makefile
++++ b/src/doc/Makefile
+@@ -1,6 +1,13 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ PHPDIR      = $(BUILDDIR)/src/doc
+ HTMLDIR     = $(BUILDDIR)/html
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -8,14 +15,14 @@ target: all
+ # Common rules
+ $(PHPDIR)/Makefile:
+ 	@echo "Preparing PHP documentation generator"
+-	@mkdir -p $(PHPDIR)
+-	@mkdir -p $(HTMLDIR)
+-	@cp -rf * $(PHPDIR)/
+-	@cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
+-	@cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
+-	@cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
+-	@$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
++	mkdir -p $(PHPDIR)
++	mkdir -p $(HTMLDIR)
++	cp -rf * $(PHPDIR)/
++	cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
++	cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
++	cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
++	$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
+ 
+ all: $(PHPDIR)/Makefile
+ 	@echo "Generating HTML documentation"
+-	@$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
++	$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
+diff --git a/src/dsp/Makefile b/src/dsp/Makefile
+index f3d9ab1..cc30a37 100644
+--- a/src/dsp/Makefile
++++ b/src/dsp/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ NATIVE_IMPL             = $(OBJDIR)/native.o
+ 
+ X86_IMPL                = $(OBJDIR)/x86.o
+@@ -28,29 +34,35 @@ LINK_OBJECTS            = $(DSP_IMPL) $(BITS_IMPL) $(NATIVE_IMPL)
+ 
+ # Build different DSP modules dependent on architecture
+ ifeq ($(BUILD_PROFILE), i586)
+-LINK_OBJECTS           += $(X86_IMPL) $(SSE_IMPL) $(SSE2_IMPL) $(SSE3_IMPL) $(SSE4_IMPL) $(AVX_IMPL) $(AVX2_IMPL)
++  LINK_OBJECTS           += $(X86_IMPL) $(SSE_IMPL) $(SSE2_IMPL) $(SSE3_IMPL) \
++                            $(SSE4_IMPL) $(AVX_IMPL) $(AVX2_IMPL)
+ endif
+ ifeq ($(BUILD_PROFILE), x86_64)
+-LINK_OBJECTS           += $(X86_IMPL) $(SSE_IMPL) $(SSE2_IMPL) $(SSE3_IMPL) $(SSE4_IMPL) $(AVX_IMPL) $(AVX2_IMPL)
++LINK_OBJECTS           += $(X86_IMPL) $(SSE_IMPL) $(SSE2_IMPL) $(SSE3_IMPL) \
++                          $(SSE4_IMPL) $(AVX_IMPL) $(AVX2_IMPL)
+ endif
+ ifeq ($(BUILD_PLATFORM), BSD)
+   ifeq ($(BUILD_PROFILE), arm)
+-    LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
++    LINK_OBJECTS         += $(ARM_IMPL) $(NEON_D32_IMPL)
+   endif
+ endif
++ifeq ($(BUILD_PROFILE), armv6a)
++  LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
++endif
+ ifeq ($(BUILD_PROFILE), armv7a)
+-LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
++  LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
+ endif
+ ifeq ($(BUILD_PROFILE), armv7ve)
+-LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
++  LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
+ endif
+ ifeq ($(BUILD_PROFILE), arm32)
+-LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
++  LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
+ endif
+ ifeq ($(BUILD_PROFILE), aarch64)
+-LINK_OBJECTS           += $(AARCH64_IMPL) $(ASIMD_IMPL)
++  LINK_OBJECTS           += $(AARCH64_IMPL) $(ASIMD_IMPL)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -59,41 +71,41 @@ all: $(OBJ_DSP)
+ 
+ $(OBJ_DSP): $(LINK_OBJECTS)
+ 	@echo "  $(LD) $(notdir $(OBJ_DSP))"
+-	@$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
++	$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
+ 
+ $(DSP_IMPL) $(BITS_IMPL) $(NATIVE_IMPL) $(X86_IMPL) $(ARM_IMPL) $(AARCH64_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	
+ $(SSE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE3_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE4_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
+ 	
+ $(NEON_D32_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
+ 	
+ $(ASIMD_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
+ 
+diff --git a/src/metadata/Makefile b/src/metadata/Makefile
+index 201f89a..403f38a 100644
+--- a/src/metadata/Makefile
++++ b/src/metadata/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -10,8 +16,8 @@ target: all
+ 
+ $(OBJ_METADATA): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_METADATA))"
+-	@$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+diff --git a/src/plugins/Makefile b/src/plugins/Makefile
+index 1f197dc..85963ba 100644
+--- a/src/plugins/Makefile
++++ b/src/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,8 +14,8 @@ all:  $(OBJ_PLUGINS)
+ 
+ $(OBJ_PLUGINS): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(OBJ_PLUGINS))"
+-	@$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
++	$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
+diff --git a/src/rendering/Makefile b/src/rendering/Makefile
+index 897e327..65f3237 100644
+--- a/src/rendering/Makefile
++++ b/src/rendering/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ BASE_IMPL             	= $(OBJDIR)/base_backend.o
+ 
+ GLX_IMPL                = $(OBJDIR)/glx/backend.o $(OBJDIR)/glx/factory.o
+@@ -20,15 +26,15 @@ all: $(MODULES)
+ 
+ $(LIB_R3D_GLX): $(BASE_IMPL) $(GLX_IMPL)
+ 	@echo "  $(CXX) $(notdir $(LIB_R3D_GLX))"
+-	@$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
++	$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
+ 
+ $(BASE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 	
+ $(GLX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $(@))
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
++	mkdir -p $(dir $(@))
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
+ 
+ 
+diff --git a/src/test/Makefile b/src/test/Makefile
+index e8016e1..a89366e 100644
+--- a/src/test/Makefile
++++ b/src/test/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TEST_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TEST_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TEST_CORE))"
+-	@$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/testing/Makefile b/src/testing/Makefile
+index 705913d..d048065 100644
+--- a/src/testing/Makefile
++++ b/src/testing/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TESTING_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TESTING_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TESTING_CORE))"
+-	@$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/testing/mtest/3d/boolean3d.cpp b/src/testing/mtest/3d/boolean3d.cpp
+deleted file mode 100644
+index 636dce1..0000000
+--- a/src/testing/mtest/3d/boolean3d.cpp
++++ /dev/null
+@@ -1,253 +0,0 @@
+-/*
+- * Copyright (C) 2020 Linux Studio Plugins Project <https://lsp-plug.in/>
+- *           (C) 2020 Vladimir Sadovnikov <sadko4u@gmail.com>
+- *
+- * This file is part of lsp-plugins
+- * Created on: 24 дек. 2018 г.
+- *
+- * lsp-plugins is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU Lesser General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * any later version.
+- *
+- * lsp-plugins is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU Lesser General Public License for more details.
+- *
+- * You should have received a copy of the GNU Lesser General Public License
+- * along with lsp-plugins. If not, see <https://www.gnu.org/licenses/>.
+- */
+-
+-#if 0
+-
+-#include <test/mtest.h>
+-#include <testing/mtest/3d/common/X11Renderer.h>
+-#include <core/files/Model3DFile.h>
+-#include <core/3d/rt_context.h>
+-#include <core/3d/RayTrace3D.h>
+-
+-#include <core/types.h>
+-#include <core/debug.h>
+-#include <core/sugar.h>
+-#include <core/status.h>
+-#include <stdlib.h>
+-#include <errno.h>
+-#include <data/cstorage.h>
+-
+-#include <X11/X.h>
+-#include <X11/Xlib.h>
+-#include <X11/keysymdef.h>
+-#include <GL/gl.h>
+-#include <GL/glx.h>
+-#include <GL/glu.h>
+-#include <sys/poll.h>
+-
+-//#define TEST_DEBUG
+-
+-#ifndef TEST_DEBUG
+-//    #define BREAKPOINT_STEP     -1
+-//    #define BREAKPOINT_STEP     27
+-//    #define BREAKPOINT_STEP     83
+-    #define BREAKPOINT_STEP     215
+-//    #define BREAKPOINT_STEP     0
+-
+-#else /* DEBUG */
+-    #define BREAKPOINT_STEP     0
+-#endif /* DEBUG */
+-
+-MTEST_BEGIN("3d", boolean)
+-
+-    class Renderer: public X11Renderer
+-    {
+-        private:
+-            Scene3D        *pScene;
+-            ssize_t         nTrace;
+-            bool            bDrawMatched;
+-            bool            bDrawIgnored;
+-            bool            bDrawDebug;
+-
+-        public:
+-            explicit Renderer(Scene3D *scene, View3D *view): X11Renderer(view)
+-            {
+-                pScene = scene;
+-                bDrawMatched    = true;
+-                bDrawIgnored    = true;
+-                bDrawDebug      = true;
+-                bDrawNormals    = false;
+-                nTrace          = BREAKPOINT_STEP;
+-
+-                update_view();
+-            }
+-
+-            virtual ~Renderer()
+-            {
+-            }
+-
+-        public:
+-            virtual void on_key_press(const XKeyEvent &ev, KeySym key)
+-            {
+-                switch (key)
+-                {
+-                    case XK_Up:
+-                        nTrace++;
+-                        lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                        update_view();
+-                        break;
+-                    case XK_Down:
+-                        if (nTrace >= 0)
+-                        {
+-                            nTrace--;
+-                            lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                            update_view();
+-                        }
+-                        break;
+-
+-                    case 'm':
+-                    {
+-                        bDrawMatched = ! bDrawMatched;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'i':
+-                    {
+-                        bDrawIgnored = ! bDrawIgnored;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'd':
+-                    {
+-                        bDrawDebug = ! bDrawDebug;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case '0': case '1': case '2': case '3': case '4':
+-                    case '5': case '6': case '7': case '8': case '9':
+-                    {
+-                        Object3D *obj = pScene->get_object(key - '0');
+-                        if (obj != NULL)
+-                        {
+-                            obj->set_visible(!obj->is_visible());
+-                            update_view();
+-                        }
+-                        break;
+-                    }
+-                    default:
+-                        X11Renderer::on_key_press(ev, key);
+-                        break;
+-                }
+-            }
+-
+-        protected:
+-            status_t perform_boolean(rt_debug_t *shared)
+-            {
+-                if (pScene->num_objects() <= 0)
+-                    return STATUS_OK;
+-
+-                rt_mesh_t mesh;
+-                mesh.set_debug_context(shared, &shared->trace);
+-
+-                Object3D *obj = pScene->object(0);
+-                status_t res = mesh.init(obj, 0, obj->matrix());
+-                if (res != STATUS_OK)
+-                    return res;
+-
+-                for (size_t i=1, n=pScene->num_objects(); i<n; ++i)
+-                {
+-                    obj = pScene->object(i);
+-                    res = mesh.subtract(obj, i, obj->matrix());
+-                    if (res != STATUS_OK)
+-                        return res;
+-                }
+-
+-                return STATUS_OK;
+-            }
+-
+-            status_t    update_view()
+-            {
+-                v_vertex3d_t v[3];
+-                status_t res = STATUS_OK;
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // List of ignored and matched triangles
+-                rt_debug_t global;
+-                global.breakpoint   = nTrace;
+-                global.step         = 0;
+-
+-                // Perform raytrace
+-                res     = perform_boolean(&global);
+-                if (res == STATUS_BREAKPOINT)
+-                {
+-                    pView->swap(&global.trace);
+-                    res         = STATUS_OK;
+-                }
+-
+-                if (!bDrawDebug)
+-                    pView->clear_all();
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // Build final scene from matched and ignored items
+-                if (bDrawIgnored)
+-                {
+-                    for (size_t i=0, m=global.ignored.size(); i < m; ++i)
+-                        pView->add_triangle_1c(global.ignored.at(i), &C_GRAY);
+-                }
+-
+-                if (bDrawMatched)
+-                {
+-                    for (size_t i=0, m=global.matched.size(); i < m; ++i)
+-                    {
+-                        v_triangle3d_t *t = global.matched.at(i);
+-                        v[0].p     = t->p[0];
+-                        v[0].n     = t->n[0];
+-                        v[0].c     = C_RED;
+-
+-                        v[1].p     = t->p[1];
+-                        v[1].n     = t->n[1];
+-                        v[1].c     = C_GREEN;
+-
+-                        v[2].p     = t->p[2];
+-                        v[2].n     = t->n[2];
+-                        v[2].c     = C_BLUE;
+-
+-                        pView->add_triangle(v);
+-                    }
+-                }
+-
+-                global.ignored.flush();
+-                global.matched.flush();
+-
+-                return res;
+-            }
+-    };
+-
+-    MTEST_MAIN
+-    {
+-        const char *scene_file = (argc < 1) ? "res/test/3d/cross.obj" : argv[0];
+-
+-        // Load scene
+-        Scene3D s;
+-        View3D v;
+-        status_t res = Model3DFile::load(&s, scene_file, true);
+-        MTEST_ASSERT_MSG(res == STATUS_OK, "Error loading scene from file %s", scene_file);
+-
+-        // Initialize renderer
+-        Renderer r(&s, &v);
+-        MTEST_ASSERT_MSG(r.init() == STATUS_OK, "Error initializing renderer");
+-        r.run();
+-        r.destroy();
+-
+-        // Destroy scene
+-        s.destroy();
+-    }
+-
+-MTEST_END
+-
+-#endif
+diff --git a/src/testing/mtest/3d/bsp_context.cpp b/src/testing/mtest/3d/bsp_context.cpp
+index de54427..f7b7a34 100644
+--- a/src/testing/mtest/3d/bsp_context.cpp
++++ b/src/testing/mtest/3d/bsp_context.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/reflections3d.cpp b/src/testing/mtest/3d/reflections3d.cpp
+index e250444..367f86c 100644
+--- a/src/testing/mtest/3d/reflections3d.cpp
++++ b/src/testing/mtest/3d/reflections3d.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/ui/Makefile b/src/ui/Makefile
+index 503111d..eb1e4c5 100644
+--- a/src/ui/Makefile
++++ b/src/ui/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= ws tk ctl plugins
+@@ -8,15 +14,15 @@ PACKAGES                = $(OBJ_WS_CORE) $(OBJ_TK_CORE) $(OBJ_CTL_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_UI_CORE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_UI_CORE)
+diff --git a/src/ui/ctl/Makefile b/src/ui/ctl/Makefile
+index 3f727db..692fe9d 100644
+--- a/src/ui/ctl/Makefile
++++ b/src/ui/ctl/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_CTL_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_CTL_CORE) $(SUBDIRS)
+diff --git a/src/ui/plugins/Makefile b/src/ui/plugins/Makefile
+index 8f8db8f..0e6c3d8 100644
+--- a/src/ui/plugins/Makefile
++++ b/src/ui/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_PLUGIN_UIS): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_PLUGIN_UIS) $(SUBDIRS)
+diff --git a/src/ui/tk/Makefile b/src/ui/tk/Makefile
+index 8700f63..cfb4c78 100644
+--- a/src/ui/tk/Makefile
++++ b/src/ui/tk/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -6,11 +12,11 @@ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_TK_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_TK_CORE)
+diff --git a/src/ui/ws/Makefile b/src/ui/ws/Makefile
+index 1109752..b9836d8 100644
+--- a/src/ui/ws/Makefile
++++ b/src/ui/ws/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= x11
+@@ -8,15 +14,15 @@ all: $(OBJ_WS_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ $(OBJ_WS_CORE): $(FILES) $(OBJ_WS_X11_CORE)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
++	$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
+ 
+ $(OBJ_WS_X11_CORE): $(SUBDIRS)
+diff --git a/src/ui/ws/x11/Makefile b/src/ui/ws/x11/Makefile
+index b99e93d..7bffca3 100644
+--- a/src/ui/ws/x11/Makefile
++++ b/src/ui/ws/x11/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(XLIB_HEADERS) $(CAIRO_HEADERS)
+@@ -8,9 +14,9 @@ all: $(OBJ_WS_X11_CORE)
+ 
+ $(OBJ_WS_X11_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
++	$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+diff --git a/src/ui/ws/x11/X11Display.cpp b/src/ui/ws/x11/X11Display.cpp
+index d85db51..987e8a9 100644
+--- a/src/ui/ws/x11/X11Display.cpp
++++ b/src/ui/ws/x11/X11Display.cpp
+@@ -23,7 +23,7 @@
+ 
+ #ifdef USE_X11_DISPLAY
+ 
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ 
+@@ -233,7 +233,7 @@ namespace lsp
+                 while (!atomic_cas(&hLock, 0, 1)) { /* Wait */ }
+ 
+                 // Dispatch errors between Displays
+-                for (X11Display *dp = pHandlers; dp != NULL; ++dp)
++                for (X11Display *dp = pHandlers; dp != NULL; dp = dp->pNextHandler)
+                     if (dp->pDisplay == dpy)
+                         dp->handle_error(ev);
+ 
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index 88b3739..4b4fd2e 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -1,12 +1,24 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
++CXX                     = $(HOST_CXX)
++CXXFLAGS                = $(HOST_CXXFLAGS)
++MAKE_OPTS              += CXX=$(HOST_CXX) CXXFLAGS=$(HOST_CXXFLAGS)
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS                 =
+-OBJ_FILES               = $(OBJ_CORE) $(OBJ_METADATA)
++OBJ_FILES               = $(HOST_OBJ_CORE) $(HOST_OBJ_METADATA) $(HOST_OBJ_DSP)
+ OBJ_LIBS                = $(PTHREAD_LIBS) $(MATH_LIBS)
+ OBJ_EXTRA               =
+ INCLUDE_EXTRA           =
+ 
++export PKG_CONFIG_SYSROOT_DIR = /
++
+ ifeq ($(BUILD_PLATFORM),BSD)
+   OBJ_LIBS               += $(ICONV_LIBS)
+ endif
+@@ -18,7 +30,7 @@ endif
+ ifeq ($(findstring lv2,$(BUILD_MODULES)),lv2)
+   MODULES                += $(UTL_GENTTL)
+   FILELIST               += lv2_genttl.o
+-  INCLUDE_EXTRA          += $(LV2_HEADERS)
++  INCLUDE_EXTRA          += $(HOST_LV2_HEADERS)
+ endif
+ ifeq ($(findstring vst,$(BUILD_MODULES)),vst)
+   MODULES                += $(UTL_VSTMAKE)
+@@ -44,32 +56,30 @@ target: all
+ # Common rules
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	@echo "  $(HOST_CXX) $(FILE)"
++	$(HOST_CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(HOST_CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+-$(UTL_GENTTL): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	@$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++$(UTL_GENTTL): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENTTL))"
++	$(HOST_CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+-$(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	@$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_JACKMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_JACKMAKE))"
++	$(HOST_CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	@$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_VSTMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_VSTMAKE))"
++	$(HOST_CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_GENPHP): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	@$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_GENPHP): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENPHP))"
++	$(HOST_CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_RESGEN): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	@$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+-
+-	
+\ No newline at end of file
++$(UTL_RESGEN): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_RESGEN))"
++	$(HOST_CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_EXTRA) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+diff --git a/src/utils/jack_genmake.cpp b/src/utils/jack_genmake.cpp
+index 09974b0..3272ad8 100644
+--- a/src/utils/jack_genmake.cpp
++++ b/src/utils/jack_genmake.cpp
+@@ -97,6 +97,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%=%%.cpp)\n");
+@@ -107,11 +112,11 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
+ 
+         fprintf(out, "install: $(FILES)\n");
+-        fprintf(out, "\t@$(INSTALL) $(FILES) $(TARGET_PATH)/");
++        fprintf(out, "\t$(INSTALL) $(FILES) $(TARGET_PATH)/");
+ 
+         // Close file
+         fclose(out);
+diff --git a/src/utils/vst_genmake.cpp b/src/utils/vst_genmake.cpp
+index 9eeedeb..f47f783 100644
+--- a/src/utils/vst_genmake.cpp
++++ b/src/utils/vst_genmake.cpp
+@@ -100,6 +100,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%.so, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%.so=%%.cpp)\n");
+@@ -110,8 +115,8 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
+ 
+         // Close file
+         fclose(out);
+diff --git a/tmp/.gitignore b/tmp/.gitignore
+index 22e8364..d6b7ef3 100644
+--- a/tmp/.gitignore
++++ b/tmp/.gitignore
+@@ -1 +1,2 @@
+-/*
+\ No newline at end of file
++*
++!.gitignore
diff --git a/srcpkgs/lsp-plugins-lv2/template b/srcpkgs/lsp-plugins-lv2/template
new file mode 100644
index 000000000000..fc02794b8dfc
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/template
@@ -0,0 +1,75 @@
+# Template file for 'lsp-plugins-lv2'
+pkgname=lsp-plugins-lv2
+version=1.1.30
+revision=1
+wrksrc=lsp-plugins-${version}
+build_style=gnu-makefile
+make_build_args="VERBOSE=1 PREFIX=/usr"
+make_check_args=$make_build_args
+make_install_target="install install_xdg"
+make_use_env=yes
+hostmakedepends="pkg-config php lv2 libsndfile-devel"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel
+ ladspa-sdk jack-devel"
+_desc="Collection of free audio plugins"
+short_desc="${_desc} - LV2"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/"
+distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+export SKIP_CC_LD_ARCH=yes
+export HOST_BUILD_ARCH="${XBPS_MACHINE%-*}"
+export HOST_PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
+if [ -n "$CROSS_BUILD" ]; then
+	export BUILD_ARCH="${XBPS_TARGET_MACHINE%-*}"
+	export HOST_CXXFLAGS="$CXXFLAGS_host"
+	export HOST_CXX="$CXX_host"
+	export HOST_LD="$LD_host"
+else
+	export BUILD_ARCH="${XBPS_MACHINE%-*}"
+	export HOST_CXXFLAGS="$BUILD_CXXFLAGS"
+	export HOST_CXX="$BUILD_CXX"
+	export HOST_LD="$BUILD_LD"
+fi
+
+lsp-plugins-jack_package() {
+	short_desc="${_desc} - JACK"
+	pkg_install() {
+		vmove usr/bin
+		vmove usr/lib/lsp-plugins/lsp-plugins-jack-core*
+		vmove usr/lib/lsp-plugins/lsp-plugins-r3d-glx.so
+		vmove usr/share/applications
+		vmove usr/share/desktop-directories
+		vmove usr/share/icons
+		vmove etc/xdg/menus
+	}
+}
+
+lsp-plugins-ladspa_package() {
+	short_desc="${_desc} - LADSPA"
+	pkg_install() {
+		vmove usr/lib/ladspa/lsp-plugins-ladspa.so
+	}
+}
+
+lsp-plugins-vst_package() {
+	short_desc="${_desc} - VST"
+	pkg_install() {
+		vmove usr/lib/vst
+	}
+}
+
+lsp-plugins_package() {
+	short_desc="${_desc} - LV2, JACK, LADSPA, VST"
+	depends="lsp-plugins-lv2 lsp-plugins-jack lsp-plugins-ladspa lsp-plugins-vst"
+	build_style=meta
+}
+
+lsp-plugins-doc_package() {
+	short_desc="${_desc} - documentation"
+	pkg_install() {
+		vmove usr/share/doc
+	}
+}
diff --git a/srcpkgs/lsp-plugins-vst b/srcpkgs/lsp-plugins-vst
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-vst
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Updated] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (58 preceding siblings ...)
  2021-08-10  1:49 ` Logarithmus
@ 2021-08-10  2:09 ` Logarithmus
  2021-08-10  2:28 ` [PR REVIEW] " Logarithmus
                   ` (7 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-08-10  2:09 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 2267 bytes --]

There is an updated pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.
Also used by `easyeffects`, `pulseeffects`' successor 
Continuation of https://github.com/void-linux/void-packages/pull/29932

TODO:
- [ ] wait for https://github.com/sadko4u/lsp-plugins/pull/198
- [ ] implement `VERBOSE` option into `lsp-plugins` Makefiles to save my sanity debugging them
https://github.com/sadko4u/lsp-plugins/pull/200
- [ ] polish & upstream cross build patch https://github.com/sadko4u/lsp-plugins/pull/202
- [x] fix `i686`
- [x] fix `armv6`
- [x] split the package (ladspa, lv2, vst, jack, doc)
- [ ] remove parallel check commit 

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 183748 bytes --]

From 6409beafe298ec7469d9149bcc1dcf695cd0d082 Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH] New package: lsp-plugins-1.1.30

---
 srcpkgs/lsp-plugins                           |    1 +
 srcpkgs/lsp-plugins-doc                       |    1 +
 srcpkgs/lsp-plugins-jack                      |    1 +
 srcpkgs/lsp-plugins-ladspa                    |    1 +
 .../00-makefile-test-remove-cflags.patch      |   12 +
 srcpkgs/lsp-plugins-lv2/files/01-musl.patch   |  391 +++
 .../files/02-make-verbose.patch               | 1082 +++++++++
 .../files/03-improve-cross.patch              |  565 +++++
 srcpkgs/lsp-plugins-lv2/files/04-misc.patch   |  280 +++
 .../patches/00-patch-all.patch                | 2098 +++++++++++++++++
 srcpkgs/lsp-plugins-lv2/template              |   75 +
 srcpkgs/lsp-plugins-vst                       |    1 +
 12 files changed, 4508 insertions(+)
 create mode 120000 srcpkgs/lsp-plugins
 create mode 120000 srcpkgs/lsp-plugins-doc
 create mode 120000 srcpkgs/lsp-plugins-jack
 create mode 120000 srcpkgs/lsp-plugins-ladspa
 create mode 100644 srcpkgs/lsp-plugins-lv2/files/00-makefile-test-remove-cflags.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/files/01-musl.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/files/02-make-verbose.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/files/03-improve-cross.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/files/04-misc.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/patches/00-patch-all.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/template
 create mode 120000 srcpkgs/lsp-plugins-vst

diff --git a/srcpkgs/lsp-plugins b/srcpkgs/lsp-plugins
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-doc b/srcpkgs/lsp-plugins-doc
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-doc
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-jack b/srcpkgs/lsp-plugins-jack
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-jack
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-ladspa b/srcpkgs/lsp-plugins-ladspa
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-ladspa
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-lv2/files/00-makefile-test-remove-cflags.patch b/srcpkgs/lsp-plugins-lv2/files/00-makefile-test-remove-cflags.patch
new file mode 100644
index 000000000000..fd82f25d4a25
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/files/00-makefile-test-remove-cflags.patch
@@ -0,0 +1,12 @@
+https://github.com/void-linux/void-packages/pull/29932#discussion_r605695858
+--- a/Makefile
++++ b/Makefile
+@@ -108,8 +108,6 @@ trace: export EXE_FLAGS     += -g3
+ trace: compile
+ 
+ test: OBJDIR                 = $(TESTDIR)
+-test: export CFLAGS         += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-test: export CXXFLAGS       += -O2 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
diff --git a/srcpkgs/lsp-plugins-lv2/files/01-musl.patch b/srcpkgs/lsp-plugins-lv2/files/01-musl.patch
new file mode 100644
index 000000000000..6dc08949a87a
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/files/01-musl.patch
@@ -0,0 +1,391 @@
+diff --git a/TODO.txt b/TODO.txt
+index 4976293..3bb3db8 100644
+--- a/TODO.txt
++++ b/TODO.txt
+@@ -28,6 +28,11 @@
+ - Added possibility to change themes in runtime.
+ - Complicated plugin UIs now allow to switch between Advanced and Novice modes.
+ 
++=== 1.1.31 ===
++
++* Fixed X11 error handling routine that could crash under certain conditions.
++* Better support for musl libc (contributed by Artur Sinila).
++
+ *******************************************************************************
+ * New plugin check list before release
+ *******************************************************************************
+diff --git a/include/common/types.h b/include/common/types.h
+index dd1816e..59c794e 100644
+--- a/include/common/types.h
++++ b/include/common/types.h
+@@ -563,6 +563,12 @@
+     #define MINIMUM_ALIGN                   DEFAULT_ALIGN
+ #endif /* DEFAULT_ALIGN */
+ 
++//-----------------------------------------------------------------------------
++// Detect some libraries
++#ifdef __GLIBC__
++    #define USE_GLIBC                           __GLIBC__
++#endif /* GLIBC */
++
+ //-----------------------------------------------------------------------------
+ // Type definitions
+ __IF_32( typedef        uint32_t            umword_t );
+diff --git a/include/data/cvector.h b/include/data/cvector.h
+index eccc94a..17fe119 100644
+--- a/include/data/cvector.h
++++ b/include/data/cvector.h
+@@ -25,6 +25,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <sys/types.h>
+ 
+ #define CVECTOR_GROW        16
+ 
+diff --git a/include/test/main/executor.h b/include/test/main/executor.h
+index 0faf73f..5a0c016 100644
+--- a/include/test/main/executor.h
++++ b/include/test/main/executor.h
+@@ -633,7 +633,7 @@ namespace lsp
+     }
+ #endif /* PLATFORM_WINDOWS */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     void TestExecutor::start_memcheck(test::Test *v)
+     {
+         if (!pCfg->mtrace)
+diff --git a/include/test/main/types.h b/include/test/main/types.h
+index ef15800..0c5d7c2 100644
+--- a/include/test/main/types.h
++++ b/include/test/main/types.h
+@@ -42,7 +42,7 @@
+     #include <fcntl.h>
+ #endif /* PLATFORM_UNIX_COMPATIBLE */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     #include <mcheck.h>
+ #endif /* PLATFORM_LINUX */
+ 
+diff --git a/include/testing/mtest/3d/common/X11Renderer.h b/include/testing/mtest/3d/common/X11Renderer.h
+index e8ec205..f0a51e2 100644
+--- a/include/testing/mtest/3d/common/X11Renderer.h
++++ b/include/testing/mtest/3d/common/X11Renderer.h
+@@ -30,7 +30,7 @@
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include <rendering/backend.h>
+ #include <core/ipc/Library.h>
+diff --git a/src/testing/mtest/3d/boolean3d.cpp b/src/testing/mtest/3d/boolean3d.cpp
+deleted file mode 100644
+index 636dce1..0000000
+--- a/src/testing/mtest/3d/boolean3d.cpp
++++ /dev/null
+@@ -1,253 +0,0 @@
+-/*
+- * Copyright (C) 2020 Linux Studio Plugins Project <https://lsp-plug.in/>
+- *           (C) 2020 Vladimir Sadovnikov <sadko4u@gmail.com>
+- *
+- * This file is part of lsp-plugins
+- * Created on: 24 дек. 2018 г.
+- *
+- * lsp-plugins is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU Lesser General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * any later version.
+- *
+- * lsp-plugins is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU Lesser General Public License for more details.
+- *
+- * You should have received a copy of the GNU Lesser General Public License
+- * along with lsp-plugins. If not, see <https://www.gnu.org/licenses/>.
+- */
+-
+-#if 0
+-
+-#include <test/mtest.h>
+-#include <testing/mtest/3d/common/X11Renderer.h>
+-#include <core/files/Model3DFile.h>
+-#include <core/3d/rt_context.h>
+-#include <core/3d/RayTrace3D.h>
+-
+-#include <core/types.h>
+-#include <core/debug.h>
+-#include <core/sugar.h>
+-#include <core/status.h>
+-#include <stdlib.h>
+-#include <errno.h>
+-#include <data/cstorage.h>
+-
+-#include <X11/X.h>
+-#include <X11/Xlib.h>
+-#include <X11/keysymdef.h>
+-#include <GL/gl.h>
+-#include <GL/glx.h>
+-#include <GL/glu.h>
+-#include <sys/poll.h>
+-
+-//#define TEST_DEBUG
+-
+-#ifndef TEST_DEBUG
+-//    #define BREAKPOINT_STEP     -1
+-//    #define BREAKPOINT_STEP     27
+-//    #define BREAKPOINT_STEP     83
+-    #define BREAKPOINT_STEP     215
+-//    #define BREAKPOINT_STEP     0
+-
+-#else /* DEBUG */
+-    #define BREAKPOINT_STEP     0
+-#endif /* DEBUG */
+-
+-MTEST_BEGIN("3d", boolean)
+-
+-    class Renderer: public X11Renderer
+-    {
+-        private:
+-            Scene3D        *pScene;
+-            ssize_t         nTrace;
+-            bool            bDrawMatched;
+-            bool            bDrawIgnored;
+-            bool            bDrawDebug;
+-
+-        public:
+-            explicit Renderer(Scene3D *scene, View3D *view): X11Renderer(view)
+-            {
+-                pScene = scene;
+-                bDrawMatched    = true;
+-                bDrawIgnored    = true;
+-                bDrawDebug      = true;
+-                bDrawNormals    = false;
+-                nTrace          = BREAKPOINT_STEP;
+-
+-                update_view();
+-            }
+-
+-            virtual ~Renderer()
+-            {
+-            }
+-
+-        public:
+-            virtual void on_key_press(const XKeyEvent &ev, KeySym key)
+-            {
+-                switch (key)
+-                {
+-                    case XK_Up:
+-                        nTrace++;
+-                        lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                        update_view();
+-                        break;
+-                    case XK_Down:
+-                        if (nTrace >= 0)
+-                        {
+-                            nTrace--;
+-                            lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                            update_view();
+-                        }
+-                        break;
+-
+-                    case 'm':
+-                    {
+-                        bDrawMatched = ! bDrawMatched;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'i':
+-                    {
+-                        bDrawIgnored = ! bDrawIgnored;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'd':
+-                    {
+-                        bDrawDebug = ! bDrawDebug;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case '0': case '1': case '2': case '3': case '4':
+-                    case '5': case '6': case '7': case '8': case '9':
+-                    {
+-                        Object3D *obj = pScene->get_object(key - '0');
+-                        if (obj != NULL)
+-                        {
+-                            obj->set_visible(!obj->is_visible());
+-                            update_view();
+-                        }
+-                        break;
+-                    }
+-                    default:
+-                        X11Renderer::on_key_press(ev, key);
+-                        break;
+-                }
+-            }
+-
+-        protected:
+-            status_t perform_boolean(rt_debug_t *shared)
+-            {
+-                if (pScene->num_objects() <= 0)
+-                    return STATUS_OK;
+-
+-                rt_mesh_t mesh;
+-                mesh.set_debug_context(shared, &shared->trace);
+-
+-                Object3D *obj = pScene->object(0);
+-                status_t res = mesh.init(obj, 0, obj->matrix());
+-                if (res != STATUS_OK)
+-                    return res;
+-
+-                for (size_t i=1, n=pScene->num_objects(); i<n; ++i)
+-                {
+-                    obj = pScene->object(i);
+-                    res = mesh.subtract(obj, i, obj->matrix());
+-                    if (res != STATUS_OK)
+-                        return res;
+-                }
+-
+-                return STATUS_OK;
+-            }
+-
+-            status_t    update_view()
+-            {
+-                v_vertex3d_t v[3];
+-                status_t res = STATUS_OK;
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // List of ignored and matched triangles
+-                rt_debug_t global;
+-                global.breakpoint   = nTrace;
+-                global.step         = 0;
+-
+-                // Perform raytrace
+-                res     = perform_boolean(&global);
+-                if (res == STATUS_BREAKPOINT)
+-                {
+-                    pView->swap(&global.trace);
+-                    res         = STATUS_OK;
+-                }
+-
+-                if (!bDrawDebug)
+-                    pView->clear_all();
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // Build final scene from matched and ignored items
+-                if (bDrawIgnored)
+-                {
+-                    for (size_t i=0, m=global.ignored.size(); i < m; ++i)
+-                        pView->add_triangle_1c(global.ignored.at(i), &C_GRAY);
+-                }
+-
+-                if (bDrawMatched)
+-                {
+-                    for (size_t i=0, m=global.matched.size(); i < m; ++i)
+-                    {
+-                        v_triangle3d_t *t = global.matched.at(i);
+-                        v[0].p     = t->p[0];
+-                        v[0].n     = t->n[0];
+-                        v[0].c     = C_RED;
+-
+-                        v[1].p     = t->p[1];
+-                        v[1].n     = t->n[1];
+-                        v[1].c     = C_GREEN;
+-
+-                        v[2].p     = t->p[2];
+-                        v[2].n     = t->n[2];
+-                        v[2].c     = C_BLUE;
+-
+-                        pView->add_triangle(v);
+-                    }
+-                }
+-
+-                global.ignored.flush();
+-                global.matched.flush();
+-
+-                return res;
+-            }
+-    };
+-
+-    MTEST_MAIN
+-    {
+-        const char *scene_file = (argc < 1) ? "res/test/3d/cross.obj" : argv[0];
+-
+-        // Load scene
+-        Scene3D s;
+-        View3D v;
+-        status_t res = Model3DFile::load(&s, scene_file, true);
+-        MTEST_ASSERT_MSG(res == STATUS_OK, "Error loading scene from file %s", scene_file);
+-
+-        // Initialize renderer
+-        Renderer r(&s, &v);
+-        MTEST_ASSERT_MSG(r.init() == STATUS_OK, "Error initializing renderer");
+-        r.run();
+-        r.destroy();
+-
+-        // Destroy scene
+-        s.destroy();
+-    }
+-
+-MTEST_END
+-
+-#endif
+diff --git a/src/testing/mtest/3d/bsp_context.cpp b/src/testing/mtest/3d/bsp_context.cpp
+index de54427..f7b7a34 100644
+--- a/src/testing/mtest/3d/bsp_context.cpp
++++ b/src/testing/mtest/3d/bsp_context.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/reflections3d.cpp b/src/testing/mtest/3d/reflections3d.cpp
+index e250444..367f86c 100644
+--- a/src/testing/mtest/3d/reflections3d.cpp
++++ b/src/testing/mtest/3d/reflections3d.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/ui/ws/x11/X11Display.cpp b/src/ui/ws/x11/X11Display.cpp
+index d85db51..987e8a9 100644
+--- a/src/ui/ws/x11/X11Display.cpp
++++ b/src/ui/ws/x11/X11Display.cpp
+@@ -23,7 +23,7 @@
+ 
+ #ifdef USE_X11_DISPLAY
+ 
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ 
+@@ -233,7 +233,7 @@ namespace lsp
+                 while (!atomic_cas(&hLock, 0, 1)) { /* Wait */ }
+ 
+                 // Dispatch errors between Displays
+-                for (X11Display *dp = pHandlers; dp != NULL; ++dp)
++                for (X11Display *dp = pHandlers; dp != NULL; dp = dp->pNextHandler)
+                     if (dp->pDisplay == dpy)
+                         dp->handle_error(ev);
+ 
diff --git a/srcpkgs/lsp-plugins-lv2/files/02-make-verbose.patch b/srcpkgs/lsp-plugins-lv2/files/02-make-verbose.patch
new file mode 100644
index 000000000000..d6c4f6ce2f92
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/files/02-make-verbose.patch
@@ -0,0 +1,1082 @@
+diff --git a/Makefile b/Makefile
+index 2d9cb79..79ddcc6 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ # Common definitions
+ RELEASE_TEXT            = LICENSE.txt README.txt CHANGELOG.txt
+ RELEASE_SRC             = $(RELEASE_TEXT) src build-*.sh include res Makefile release.sh
+@@ -166,24 +172,24 @@ compile_info:
+ 	@echo "-------------------------------------------------------------------------------"
+ 
+ compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@mkdir -p $(CFGDIR)
+-	@test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
+-	@test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
+-	@test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
+-	@test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++	mkdir -p $(OBJDIR)/src
++	mkdir -p $(CFGDIR)
++	test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
++	test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
++	test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
++	test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Build OK"
+ 	
+ test_compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++	mkdir -p $(OBJDIR)/src
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
+ clean:
+-	@-rm -rf $(BUILDDIR)
+-	@-rm -rf $(TESTDIR)
+-	@-rm -rf $(CFGDIR)
++	-rm -rf $(BUILDDIR)
++	-rm -rf $(TESTDIR)
++	-rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+ 
+ # Build targets
+@@ -209,63 +215,63 @@ install: $(INSTALLATIONS)
+ 
+ install_ladspa: all
+ 	@echo "Installing LADSPA plugins to $(DESTDIR)$(LADSPA_PATH)/"
+-	@mkdir -p $(DESTDIR)$(LADSPA_PATH)
+-	@$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
++	mkdir -p $(DESTDIR)$(LADSPA_PATH)
++	$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
+ 	
+ install_lv2: all
+ 	@echo "Installing LV2 plugins to $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
+-	@$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
++	$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+ 	
+ install_vst: all
+ 	@echo "Installing VST plugins to $(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+-	@$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
++	$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+ 
+ install_jack: all
+ 	@echo "Installing JACK core to $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
++	$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+ 	@echo "Installing JACK standalone plugins to $(DESTDIR)$(BIN_PATH)"
+-	@mkdir -p "$(DESTDIR)$(BIN_PATH)"
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
++	mkdir -p "$(DESTDIR)$(BIN_PATH)"
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
+ 
+ install_xdg:
+ 	@echo "Installing desktop icons to $(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
+-	@mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
+-	@cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
+-	@cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
+-	@cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
+-	@cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
++	mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
++	cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
++	cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
++	cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
++	cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
+ 
+ install_doc: all
+ 	@echo "Installing documentation to $(DESTDIR)$(DOC_PATH)"
+-	@mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+ # Release targets
+ dbg_release: export CFLAGS        += -DLSP_TRACE -O2
+@@ -279,67 +285,67 @@ release: $(RELEASES)
+ 
+ release_prepare: all
+ 	@echo "Releasing plugins for architecture $(BUILD_PROFILE)"
+-	@mkdir -p $(RELEASE)
+-	@mkdir -p $(DESTDIR)
++	mkdir -p $(RELEASE)
++	mkdir -p $(DESTDIR)
+ 	
+ release_ladspa: DESTDIR=$(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_ladspa: | release_prepare install_ladspa
+ 	@echo "Releasing LADSPA binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_lv2: DESTDIR=$(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_lv2: | release_prepare install_lv2
+ 	@echo "Releasing LV2 binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_vst: DESTDIR=$(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_vst: | release_prepare install_vst
+ 	@echo "Releasing VST binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_jack: DESTDIR=$(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_jack: | release_prepare install_jack
+ 	@echo "Releasing JACK binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 
+ release_profile: DESTDIR=$(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_profile: | release_prepare
+ 	@echo "Releasing PROFILE binaries"
+-	@$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ 
+ release_src: DESTDIR=$(RELEASE)/$(SRC_ID)
+ release_src: | release_prepare
+ 	@echo "Releasing source code binaries"
+-	@mkdir -p $(DESTDIR)
+-	@mkdir -p $(DESTDIR)/scripts
+-	@cp -R $(RELEASE_SRC) $(DESTDIR)/
+-	@cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	mkdir -p $(DESTDIR)/scripts
++	cp -R $(RELEASE_SRC) $(DESTDIR)/
++	cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
++	rm -rf $(DESTDIR)
+ 
+ release_doc: DESTDIR=$(RELEASE)/$(DOC_ID)
+ release_doc: | release_prepare
+ 	@echo "Releasing documentation"
+-	@mkdir -p $(DESTDIR)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
++	rm -rf $(DESTDIR)
+ 
+ # Unrelease target
+ unrelease: clean
+-	@-rm -rf $(RELEASE)
++	-rm -rf $(RELEASE)
+ 	@echo "Unrelease OK"
+ 
+ # Uninstall target
+@@ -348,41 +354,41 @@ uninstall: $(UNINSTALLATIONS)
+ 	
+ uninstall_ladspa:
+ 	@echo "Uninstalling LADSPA"
+-	@-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
++	-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
+ 	
+ uninstall_lv2:
+ 	@echo "Uninstalling LV2"
+-	@-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
++	-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
+ 	
+ uninstall_vst:
+ 	@echo "Uninstalling VST"
+-	@-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
++	-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
++	-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
++	-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
+ 	
+ uninstall_jack:
+ 	@echo "Uninstalling JACK"
+-	@-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
+-	@-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
++	-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
++	-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
++	-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
++	-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
+ 
+ uninstall_xdg:
+ 	@echo "Uninstalling desktop icons"
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
+-	@-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
++	-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
++	-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
++	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
+ 
+ uninstall_doc:
+ 	@echo "Uninstalling DOC"
+-	@-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+diff --git a/TODO.txt b/TODO.txt
+index 3bb3db8..f8562ef 100644
+--- a/TODO.txt
++++ b/TODO.txt
+@@ -32,6 +32,7 @@
+ 
+ * Fixed X11 error handling routine that could crash under certain conditions.
+ * Better support for musl libc (contributed by Artur Sinila).
++* Added support of VERBOSE parameter for build system (contributed by Artur Sinila).
+ 
+ *******************************************************************************
+ * New plugin check list before release
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 1fb917e..565dbb1 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -25,7 +25,6 @@ CXX                      ?= $(TOOL_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
+ 
+-MAKE_OPTS                 = -s
+ CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+@@ -62,7 +61,6 @@ export CXX
+ export PHP
+ export LD
+ 
+-export MAKE_OPTS
+ export CFLAGS
+ export CXXFLAGS
+ export SO_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index 8546191..d960ad8 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+@@ -58,6 +64,7 @@ ifeq ($(NEED_UI),1)
+   CONTAINER_DEPS         += $(OBJ_UI_CORE) $(OBJ_RES_CORE) rendering
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all $(MODULES)
+ 
+ all: $(MODULES)
+@@ -67,8 +74,8 @@ target: all
+ # Rules
+ $(SUBDIRS):
+ 	@echo "Building $(@)"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+@@ -93,10 +100,10 @@ $(OBJ_TESTING_CORE): test testing rendering
+ 
+ $(OBJ_RES_CORE): $(OBJ_CORE) $(UTL_RESGEN)
+ 	@echo "Generating builtin resources"
+-	@mkdir -p $(OBJDIR)/res
+-	@$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	mkdir -p $(OBJDIR)/res
++	$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
++	-rm gmon.out >/dev/null 2>&1
++	$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ # Target dependencies
+ container: $(CONTAINER_DEPS)
+@@ -108,18 +115,18 @@ doc: utils $(PHP_PLUGINS)
+ # Additional processing
+ $(PHP_PLUGINS): $(UTL_GENPHP)
+ 	@echo "Generating PHP file $(notdir $(PHP_PLUGINS))"
+-	@$(UTL_GENPHP) $(PHP_PLUGINS)
++	$(UTL_GENPHP) $(PHP_PLUGINS)
+ 
+ vst_stub: $(UTL_VSTMAKE)
+ 	@echo "Building VST stub"
+-	@mkdir -p $(OBJDIR)/vst
+-	@$(UTL_VSTMAKE) $(OBJDIR)/vst
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
++	mkdir -p $(OBJDIR)/vst
++	$(UTL_VSTMAKE) $(OBJDIR)/vst
++	-rm gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
+ 
+ jack_stub: $(UTL_JACKMAKE)
+ 	@echo "Building JACK stub"
+-	@mkdir -p $(OBJDIR)/jack
+-	@$(UTL_JACKMAKE) $(OBJDIR)/jack
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
++	mkdir -p $(OBJDIR)/jack
++	$(UTL_JACKMAKE) $(OBJDIR)/jack
++	-rm gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
+diff --git a/src/container/Makefile b/src/container/Makefile
+index 8aa8196..23a2e7a 100644
+--- a/src/container/Makefile
++++ b/src/container/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ OBJ_HELPERS             = $(OBJDIR)/CairoCanvas.o
+@@ -53,46 +59,47 @@ ifeq ($(VST_UI),1)
+   X_VST_LIBS             += $(UI_LIBS)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(MODULES)
+ 
+ $(OBJ_HELPERS):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
+ 
+ $(LIB_LADSPA):
+ 	@echo "  $(CXX) ladspa.cpp"
+-	@$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_LADSPA))"
+-	@$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
++	$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
+ 
+ $(LIB_LV2): $(X_LV2_DEPS)
+ 	@echo "  $(CXX) lv2.cpp"
+-	@$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
+-	@echo "  $(CXX) $(notdir $(X_LIB_LV2))"
+-	@$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
++	$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
++	@echo "  $(CXX) $(notdir $(LIB_LV2))"
++	$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
+ 
+ $(LIB_VST):
+ 	@echo "  $(CXX) vst.cpp"
+-	@$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_VST))"
+-	@$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
++	$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
+ 
+ $(LIB_JACK): $(OBJ_HELPERS)
+ 	@echo "  $(CXX) jack.cpp"
+-	@$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
++	$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
+ 	@echo "  $(CXX) $(notdir $(LIB_JACK))"
+-	@$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
++	$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
+ 
+ $(BIN_PROFILE): $(LIB_JACK)
+ 	@echo "  $(CXX) profile.cpp"
+-	@$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_PROFILE))"
+-	@$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
++	$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
+ 
+ $(BIN_TEST): $(LIB_JACK)
+ 	@echo "  $(CXX) test.cpp"
+-	@$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_TEST))"
+-	@$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
++	$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
+diff --git a/src/core/Makefile b/src/core/Makefile
+index a9ce1a5..3ad14a5 100644
+--- a/src/core/Makefile
++++ b/src/core/Makefile
+@@ -1,18 +1,25 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(SNDFILE_HEADERS)
+ LIBS                    = $(PTHREAD_LIBS)
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(OBJ_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
+ 
+ $(OBJ_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_CORE))"
+-	@$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
++	$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
+diff --git a/src/doc/Makefile b/src/doc/Makefile
+index aac73bf..f7f18a1 100644
+--- a/src/doc/Makefile
++++ b/src/doc/Makefile
+@@ -1,6 +1,13 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ PHPDIR      = $(BUILDDIR)/src/doc
+ HTMLDIR     = $(BUILDDIR)/html
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -8,14 +15,14 @@ target: all
+ # Common rules
+ $(PHPDIR)/Makefile:
+ 	@echo "Preparing PHP documentation generator"
+-	@mkdir -p $(PHPDIR)
+-	@mkdir -p $(HTMLDIR)
+-	@cp -rf * $(PHPDIR)/
+-	@cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
+-	@cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
+-	@cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
+-	@$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
++	mkdir -p $(PHPDIR)
++	mkdir -p $(HTMLDIR)
++	cp -rf * $(PHPDIR)/
++	cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
++	cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
++	cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
++	$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
+ 
+ all: $(PHPDIR)/Makefile
+ 	@echo "Generating HTML documentation"
+-	@$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
++	$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
+diff --git a/src/dsp/Makefile b/src/dsp/Makefile
+index f3d9ab1..aac8007 100644
+--- a/src/dsp/Makefile
++++ b/src/dsp/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ NATIVE_IMPL             = $(OBJDIR)/native.o
+ 
+ X86_IMPL                = $(OBJDIR)/x86.o
+@@ -51,6 +57,7 @@ ifeq ($(BUILD_PROFILE), aarch64)
+ LINK_OBJECTS           += $(AARCH64_IMPL) $(ASIMD_IMPL)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -59,41 +66,41 @@ all: $(OBJ_DSP)
+ 
+ $(OBJ_DSP): $(LINK_OBJECTS)
+ 	@echo "  $(LD) $(notdir $(OBJ_DSP))"
+-	@$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
++	$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
+ 
+ $(DSP_IMPL) $(BITS_IMPL) $(NATIVE_IMPL) $(X86_IMPL) $(ARM_IMPL) $(AARCH64_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	
+ $(SSE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE3_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE4_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
+ 	
+ $(NEON_D32_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
+ 	
+ $(ASIMD_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
+ 
+diff --git a/src/metadata/Makefile b/src/metadata/Makefile
+index 201f89a..403f38a 100644
+--- a/src/metadata/Makefile
++++ b/src/metadata/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -10,8 +16,8 @@ target: all
+ 
+ $(OBJ_METADATA): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_METADATA))"
+-	@$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+diff --git a/src/plugins/Makefile b/src/plugins/Makefile
+index 1f197dc..85963ba 100644
+--- a/src/plugins/Makefile
++++ b/src/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,8 +14,8 @@ all:  $(OBJ_PLUGINS)
+ 
+ $(OBJ_PLUGINS): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(OBJ_PLUGINS))"
+-	@$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
++	$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
+diff --git a/src/rendering/Makefile b/src/rendering/Makefile
+index 897e327..65f3237 100644
+--- a/src/rendering/Makefile
++++ b/src/rendering/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ BASE_IMPL             	= $(OBJDIR)/base_backend.o
+ 
+ GLX_IMPL                = $(OBJDIR)/glx/backend.o $(OBJDIR)/glx/factory.o
+@@ -20,15 +26,15 @@ all: $(MODULES)
+ 
+ $(LIB_R3D_GLX): $(BASE_IMPL) $(GLX_IMPL)
+ 	@echo "  $(CXX) $(notdir $(LIB_R3D_GLX))"
+-	@$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
++	$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
+ 
+ $(BASE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 	
+ $(GLX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $(@))
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
++	mkdir -p $(dir $(@))
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
+ 
+ 
+diff --git a/src/test/Makefile b/src/test/Makefile
+index e8016e1..a89366e 100644
+--- a/src/test/Makefile
++++ b/src/test/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TEST_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TEST_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TEST_CORE))"
+-	@$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/testing/Makefile b/src/testing/Makefile
+index 705913d..d048065 100644
+--- a/src/testing/Makefile
++++ b/src/testing/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TESTING_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TESTING_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TESTING_CORE))"
+-	@$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/ui/Makefile b/src/ui/Makefile
+index 503111d..eb1e4c5 100644
+--- a/src/ui/Makefile
++++ b/src/ui/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= ws tk ctl plugins
+@@ -8,15 +14,15 @@ PACKAGES                = $(OBJ_WS_CORE) $(OBJ_TK_CORE) $(OBJ_CTL_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_UI_CORE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_UI_CORE)
+diff --git a/src/ui/ctl/Makefile b/src/ui/ctl/Makefile
+index 3f727db..692fe9d 100644
+--- a/src/ui/ctl/Makefile
++++ b/src/ui/ctl/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_CTL_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_CTL_CORE) $(SUBDIRS)
+diff --git a/src/ui/plugins/Makefile b/src/ui/plugins/Makefile
+index 8f8db8f..0e6c3d8 100644
+--- a/src/ui/plugins/Makefile
++++ b/src/ui/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_PLUGIN_UIS): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_PLUGIN_UIS) $(SUBDIRS)
+diff --git a/src/ui/tk/Makefile b/src/ui/tk/Makefile
+index 8700f63..cfb4c78 100644
+--- a/src/ui/tk/Makefile
++++ b/src/ui/tk/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -6,11 +12,11 @@ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_TK_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_TK_CORE)
+diff --git a/src/ui/ws/Makefile b/src/ui/ws/Makefile
+index 1109752..b9836d8 100644
+--- a/src/ui/ws/Makefile
++++ b/src/ui/ws/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= x11
+@@ -8,15 +14,15 @@ all: $(OBJ_WS_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ $(OBJ_WS_CORE): $(FILES) $(OBJ_WS_X11_CORE)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
++	$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
+ 
+ $(OBJ_WS_X11_CORE): $(SUBDIRS)
+diff --git a/src/ui/ws/x11/Makefile b/src/ui/ws/x11/Makefile
+index b99e93d..7bffca3 100644
+--- a/src/ui/ws/x11/Makefile
++++ b/src/ui/ws/x11/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(XLIB_HEADERS) $(CAIRO_HEADERS)
+@@ -8,9 +14,9 @@ all: $(OBJ_WS_X11_CORE)
+ 
+ $(OBJ_WS_X11_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
++	$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index 88b3739..fbddcaa 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -44,32 +50,32 @@ target: all
+ # Common rules
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+ $(UTL_GENTTL): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	@$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++	$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+ $(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	@$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	@$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_GENPHP): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	@$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+ $(UTL_RESGEN): $(FILES) $(SUBDIRS)
+ 	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	@$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++	$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 
+-	
+\ No newline at end of file
++	
+diff --git a/src/utils/jack_genmake.cpp b/src/utils/jack_genmake.cpp
+index 09974b0..3272ad8 100644
+--- a/src/utils/jack_genmake.cpp
++++ b/src/utils/jack_genmake.cpp
+@@ -97,6 +97,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%=%%.cpp)\n");
+@@ -107,11 +112,11 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
+ 
+         fprintf(out, "install: $(FILES)\n");
+-        fprintf(out, "\t@$(INSTALL) $(FILES) $(TARGET_PATH)/");
++        fprintf(out, "\t$(INSTALL) $(FILES) $(TARGET_PATH)/");
+ 
+         // Close file
+         fclose(out);
+diff --git a/src/utils/vst_genmake.cpp b/src/utils/vst_genmake.cpp
+index 9eeedeb..f47f783 100644
+--- a/src/utils/vst_genmake.cpp
++++ b/src/utils/vst_genmake.cpp
+@@ -100,6 +100,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%.so, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%.so=%%.cpp)\n");
+@@ -110,8 +115,8 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
+ 
+         // Close file
+         fclose(out);
diff --git a/srcpkgs/lsp-plugins-lv2/files/03-improve-cross.patch b/srcpkgs/lsp-plugins-lv2/files/03-improve-cross.patch
new file mode 100644
index 000000000000..ec096a4184e3
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/files/03-improve-cross.patch
@@ -0,0 +1,565 @@
+diff --git a/.gitignore b/.gitignore
+index 5bc0ecb..4a1edec 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -3,6 +3,7 @@
+ /design/*
+ /.builconfig/*
+ /.build/*
++/.host_build/*
+ /.buildconfig/*
+ /.test/*
+ /.release/*
+diff --git a/Makefile b/Makefile
+index 79ddcc6..ce3de4e 100644
+--- a/Makefile
++++ b/Makefile
+@@ -24,8 +24,10 @@ export RESDIR           = ${CURDIR}/res
+ export RELEASE          = ${CURDIR}/.release
+ export RELEASE_BIN      = $(RELEASE)/$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ export BUILDDIR         = ${CURDIR}/.build
++export HOST_BUILDDIR    = ${CURDIR}/.host_build
+ export TESTDIR          = ${CURDIR}/.test
+ OBJDIR                  = $(BUILDDIR)
++export HOST_OBJDIR      = $(HOST_BUILDDIR)
+ 
+ # Installation locations
+ BIN_PATH               ?= $(PREFIX)/bin
+@@ -41,20 +43,23 @@ VST_PATH                = $(LIB_PATH)/vst
+ export BASEDIR          = ${CURDIR}
+ 
+ # Objects
+-export OBJ_CORE         = $(OBJDIR)/core.o
+-export OBJ_DSP          = $(OBJDIR)/dsp.o
+-export OBJ_CTL_CORE     = $(OBJDIR)/ctl_core.o
+-export OBJ_TK_CORE      = $(OBJDIR)/tk_core.o
+-export OBJ_WS_CORE      = $(OBJDIR)/ws_core.o
+-export OBJ_WS_X11_CORE  = $(OBJDIR)/ws_x11_core.o
+-export OBJ_UI_CORE      = $(OBJDIR)/ui_core.o
+-export OBJ_RES_CORE     = $(OBJDIR)/res_core.o
+-export OBJ_TEST_CORE    = $(OBJDIR)/test_core.o
+-export OBJ_TESTING_CORE = $(OBJDIR)/testing_core.o
+-export OBJ_PLUGINS      = $(OBJDIR)/plugins.o
+-export OBJ_PLUGIN_UIS	= $(OBJDIR)/plugin_uis.o
+-export OBJ_METADATA     = $(OBJDIR)/metadata.o
+-export OBJ_FILES        = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
++export OBJ_CORE          = $(OBJDIR)/core.o
++export HOST_OBJ_CORE     = $(HOST_OBJDIR)/core.o
++export OBJ_DSP           = $(OBJDIR)/dsp.o
++export HOST_OBJ_DSP      = $(HOST_OBJDIR)/dsp.o
++export OBJ_CTL_CORE      = $(OBJDIR)/ctl_core.o
++export OBJ_TK_CORE       = $(OBJDIR)/tk_core.o
++export OBJ_WS_CORE       = $(OBJDIR)/ws_core.o
++export OBJ_WS_X11_CORE   = $(OBJDIR)/ws_x11_core.o
++export OBJ_UI_CORE       = $(OBJDIR)/ui_core.o
++export OBJ_RES_CORE      = $(OBJDIR)/res_core.o
++export OBJ_TEST_CORE     = $(OBJDIR)/test_core.o
++export OBJ_TESTING_CORE  = $(OBJDIR)/testing_core.o
++export OBJ_PLUGINS       = $(OBJDIR)/plugins.o
++export OBJ_PLUGIN_UIS	 = $(OBJDIR)/plugin_uis.o
++export OBJ_METADATA      = $(OBJDIR)/metadata.o
++export HOST_OBJ_METADATA = $(HOST_OBJDIR)/metadata.o
++export OBJ_FILES         = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
+ 
+ # Libraries
+ export LIB_LADSPA       = $(OBJDIR)/$(ARTIFACT_ID)-ladspa.so
+@@ -68,11 +73,14 @@ export BIN_PROFILE      = $(OBJDIR)/$(ARTIFACT_ID)-profile
+ export BIN_TEST         = $(OBJDIR)/$(ARTIFACT_ID)-test
+ 
+ # Utils
+-export UTL_GENTTL       = $(OBJDIR)/lv2_genttl.exe
+-export UTL_VSTMAKE      = $(OBJDIR)/vst_genmake.exe
+-export UTL_JACKMAKE     = $(OBJDIR)/jack_genmake.exe
+-export UTL_GENPHP       = $(OBJDIR)/gen_php.exe
+-export UTL_RESGEN       = $(OBJDIR)/gen_resources.exe
++ifeq ($(BUILD_SYSTEM),Windows)
++  BIN_SUFFIX := .exe
++endif
++export UTL_GENTTL       = $(HOST_OBJDIR)/lv2_genttl$(BIN_SUFFIX)
++export UTL_VSTMAKE      = $(HOST_OBJDIR)/vst_genmake$(BIN_SUFFIX)
++export UTL_JACKMAKE     = $(HOST_OBJDIR)/jack_genmake$(BIN_SUFFIX)
++export UTL_GENPHP       = $(HOST_OBJDIR)/gen_php$(BIN_SUFFIX)
++export UTL_RESGEN       = $(HOST_OBJDIR)/gen_resources$(BIN_SUFFIX)
+ export UTL_FILES        = $(UTL_GENTTL) $(UTL_VSTMAKE) $(UTL_GENPHP) $(UTL_RESGEN)
+ 
+ # Files
+@@ -104,6 +112,7 @@ all: export CXXFLAGS        += -O2 -DLSP_NO_EXPERIMENTAL
+ all: export EXE_FLAGS       += -pie -fPIE
+ all: compile
+ 
++
+ experimental: export CFLAGS += -O2
+ experimental: export CXXFLAGS += -O2
+ experimental: compile
+@@ -161,17 +170,17 @@ profile: compile
+ compile_info:
+ 	@echo "-------------------------------------------------------------------------------"
+ 	@echo "Building binaries"
+-	@echo "  target architecture : $(BUILD_PROFILE)"
+-	@echo "  target platform     : $(BUILD_PLATFORM)"
+-	@echo "  target system       : $(BUILD_SYSTEM)"
+-	@echo "  compiler            : $(BUILD_COMPILER)"
+-	@echo "  modules             : $(BUILD_MODULES)"
+-	@echo "  UI                  : LV2=$(LV2_UI), VST=$(VST_UI)"
+-	@echo "  3D rendering        : $(BUILD_R3D_BACKENDS)"
+-	@echo "  build directory     : $(OBJDIR)"
++	@echo "  platform             : $(BUILD_PLATFORM)"
++	@echo "  system               : $(BUILD_SYSTEM)"
++	@echo "  target compiler      : $(CXX)"
++	@echo "  target architecture  : $(BUILD_PROFILE)"
++	@echo "  modules              : $(BUILD_MODULES)"
++	@echo "  UI                   : LV2=$(LV2_UI), VST=$(VST_UI)"
++	@echo "  3D rendering         : $(BUILD_R3D_BACKENDS)"
++	@echo "  build directory      : $(OBJDIR)"
+ 	@echo "-------------------------------------------------------------------------------"
+ 
+-compile: | compile_info
++compile: utils | compile_info
+ 	mkdir -p $(OBJDIR)/src
+ 	mkdir -p $(CFGDIR)
+ 	test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
+@@ -181,13 +190,31 @@ compile: | compile_info
+ 	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Build OK"
+ 	
+-test_compile: | compile_info
++test_compile: utils | compile_info
+ 	mkdir -p $(OBJDIR)/src
+ 	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
++utils: export BUILD_PROFILE=$(HOST_BUILD_PROFILE)
++utils: export OBJDIR=$(HOST_OBJDIR)
++utils: export OBJ_CORE=$(HOST_OBJ_CORE)
++utils: export OBJ_DSP=$(HOST_OBJ_DSP)
++utils: export OBJ_METADATA=$(HOST_OBJ_METADATA)
++utils: export CXX=$(HOST_CXX)
++utils: export CXXFLAGS=$(HOST_CXXFLAGS)
++utils: export LD=$(HOST_LD)
++utils: export SNDFILE_HEADERS=$(HOST_SNDFILE_HEADERS)
++utils: export SNDFILE_LIBS=$(HOST_SNDFILE_LIBS)
++utils: export LV2_HEADERS=$(HOST_LV2_HEADERS)
++utils: export LV2_LIBS=$(HOST_LV2_LIBS)
++utils: | compile_info
++	mkdir -p $(HOST_OBJDIR)/src/utils
++	$(MAKE) $(MAKE_OPTS) -C src utils
++	@echo "Utils Build OK"
++
+ clean:
+ 	-rm -rf $(BUILDDIR)
++	-rm -rf $(HOST_BUILDDIR)
+ 	-rm -rf $(TESTDIR)
+ 	-rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+diff --git a/scripts/make/configure.mk b/scripts/make/configure.mk
+index 09aee9a..6951c5e 100644
+--- a/scripts/make/configure.mk
++++ b/scripts/make/configure.mk
+@@ -14,7 +14,8 @@ ifndef BUILD_R3D_BACKENDS
+   BUILD_R3D_BACKENDS     := $(shell if (test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" )  then cat "$(CFGDIR)/$(R3D_BACKENDS_FILE)" 2>/dev/null; else echo "glx"; fi;)
+ endif
+ 
+-BUILD_COMPILER         := $(shell $(CC) --version | head -n 1 || echo "unknown")
++BUILD_COMPILER         := $(shell $(CXX) --version | head -n 1 || echo "unknown")
++HOST_BUILD_COMPILER    := $(shell $(HOST_CXX) --version | head -n 1 || echo "unknown")
+ 
+ export BUILD_MODULES
+ export BUILD_R3D_BACKENDS
+@@ -23,7 +24,7 @@ export BUILD_R3D_BACKENDS
+ INSTALLATIONS           =
+ UNINSTALLATIONS         = uninstall_xdg
+ RELEASES                =
+-INCLUDE                 = -I"${CURDIR}/include"
++INCLUDE                 := -I"${CURDIR}/include"
+ 
+ ifeq ($(findstring ladspa,$(BUILD_MODULES)),ladspa)
+   INSTALLATIONS          += install_ladspa
+@@ -63,61 +64,62 @@ LD_ARCH         =
+ CC_ARCH         =
+ 
+ # Build profile
+-ifeq ($(BUILD_PROFILE),i586)
+-  CC_ARCH          = -m32
+-  ifeq ($(BUILD_PLATFORM), Linux)
+-    LD_ARCH          = -m elf_i386
++ifeq ($(SKIP_CC_LD_ARCH),)
++  ifeq ($(BUILD_PROFILE),i586)
++    CC_ARCH          = -m32
++    ifeq ($(BUILD_PLATFORM), Linux)
++      LD_ARCH          = -m elf_i386
++    endif
++    ifeq ($(BUILD_PLATFORM), BSD)
++      LD_ARCH          = -m elf_i386_fbsd
++    endif
+   endif
++  
++  ifeq ($(BUILD_PROFILE),x86_64)
++    CC_ARCH          = -m64
++    ifeq ($(BUILD_PLATFORM), Linux)
++      LD_ARCH          = -m elf_x86_64
++    endif
++    ifeq ($(BUILD_PLATFORM), BSD)
++      LD_ARCH          = -m elf_x86_64_fbsd
++    endif
++  endif
++  
+   ifeq ($(BUILD_PLATFORM), BSD)
+-    LD_ARCH          = -m elf_i386_fbsd
++    INCLUDE          += -I/usr/local/include
++    ifeq ($(BUILD_PROFILE),arm)
++      CC_ARCH          = -marm
++      ifneq ($(LD_PATH),)
++        CC_ARCH          += -Wl,-rpath=$(LD_PATH)
++      endif
++    endif
+   endif
+-endif
+-
+-ifeq ($(BUILD_PROFILE),x86_64)
+-  CC_ARCH          = -m64
+-  ifeq ($(BUILD_PLATFORM), Linux)
+-    LD_ARCH          = -m elf_x86_64
++  
++  ifeq ($(BUILD_PROFILE),armv6a)
++    CC_ARCH          = -march=armv6-a -marm
+   endif
+-  ifeq ($(BUILD_PLATFORM), BSD)
+-    LD_ARCH          = -m elf_x86_64_fbsd
++  
++  ifeq ($(BUILD_PROFILE),armv7a)
++    CC_ARCH          = -march=armv7-a -marm
+   endif
+-endif
+-
+-ifeq ($(BUILD_PLATFORM), BSD)
+-  INCLUDE          += -I/usr/local/include
+-  ifeq ($(BUILD_PROFILE),arm)
++  
++  ifeq ($(BUILD_PROFILE),armv7ve)
++    CC_ARCH          = -march=armv7ve -marm
++  endif
++  
++  ifeq ($(BUILD_PROFILE),arm32)
+     CC_ARCH          = -marm
+-    ifneq ($(LD_PATH),)
+-      CC_ARCH          += -Wl,-rpath=$(LD_PATH)
+-    endif
++  endif
++  
++  ifeq ($(BUILD_PROFILE),armv8a)
++    CC_ARCH          = -march=armv7-a -marm
++  endif
++  
++  ifeq ($(BUILD_PROFILE),aarch64)
++    CC_ARCH          = -march=armv8-a
+   endif
+ endif
+ 
+-ifeq ($(BUILD_PROFILE),armv6a)
+-  CC_ARCH          = -march=armv6-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv7a)
+-  CC_ARCH          = -march=armv7-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv7ve)
+-  CC_ARCH          = -march=armv7ve -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),arm32)
+-  CC_ARCH          = -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv8a)
+-  CC_ARCH          = -march=armv7-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),aarch64)
+-  CC_ARCH          = -march=armv8-a
+-endif
+-
+-
+ export CC_ARCH
+ export LD_ARCH
+ export LD_PATH
+@@ -127,21 +129,25 @@ export INCLUDE
+ ifeq ($(BUILD_SYSTEM),Windows)
+ # TODO
+ else
+-  export PTHREAD_LIBS     = -lpthread
+-  export ICONV_LIBS       = -liconv
+-  export MATH_LIBS        = -lm
+-  export DL_LIBS          = -ldl
+-  export CAIRO_HEADERS    = $(shell pkg-config --cflags cairo)
+-  export CAIRO_LIBS       = $(shell pkg-config --libs cairo)
+-  export XLIB_HEADERS     = $(shell pkg-config --cflags x11)
+-  export XLIB_LIBS        = $(shell pkg-config --libs x11)
+-  export LV2_HEADERS      = $(shell pkg-config --cflags lv2)
+-  export LV2_LIBS         = $(shell pkg-config --libs lv2)
+-  export SNDFILE_HEADERS  = $(shell pkg-config --cflags sndfile)
+-  export SNDFILE_LIBS     = $(shell pkg-config --libs sndfile)
+-  export JACK_HEADERS     = $(shell pkg-config --cflags jack)
+-  export JACK_LIBS        = $(shell pkg-config --libs jack)
+-  export OPENGL_HEADERS   = $(shell pkg-config --cflags gl 2>/dev/null || echo "")
+-  export OPENGL_LIBS      = $(shell pkg-config --libs gl 2>/dev/null || echo "")
++  export PTHREAD_LIBS         = -lpthread
++  export ICONV_LIBS           = -liconv
++  export MATH_LIBS            = -lm
++  export DL_LIBS              = -ldl
++  export CAIRO_HEADERS        = $(shell $(PKG_CONFIG) --cflags cairo)
++  export CAIRO_LIBS           = $(shell $(PKG_CONFIG) --libs cairo)
++  export XLIB_HEADERS         = $(shell $(PKG_CONFIG) --cflags x11)
++  export XLIB_LIBS            = $(shell $(PKG_CONFIG) --libs x11)
++  export LV2_HEADERS          = $(shell $(PKG_CONFIG) --cflags lv2)
++  export LV2_HEADERS          = $(shell $(PKG_CONFIG) --libs lv2)
++  export SNDFILE_HEADERS      = $(shell $(PKG_CONFIG) --cflags sndfile)
++  export SNDFILE_LIBS         = $(shell $(PKG_CONFIG) --libs sndfile)
++  export JACK_HEADERS         = $(shell $(PKG_CONFIG) --cflags jack)
++  export JACK_LIBS            = $(shell $(PKG_CONFIG) --libs jack)
++  export OPENGL_HEADERS       = $(shell $(PKG_CONFIG) --cflags gl 2>/dev/null || echo "")
++  export OPENGL_LIBS          = $(shell $(PKG_CONFIG) --libs gl 2>/dev/null || echo "")
++  export HOST_SNDFILE_HEADERS = $(shell $(HOST_PKG_CONFIG) --cflags sndfile)
++  export HOST_SNDFILE_LIBS    = $(shell $(HOST_PKG_CONFIG) --libs sndfile)
++  export HOST_LV2_HEADERS     = $(shell $(HOST_PKG_CONFIG) --cflags lv2)
++  export HOST_LV2_LIBS        = $(shell $(HOST_PKG_CONFIG) --libs lv2)
+ endif
+ 
+diff --git a/scripts/make/set_vars.mk b/scripts/make/set_vars.mk
+index a22531a..898b156 100644
+--- a/scripts/make/set_vars.mk
++++ b/scripts/make/set_vars.mk
+@@ -37,7 +37,7 @@ export BUILD_PLATFORM
+ export LV2_UI
+ export VST_UI
+ 
+-# Detect processor architecture
++# Detect target processor architecture
+ ifeq ($(BUILD_PLATFORM),Windows)
+   ifndef BUILD_PROFILE
+     BUILD_ARCH                = i586
+@@ -53,7 +53,7 @@ ifeq ($(BUILD_PLATFORM),Windows)
+   endif
+ else # BUILD_PLATFORM != Windows
+   ifndef BUILD_PROFILE
+-    BUILD_ARCH              = $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
++    BUILD_ARCH              ?= $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
+     BUILD_PROFILE           = $(BUILD_ARCH)
+     ifeq ($(patsubst armv6%,armv6,$(BUILD_ARCH)), armv6)
+       BUILD_PROFILE           = armv6a
+@@ -82,5 +82,7 @@ else # BUILD_PLATFORM != Windows
+   endif
+ endif # BUILD_PLATFORM != Windows
+ 
+-export BUILD_PROFILE
++HOST_BUILD_PROFILE ?= $(shell uname -m)
+ 
++export BUILD_PROFILE
++export HOST_BUILD_PROFILE
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 565dbb1..0cc859f 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -1,8 +1,12 @@
+ # Setup preferred tools
+ TOOL_LD                 = ld
++TOOL_HOST_LD            = ld
+ TOOL_CC                 = gcc
+ TOOL_CXX                = g++
++TOOL_HOST_CXX           = g++
+ TOOL_PHP                = php
++TOOL_PKG_CONFIG         = pkg-config
++TOOL_HOST_PKG_CONFIG    = PKG_CONFIG_SYSROOT_DIR=/ pkg-config
+ 
+ # Setup preferred flags
+ FLAG_RELRO              = -Wl,-z,relro,-z,now
+@@ -17,20 +21,27 @@ FLAG_CTUNE              = -std=c++98 \
+ ifeq ($(BUILD_PLATFORM),Solaris)
+   FLAG_RELRO              =
+   TOOL_LD                 = gld
++  TOOL_HOST_LD            = gld
+ endif
+ 
+ # Setup system variables
+ CC              		 ?= $(TOOL_CC)
+ CXX                      ?= $(TOOL_CXX)
++HOST_CXX                 ?= $(TOOL_HOST_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
++HOST_LD                  ?= $(TOOL_HOST_LD)
++PKG_CONFIG               ?= $(TOOL_PKG_CONFIG)
++HOST_PKG_CONFIG          ?= $(TOOL_HOST_PKG_CONFIG)
+ 
+ CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+-MERGE_FLAGS               = $(LD_ARCH) -r
+-EXE_TEST_FLAGS            = $(LDFLAGS) $(CC_ARCH)
+-EXE_FLAGS                 = $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++HOST_CXXFLAGS            += $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
++SO_FLAGS                 += $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
++MERGE_FLAGS              += $(LD_ARCH) -r
++EXE_TEST_FLAGS           += $(LDFLAGS) $(CC_ARCH)
++EXE_FLAGS                += $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++HOST_EXE_FLAGS           += $(HOST_LDFLAGS) $(FLAG_RELRO) -Wl,--gc-sections
+ 
+ ifeq ($(BUILD_PLATFORM), Linux)
+   SO_FLAGS                 += -Wl,--no-undefined
+@@ -58,12 +69,18 @@ endif
+ 
+ export CC
+ export CXX
++export HOST_CXX
+ export PHP
+ export LD
++export HOST_LD
++export PKG_CONFIG
++export HOST_PKG_CONFIG
+ 
+ export CFLAGS
+ export CXXFLAGS
++export HOST_CXXFLAGS
+ export SO_FLAGS
+ export MERGE_FLAGS
+ export EXE_TEST_FLAGS
+ export EXE_FLAGS
++export HOST_EXE_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index d960ad8..01ac70b 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,3 +1,5 @@
++# Estimate different pre-requisites before launching build
++
+ # Command-line flag to silence nested $(MAKE).
+ MAKE_OPTS              += VERBOSE=$(VERBOSE)
+ ifneq ($(VERBOSE),1)
+@@ -7,7 +9,8 @@ endif
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+-UTL_DEPS                = $(OBJ_CORE) $(OBJ_DSP) $(OBJ_METADATA)
++UTL_DEPS                = $(HOST_OBJ_CORE) $(HOST_OBJ_DSP) $(HOST_OBJ_METADATA)
++OBJDIR                  ?= $(BUILDDIR)
+ 
+ NEED_UI                 = 0
+ NEED_PLUGINS            = 0
+@@ -73,19 +76,34 @@ target: all
+ 
+ # Rules
+ $(SUBDIRS):
+-	@echo "Building $(@)"
++	@echo "$(BUILDDIR)"
+ 	mkdir -p $(OBJDIR)/$(@)
+-	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ all \
++		CXX="$(CXX)" \
++		CXXFLAGS="$(CXXFLAGS)" \
++		LD="$(LD)" \
++		OBJDIR="$(OBJDIR)/$(@)" \
++		BUILD_PROFILE="$(BUILD_PROFILE)" \
++		SNDFILE_HEADERS="$(SNDFILE_HEADERS)" \
++		SNDFILE_LIBS="$(SNDFILE_LIBS)" \
++		LV2_HEADERS="$(LV2_HEADERS)" \
++		LV2_LIBS="$(LV2_LIBS)"
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+ 
++$(HOST_OBJ_CORE): core
++
+ $(OBJ_DSP): dsp
+ 
++$(HOST_OBJ_DSP): dsp
++
+ $(OBJ_PLUGINS): plugins
+ 
+ $(OBJ_METADATA): metadata
+ 
++$(HOST_OBJ_METADATA): metadata
++
+ $(OBJ_UI_CORE): ui
+ 
+ $(UTL_FILES): utils
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index fbddcaa..4b4fd2e 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -4,15 +4,21 @@ ifneq ($(VERBOSE),1)
+ .SILENT:
+ endif
+ 
++CXX                     = $(HOST_CXX)
++CXXFLAGS                = $(HOST_CXXFLAGS)
++MAKE_OPTS              += CXX=$(HOST_CXX) CXXFLAGS=$(HOST_CXXFLAGS)
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS                 =
+-OBJ_FILES               = $(OBJ_CORE) $(OBJ_METADATA)
++OBJ_FILES               = $(HOST_OBJ_CORE) $(HOST_OBJ_METADATA) $(HOST_OBJ_DSP)
+ OBJ_LIBS                = $(PTHREAD_LIBS) $(MATH_LIBS)
+ OBJ_EXTRA               =
+ INCLUDE_EXTRA           =
+ 
++export PKG_CONFIG_SYSROOT_DIR = /
++
+ ifeq ($(BUILD_PLATFORM),BSD)
+   OBJ_LIBS               += $(ICONV_LIBS)
+ endif
+@@ -24,7 +30,7 @@ endif
+ ifeq ($(findstring lv2,$(BUILD_MODULES)),lv2)
+   MODULES                += $(UTL_GENTTL)
+   FILELIST               += lv2_genttl.o
+-  INCLUDE_EXTRA          += $(LV2_HEADERS)
++  INCLUDE_EXTRA          += $(HOST_LV2_HEADERS)
+ endif
+ ifeq ($(findstring vst,$(BUILD_MODULES)),vst)
+   MODULES                += $(UTL_VSTMAKE)
+@@ -54,28 +60,26 @@ $(SUBDIRS):
+ 	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	@echo "  $(HOST_CXX) $(FILE)"
++	$(HOST_CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(HOST_CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+-$(UTL_GENTTL): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++$(UTL_GENTTL): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENTTL))"
++	$(HOST_CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+-$(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_JACKMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_JACKMAKE))"
++	$(HOST_CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_VSTMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_VSTMAKE))"
++	$(HOST_CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_GENPHP): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+-	
+-$(UTL_RESGEN): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+-
++$(UTL_GENPHP): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENPHP))"
++	$(HOST_CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
++$(UTL_RESGEN): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_RESGEN))"
++	$(HOST_CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_EXTRA) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
diff --git a/srcpkgs/lsp-plugins-lv2/files/04-misc.patch b/srcpkgs/lsp-plugins-lv2/files/04-misc.patch
new file mode 100644
index 000000000000..e3b5c408759e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/files/04-misc.patch
@@ -0,0 +1,280 @@
+diff --git a/.gitmodules b/.gitmodules
+index ac5ea32..4480c1f 100644
+--- a/.gitmodules
++++ b/.gitmodules
+@@ -1,3 +1,3 @@
+ [submodule "Polynomial-Wiener-Hammerstein"]
+ 	path = Polynomial-Wiener-Hammerstein
+-	url = ../../CrocoDuckoDucks/Polynomial-Wiener-Hammerstein.git
++	url = https://github.com/CrocoDuckoDucks/Polynomial-Wiener-Hammerstein
+diff --git a/Makefile b/Makefile
+index ce3de4e..78cb2a9 100644
+--- a/Makefile
++++ b/Makefile
+@@ -98,7 +98,7 @@ SRC_ID                 := $(ARTIFACT_ID)-src-$(LSP_VERSION)
+ DOC_ID                 := $(ARTIFACT_ID)-doc-$(LSP_VERSION)
+ 
+ .DEFAULT_GOAL          := all
+-.PHONY: all experimental trace debug tracefile debugfile profile gdb test testdebug testprofile compile test_compile
++.PHONY: all experimental trace debug tracefile debugfile profile gdb test check testdebug testprofile compile test_compile
+ .PHONY: compile_info
+ .PHONY: install install_ladspa install_lv2 install_vst install_jack install_doc install_xdg
+ .PHONY: uninstall uninstall_ladspa uninstall_lv2 uninstall_vst uninstall_jack uninstall_doc uninstall_xdg
+@@ -129,10 +129,16 @@ test: export EXE_TEST_FLAGS += -g3
+ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
+ test: test_compile
++	@echo "test: CXXFLAGS: $(CXXFLAGS)"
++	@echo "test: EXE_TEST_FLAGS: $(EXE_TEST_FLAGS)"
++
++# Run unit tests
++check: test
++	.test/lsp-plugins-test utest
+ 
+ testdebug: OBJDIR                 = $(TESTDIR)
+-testdebug: export CFLAGS         += -O0 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-testdebug: export CXXFLAGS       += -O0 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
++testdebug: export CFLAGS         += -Og -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
++testdebug: export CXXFLAGS       += -Og -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ testdebug: export EXE_TEST_FLAGS += -g3
+ testdebug: export MAKE_OPTS      += LSP_TESTING=1
+ testdebug: export BUILD_MODULES   = jack
+@@ -157,8 +163,11 @@ debugfile: export CFLAGS    += -DLSP_TRACEFILE
+ debugfile: export CXXFLAGS  += -DLSP_TRACEFILE
+ debugfile: debug
+ 
+-gdb: export CFLAGS          += -O0 -g3 -DLSP_TRACE
+-gdb: export CXXFLAGS        += -O0 -g3 -DLSP_TRACE
++gdb: export CFLAGS          = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export CXXFLAGS        = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export HOST_CXXFLAGS   = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export EXE_FLAGS       = -g3
++gdb: export HOST_EXE_FLAGS  = -g3
+ gdb: compile
+ 
+ profile: export CFLAGS      += -g -pg -DLSP_PROFILING -no-pie -fno-pie -fPIC
+@@ -192,6 +201,8 @@ compile: utils | compile_info
+ 	
+ test_compile: utils | compile_info
+ 	mkdir -p $(OBJDIR)/src
++	@echo "test_compile: CXXFLAGS: $(CXXFLAGS)"
++	@echo "test_compile: EXE_TEST_FLAGS: $(EXE_TEST_FLAGS)"
+ 	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
+@@ -213,10 +224,10 @@ utils: | compile_info
+ 	@echo "Utils Build OK"
+ 
+ clean:
+-	-rm -rf $(BUILDDIR)
+-	-rm -rf $(HOST_BUILDDIR)
+-	-rm -rf $(TESTDIR)
+-	-rm -rf $(CFGDIR)
++	rm -rf $(BUILDDIR)
++	rm -rf $(HOST_BUILDDIR)
++	rm -rf $(TESTDIR)
++	rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+ 
+ # Build targets
+@@ -372,7 +383,7 @@ release_doc: | release_prepare
+ 
+ # Unrelease target
+ unrelease: clean
+-	-rm -rf $(RELEASE)
++	rm -rf $(RELEASE)
+ 	@echo "Unrelease OK"
+ 
+ # Uninstall target
+@@ -381,41 +392,41 @@ uninstall: $(UNINSTALLATIONS)
+ 	
+ uninstall_ladspa:
+ 	@echo "Uninstalling LADSPA"
+-	-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
++	rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
+ 	
+ uninstall_lv2:
+ 	@echo "Uninstalling LV2"
+-	-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
++	rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
+ 	
+ uninstall_vst:
+ 	@echo "Uninstalling VST"
+-	-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
+-	-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
+-	-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
++	rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
++	rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
++	rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
+ 	
+ uninstall_jack:
+ 	@echo "Uninstalling JACK"
+-	-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
+-	-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
+-	-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
+-	-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
++	rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
++	rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
++	rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
++	rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
+ 
+ uninstall_xdg:
+ 	@echo "Uninstalling desktop icons"
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
+-	-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
+-	-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
++	rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
++	rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
+ 
+ uninstall_doc:
+ 	@echo "Uninstalling DOC"
+-	-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+diff --git a/include/metadata/metadata.h b/include/metadata/metadata.h
+index 0efaa9d..e009750 100644
+--- a/include/metadata/metadata.h
++++ b/include/metadata/metadata.h
+@@ -73,10 +73,18 @@
+     #define LSP_ARCHITECTURE                                "unknown"
+ #endif /* ARCH */
+ 
++#define STRINGIFY_(x) #x
++#define STRINGIFY(x) STRINGIFY_(x)
++
+ #ifndef LSP_MAIN_VERSION
+     #define LSP_MAIN_VERSION                                "0.0.0"
++#else
++    #define LSP_MAIN_VERSION_STR STRINGIFY(LSP_MAIN_VERSION)
++    #undef LSP_MAIN_VERSION
++    #define LSP_MAIN_VERSION LSP_MAIN_VERSION_STR
+ #endif /* LSP_MAIN_VERSION */
+ 
++
+ #define LSP_LV2_LATENCY_PORT                            "out_latency"
+ #define LSP_LV2_ATOM_PORT_IN                            "in_ui"
+ #define LSP_LV2_MIDI_PORT_IN                            "in_midi"
+@@ -86,7 +94,7 @@
+ #define LSP_LV2_OSC_PORT_OUT                            "out_osc"
+ 
+ #ifdef LSP_INSTALL_PREFIX
+-    #define LSP_LIB_PREFIX(x)       LSP_INSTALL_PREFIX x
++    #define LSP_LIB_PREFIX(x)       STRINGIFY(LSP_INSTALL_PREFIX) x
+ #else
+     #define LSP_LIB_PREFIX(x)       x
+ #endif /* PREFIX */
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 0cc859f..508f829 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -11,8 +11,8 @@ TOOL_HOST_PKG_CONFIG    = PKG_CONFIG_SYSROOT_DIR=/ pkg-config
+ # Setup preferred flags
+ FLAG_RELRO              = -Wl,-z,relro,-z,now
+ FLAG_VERSION            = -DLSP_MAIN_VERSION=\"$(LSP_VERSION)\" -DLSP_INSTALL_PREFIX=\"$(PREFIX)\"
+-FLAG_CTUNE              = -std=c++98 \
+-                          -fno-exceptions -fno-rtti \
++FLAG_CXXSTANDARD        = -std=c++98
++FLAGS_CTUNE             = -fno-exceptions -fno-rtti \
+                           -fdata-sections -ffunction-sections -fno-asynchronous-unwind-tables \
+                           -fvisibility=hidden \
+                           -pipe -Wall
+@@ -34,9 +34,11 @@ HOST_LD                  ?= $(TOOL_HOST_LD)
+ PKG_CONFIG               ?= $(TOOL_PKG_CONFIG)
+ HOST_PKG_CONFIG          ?= $(TOOL_HOST_PKG_CONFIG)
+ 
+-CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-HOST_CXXFLAGS            += $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
++CFLAGS                   += $(CC_ARCH) $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) \
++                            $(CC_FLAGS) $(FLAG_VERSION)
++CXXFLAGS                 += $(CC_ARCH) $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) \
++                            $(CC_FLAGS) $(FLAG_VERSION)
++HOST_CXXFLAGS            += $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+ SO_FLAGS                 += $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+ MERGE_FLAGS              += $(LD_ARCH) -r
+ EXE_TEST_FLAGS           += $(LDFLAGS) $(CC_ARCH)
+diff --git a/src/Makefile b/src/Makefile
+index 01ac70b..01b9d92 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -120,7 +120,7 @@ $(OBJ_RES_CORE): $(OBJ_CORE) $(UTL_RESGEN)
+ 	@echo "Generating builtin resources"
+ 	mkdir -p $(OBJDIR)/res
+ 	$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
+-	-rm gmon.out >/dev/null 2>&1
++	rm -f gmon.out >/dev/null 2>&1
+ 	$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ # Target dependencies
+@@ -139,12 +139,12 @@ vst_stub: $(UTL_VSTMAKE)
+ 	@echo "Building VST stub"
+ 	mkdir -p $(OBJDIR)/vst
+ 	$(UTL_VSTMAKE) $(OBJDIR)/vst
+-	-rm gmon.out >/dev/null 2>&1
++	rm -f gmon.out >/dev/null 2>&1
+ 	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
+ 
+ jack_stub: $(UTL_JACKMAKE)
+ 	@echo "Building JACK stub"
+ 	mkdir -p $(OBJDIR)/jack
+ 	$(UTL_JACKMAKE) $(OBJDIR)/jack
+-	-rm gmon.out >/dev/null 2>&1
++	rm -f gmon.out >/dev/null 2>&1
+ 	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
+diff --git a/src/testing/Makefile b/src/testing/Makefile
+index d048065..a089309 100644
+--- a/src/testing/Makefile
++++ b/src/testing/Makefile
+@@ -14,6 +14,7 @@ all: $(OBJ_TESTING_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
++	@echo "testing: CXXFLAGS: $(CXXFLAGS)"
+ 	mkdir -p $(dir $@)
+ 	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index 4b4fd2e..a35d3a3 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -4,9 +4,9 @@ ifneq ($(VERBOSE),1)
+ .SILENT:
+ endif
+ 
+-CXX                     = $(HOST_CXX)
+-CXXFLAGS                = $(HOST_CXXFLAGS)
+-MAKE_OPTS              += CXX=$(HOST_CXX) CXXFLAGS=$(HOST_CXXFLAGS)
++# CXX                     = $(HOST_CXX)
++# CXXFLAGS                = $(HOST_CXXFLAGS)
++# MAKE_OPTS              += CXX=$(HOST_CXX) CXXFLAGS=$(HOST_CXXFLAGS)
+ 
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+diff --git a/tmp/.gitignore b/tmp/.gitignore
+index 22e8364..d6b7ef3 100644
+--- a/tmp/.gitignore
++++ b/tmp/.gitignore
+@@ -1 +1,2 @@
+-/*
+\ No newline at end of file
++*
++!.gitignore
diff --git a/srcpkgs/lsp-plugins-lv2/patches/00-patch-all.patch b/srcpkgs/lsp-plugins-lv2/patches/00-patch-all.patch
new file mode 100644
index 000000000000..ceb42e3c5a55
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/patches/00-patch-all.patch
@@ -0,0 +1,2098 @@
+diff --git a/.gitignore b/.gitignore
+index 5bc0ecb..4a1edec 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -3,6 +3,7 @@
+ /design/*
+ /.builconfig/*
+ /.build/*
++/.host_build/*
+ /.buildconfig/*
+ /.test/*
+ /.release/*
+diff --git a/.gitmodules b/.gitmodules
+index ac5ea32..4480c1f 100644
+--- a/.gitmodules
++++ b/.gitmodules
+@@ -1,3 +1,3 @@
+ [submodule "Polynomial-Wiener-Hammerstein"]
+ 	path = Polynomial-Wiener-Hammerstein
+-	url = ../../CrocoDuckoDucks/Polynomial-Wiener-Hammerstein.git
++	url = https://github.com/CrocoDuckoDucks/Polynomial-Wiener-Hammerstein
+diff --git a/Makefile b/Makefile
+index 2d9cb79..70cb6a4 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ # Common definitions
+ RELEASE_TEXT            = LICENSE.txt README.txt CHANGELOG.txt
+ RELEASE_SRC             = $(RELEASE_TEXT) src build-*.sh include res Makefile release.sh
+@@ -18,8 +24,10 @@ export RESDIR           = ${CURDIR}/res
+ export RELEASE          = ${CURDIR}/.release
+ export RELEASE_BIN      = $(RELEASE)/$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ export BUILDDIR         = ${CURDIR}/.build
++export HOST_BUILDDIR    = ${CURDIR}/.host_build
+ export TESTDIR          = ${CURDIR}/.test
+ OBJDIR                  = $(BUILDDIR)
++export HOST_OBJDIR      = $(HOST_BUILDDIR)
+ 
+ # Installation locations
+ BIN_PATH               ?= $(PREFIX)/bin
+@@ -35,20 +43,23 @@ VST_PATH                = $(LIB_PATH)/vst
+ export BASEDIR          = ${CURDIR}
+ 
+ # Objects
+-export OBJ_CORE         = $(OBJDIR)/core.o
+-export OBJ_DSP          = $(OBJDIR)/dsp.o
+-export OBJ_CTL_CORE     = $(OBJDIR)/ctl_core.o
+-export OBJ_TK_CORE      = $(OBJDIR)/tk_core.o
+-export OBJ_WS_CORE      = $(OBJDIR)/ws_core.o
+-export OBJ_WS_X11_CORE  = $(OBJDIR)/ws_x11_core.o
+-export OBJ_UI_CORE      = $(OBJDIR)/ui_core.o
+-export OBJ_RES_CORE     = $(OBJDIR)/res_core.o
+-export OBJ_TEST_CORE    = $(OBJDIR)/test_core.o
+-export OBJ_TESTING_CORE = $(OBJDIR)/testing_core.o
+-export OBJ_PLUGINS      = $(OBJDIR)/plugins.o
+-export OBJ_PLUGIN_UIS	= $(OBJDIR)/plugin_uis.o
+-export OBJ_METADATA     = $(OBJDIR)/metadata.o
+-export OBJ_FILES        = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
++export OBJ_CORE          = $(OBJDIR)/core.o
++export HOST_OBJ_CORE     = $(HOST_OBJDIR)/core.o
++export OBJ_DSP           = $(OBJDIR)/dsp.o
++export HOST_OBJ_DSP      = $(HOST_OBJDIR)/dsp.o
++export OBJ_CTL_CORE      = $(OBJDIR)/ctl_core.o
++export OBJ_TK_CORE       = $(OBJDIR)/tk_core.o
++export OBJ_WS_CORE       = $(OBJDIR)/ws_core.o
++export OBJ_WS_X11_CORE   = $(OBJDIR)/ws_x11_core.o
++export OBJ_UI_CORE       = $(OBJDIR)/ui_core.o
++export OBJ_RES_CORE      = $(OBJDIR)/res_core.o
++export OBJ_TEST_CORE     = $(OBJDIR)/test_core.o
++export OBJ_TESTING_CORE  = $(OBJDIR)/testing_core.o
++export OBJ_PLUGINS       = $(OBJDIR)/plugins.o
++export OBJ_PLUGIN_UIS	 = $(OBJDIR)/plugin_uis.o
++export OBJ_METADATA      = $(OBJDIR)/metadata.o
++export HOST_OBJ_METADATA = $(HOST_OBJDIR)/metadata.o
++export OBJ_FILES         = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
+ 
+ # Libraries
+ export LIB_LADSPA       = $(OBJDIR)/$(ARTIFACT_ID)-ladspa.so
+@@ -62,11 +73,14 @@ export BIN_PROFILE      = $(OBJDIR)/$(ARTIFACT_ID)-profile
+ export BIN_TEST         = $(OBJDIR)/$(ARTIFACT_ID)-test
+ 
+ # Utils
+-export UTL_GENTTL       = $(OBJDIR)/lv2_genttl.exe
+-export UTL_VSTMAKE      = $(OBJDIR)/vst_genmake.exe
+-export UTL_JACKMAKE     = $(OBJDIR)/jack_genmake.exe
+-export UTL_GENPHP       = $(OBJDIR)/gen_php.exe
+-export UTL_RESGEN       = $(OBJDIR)/gen_resources.exe
++ifeq ($(BUILD_SYSTEM),Windows)
++  BIN_SUFFIX := .exe
++endif
++export UTL_GENTTL       = $(HOST_OBJDIR)/lv2_genttl$(BIN_SUFFIX)
++export UTL_VSTMAKE      = $(HOST_OBJDIR)/vst_genmake$(BIN_SUFFIX)
++export UTL_JACKMAKE     = $(HOST_OBJDIR)/jack_genmake$(BIN_SUFFIX)
++export UTL_GENPHP       = $(HOST_OBJDIR)/gen_php$(BIN_SUFFIX)
++export UTL_RESGEN       = $(HOST_OBJDIR)/gen_resources$(BIN_SUFFIX)
+ export UTL_FILES        = $(UTL_GENTTL) $(UTL_VSTMAKE) $(UTL_GENPHP) $(UTL_RESGEN)
+ 
+ # Files
+@@ -84,7 +98,7 @@ SRC_ID                 := $(ARTIFACT_ID)-src-$(LSP_VERSION)
+ DOC_ID                 := $(ARTIFACT_ID)-doc-$(LSP_VERSION)
+ 
+ .DEFAULT_GOAL          := all
+-.PHONY: all experimental trace debug tracefile debugfile profile gdb test testdebug testprofile compile test_compile
++.PHONY: all experimental trace debug tracefile debugfile profile gdb test check testdebug testprofile compile test_compile
+ .PHONY: compile_info
+ .PHONY: install install_ladspa install_lv2 install_vst install_jack install_doc install_xdg
+ .PHONY: uninstall uninstall_ladspa uninstall_lv2 uninstall_vst uninstall_jack uninstall_doc uninstall_xdg
+@@ -98,6 +112,7 @@ all: export CXXFLAGS        += -O2 -DLSP_NO_EXPERIMENTAL
+ all: export EXE_FLAGS       += -pie -fPIE
+ all: compile
+ 
++
+ experimental: export CFLAGS += -O2
+ experimental: export CXXFLAGS += -O2
+ experimental: compile
+@@ -115,9 +130,13 @@ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
+ test: test_compile
+ 
++# Run unit tests
++check: test
++	.test/lsp-plugins-test utest
++
+ testdebug: OBJDIR                 = $(TESTDIR)
+-testdebug: export CFLAGS         += -O0 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-testdebug: export CXXFLAGS       += -O0 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
++testdebug: export CFLAGS         += -Og -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
++testdebug: export CXXFLAGS       += -Og -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ testdebug: export EXE_TEST_FLAGS += -g3
+ testdebug: export MAKE_OPTS      += LSP_TESTING=1
+ testdebug: export BUILD_MODULES   = jack
+@@ -142,8 +161,11 @@ debugfile: export CFLAGS    += -DLSP_TRACEFILE
+ debugfile: export CXXFLAGS  += -DLSP_TRACEFILE
+ debugfile: debug
+ 
+-gdb: export CFLAGS          += -O0 -g3 -DLSP_TRACE
+-gdb: export CXXFLAGS        += -O0 -g3 -DLSP_TRACE
++gdb: export CFLAGS          = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export CXXFLAGS        = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export HOST_CXXFLAGS   = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export EXE_FLAGS       = -g3
++gdb: export HOST_EXE_FLAGS  = -g3
+ gdb: compile
+ 
+ profile: export CFLAGS      += -g -pg -DLSP_PROFILING -no-pie -fno-pie -fPIC
+@@ -155,35 +177,53 @@ profile: compile
+ compile_info:
+ 	@echo "-------------------------------------------------------------------------------"
+ 	@echo "Building binaries"
+-	@echo "  target architecture : $(BUILD_PROFILE)"
+-	@echo "  target platform     : $(BUILD_PLATFORM)"
+-	@echo "  target system       : $(BUILD_SYSTEM)"
+-	@echo "  compiler            : $(BUILD_COMPILER)"
+-	@echo "  modules             : $(BUILD_MODULES)"
+-	@echo "  UI                  : LV2=$(LV2_UI), VST=$(VST_UI)"
+-	@echo "  3D rendering        : $(BUILD_R3D_BACKENDS)"
+-	@echo "  build directory     : $(OBJDIR)"
++	@echo "  platform             : $(BUILD_PLATFORM)"
++	@echo "  system               : $(BUILD_SYSTEM)"
++	@echo "  target compiler      : $(CXX)"
++	@echo "  target architecture  : $(BUILD_PROFILE)"
++	@echo "  modules              : $(BUILD_MODULES)"
++	@echo "  UI                   : LV2=$(LV2_UI), VST=$(VST_UI)"
++	@echo "  3D rendering         : $(BUILD_R3D_BACKENDS)"
++	@echo "  build directory      : $(OBJDIR)"
+ 	@echo "-------------------------------------------------------------------------------"
+ 
+-compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@mkdir -p $(CFGDIR)
+-	@test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
+-	@test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
+-	@test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
+-	@test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++compile: utils | compile_info
++	mkdir -p $(OBJDIR)/src
++	mkdir -p $(CFGDIR)
++	test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
++	test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
++	test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
++	test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Build OK"
+ 	
+-test_compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++test_compile: utils | compile_info
++	mkdir -p $(OBJDIR)/src
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
++utils: export BUILD_PROFILE=$(HOST_BUILD_PROFILE)
++utils: export OBJDIR=$(HOST_OBJDIR)
++utils: export OBJ_CORE=$(HOST_OBJ_CORE)
++utils: export OBJ_DSP=$(HOST_OBJ_DSP)
++utils: export OBJ_METADATA=$(HOST_OBJ_METADATA)
++utils: export CXX=$(HOST_CXX)
++utils: export CXXFLAGS=$(HOST_CXXFLAGS)
++utils: export LD=$(HOST_LD)
++utils: export SNDFILE_HEADERS=$(HOST_SNDFILE_HEADERS)
++utils: export SNDFILE_LIBS=$(HOST_SNDFILE_LIBS)
++utils: export LV2_HEADERS=$(HOST_LV2_HEADERS)
++utils: export LV2_LIBS=$(HOST_LV2_LIBS)
++utils: | compile_info
++	mkdir -p $(HOST_OBJDIR)/src/utils
++	$(MAKE) $(MAKE_OPTS) -C src utils
++	@echo "Utils Build OK"
++
+ clean:
+-	@-rm -rf $(BUILDDIR)
+-	@-rm -rf $(TESTDIR)
+-	@-rm -rf $(CFGDIR)
++	rm -rf $(BUILDDIR)
++	rm -rf $(HOST_BUILDDIR)
++	rm -rf $(TESTDIR)
++	rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+ 
+ # Build targets
+@@ -209,63 +249,63 @@ install: $(INSTALLATIONS)
+ 
+ install_ladspa: all
+ 	@echo "Installing LADSPA plugins to $(DESTDIR)$(LADSPA_PATH)/"
+-	@mkdir -p $(DESTDIR)$(LADSPA_PATH)
+-	@$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
++	mkdir -p $(DESTDIR)$(LADSPA_PATH)
++	$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
+ 	
+ install_lv2: all
+ 	@echo "Installing LV2 plugins to $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
+-	@$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
++	$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+ 	
+ install_vst: all
+ 	@echo "Installing VST plugins to $(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+-	@$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
++	$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+ 
+ install_jack: all
+ 	@echo "Installing JACK core to $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
++	$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+ 	@echo "Installing JACK standalone plugins to $(DESTDIR)$(BIN_PATH)"
+-	@mkdir -p "$(DESTDIR)$(BIN_PATH)"
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
++	mkdir -p "$(DESTDIR)$(BIN_PATH)"
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
+ 
+ install_xdg:
+ 	@echo "Installing desktop icons to $(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
+-	@mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
+-	@cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
+-	@cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
+-	@cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
+-	@cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
++	mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
++	cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
++	cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
++	cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
++	cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
+ 
+ install_doc: all
+ 	@echo "Installing documentation to $(DESTDIR)$(DOC_PATH)"
+-	@mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+ # Release targets
+ dbg_release: export CFLAGS        += -DLSP_TRACE -O2
+@@ -279,67 +319,67 @@ release: $(RELEASES)
+ 
+ release_prepare: all
+ 	@echo "Releasing plugins for architecture $(BUILD_PROFILE)"
+-	@mkdir -p $(RELEASE)
+-	@mkdir -p $(DESTDIR)
++	mkdir -p $(RELEASE)
++	mkdir -p $(DESTDIR)
+ 	
+ release_ladspa: DESTDIR=$(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_ladspa: | release_prepare install_ladspa
+ 	@echo "Releasing LADSPA binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_lv2: DESTDIR=$(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_lv2: | release_prepare install_lv2
+ 	@echo "Releasing LV2 binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_vst: DESTDIR=$(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_vst: | release_prepare install_vst
+ 	@echo "Releasing VST binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_jack: DESTDIR=$(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_jack: | release_prepare install_jack
+ 	@echo "Releasing JACK binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 
+ release_profile: DESTDIR=$(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_profile: | release_prepare
+ 	@echo "Releasing PROFILE binaries"
+-	@$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ 
+ release_src: DESTDIR=$(RELEASE)/$(SRC_ID)
+ release_src: | release_prepare
+ 	@echo "Releasing source code binaries"
+-	@mkdir -p $(DESTDIR)
+-	@mkdir -p $(DESTDIR)/scripts
+-	@cp -R $(RELEASE_SRC) $(DESTDIR)/
+-	@cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	mkdir -p $(DESTDIR)/scripts
++	cp -R $(RELEASE_SRC) $(DESTDIR)/
++	cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
++	rm -rf $(DESTDIR)
+ 
+ release_doc: DESTDIR=$(RELEASE)/$(DOC_ID)
+ release_doc: | release_prepare
+ 	@echo "Releasing documentation"
+-	@mkdir -p $(DESTDIR)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
++	rm -rf $(DESTDIR)
+ 
+ # Unrelease target
+ unrelease: clean
+-	@-rm -rf $(RELEASE)
++	rm -rf $(RELEASE)
+ 	@echo "Unrelease OK"
+ 
+ # Uninstall target
+@@ -348,41 +388,41 @@ uninstall: $(UNINSTALLATIONS)
+ 	
+ uninstall_ladspa:
+ 	@echo "Uninstalling LADSPA"
+-	@-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
++	rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
+ 	
+ uninstall_lv2:
+ 	@echo "Uninstalling LV2"
+-	@-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
++	rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
+ 	
+ uninstall_vst:
+ 	@echo "Uninstalling VST"
+-	@-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
++	rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
++	rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
++	rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
+ 	
+ uninstall_jack:
+ 	@echo "Uninstalling JACK"
+-	@-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
+-	@-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
++	rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
++	rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
++	rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
++	rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
+ 
+ uninstall_xdg:
+ 	@echo "Uninstalling desktop icons"
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
+-	@-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
++	rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
++	rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
+ 
+ uninstall_doc:
+ 	@echo "Uninstalling DOC"
+-	@-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+diff --git a/TODO.txt b/TODO.txt
+index 4976293..f8562ef 100644
+--- a/TODO.txt
++++ b/TODO.txt
+@@ -28,6 +28,12 @@
+ - Added possibility to change themes in runtime.
+ - Complicated plugin UIs now allow to switch between Advanced and Novice modes.
+ 
++=== 1.1.31 ===
++
++* Fixed X11 error handling routine that could crash under certain conditions.
++* Better support for musl libc (contributed by Artur Sinila).
++* Added support of VERBOSE parameter for build system (contributed by Artur Sinila).
++
+ *******************************************************************************
+ * New plugin check list before release
+ *******************************************************************************
+diff --git a/include/common/types.h b/include/common/types.h
+index dd1816e..59c794e 100644
+--- a/include/common/types.h
++++ b/include/common/types.h
+@@ -563,6 +563,12 @@
+     #define MINIMUM_ALIGN                   DEFAULT_ALIGN
+ #endif /* DEFAULT_ALIGN */
+ 
++//-----------------------------------------------------------------------------
++// Detect some libraries
++#ifdef __GLIBC__
++    #define USE_GLIBC                           __GLIBC__
++#endif /* GLIBC */
++
+ //-----------------------------------------------------------------------------
+ // Type definitions
+ __IF_32( typedef        uint32_t            umword_t );
+diff --git a/include/data/cvector.h b/include/data/cvector.h
+index eccc94a..17fe119 100644
+--- a/include/data/cvector.h
++++ b/include/data/cvector.h
+@@ -25,6 +25,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <sys/types.h>
+ 
+ #define CVECTOR_GROW        16
+ 
+diff --git a/include/metadata/metadata.h b/include/metadata/metadata.h
+index 0efaa9d..e009750 100644
+--- a/include/metadata/metadata.h
++++ b/include/metadata/metadata.h
+@@ -73,10 +73,18 @@
+     #define LSP_ARCHITECTURE                                "unknown"
+ #endif /* ARCH */
+ 
++#define STRINGIFY_(x) #x
++#define STRINGIFY(x) STRINGIFY_(x)
++
+ #ifndef LSP_MAIN_VERSION
+     #define LSP_MAIN_VERSION                                "0.0.0"
++#else
++    #define LSP_MAIN_VERSION_STR STRINGIFY(LSP_MAIN_VERSION)
++    #undef LSP_MAIN_VERSION
++    #define LSP_MAIN_VERSION LSP_MAIN_VERSION_STR
+ #endif /* LSP_MAIN_VERSION */
+ 
++
+ #define LSP_LV2_LATENCY_PORT                            "out_latency"
+ #define LSP_LV2_ATOM_PORT_IN                            "in_ui"
+ #define LSP_LV2_MIDI_PORT_IN                            "in_midi"
+@@ -86,7 +94,7 @@
+ #define LSP_LV2_OSC_PORT_OUT                            "out_osc"
+ 
+ #ifdef LSP_INSTALL_PREFIX
+-    #define LSP_LIB_PREFIX(x)       LSP_INSTALL_PREFIX x
++    #define LSP_LIB_PREFIX(x)       STRINGIFY(LSP_INSTALL_PREFIX) x
+ #else
+     #define LSP_LIB_PREFIX(x)       x
+ #endif /* PREFIX */
+diff --git a/include/test/main/executor.h b/include/test/main/executor.h
+index 0faf73f..5a0c016 100644
+--- a/include/test/main/executor.h
++++ b/include/test/main/executor.h
+@@ -633,7 +633,7 @@ namespace lsp
+     }
+ #endif /* PLATFORM_WINDOWS */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     void TestExecutor::start_memcheck(test::Test *v)
+     {
+         if (!pCfg->mtrace)
+diff --git a/include/test/main/types.h b/include/test/main/types.h
+index ef15800..0c5d7c2 100644
+--- a/include/test/main/types.h
++++ b/include/test/main/types.h
+@@ -42,7 +42,7 @@
+     #include <fcntl.h>
+ #endif /* PLATFORM_UNIX_COMPATIBLE */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     #include <mcheck.h>
+ #endif /* PLATFORM_LINUX */
+ 
+diff --git a/include/testing/mtest/3d/common/X11Renderer.h b/include/testing/mtest/3d/common/X11Renderer.h
+index e8ec205..f0a51e2 100644
+--- a/include/testing/mtest/3d/common/X11Renderer.h
++++ b/include/testing/mtest/3d/common/X11Renderer.h
+@@ -30,7 +30,7 @@
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include <rendering/backend.h>
+ #include <core/ipc/Library.h>
+diff --git a/scripts/make/configure.mk b/scripts/make/configure.mk
+index 09aee9a..1f3cf7b 100644
+--- a/scripts/make/configure.mk
++++ b/scripts/make/configure.mk
+@@ -14,7 +14,8 @@ ifndef BUILD_R3D_BACKENDS
+   BUILD_R3D_BACKENDS     := $(shell if (test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" )  then cat "$(CFGDIR)/$(R3D_BACKENDS_FILE)" 2>/dev/null; else echo "glx"; fi;)
+ endif
+ 
+-BUILD_COMPILER         := $(shell $(CC) --version | head -n 1 || echo "unknown")
++BUILD_COMPILER         := $(shell $(CXX) --version | head -n 1 || echo "unknown")
++HOST_BUILD_COMPILER    := $(shell $(HOST_CXX) --version | head -n 1 || echo "unknown")
+ 
+ export BUILD_MODULES
+ export BUILD_R3D_BACKENDS
+@@ -23,7 +24,7 @@ export BUILD_R3D_BACKENDS
+ INSTALLATIONS           =
+ UNINSTALLATIONS         = uninstall_xdg
+ RELEASES                =
+-INCLUDE                 = -I"${CURDIR}/include"
++INCLUDE                 := -I"${CURDIR}/include"
+ 
+ ifeq ($(findstring ladspa,$(BUILD_MODULES)),ladspa)
+   INSTALLATIONS          += install_ladspa
+@@ -63,61 +64,64 @@ LD_ARCH         =
+ CC_ARCH         =
+ 
+ # Build profile
+-ifeq ($(BUILD_PROFILE),i586)
+-  CC_ARCH          = -m32
+-  ifeq ($(BUILD_PLATFORM), Linux)
+-    LD_ARCH          = -m elf_i386
++# SKIP_CC_LD_ARCH is set by distro package build systems
++# which manage cross-compilation flags on their own
++ifeq ($(SKIP_CC_LD_ARCH),)
++  ifeq ($(BUILD_PROFILE),i586)
++    CC_ARCH          = -m32
++    ifeq ($(BUILD_PLATFORM), Linux)
++      LD_ARCH          = -m elf_i386
++    endif
++    ifeq ($(BUILD_PLATFORM), BSD)
++      LD_ARCH          = -m elf_i386_fbsd
++    endif
+   endif
++  
++  ifeq ($(BUILD_PROFILE),x86_64)
++    CC_ARCH          = -m64
++    ifeq ($(BUILD_PLATFORM), Linux)
++      LD_ARCH          = -m elf_x86_64
++    endif
++    ifeq ($(BUILD_PLATFORM), BSD)
++      LD_ARCH          = -m elf_x86_64_fbsd
++    endif
++  endif
++  
+   ifeq ($(BUILD_PLATFORM), BSD)
+-    LD_ARCH          = -m elf_i386_fbsd
++    INCLUDE          += -I/usr/local/include
++    ifeq ($(BUILD_PROFILE),arm)
++      CC_ARCH          = -marm
++      ifneq ($(LD_PATH),)
++        CC_ARCH          += -Wl,-rpath=$(LD_PATH)
++      endif
++    endif
+   endif
+-endif
+-
+-ifeq ($(BUILD_PROFILE),x86_64)
+-  CC_ARCH          = -m64
+-  ifeq ($(BUILD_PLATFORM), Linux)
+-    LD_ARCH          = -m elf_x86_64
++  
++  ifeq ($(BUILD_PROFILE),armv6a)
++    CC_ARCH          = -march=armv6-a -marm
+   endif
+-  ifeq ($(BUILD_PLATFORM), BSD)
+-    LD_ARCH          = -m elf_x86_64_fbsd
++  
++  ifeq ($(BUILD_PROFILE),armv7a)
++    CC_ARCH          = -march=armv7-a -marm
+   endif
+-endif
+-
+-ifeq ($(BUILD_PLATFORM), BSD)
+-  INCLUDE          += -I/usr/local/include
+-  ifeq ($(BUILD_PROFILE),arm)
++  
++  ifeq ($(BUILD_PROFILE),armv7ve)
++    CC_ARCH          = -march=armv7ve -marm
++  endif
++  
++  ifeq ($(BUILD_PROFILE),arm32)
+     CC_ARCH          = -marm
+-    ifneq ($(LD_PATH),)
+-      CC_ARCH          += -Wl,-rpath=$(LD_PATH)
+-    endif
++  endif
++  
++  ifeq ($(BUILD_PROFILE),armv8a)
++    CC_ARCH          = -march=armv7-a -marm
++  endif
++  
++  ifeq ($(BUILD_PROFILE),aarch64)
++    CC_ARCH          = -march=armv8-a
+   endif
+ endif
+ 
+-ifeq ($(BUILD_PROFILE),armv6a)
+-  CC_ARCH          = -march=armv6-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv7a)
+-  CC_ARCH          = -march=armv7-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv7ve)
+-  CC_ARCH          = -march=armv7ve -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),arm32)
+-  CC_ARCH          = -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv8a)
+-  CC_ARCH          = -march=armv7-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),aarch64)
+-  CC_ARCH          = -march=armv8-a
+-endif
+-
+-
+ export CC_ARCH
+ export LD_ARCH
+ export LD_PATH
+@@ -127,21 +131,25 @@ export INCLUDE
+ ifeq ($(BUILD_SYSTEM),Windows)
+ # TODO
+ else
+-  export PTHREAD_LIBS     = -lpthread
+-  export ICONV_LIBS       = -liconv
+-  export MATH_LIBS        = -lm
+-  export DL_LIBS          = -ldl
+-  export CAIRO_HEADERS    = $(shell pkg-config --cflags cairo)
+-  export CAIRO_LIBS       = $(shell pkg-config --libs cairo)
+-  export XLIB_HEADERS     = $(shell pkg-config --cflags x11)
+-  export XLIB_LIBS        = $(shell pkg-config --libs x11)
+-  export LV2_HEADERS      = $(shell pkg-config --cflags lv2)
+-  export LV2_LIBS         = $(shell pkg-config --libs lv2)
+-  export SNDFILE_HEADERS  = $(shell pkg-config --cflags sndfile)
+-  export SNDFILE_LIBS     = $(shell pkg-config --libs sndfile)
+-  export JACK_HEADERS     = $(shell pkg-config --cflags jack)
+-  export JACK_LIBS        = $(shell pkg-config --libs jack)
+-  export OPENGL_HEADERS   = $(shell pkg-config --cflags gl 2>/dev/null || echo "")
+-  export OPENGL_LIBS      = $(shell pkg-config --libs gl 2>/dev/null || echo "")
++  export PTHREAD_LIBS         = -lpthread
++  export ICONV_LIBS           = -liconv
++  export MATH_LIBS            = -lm
++  export DL_LIBS              = -ldl
++  export CAIRO_HEADERS        = $(shell $(PKG_CONFIG) --cflags cairo)
++  export CAIRO_LIBS           = $(shell $(PKG_CONFIG) --libs cairo)
++  export XLIB_HEADERS         = $(shell $(PKG_CONFIG) --cflags x11)
++  export XLIB_LIBS            = $(shell $(PKG_CONFIG) --libs x11)
++  export LV2_HEADERS          = $(shell $(PKG_CONFIG) --cflags lv2)
++  export LV2_HEADERS          = $(shell $(PKG_CONFIG) --libs lv2)
++  export SNDFILE_HEADERS      = $(shell $(PKG_CONFIG) --cflags sndfile)
++  export SNDFILE_LIBS         = $(shell $(PKG_CONFIG) --libs sndfile)
++  export JACK_HEADERS         = $(shell $(PKG_CONFIG) --cflags jack)
++  export JACK_LIBS            = $(shell $(PKG_CONFIG) --libs jack)
++  export OPENGL_HEADERS       = $(shell $(PKG_CONFIG) --cflags gl 2>/dev/null || echo "")
++  export OPENGL_LIBS          = $(shell $(PKG_CONFIG) --libs gl 2>/dev/null || echo "")
++  export HOST_SNDFILE_HEADERS = $(shell $(HOST_PKG_CONFIG) --cflags sndfile)
++  export HOST_SNDFILE_LIBS    = $(shell $(HOST_PKG_CONFIG) --libs sndfile)
++  export HOST_LV2_HEADERS     = $(shell $(HOST_PKG_CONFIG) --cflags lv2)
++  export HOST_LV2_LIBS        = $(shell $(HOST_PKG_CONFIG) --libs lv2)
+ endif
+ 
+diff --git a/scripts/make/set_vars.mk b/scripts/make/set_vars.mk
+index a22531a..93916ea 100644
+--- a/scripts/make/set_vars.mk
++++ b/scripts/make/set_vars.mk
+@@ -37,7 +37,52 @@ export BUILD_PLATFORM
+ export LV2_UI
+ export VST_UI
+ 
+-# Detect processor architecture
++# Detect host processor architecture
++ifeq ($(BUILD_PLATFORM),Windows)
++  ifndef HOST_BUILD_PROFILE
++    HOST_BUILD_ARCH           = i586
++    HOST_BUILD_PROFILE             = i586
++    ifeq ($(PROCESSOR_ARCHITECTURE),x86)
++      HOST_BUILD_ARCH         = i586
++      HOST_BUILD_PROFILE      = i586
++    endif
++    ifeq ($(PROCESSOR_ARCHITECTURE),AMD64)
++      HOST_BUILD_ARCH              = x86_64
++      HOST_BUILD_PROFILE           = x86_64
++    endif
++  endif
++else # BUILD_PLATFORM != Windows
++  ifndef HOST_BUILD_PROFILE
++    HOST_BUILD_ARCH    ?= $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
++    HOST_BUILD_PROFILE  = $(HOST_BUILD_ARCH)
++    ifeq ($(patsubst armv6%,armv6,$(HOST_BUILD_ARCH)), armv6)
++      HOST_BUILD_PROFILE      = armv6a
++    endif
++    ifeq ($(patsubst armv7%,armv7,$(HOST_BUILD_ARCH)), armv7)
++      HOST_BUILD_PROFILE      = armv7a
++    endif
++    ifeq ($(patsubst armv8%,armv8,$(HOST_BUILD_ARCH)), armv8)
++      HOST_BUILD_PROFILE      = armv8a
++    endif
++    ifeq ($(patsubst aarch64%,aarch64,$(HOST_BUILD_ARCH)), aarch64)
++      HOST_BUILD_PROFILE      = aarch64
++    endif
++    ifeq ($(HOST_BUILD_ARCH),x86_64)
++      HOST_BUILD_PROFILE      = x86_64
++    endif
++    ifeq ($(HOST_BUILD_ARCH),amd64)
++      HOST_BUILD_PROFILE      = x86_64
++    endif
++    ifeq ($(HOST_BUILD_ARCH),i86pc)
++      HOST_BUILD_PROFILE      = x86_64
++    endif
++    ifeq ($(patsubst i%86,i586,$(HOST_BUILD_ARCH)), i586)
++      HOST_BUILD_PROFILE      = i586
++    endif
++  endif
++endif # BUILD_PLATFORM != Windows
++
++# Detect target processor architecture
+ ifeq ($(BUILD_PLATFORM),Windows)
+   ifndef BUILD_PROFILE
+     BUILD_ARCH                = i586
+@@ -53,7 +98,7 @@ ifeq ($(BUILD_PLATFORM),Windows)
+   endif
+ else # BUILD_PLATFORM != Windows
+   ifndef BUILD_PROFILE
+-    BUILD_ARCH              = $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
++    BUILD_ARCH              ?= $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
+     BUILD_PROFILE           = $(BUILD_ARCH)
+     ifeq ($(patsubst armv6%,armv6,$(BUILD_ARCH)), armv6)
+       BUILD_PROFILE           = armv6a
+@@ -82,5 +127,7 @@ else # BUILD_PLATFORM != Windows
+   endif
+ endif # BUILD_PLATFORM != Windows
+ 
+-export BUILD_PROFILE
++HOST_BUILD_PROFILE ?= $(shell uname -m)
+ 
++export BUILD_PROFILE
++export HOST_BUILD_PROFILE
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 1fb917e..508f829 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -1,14 +1,18 @@
+ # Setup preferred tools
+ TOOL_LD                 = ld
++TOOL_HOST_LD            = ld
+ TOOL_CC                 = gcc
+ TOOL_CXX                = g++
++TOOL_HOST_CXX           = g++
+ TOOL_PHP                = php
++TOOL_PKG_CONFIG         = pkg-config
++TOOL_HOST_PKG_CONFIG    = PKG_CONFIG_SYSROOT_DIR=/ pkg-config
+ 
+ # Setup preferred flags
+ FLAG_RELRO              = -Wl,-z,relro,-z,now
+ FLAG_VERSION            = -DLSP_MAIN_VERSION=\"$(LSP_VERSION)\" -DLSP_INSTALL_PREFIX=\"$(PREFIX)\"
+-FLAG_CTUNE              = -std=c++98 \
+-                          -fno-exceptions -fno-rtti \
++FLAG_CXXSTANDARD        = -std=c++98
++FLAGS_CTUNE             = -fno-exceptions -fno-rtti \
+                           -fdata-sections -ffunction-sections -fno-asynchronous-unwind-tables \
+                           -fvisibility=hidden \
+                           -pipe -Wall
+@@ -17,21 +21,29 @@ FLAG_CTUNE              = -std=c++98 \
+ ifeq ($(BUILD_PLATFORM),Solaris)
+   FLAG_RELRO              =
+   TOOL_LD                 = gld
++  TOOL_HOST_LD            = gld
+ endif
+ 
+ # Setup system variables
+ CC              		 ?= $(TOOL_CC)
+ CXX                      ?= $(TOOL_CXX)
++HOST_CXX                 ?= $(TOOL_HOST_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
++HOST_LD                  ?= $(TOOL_HOST_LD)
++PKG_CONFIG               ?= $(TOOL_PKG_CONFIG)
++HOST_PKG_CONFIG          ?= $(TOOL_HOST_PKG_CONFIG)
+ 
+-MAKE_OPTS                 = -s
+-CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+-MERGE_FLAGS               = $(LD_ARCH) -r
+-EXE_TEST_FLAGS            = $(LDFLAGS) $(CC_ARCH)
+-EXE_FLAGS                 = $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++CFLAGS                   += $(CC_ARCH) $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) \
++                            $(CC_FLAGS) $(FLAG_VERSION)
++CXXFLAGS                 += $(CC_ARCH) $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) \
++                            $(CC_FLAGS) $(FLAG_VERSION)
++HOST_CXXFLAGS            += $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
++SO_FLAGS                 += $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
++MERGE_FLAGS              += $(LD_ARCH) -r
++EXE_TEST_FLAGS           += $(LDFLAGS) $(CC_ARCH)
++EXE_FLAGS                += $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++HOST_EXE_FLAGS           += $(HOST_LDFLAGS) $(FLAG_RELRO) -Wl,--gc-sections
+ 
+ ifeq ($(BUILD_PLATFORM), Linux)
+   SO_FLAGS                 += -Wl,--no-undefined
+@@ -59,13 +71,18 @@ endif
+ 
+ export CC
+ export CXX
++export HOST_CXX
+ export PHP
+ export LD
++export HOST_LD
++export PKG_CONFIG
++export HOST_PKG_CONFIG
+ 
+-export MAKE_OPTS
+ export CFLAGS
+ export CXXFLAGS
++export HOST_CXXFLAGS
+ export SO_FLAGS
+ export MERGE_FLAGS
+ export EXE_TEST_FLAGS
+ export EXE_FLAGS
++export HOST_EXE_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index 8546191..01b9d92 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,7 +1,16 @@
++# Estimate different pre-requisites before launching build
++
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+-UTL_DEPS                = $(OBJ_CORE) $(OBJ_DSP) $(OBJ_METADATA)
++UTL_DEPS                = $(HOST_OBJ_CORE) $(HOST_OBJ_DSP) $(HOST_OBJ_METADATA)
++OBJDIR                  ?= $(BUILDDIR)
+ 
+ NEED_UI                 = 0
+ NEED_PLUGINS            = 0
+@@ -58,6 +67,7 @@ ifeq ($(NEED_UI),1)
+   CONTAINER_DEPS         += $(OBJ_UI_CORE) $(OBJ_RES_CORE) rendering
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all $(MODULES)
+ 
+ all: $(MODULES)
+@@ -66,19 +76,34 @@ target: all
+ 
+ # Rules
+ $(SUBDIRS):
+-	@echo "Building $(@)"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	@echo "$(BUILDDIR)"
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ all \
++		CXX="$(CXX)" \
++		CXXFLAGS="$(CXXFLAGS)" \
++		LD="$(LD)" \
++		OBJDIR="$(OBJDIR)/$(@)" \
++		BUILD_PROFILE="$(BUILD_PROFILE)" \
++		SNDFILE_HEADERS="$(SNDFILE_HEADERS)" \
++		SNDFILE_LIBS="$(SNDFILE_LIBS)" \
++		LV2_HEADERS="$(LV2_HEADERS)" \
++		LV2_LIBS="$(LV2_LIBS)"
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+ 
++$(HOST_OBJ_CORE): core
++
+ $(OBJ_DSP): dsp
+ 
++$(HOST_OBJ_DSP): dsp
++
+ $(OBJ_PLUGINS): plugins
+ 
+ $(OBJ_METADATA): metadata
+ 
++$(HOST_OBJ_METADATA): metadata
++
+ $(OBJ_UI_CORE): ui
+ 
+ $(UTL_FILES): utils
+@@ -93,10 +118,10 @@ $(OBJ_TESTING_CORE): test testing rendering
+ 
+ $(OBJ_RES_CORE): $(OBJ_CORE) $(UTL_RESGEN)
+ 	@echo "Generating builtin resources"
+-	@mkdir -p $(OBJDIR)/res
+-	@$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	mkdir -p $(OBJDIR)/res
++	$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
++	rm -f gmon.out >/dev/null 2>&1
++	$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ # Target dependencies
+ container: $(CONTAINER_DEPS)
+@@ -108,18 +133,18 @@ doc: utils $(PHP_PLUGINS)
+ # Additional processing
+ $(PHP_PLUGINS): $(UTL_GENPHP)
+ 	@echo "Generating PHP file $(notdir $(PHP_PLUGINS))"
+-	@$(UTL_GENPHP) $(PHP_PLUGINS)
++	$(UTL_GENPHP) $(PHP_PLUGINS)
+ 
+ vst_stub: $(UTL_VSTMAKE)
+ 	@echo "Building VST stub"
+-	@mkdir -p $(OBJDIR)/vst
+-	@$(UTL_VSTMAKE) $(OBJDIR)/vst
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
++	mkdir -p $(OBJDIR)/vst
++	$(UTL_VSTMAKE) $(OBJDIR)/vst
++	rm -f gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
+ 
+ jack_stub: $(UTL_JACKMAKE)
+ 	@echo "Building JACK stub"
+-	@mkdir -p $(OBJDIR)/jack
+-	@$(UTL_JACKMAKE) $(OBJDIR)/jack
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
++	mkdir -p $(OBJDIR)/jack
++	$(UTL_JACKMAKE) $(OBJDIR)/jack
++	rm -f gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
+diff --git a/src/container/Makefile b/src/container/Makefile
+index 8aa8196..23a2e7a 100644
+--- a/src/container/Makefile
++++ b/src/container/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ OBJ_HELPERS             = $(OBJDIR)/CairoCanvas.o
+@@ -53,46 +59,47 @@ ifeq ($(VST_UI),1)
+   X_VST_LIBS             += $(UI_LIBS)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(MODULES)
+ 
+ $(OBJ_HELPERS):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
+ 
+ $(LIB_LADSPA):
+ 	@echo "  $(CXX) ladspa.cpp"
+-	@$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_LADSPA))"
+-	@$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
++	$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
+ 
+ $(LIB_LV2): $(X_LV2_DEPS)
+ 	@echo "  $(CXX) lv2.cpp"
+-	@$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
+-	@echo "  $(CXX) $(notdir $(X_LIB_LV2))"
+-	@$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
++	$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
++	@echo "  $(CXX) $(notdir $(LIB_LV2))"
++	$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
+ 
+ $(LIB_VST):
+ 	@echo "  $(CXX) vst.cpp"
+-	@$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_VST))"
+-	@$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
++	$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
+ 
+ $(LIB_JACK): $(OBJ_HELPERS)
+ 	@echo "  $(CXX) jack.cpp"
+-	@$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
++	$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
+ 	@echo "  $(CXX) $(notdir $(LIB_JACK))"
+-	@$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
++	$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
+ 
+ $(BIN_PROFILE): $(LIB_JACK)
+ 	@echo "  $(CXX) profile.cpp"
+-	@$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_PROFILE))"
+-	@$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
++	$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
+ 
+ $(BIN_TEST): $(LIB_JACK)
+ 	@echo "  $(CXX) test.cpp"
+-	@$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_TEST))"
+-	@$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
++	$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
+diff --git a/src/core/Makefile b/src/core/Makefile
+index a9ce1a5..3ad14a5 100644
+--- a/src/core/Makefile
++++ b/src/core/Makefile
+@@ -1,18 +1,25 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(SNDFILE_HEADERS)
+ LIBS                    = $(PTHREAD_LIBS)
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(OBJ_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
+ 
+ $(OBJ_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_CORE))"
+-	@$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
++	$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
+diff --git a/src/doc/Makefile b/src/doc/Makefile
+index aac73bf..f7f18a1 100644
+--- a/src/doc/Makefile
++++ b/src/doc/Makefile
+@@ -1,6 +1,13 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ PHPDIR      = $(BUILDDIR)/src/doc
+ HTMLDIR     = $(BUILDDIR)/html
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -8,14 +15,14 @@ target: all
+ # Common rules
+ $(PHPDIR)/Makefile:
+ 	@echo "Preparing PHP documentation generator"
+-	@mkdir -p $(PHPDIR)
+-	@mkdir -p $(HTMLDIR)
+-	@cp -rf * $(PHPDIR)/
+-	@cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
+-	@cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
+-	@cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
+-	@$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
++	mkdir -p $(PHPDIR)
++	mkdir -p $(HTMLDIR)
++	cp -rf * $(PHPDIR)/
++	cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
++	cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
++	cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
++	$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
+ 
+ all: $(PHPDIR)/Makefile
+ 	@echo "Generating HTML documentation"
+-	@$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
++	$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
+diff --git a/src/dsp/Makefile b/src/dsp/Makefile
+index f3d9ab1..cc30a37 100644
+--- a/src/dsp/Makefile
++++ b/src/dsp/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ NATIVE_IMPL             = $(OBJDIR)/native.o
+ 
+ X86_IMPL                = $(OBJDIR)/x86.o
+@@ -28,29 +34,35 @@ LINK_OBJECTS            = $(DSP_IMPL) $(BITS_IMPL) $(NATIVE_IMPL)
+ 
+ # Build different DSP modules dependent on architecture
+ ifeq ($(BUILD_PROFILE), i586)
+-LINK_OBJECTS           += $(X86_IMPL) $(SSE_IMPL) $(SSE2_IMPL) $(SSE3_IMPL) $(SSE4_IMPL) $(AVX_IMPL) $(AVX2_IMPL)
++  LINK_OBJECTS           += $(X86_IMPL) $(SSE_IMPL) $(SSE2_IMPL) $(SSE3_IMPL) \
++                            $(SSE4_IMPL) $(AVX_IMPL) $(AVX2_IMPL)
+ endif
+ ifeq ($(BUILD_PROFILE), x86_64)
+-LINK_OBJECTS           += $(X86_IMPL) $(SSE_IMPL) $(SSE2_IMPL) $(SSE3_IMPL) $(SSE4_IMPL) $(AVX_IMPL) $(AVX2_IMPL)
++LINK_OBJECTS           += $(X86_IMPL) $(SSE_IMPL) $(SSE2_IMPL) $(SSE3_IMPL) \
++                          $(SSE4_IMPL) $(AVX_IMPL) $(AVX2_IMPL)
+ endif
+ ifeq ($(BUILD_PLATFORM), BSD)
+   ifeq ($(BUILD_PROFILE), arm)
+-    LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
++    LINK_OBJECTS         += $(ARM_IMPL) $(NEON_D32_IMPL)
+   endif
+ endif
++ifeq ($(BUILD_PROFILE), armv6a)
++  LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
++endif
+ ifeq ($(BUILD_PROFILE), armv7a)
+-LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
++  LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
+ endif
+ ifeq ($(BUILD_PROFILE), armv7ve)
+-LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
++  LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
+ endif
+ ifeq ($(BUILD_PROFILE), arm32)
+-LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
++  LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
+ endif
+ ifeq ($(BUILD_PROFILE), aarch64)
+-LINK_OBJECTS           += $(AARCH64_IMPL) $(ASIMD_IMPL)
++  LINK_OBJECTS           += $(AARCH64_IMPL) $(ASIMD_IMPL)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -59,41 +71,41 @@ all: $(OBJ_DSP)
+ 
+ $(OBJ_DSP): $(LINK_OBJECTS)
+ 	@echo "  $(LD) $(notdir $(OBJ_DSP))"
+-	@$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
++	$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
+ 
+ $(DSP_IMPL) $(BITS_IMPL) $(NATIVE_IMPL) $(X86_IMPL) $(ARM_IMPL) $(AARCH64_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	
+ $(SSE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE3_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE4_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
+ 	
+ $(NEON_D32_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
+ 	
+ $(ASIMD_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
+ 
+diff --git a/src/metadata/Makefile b/src/metadata/Makefile
+index 201f89a..403f38a 100644
+--- a/src/metadata/Makefile
++++ b/src/metadata/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -10,8 +16,8 @@ target: all
+ 
+ $(OBJ_METADATA): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_METADATA))"
+-	@$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+diff --git a/src/plugins/Makefile b/src/plugins/Makefile
+index 1f197dc..85963ba 100644
+--- a/src/plugins/Makefile
++++ b/src/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,8 +14,8 @@ all:  $(OBJ_PLUGINS)
+ 
+ $(OBJ_PLUGINS): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(OBJ_PLUGINS))"
+-	@$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
++	$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
+diff --git a/src/rendering/Makefile b/src/rendering/Makefile
+index 897e327..65f3237 100644
+--- a/src/rendering/Makefile
++++ b/src/rendering/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ BASE_IMPL             	= $(OBJDIR)/base_backend.o
+ 
+ GLX_IMPL                = $(OBJDIR)/glx/backend.o $(OBJDIR)/glx/factory.o
+@@ -20,15 +26,15 @@ all: $(MODULES)
+ 
+ $(LIB_R3D_GLX): $(BASE_IMPL) $(GLX_IMPL)
+ 	@echo "  $(CXX) $(notdir $(LIB_R3D_GLX))"
+-	@$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
++	$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
+ 
+ $(BASE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 	
+ $(GLX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $(@))
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
++	mkdir -p $(dir $(@))
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
+ 
+ 
+diff --git a/src/test/Makefile b/src/test/Makefile
+index e8016e1..a89366e 100644
+--- a/src/test/Makefile
++++ b/src/test/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TEST_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TEST_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TEST_CORE))"
+-	@$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/testing/Makefile b/src/testing/Makefile
+index 705913d..d048065 100644
+--- a/src/testing/Makefile
++++ b/src/testing/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TESTING_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TESTING_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TESTING_CORE))"
+-	@$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/testing/mtest/3d/boolean3d.cpp b/src/testing/mtest/3d/boolean3d.cpp
+deleted file mode 100644
+index 636dce1..0000000
+--- a/src/testing/mtest/3d/boolean3d.cpp
++++ /dev/null
+@@ -1,253 +0,0 @@
+-/*
+- * Copyright (C) 2020 Linux Studio Plugins Project <https://lsp-plug.in/>
+- *           (C) 2020 Vladimir Sadovnikov <sadko4u@gmail.com>
+- *
+- * This file is part of lsp-plugins
+- * Created on: 24 дек. 2018 г.
+- *
+- * lsp-plugins is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU Lesser General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * any later version.
+- *
+- * lsp-plugins is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU Lesser General Public License for more details.
+- *
+- * You should have received a copy of the GNU Lesser General Public License
+- * along with lsp-plugins. If not, see <https://www.gnu.org/licenses/>.
+- */
+-
+-#if 0
+-
+-#include <test/mtest.h>
+-#include <testing/mtest/3d/common/X11Renderer.h>
+-#include <core/files/Model3DFile.h>
+-#include <core/3d/rt_context.h>
+-#include <core/3d/RayTrace3D.h>
+-
+-#include <core/types.h>
+-#include <core/debug.h>
+-#include <core/sugar.h>
+-#include <core/status.h>
+-#include <stdlib.h>
+-#include <errno.h>
+-#include <data/cstorage.h>
+-
+-#include <X11/X.h>
+-#include <X11/Xlib.h>
+-#include <X11/keysymdef.h>
+-#include <GL/gl.h>
+-#include <GL/glx.h>
+-#include <GL/glu.h>
+-#include <sys/poll.h>
+-
+-//#define TEST_DEBUG
+-
+-#ifndef TEST_DEBUG
+-//    #define BREAKPOINT_STEP     -1
+-//    #define BREAKPOINT_STEP     27
+-//    #define BREAKPOINT_STEP     83
+-    #define BREAKPOINT_STEP     215
+-//    #define BREAKPOINT_STEP     0
+-
+-#else /* DEBUG */
+-    #define BREAKPOINT_STEP     0
+-#endif /* DEBUG */
+-
+-MTEST_BEGIN("3d", boolean)
+-
+-    class Renderer: public X11Renderer
+-    {
+-        private:
+-            Scene3D        *pScene;
+-            ssize_t         nTrace;
+-            bool            bDrawMatched;
+-            bool            bDrawIgnored;
+-            bool            bDrawDebug;
+-
+-        public:
+-            explicit Renderer(Scene3D *scene, View3D *view): X11Renderer(view)
+-            {
+-                pScene = scene;
+-                bDrawMatched    = true;
+-                bDrawIgnored    = true;
+-                bDrawDebug      = true;
+-                bDrawNormals    = false;
+-                nTrace          = BREAKPOINT_STEP;
+-
+-                update_view();
+-            }
+-
+-            virtual ~Renderer()
+-            {
+-            }
+-
+-        public:
+-            virtual void on_key_press(const XKeyEvent &ev, KeySym key)
+-            {
+-                switch (key)
+-                {
+-                    case XK_Up:
+-                        nTrace++;
+-                        lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                        update_view();
+-                        break;
+-                    case XK_Down:
+-                        if (nTrace >= 0)
+-                        {
+-                            nTrace--;
+-                            lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                            update_view();
+-                        }
+-                        break;
+-
+-                    case 'm':
+-                    {
+-                        bDrawMatched = ! bDrawMatched;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'i':
+-                    {
+-                        bDrawIgnored = ! bDrawIgnored;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'd':
+-                    {
+-                        bDrawDebug = ! bDrawDebug;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case '0': case '1': case '2': case '3': case '4':
+-                    case '5': case '6': case '7': case '8': case '9':
+-                    {
+-                        Object3D *obj = pScene->get_object(key - '0');
+-                        if (obj != NULL)
+-                        {
+-                            obj->set_visible(!obj->is_visible());
+-                            update_view();
+-                        }
+-                        break;
+-                    }
+-                    default:
+-                        X11Renderer::on_key_press(ev, key);
+-                        break;
+-                }
+-            }
+-
+-        protected:
+-            status_t perform_boolean(rt_debug_t *shared)
+-            {
+-                if (pScene->num_objects() <= 0)
+-                    return STATUS_OK;
+-
+-                rt_mesh_t mesh;
+-                mesh.set_debug_context(shared, &shared->trace);
+-
+-                Object3D *obj = pScene->object(0);
+-                status_t res = mesh.init(obj, 0, obj->matrix());
+-                if (res != STATUS_OK)
+-                    return res;
+-
+-                for (size_t i=1, n=pScene->num_objects(); i<n; ++i)
+-                {
+-                    obj = pScene->object(i);
+-                    res = mesh.subtract(obj, i, obj->matrix());
+-                    if (res != STATUS_OK)
+-                        return res;
+-                }
+-
+-                return STATUS_OK;
+-            }
+-
+-            status_t    update_view()
+-            {
+-                v_vertex3d_t v[3];
+-                status_t res = STATUS_OK;
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // List of ignored and matched triangles
+-                rt_debug_t global;
+-                global.breakpoint   = nTrace;
+-                global.step         = 0;
+-
+-                // Perform raytrace
+-                res     = perform_boolean(&global);
+-                if (res == STATUS_BREAKPOINT)
+-                {
+-                    pView->swap(&global.trace);
+-                    res         = STATUS_OK;
+-                }
+-
+-                if (!bDrawDebug)
+-                    pView->clear_all();
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // Build final scene from matched and ignored items
+-                if (bDrawIgnored)
+-                {
+-                    for (size_t i=0, m=global.ignored.size(); i < m; ++i)
+-                        pView->add_triangle_1c(global.ignored.at(i), &C_GRAY);
+-                }
+-
+-                if (bDrawMatched)
+-                {
+-                    for (size_t i=0, m=global.matched.size(); i < m; ++i)
+-                    {
+-                        v_triangle3d_t *t = global.matched.at(i);
+-                        v[0].p     = t->p[0];
+-                        v[0].n     = t->n[0];
+-                        v[0].c     = C_RED;
+-
+-                        v[1].p     = t->p[1];
+-                        v[1].n     = t->n[1];
+-                        v[1].c     = C_GREEN;
+-
+-                        v[2].p     = t->p[2];
+-                        v[2].n     = t->n[2];
+-                        v[2].c     = C_BLUE;
+-
+-                        pView->add_triangle(v);
+-                    }
+-                }
+-
+-                global.ignored.flush();
+-                global.matched.flush();
+-
+-                return res;
+-            }
+-    };
+-
+-    MTEST_MAIN
+-    {
+-        const char *scene_file = (argc < 1) ? "res/test/3d/cross.obj" : argv[0];
+-
+-        // Load scene
+-        Scene3D s;
+-        View3D v;
+-        status_t res = Model3DFile::load(&s, scene_file, true);
+-        MTEST_ASSERT_MSG(res == STATUS_OK, "Error loading scene from file %s", scene_file);
+-
+-        // Initialize renderer
+-        Renderer r(&s, &v);
+-        MTEST_ASSERT_MSG(r.init() == STATUS_OK, "Error initializing renderer");
+-        r.run();
+-        r.destroy();
+-
+-        // Destroy scene
+-        s.destroy();
+-    }
+-
+-MTEST_END
+-
+-#endif
+diff --git a/src/testing/mtest/3d/bsp_context.cpp b/src/testing/mtest/3d/bsp_context.cpp
+index de54427..f7b7a34 100644
+--- a/src/testing/mtest/3d/bsp_context.cpp
++++ b/src/testing/mtest/3d/bsp_context.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/reflections3d.cpp b/src/testing/mtest/3d/reflections3d.cpp
+index e250444..367f86c 100644
+--- a/src/testing/mtest/3d/reflections3d.cpp
++++ b/src/testing/mtest/3d/reflections3d.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/ui/Makefile b/src/ui/Makefile
+index 503111d..eb1e4c5 100644
+--- a/src/ui/Makefile
++++ b/src/ui/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= ws tk ctl plugins
+@@ -8,15 +14,15 @@ PACKAGES                = $(OBJ_WS_CORE) $(OBJ_TK_CORE) $(OBJ_CTL_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_UI_CORE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_UI_CORE)
+diff --git a/src/ui/ctl/Makefile b/src/ui/ctl/Makefile
+index 3f727db..692fe9d 100644
+--- a/src/ui/ctl/Makefile
++++ b/src/ui/ctl/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_CTL_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_CTL_CORE) $(SUBDIRS)
+diff --git a/src/ui/plugins/Makefile b/src/ui/plugins/Makefile
+index 8f8db8f..0e6c3d8 100644
+--- a/src/ui/plugins/Makefile
++++ b/src/ui/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_PLUGIN_UIS): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_PLUGIN_UIS) $(SUBDIRS)
+diff --git a/src/ui/tk/Makefile b/src/ui/tk/Makefile
+index 8700f63..cfb4c78 100644
+--- a/src/ui/tk/Makefile
++++ b/src/ui/tk/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -6,11 +12,11 @@ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_TK_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_TK_CORE)
+diff --git a/src/ui/ws/Makefile b/src/ui/ws/Makefile
+index 1109752..b9836d8 100644
+--- a/src/ui/ws/Makefile
++++ b/src/ui/ws/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= x11
+@@ -8,15 +14,15 @@ all: $(OBJ_WS_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ $(OBJ_WS_CORE): $(FILES) $(OBJ_WS_X11_CORE)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
++	$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
+ 
+ $(OBJ_WS_X11_CORE): $(SUBDIRS)
+diff --git a/src/ui/ws/x11/Makefile b/src/ui/ws/x11/Makefile
+index b99e93d..7bffca3 100644
+--- a/src/ui/ws/x11/Makefile
++++ b/src/ui/ws/x11/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(XLIB_HEADERS) $(CAIRO_HEADERS)
+@@ -8,9 +14,9 @@ all: $(OBJ_WS_X11_CORE)
+ 
+ $(OBJ_WS_X11_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
++	$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+diff --git a/src/ui/ws/x11/X11Display.cpp b/src/ui/ws/x11/X11Display.cpp
+index d85db51..987e8a9 100644
+--- a/src/ui/ws/x11/X11Display.cpp
++++ b/src/ui/ws/x11/X11Display.cpp
+@@ -23,7 +23,7 @@
+ 
+ #ifdef USE_X11_DISPLAY
+ 
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ 
+@@ -233,7 +233,7 @@ namespace lsp
+                 while (!atomic_cas(&hLock, 0, 1)) { /* Wait */ }
+ 
+                 // Dispatch errors between Displays
+-                for (X11Display *dp = pHandlers; dp != NULL; ++dp)
++                for (X11Display *dp = pHandlers; dp != NULL; dp = dp->pNextHandler)
+                     if (dp->pDisplay == dpy)
+                         dp->handle_error(ev);
+ 
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index 88b3739..4b4fd2e 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -1,12 +1,24 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
++CXX                     = $(HOST_CXX)
++CXXFLAGS                = $(HOST_CXXFLAGS)
++MAKE_OPTS              += CXX=$(HOST_CXX) CXXFLAGS=$(HOST_CXXFLAGS)
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS                 =
+-OBJ_FILES               = $(OBJ_CORE) $(OBJ_METADATA)
++OBJ_FILES               = $(HOST_OBJ_CORE) $(HOST_OBJ_METADATA) $(HOST_OBJ_DSP)
+ OBJ_LIBS                = $(PTHREAD_LIBS) $(MATH_LIBS)
+ OBJ_EXTRA               =
+ INCLUDE_EXTRA           =
+ 
++export PKG_CONFIG_SYSROOT_DIR = /
++
+ ifeq ($(BUILD_PLATFORM),BSD)
+   OBJ_LIBS               += $(ICONV_LIBS)
+ endif
+@@ -18,7 +30,7 @@ endif
+ ifeq ($(findstring lv2,$(BUILD_MODULES)),lv2)
+   MODULES                += $(UTL_GENTTL)
+   FILELIST               += lv2_genttl.o
+-  INCLUDE_EXTRA          += $(LV2_HEADERS)
++  INCLUDE_EXTRA          += $(HOST_LV2_HEADERS)
+ endif
+ ifeq ($(findstring vst,$(BUILD_MODULES)),vst)
+   MODULES                += $(UTL_VSTMAKE)
+@@ -44,32 +56,30 @@ target: all
+ # Common rules
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	@echo "  $(HOST_CXX) $(FILE)"
++	$(HOST_CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(HOST_CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+-$(UTL_GENTTL): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	@$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++$(UTL_GENTTL): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENTTL))"
++	$(HOST_CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+-$(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	@$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_JACKMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_JACKMAKE))"
++	$(HOST_CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	@$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_VSTMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_VSTMAKE))"
++	$(HOST_CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_GENPHP): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	@$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_GENPHP): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENPHP))"
++	$(HOST_CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_RESGEN): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	@$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+-
+-	
+\ No newline at end of file
++$(UTL_RESGEN): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_RESGEN))"
++	$(HOST_CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_EXTRA) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+diff --git a/src/utils/jack_genmake.cpp b/src/utils/jack_genmake.cpp
+index 09974b0..3272ad8 100644
+--- a/src/utils/jack_genmake.cpp
++++ b/src/utils/jack_genmake.cpp
+@@ -97,6 +97,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%=%%.cpp)\n");
+@@ -107,11 +112,11 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
+ 
+         fprintf(out, "install: $(FILES)\n");
+-        fprintf(out, "\t@$(INSTALL) $(FILES) $(TARGET_PATH)/");
++        fprintf(out, "\t$(INSTALL) $(FILES) $(TARGET_PATH)/");
+ 
+         // Close file
+         fclose(out);
+diff --git a/src/utils/vst_genmake.cpp b/src/utils/vst_genmake.cpp
+index 9eeedeb..f47f783 100644
+--- a/src/utils/vst_genmake.cpp
++++ b/src/utils/vst_genmake.cpp
+@@ -100,6 +100,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%.so, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%.so=%%.cpp)\n");
+@@ -110,8 +115,8 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
+ 
+         // Close file
+         fclose(out);
+diff --git a/tmp/.gitignore b/tmp/.gitignore
+index 22e8364..d6b7ef3 100644
+--- a/tmp/.gitignore
++++ b/tmp/.gitignore
+@@ -1 +1,2 @@
+-/*
+\ No newline at end of file
++*
++!.gitignore
diff --git a/srcpkgs/lsp-plugins-lv2/template b/srcpkgs/lsp-plugins-lv2/template
new file mode 100644
index 000000000000..fc02794b8dfc
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/template
@@ -0,0 +1,75 @@
+# Template file for 'lsp-plugins-lv2'
+pkgname=lsp-plugins-lv2
+version=1.1.30
+revision=1
+wrksrc=lsp-plugins-${version}
+build_style=gnu-makefile
+make_build_args="VERBOSE=1 PREFIX=/usr"
+make_check_args=$make_build_args
+make_install_target="install install_xdg"
+make_use_env=yes
+hostmakedepends="pkg-config php lv2 libsndfile-devel"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel
+ ladspa-sdk jack-devel"
+_desc="Collection of free audio plugins"
+short_desc="${_desc} - LV2"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/"
+distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+export SKIP_CC_LD_ARCH=yes
+export HOST_BUILD_ARCH="${XBPS_MACHINE%-*}"
+export HOST_PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
+if [ -n "$CROSS_BUILD" ]; then
+	export BUILD_ARCH="${XBPS_TARGET_MACHINE%-*}"
+	export HOST_CXXFLAGS="$CXXFLAGS_host"
+	export HOST_CXX="$CXX_host"
+	export HOST_LD="$LD_host"
+else
+	export BUILD_ARCH="${XBPS_MACHINE%-*}"
+	export HOST_CXXFLAGS="$BUILD_CXXFLAGS"
+	export HOST_CXX="$BUILD_CXX"
+	export HOST_LD="$BUILD_LD"
+fi
+
+lsp-plugins-jack_package() {
+	short_desc="${_desc} - JACK"
+	pkg_install() {
+		vmove usr/bin
+		vmove usr/lib/lsp-plugins/lsp-plugins-jack-core*
+		vmove usr/lib/lsp-plugins/lsp-plugins-r3d-glx.so
+		vmove usr/share/applications
+		vmove usr/share/desktop-directories
+		vmove usr/share/icons
+		vmove etc/xdg/menus
+	}
+}
+
+lsp-plugins-ladspa_package() {
+	short_desc="${_desc} - LADSPA"
+	pkg_install() {
+		vmove usr/lib/ladspa/lsp-plugins-ladspa.so
+	}
+}
+
+lsp-plugins-vst_package() {
+	short_desc="${_desc} - VST"
+	pkg_install() {
+		vmove usr/lib/vst
+	}
+}
+
+lsp-plugins_package() {
+	short_desc="${_desc} - LV2, JACK, LADSPA, VST"
+	depends="lsp-plugins-lv2 lsp-plugins-jack lsp-plugins-ladspa lsp-plugins-vst"
+	build_style=meta
+}
+
+lsp-plugins-doc_package() {
+	short_desc="${_desc} - documentation"
+	pkg_install() {
+		vmove usr/share/doc
+	}
+}
diff --git a/srcpkgs/lsp-plugins-vst b/srcpkgs/lsp-plugins-vst
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-vst
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (59 preceding siblings ...)
  2021-08-10  2:09 ` Logarithmus
@ 2021-08-10  2:28 ` Logarithmus
  2021-08-10  2:29 ` Logarithmus
                   ` (6 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-08-10  2:28 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 489 bytes --]

New review comment by Logarithmus on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r685644554

Comment:
In https://github.com/sadko4u/lsp-plugins/pull/202 I've added `SKIP_CC_LD_ARCH` Make variable which tells `lsp-plugins` to use target-specific compile flags provided by external build system (e. g. `xbps`) (https://github.com/sadko4u/lsp-plugins/pull/202/files#diff-22fa0ab7e014806e5e5665b66a6fca7768bb8872c476ead96677f9cce8b1ab69R67-R69)

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (60 preceding siblings ...)
  2021-08-10  2:28 ` [PR REVIEW] " Logarithmus
@ 2021-08-10  2:29 ` Logarithmus
  2021-08-10  2:29 ` Logarithmus
                   ` (5 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-08-10  2:29 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 542 bytes --]

New review comment by Logarithmus on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r685644554

Comment:
In https://github.com/sadko4u/lsp-plugins/pull/202 I've added `SKIP_CC_LD_ARCH` Make variable which tells `lsp-plugins` to use target-specific compile flags provided by external build system (e. g. `xbps`) (https://github.com/sadko4u/lsp-plugins/pull/202/files#diff-22fa0ab7e014806e5e5665b66a6fca7768bb8872c476ead96677f9cce8b1ab69R67-R69).
Basically, that's equivalent to a generic profile.

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (61 preceding siblings ...)
  2021-08-10  2:29 ` Logarithmus
@ 2021-08-10  2:29 ` Logarithmus
  2021-08-10  2:31 ` Logarithmus
                   ` (4 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-08-10  2:29 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 546 bytes --]

New review comment by Logarithmus on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r685644554

Comment:
In https://github.com/sadko4u/lsp-plugins/pull/202 I've added `SKIP_CC_LD_ARCH` Make variable which tells `lsp-plugins` to use target-specific compile flags provided by external build system (e. g. `xbps-src`) (https://github.com/sadko4u/lsp-plugins/pull/202/files#diff-22fa0ab7e014806e5e5665b66a6fca7768bb8872c476ead96677f9cce8b1ab69R67-R69).
Basically, that's equivalent to a generic profile.

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR REVIEW] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (62 preceding siblings ...)
  2021-08-10  2:29 ` Logarithmus
@ 2021-08-10  2:31 ` Logarithmus
  2021-08-10  2:36 ` [PR PATCH] [Updated] " Logarithmus
                   ` (3 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-08-10  2:31 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 233 bytes --]

New review comment by Logarithmus on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#discussion_r685645828

Comment:
I've removed parallel tests commit because it finally builds fine for all targets.

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Updated] New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (63 preceding siblings ...)
  2021-08-10  2:31 ` Logarithmus
@ 2021-08-10  2:36 ` Logarithmus
  2022-04-11 13:16 ` prez
                   ` (2 subsequent siblings)
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2021-08-10  2:36 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1389 bytes --]

There is an updated pull request by Logarithmus against master on the void-packages repository

https://github.com/Logarithmus/void-packages lsp-plugins
https://github.com/void-linux/void-packages/pull/31664

New package: lsp-plugins-1.1.30
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.
Also used by `easyeffects`, `pulseeffects`' successor 
Continuation of https://github.com/void-linux/void-packages/pull/29932

TODO:
- [ ] wait for https://github.com/sadko4u/lsp-plugins/pull/198
- [ ] implement `VERBOSE` option into `lsp-plugins` Makefiles to save my sanity debugging them
https://github.com/sadko4u/lsp-plugins/pull/200
- [ ] polish & upstream cross build patch https://github.com/sadko4u/lsp-plugins/pull/202
- [x] fix `i686`
- [x] fix `armv6`
- [x] split the package (ladspa, lv2, vst, jack, doc)
- [x] remove parallel check commit 

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me


A patch file from https://github.com/void-linux/void-packages/pull/31664.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-lsp-plugins-31664.patch --]
[-- Type: text/x-diff, Size: 88540 bytes --]

From 1e3ff4b31177662d020c2e68659554b7f9b32c52 Mon Sep 17 00:00:00 2001
From: Paper <paper@tilde.institute>
Date: Sat, 20 Mar 2021 23:19:47 +0100
Subject: [PATCH] New package: lsp-plugins-1.1.30

---
 srcpkgs/lsp-plugins                           |    1 +
 srcpkgs/lsp-plugins-doc                       |    1 +
 srcpkgs/lsp-plugins-jack                      |    1 +
 srcpkgs/lsp-plugins-ladspa                    |    1 +
 .../patches/00-patch-all.patch                | 2098 +++++++++++++++++
 srcpkgs/lsp-plugins-lv2/template              |   75 +
 srcpkgs/lsp-plugins-vst                       |    1 +
 7 files changed, 2178 insertions(+)
 create mode 120000 srcpkgs/lsp-plugins
 create mode 120000 srcpkgs/lsp-plugins-doc
 create mode 120000 srcpkgs/lsp-plugins-jack
 create mode 120000 srcpkgs/lsp-plugins-ladspa
 create mode 100644 srcpkgs/lsp-plugins-lv2/patches/00-patch-all.patch
 create mode 100644 srcpkgs/lsp-plugins-lv2/template
 create mode 120000 srcpkgs/lsp-plugins-vst

diff --git a/srcpkgs/lsp-plugins b/srcpkgs/lsp-plugins
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-doc b/srcpkgs/lsp-plugins-doc
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-doc
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-jack b/srcpkgs/lsp-plugins-jack
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-jack
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-ladspa b/srcpkgs/lsp-plugins-ladspa
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-ladspa
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file
diff --git a/srcpkgs/lsp-plugins-lv2/patches/00-patch-all.patch b/srcpkgs/lsp-plugins-lv2/patches/00-patch-all.patch
new file mode 100644
index 000000000000..ceb42e3c5a55
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/patches/00-patch-all.patch
@@ -0,0 +1,2098 @@
+diff --git a/.gitignore b/.gitignore
+index 5bc0ecb..4a1edec 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -3,6 +3,7 @@
+ /design/*
+ /.builconfig/*
+ /.build/*
++/.host_build/*
+ /.buildconfig/*
+ /.test/*
+ /.release/*
+diff --git a/.gitmodules b/.gitmodules
+index ac5ea32..4480c1f 100644
+--- a/.gitmodules
++++ b/.gitmodules
+@@ -1,3 +1,3 @@
+ [submodule "Polynomial-Wiener-Hammerstein"]
+ 	path = Polynomial-Wiener-Hammerstein
+-	url = ../../CrocoDuckoDucks/Polynomial-Wiener-Hammerstein.git
++	url = https://github.com/CrocoDuckoDucks/Polynomial-Wiener-Hammerstein
+diff --git a/Makefile b/Makefile
+index 2d9cb79..70cb6a4 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ # Common definitions
+ RELEASE_TEXT            = LICENSE.txt README.txt CHANGELOG.txt
+ RELEASE_SRC             = $(RELEASE_TEXT) src build-*.sh include res Makefile release.sh
+@@ -18,8 +24,10 @@ export RESDIR           = ${CURDIR}/res
+ export RELEASE          = ${CURDIR}/.release
+ export RELEASE_BIN      = $(RELEASE)/$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ export BUILDDIR         = ${CURDIR}/.build
++export HOST_BUILDDIR    = ${CURDIR}/.host_build
+ export TESTDIR          = ${CURDIR}/.test
+ OBJDIR                  = $(BUILDDIR)
++export HOST_OBJDIR      = $(HOST_BUILDDIR)
+ 
+ # Installation locations
+ BIN_PATH               ?= $(PREFIX)/bin
+@@ -35,20 +43,23 @@ VST_PATH                = $(LIB_PATH)/vst
+ export BASEDIR          = ${CURDIR}
+ 
+ # Objects
+-export OBJ_CORE         = $(OBJDIR)/core.o
+-export OBJ_DSP          = $(OBJDIR)/dsp.o
+-export OBJ_CTL_CORE     = $(OBJDIR)/ctl_core.o
+-export OBJ_TK_CORE      = $(OBJDIR)/tk_core.o
+-export OBJ_WS_CORE      = $(OBJDIR)/ws_core.o
+-export OBJ_WS_X11_CORE  = $(OBJDIR)/ws_x11_core.o
+-export OBJ_UI_CORE      = $(OBJDIR)/ui_core.o
+-export OBJ_RES_CORE     = $(OBJDIR)/res_core.o
+-export OBJ_TEST_CORE    = $(OBJDIR)/test_core.o
+-export OBJ_TESTING_CORE = $(OBJDIR)/testing_core.o
+-export OBJ_PLUGINS      = $(OBJDIR)/plugins.o
+-export OBJ_PLUGIN_UIS	= $(OBJDIR)/plugin_uis.o
+-export OBJ_METADATA     = $(OBJDIR)/metadata.o
+-export OBJ_FILES        = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
++export OBJ_CORE          = $(OBJDIR)/core.o
++export HOST_OBJ_CORE     = $(HOST_OBJDIR)/core.o
++export OBJ_DSP           = $(OBJDIR)/dsp.o
++export HOST_OBJ_DSP      = $(HOST_OBJDIR)/dsp.o
++export OBJ_CTL_CORE      = $(OBJDIR)/ctl_core.o
++export OBJ_TK_CORE       = $(OBJDIR)/tk_core.o
++export OBJ_WS_CORE       = $(OBJDIR)/ws_core.o
++export OBJ_WS_X11_CORE   = $(OBJDIR)/ws_x11_core.o
++export OBJ_UI_CORE       = $(OBJDIR)/ui_core.o
++export OBJ_RES_CORE      = $(OBJDIR)/res_core.o
++export OBJ_TEST_CORE     = $(OBJDIR)/test_core.o
++export OBJ_TESTING_CORE  = $(OBJDIR)/testing_core.o
++export OBJ_PLUGINS       = $(OBJDIR)/plugins.o
++export OBJ_PLUGIN_UIS	 = $(OBJDIR)/plugin_uis.o
++export OBJ_METADATA      = $(OBJDIR)/metadata.o
++export HOST_OBJ_METADATA = $(HOST_OBJDIR)/metadata.o
++export OBJ_FILES         = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
+ 
+ # Libraries
+ export LIB_LADSPA       = $(OBJDIR)/$(ARTIFACT_ID)-ladspa.so
+@@ -62,11 +73,14 @@ export BIN_PROFILE      = $(OBJDIR)/$(ARTIFACT_ID)-profile
+ export BIN_TEST         = $(OBJDIR)/$(ARTIFACT_ID)-test
+ 
+ # Utils
+-export UTL_GENTTL       = $(OBJDIR)/lv2_genttl.exe
+-export UTL_VSTMAKE      = $(OBJDIR)/vst_genmake.exe
+-export UTL_JACKMAKE     = $(OBJDIR)/jack_genmake.exe
+-export UTL_GENPHP       = $(OBJDIR)/gen_php.exe
+-export UTL_RESGEN       = $(OBJDIR)/gen_resources.exe
++ifeq ($(BUILD_SYSTEM),Windows)
++  BIN_SUFFIX := .exe
++endif
++export UTL_GENTTL       = $(HOST_OBJDIR)/lv2_genttl$(BIN_SUFFIX)
++export UTL_VSTMAKE      = $(HOST_OBJDIR)/vst_genmake$(BIN_SUFFIX)
++export UTL_JACKMAKE     = $(HOST_OBJDIR)/jack_genmake$(BIN_SUFFIX)
++export UTL_GENPHP       = $(HOST_OBJDIR)/gen_php$(BIN_SUFFIX)
++export UTL_RESGEN       = $(HOST_OBJDIR)/gen_resources$(BIN_SUFFIX)
+ export UTL_FILES        = $(UTL_GENTTL) $(UTL_VSTMAKE) $(UTL_GENPHP) $(UTL_RESGEN)
+ 
+ # Files
+@@ -84,7 +98,7 @@ SRC_ID                 := $(ARTIFACT_ID)-src-$(LSP_VERSION)
+ DOC_ID                 := $(ARTIFACT_ID)-doc-$(LSP_VERSION)
+ 
+ .DEFAULT_GOAL          := all
+-.PHONY: all experimental trace debug tracefile debugfile profile gdb test testdebug testprofile compile test_compile
++.PHONY: all experimental trace debug tracefile debugfile profile gdb test check testdebug testprofile compile test_compile
+ .PHONY: compile_info
+ .PHONY: install install_ladspa install_lv2 install_vst install_jack install_doc install_xdg
+ .PHONY: uninstall uninstall_ladspa uninstall_lv2 uninstall_vst uninstall_jack uninstall_doc uninstall_xdg
+@@ -98,6 +112,7 @@ all: export CXXFLAGS        += -O2 -DLSP_NO_EXPERIMENTAL
+ all: export EXE_FLAGS       += -pie -fPIE
+ all: compile
+ 
++
+ experimental: export CFLAGS += -O2
+ experimental: export CXXFLAGS += -O2
+ experimental: compile
+@@ -115,9 +130,13 @@ test: export MAKE_OPTS      += LSP_TESTING=1
+ test: export BUILD_MODULES   = jack
+ test: test_compile
+ 
++# Run unit tests
++check: test
++	.test/lsp-plugins-test utest
++
+ testdebug: OBJDIR                 = $(TESTDIR)
+-testdebug: export CFLAGS         += -O0 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+-testdebug: export CXXFLAGS       += -O0 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
++testdebug: export CFLAGS         += -Og -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
++testdebug: export CXXFLAGS       += -Og -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
+ testdebug: export EXE_TEST_FLAGS += -g3
+ testdebug: export MAKE_OPTS      += LSP_TESTING=1
+ testdebug: export BUILD_MODULES   = jack
+@@ -142,8 +161,11 @@ debugfile: export CFLAGS    += -DLSP_TRACEFILE
+ debugfile: export CXXFLAGS  += -DLSP_TRACEFILE
+ debugfile: debug
+ 
+-gdb: export CFLAGS          += -O0 -g3 -DLSP_TRACE
+-gdb: export CXXFLAGS        += -O0 -g3 -DLSP_TRACE
++gdb: export CFLAGS          = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export CXXFLAGS        = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export HOST_CXXFLAGS   = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
++gdb: export EXE_FLAGS       = -g3
++gdb: export HOST_EXE_FLAGS  = -g3
+ gdb: compile
+ 
+ profile: export CFLAGS      += -g -pg -DLSP_PROFILING -no-pie -fno-pie -fPIC
+@@ -155,35 +177,53 @@ profile: compile
+ compile_info:
+ 	@echo "-------------------------------------------------------------------------------"
+ 	@echo "Building binaries"
+-	@echo "  target architecture : $(BUILD_PROFILE)"
+-	@echo "  target platform     : $(BUILD_PLATFORM)"
+-	@echo "  target system       : $(BUILD_SYSTEM)"
+-	@echo "  compiler            : $(BUILD_COMPILER)"
+-	@echo "  modules             : $(BUILD_MODULES)"
+-	@echo "  UI                  : LV2=$(LV2_UI), VST=$(VST_UI)"
+-	@echo "  3D rendering        : $(BUILD_R3D_BACKENDS)"
+-	@echo "  build directory     : $(OBJDIR)"
++	@echo "  platform             : $(BUILD_PLATFORM)"
++	@echo "  system               : $(BUILD_SYSTEM)"
++	@echo "  target compiler      : $(CXX)"
++	@echo "  target architecture  : $(BUILD_PROFILE)"
++	@echo "  modules              : $(BUILD_MODULES)"
++	@echo "  UI                   : LV2=$(LV2_UI), VST=$(VST_UI)"
++	@echo "  3D rendering         : $(BUILD_R3D_BACKENDS)"
++	@echo "  build directory      : $(OBJDIR)"
+ 	@echo "-------------------------------------------------------------------------------"
+ 
+-compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@mkdir -p $(CFGDIR)
+-	@test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
+-	@test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
+-	@test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
+-	@test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++compile: utils | compile_info
++	mkdir -p $(OBJDIR)/src
++	mkdir -p $(CFGDIR)
++	test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
++	test -f "$(CFGDIR)/$(MODULES_FILE)" || echo -n "$(BUILD_MODULES)" > "$(CFGDIR)/$(MODULES_FILE)"
++	test -f "$(CFGDIR)/$(BUILD_PROFILE)" || echo -n "$(BUILD_PROFILE)" > "$(CFGDIR)/$(BUILD_PROFILE_FILE)"
++	test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" || echo -n "$(BUILD_R3D_BACKENDS)" > "$(CFGDIR)/$(R3D_BACKENDS_FILE)"
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Build OK"
+ 	
+-test_compile: | compile_info
+-	@mkdir -p $(OBJDIR)/src
+-	@$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
++test_compile: utils | compile_info
++	mkdir -p $(OBJDIR)/src
++	$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
+ 	@echo "Test Build OK"
+ 
++utils: export BUILD_PROFILE=$(HOST_BUILD_PROFILE)
++utils: export OBJDIR=$(HOST_OBJDIR)
++utils: export OBJ_CORE=$(HOST_OBJ_CORE)
++utils: export OBJ_DSP=$(HOST_OBJ_DSP)
++utils: export OBJ_METADATA=$(HOST_OBJ_METADATA)
++utils: export CXX=$(HOST_CXX)
++utils: export CXXFLAGS=$(HOST_CXXFLAGS)
++utils: export LD=$(HOST_LD)
++utils: export SNDFILE_HEADERS=$(HOST_SNDFILE_HEADERS)
++utils: export SNDFILE_LIBS=$(HOST_SNDFILE_LIBS)
++utils: export LV2_HEADERS=$(HOST_LV2_HEADERS)
++utils: export LV2_LIBS=$(HOST_LV2_LIBS)
++utils: | compile_info
++	mkdir -p $(HOST_OBJDIR)/src/utils
++	$(MAKE) $(MAKE_OPTS) -C src utils
++	@echo "Utils Build OK"
++
+ clean:
+-	@-rm -rf $(BUILDDIR)
+-	@-rm -rf $(TESTDIR)
+-	@-rm -rf $(CFGDIR)
++	rm -rf $(BUILDDIR)
++	rm -rf $(HOST_BUILDDIR)
++	rm -rf $(TESTDIR)
++	rm -rf $(CFGDIR)
+ 	@echo "Clean OK"
+ 
+ # Build targets
+@@ -209,63 +249,63 @@ install: $(INSTALLATIONS)
+ 
+ install_ladspa: all
+ 	@echo "Installing LADSPA plugins to $(DESTDIR)$(LADSPA_PATH)/"
+-	@mkdir -p $(DESTDIR)$(LADSPA_PATH)
+-	@$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
++	mkdir -p $(DESTDIR)$(LADSPA_PATH)
++	$(INSTALL) $(LIB_LADSPA) $(DESTDIR)$(LADSPA_PATH)/
+ 	
+ install_lv2: all
+ 	@echo "Installing LV2 plugins to $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+-	@$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
+-	@$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	mkdir -p "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
++	$(INSTALL) $(LIB_LV2) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2/
++	$(UTL_GENTTL) "$(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2"
+ 	
+ install_vst: all
+ 	@echo "Installing VST plugins to $(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
+-	@$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+-	@$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	mkdir -p "$(DESTDIR)$(VST_PATH)/$(VST_ID)"
++	$(INSTALL) $(LIB_VST) "$(DESTDIR)$(VST_PATH)/$(VST_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
++	$(INSTALL) $(OBJDIR)/src/vst/*.so $(DESTDIR)$(VST_PATH)/$(VST_ID)/
+ 
+ install_jack: all
+ 	@echo "Installing JACK core to $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
+-	@$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+-	@test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	mkdir -p "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)"
++	$(INSTALL) $(LIB_JACK) "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
++	test ! "$(BUILD_R3D_BACKENDS)" || $(INSTALL) $(OBJDIR)/$(R3D_ARTIFACT_ID)*.so "$(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)/"
+ 	@echo "Installing JACK standalone plugins to $(DESTDIR)$(BIN_PATH)"
+-	@mkdir -p "$(DESTDIR)$(BIN_PATH)"
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
++	mkdir -p "$(DESTDIR)$(BIN_PATH)"
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/src/jack install TARGET_PATH="$(DESTDIR)$(BIN_PATH)" INSTALL="$(INSTALL)"
+ 
+ install_xdg:
+ 	@echo "Installing desktop icons to $(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
+-	@mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
+-	@mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
+-	@cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
+-	@cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
+-	@cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
+-	@cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
+-	@cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/applications"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/desktop-directories"
++	mkdir -p "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps"
++	mkdir -p "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps"
++	cp res/xdg/*.desktop "$(DESTDIR)$(SHARE_PATH)/applications/"
++	cp res/xdg/lsp-plugins.directory "$(DESTDIR)$(SHARE_PATH)/desktop-directories/"
++	cp res/xdg/lsp-plugins.menu "$(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/"
++	cp -f res/icons/$(ARTIFACT_ID)-16.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-22.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-24.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-32.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-48.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-64.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-128.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-256.png "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).png"
++	cp -f res/icons/$(ARTIFACT_ID)-exp.svg "$(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).svg"
+ 
+ install_doc: all
+ 	@echo "Installing documentation to $(DESTDIR)$(DOC_PATH)"
+-	@mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	mkdir -p $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+ # Release targets
+ dbg_release: export CFLAGS        += -DLSP_TRACE -O2
+@@ -279,67 +319,67 @@ release: $(RELEASES)
+ 
+ release_prepare: all
+ 	@echo "Releasing plugins for architecture $(BUILD_PROFILE)"
+-	@mkdir -p $(RELEASE)
+-	@mkdir -p $(DESTDIR)
++	mkdir -p $(RELEASE)
++	mkdir -p $(DESTDIR)
+ 	
+ release_ladspa: DESTDIR=$(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_ladspa: | release_prepare install_ladspa
+ 	@echo "Releasing LADSPA binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LADSPA_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_lv2: DESTDIR=$(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_lv2: | release_prepare install_lv2
+ 	@echo "Releasing LV2 binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(LV2_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_vst: DESTDIR=$(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_vst: | release_prepare install_vst
+ 	@echo "Releasing VST binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(VST_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 	
+ release_jack: DESTDIR=$(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_jack: | release_prepare install_jack
+ 	@echo "Releasing JACK binaries"
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(DESTDIR)
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(JACK_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(DESTDIR)
+ 
+ release_profile: DESTDIR=$(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ release_profile: | release_prepare
+ 	@echo "Releasing PROFILE binaries"
+-	@$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+-	@rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	$(INSTALL) $(BIN_PROFILE) $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE_BIN) -czf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE).tar.gz $(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
++	rm -rf $(RELEASE_BIN)/$(PROFILE_ID)-$(BUILD_SYSTEM)-$(BUILD_PROFILE)
+ 
+ release_src: DESTDIR=$(RELEASE)/$(SRC_ID)
+ release_src: | release_prepare
+ 	@echo "Releasing source code binaries"
+-	@mkdir -p $(DESTDIR)
+-	@mkdir -p $(DESTDIR)/scripts
+-	@cp -R $(RELEASE_SRC) $(DESTDIR)/
+-	@cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	mkdir -p $(DESTDIR)/scripts
++	cp -R $(RELEASE_SRC) $(DESTDIR)/
++	cp -R $(RELEASE_SCRIPTS) $(DESTDIR)/scripts/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(SRC_ID).tar.gz $(SRC_ID)
++	rm -rf $(DESTDIR)
+ 
+ release_doc: DESTDIR=$(RELEASE)/$(DOC_ID)
+ release_doc: | release_prepare
+ 	@echo "Releasing documentation"
+-	@mkdir -p $(DESTDIR)
+-	@cp -r $(OBJDIR)/html/* $(DESTDIR)/
+-	@cp $(RELEASE_TEXT) $(DESTDIR)/
+-	@tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
+-	@rm -rf $(DESTDIR)
++	mkdir -p $(DESTDIR)
++	cp -r $(OBJDIR)/html/* $(DESTDIR)/
++	cp $(RELEASE_TEXT) $(DESTDIR)/
++	tar -C $(RELEASE) -czf $(RELEASE)/$(DOC_ID).tar.gz $(DOC_ID)
++	rm -rf $(DESTDIR)
+ 
+ # Unrelease target
+ unrelease: clean
+-	@-rm -rf $(RELEASE)
++	rm -rf $(RELEASE)
+ 	@echo "Unrelease OK"
+ 
+ # Uninstall target
+@@ -348,41 +388,41 @@ uninstall: $(UNINSTALLATIONS)
+ 	
+ uninstall_ladspa:
+ 	@echo "Uninstalling LADSPA"
+-	@-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
++	rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
+ 	
+ uninstall_lv2:
+ 	@echo "Uninstalling LV2"
+-	@-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
++	rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
+ 	
+ uninstall_vst:
+ 	@echo "Uninstalling VST"
+-	@-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
+-	@-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
++	rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
++	rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
++	rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
+ 	
+ uninstall_jack:
+ 	@echo "Uninstalling JACK"
+-	@-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
+-	@-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
+-	@-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
++	rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
++	rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
++	rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
++	rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
+ 
+ uninstall_xdg:
+ 	@echo "Uninstalling desktop icons"
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
+-	@-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
+-	@-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
++	rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
++	rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
++	rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
+ 
+ uninstall_doc:
+ 	@echo "Uninstalling DOC"
+-	@-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
++	rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
+ 
+diff --git a/TODO.txt b/TODO.txt
+index 4976293..f8562ef 100644
+--- a/TODO.txt
++++ b/TODO.txt
+@@ -28,6 +28,12 @@
+ - Added possibility to change themes in runtime.
+ - Complicated plugin UIs now allow to switch between Advanced and Novice modes.
+ 
++=== 1.1.31 ===
++
++* Fixed X11 error handling routine that could crash under certain conditions.
++* Better support for musl libc (contributed by Artur Sinila).
++* Added support of VERBOSE parameter for build system (contributed by Artur Sinila).
++
+ *******************************************************************************
+ * New plugin check list before release
+ *******************************************************************************
+diff --git a/include/common/types.h b/include/common/types.h
+index dd1816e..59c794e 100644
+--- a/include/common/types.h
++++ b/include/common/types.h
+@@ -563,6 +563,12 @@
+     #define MINIMUM_ALIGN                   DEFAULT_ALIGN
+ #endif /* DEFAULT_ALIGN */
+ 
++//-----------------------------------------------------------------------------
++// Detect some libraries
++#ifdef __GLIBC__
++    #define USE_GLIBC                           __GLIBC__
++#endif /* GLIBC */
++
+ //-----------------------------------------------------------------------------
+ // Type definitions
+ __IF_32( typedef        uint32_t            umword_t );
+diff --git a/include/data/cvector.h b/include/data/cvector.h
+index eccc94a..17fe119 100644
+--- a/include/data/cvector.h
++++ b/include/data/cvector.h
+@@ -25,6 +25,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <sys/types.h>
+ 
+ #define CVECTOR_GROW        16
+ 
+diff --git a/include/metadata/metadata.h b/include/metadata/metadata.h
+index 0efaa9d..e009750 100644
+--- a/include/metadata/metadata.h
++++ b/include/metadata/metadata.h
+@@ -73,10 +73,18 @@
+     #define LSP_ARCHITECTURE                                "unknown"
+ #endif /* ARCH */
+ 
++#define STRINGIFY_(x) #x
++#define STRINGIFY(x) STRINGIFY_(x)
++
+ #ifndef LSP_MAIN_VERSION
+     #define LSP_MAIN_VERSION                                "0.0.0"
++#else
++    #define LSP_MAIN_VERSION_STR STRINGIFY(LSP_MAIN_VERSION)
++    #undef LSP_MAIN_VERSION
++    #define LSP_MAIN_VERSION LSP_MAIN_VERSION_STR
+ #endif /* LSP_MAIN_VERSION */
+ 
++
+ #define LSP_LV2_LATENCY_PORT                            "out_latency"
+ #define LSP_LV2_ATOM_PORT_IN                            "in_ui"
+ #define LSP_LV2_MIDI_PORT_IN                            "in_midi"
+@@ -86,7 +94,7 @@
+ #define LSP_LV2_OSC_PORT_OUT                            "out_osc"
+ 
+ #ifdef LSP_INSTALL_PREFIX
+-    #define LSP_LIB_PREFIX(x)       LSP_INSTALL_PREFIX x
++    #define LSP_LIB_PREFIX(x)       STRINGIFY(LSP_INSTALL_PREFIX) x
+ #else
+     #define LSP_LIB_PREFIX(x)       x
+ #endif /* PREFIX */
+diff --git a/include/test/main/executor.h b/include/test/main/executor.h
+index 0faf73f..5a0c016 100644
+--- a/include/test/main/executor.h
++++ b/include/test/main/executor.h
+@@ -633,7 +633,7 @@ namespace lsp
+     }
+ #endif /* PLATFORM_WINDOWS */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     void TestExecutor::start_memcheck(test::Test *v)
+     {
+         if (!pCfg->mtrace)
+diff --git a/include/test/main/types.h b/include/test/main/types.h
+index ef15800..0c5d7c2 100644
+--- a/include/test/main/types.h
++++ b/include/test/main/types.h
+@@ -42,7 +42,7 @@
+     #include <fcntl.h>
+ #endif /* PLATFORM_UNIX_COMPATIBLE */
+ 
+-#ifdef PLATFORM_LINUX
++#if defined(PLATFORM_LINUX) && defined(USE_GLIBC)
+     #include <mcheck.h>
+ #endif /* PLATFORM_LINUX */
+ 
+diff --git a/include/testing/mtest/3d/common/X11Renderer.h b/include/testing/mtest/3d/common/X11Renderer.h
+index e8ec205..f0a51e2 100644
+--- a/include/testing/mtest/3d/common/X11Renderer.h
++++ b/include/testing/mtest/3d/common/X11Renderer.h
+@@ -30,7 +30,7 @@
+ #include <X11/X.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include <rendering/backend.h>
+ #include <core/ipc/Library.h>
+diff --git a/scripts/make/configure.mk b/scripts/make/configure.mk
+index 09aee9a..1f3cf7b 100644
+--- a/scripts/make/configure.mk
++++ b/scripts/make/configure.mk
+@@ -14,7 +14,8 @@ ifndef BUILD_R3D_BACKENDS
+   BUILD_R3D_BACKENDS     := $(shell if (test -f "$(CFGDIR)/$(R3D_BACKENDS_FILE)" )  then cat "$(CFGDIR)/$(R3D_BACKENDS_FILE)" 2>/dev/null; else echo "glx"; fi;)
+ endif
+ 
+-BUILD_COMPILER         := $(shell $(CC) --version | head -n 1 || echo "unknown")
++BUILD_COMPILER         := $(shell $(CXX) --version | head -n 1 || echo "unknown")
++HOST_BUILD_COMPILER    := $(shell $(HOST_CXX) --version | head -n 1 || echo "unknown")
+ 
+ export BUILD_MODULES
+ export BUILD_R3D_BACKENDS
+@@ -23,7 +24,7 @@ export BUILD_R3D_BACKENDS
+ INSTALLATIONS           =
+ UNINSTALLATIONS         = uninstall_xdg
+ RELEASES                =
+-INCLUDE                 = -I"${CURDIR}/include"
++INCLUDE                 := -I"${CURDIR}/include"
+ 
+ ifeq ($(findstring ladspa,$(BUILD_MODULES)),ladspa)
+   INSTALLATIONS          += install_ladspa
+@@ -63,61 +64,64 @@ LD_ARCH         =
+ CC_ARCH         =
+ 
+ # Build profile
+-ifeq ($(BUILD_PROFILE),i586)
+-  CC_ARCH          = -m32
+-  ifeq ($(BUILD_PLATFORM), Linux)
+-    LD_ARCH          = -m elf_i386
++# SKIP_CC_LD_ARCH is set by distro package build systems
++# which manage cross-compilation flags on their own
++ifeq ($(SKIP_CC_LD_ARCH),)
++  ifeq ($(BUILD_PROFILE),i586)
++    CC_ARCH          = -m32
++    ifeq ($(BUILD_PLATFORM), Linux)
++      LD_ARCH          = -m elf_i386
++    endif
++    ifeq ($(BUILD_PLATFORM), BSD)
++      LD_ARCH          = -m elf_i386_fbsd
++    endif
+   endif
++  
++  ifeq ($(BUILD_PROFILE),x86_64)
++    CC_ARCH          = -m64
++    ifeq ($(BUILD_PLATFORM), Linux)
++      LD_ARCH          = -m elf_x86_64
++    endif
++    ifeq ($(BUILD_PLATFORM), BSD)
++      LD_ARCH          = -m elf_x86_64_fbsd
++    endif
++  endif
++  
+   ifeq ($(BUILD_PLATFORM), BSD)
+-    LD_ARCH          = -m elf_i386_fbsd
++    INCLUDE          += -I/usr/local/include
++    ifeq ($(BUILD_PROFILE),arm)
++      CC_ARCH          = -marm
++      ifneq ($(LD_PATH),)
++        CC_ARCH          += -Wl,-rpath=$(LD_PATH)
++      endif
++    endif
+   endif
+-endif
+-
+-ifeq ($(BUILD_PROFILE),x86_64)
+-  CC_ARCH          = -m64
+-  ifeq ($(BUILD_PLATFORM), Linux)
+-    LD_ARCH          = -m elf_x86_64
++  
++  ifeq ($(BUILD_PROFILE),armv6a)
++    CC_ARCH          = -march=armv6-a -marm
+   endif
+-  ifeq ($(BUILD_PLATFORM), BSD)
+-    LD_ARCH          = -m elf_x86_64_fbsd
++  
++  ifeq ($(BUILD_PROFILE),armv7a)
++    CC_ARCH          = -march=armv7-a -marm
+   endif
+-endif
+-
+-ifeq ($(BUILD_PLATFORM), BSD)
+-  INCLUDE          += -I/usr/local/include
+-  ifeq ($(BUILD_PROFILE),arm)
++  
++  ifeq ($(BUILD_PROFILE),armv7ve)
++    CC_ARCH          = -march=armv7ve -marm
++  endif
++  
++  ifeq ($(BUILD_PROFILE),arm32)
+     CC_ARCH          = -marm
+-    ifneq ($(LD_PATH),)
+-      CC_ARCH          += -Wl,-rpath=$(LD_PATH)
+-    endif
++  endif
++  
++  ifeq ($(BUILD_PROFILE),armv8a)
++    CC_ARCH          = -march=armv7-a -marm
++  endif
++  
++  ifeq ($(BUILD_PROFILE),aarch64)
++    CC_ARCH          = -march=armv8-a
+   endif
+ endif
+ 
+-ifeq ($(BUILD_PROFILE),armv6a)
+-  CC_ARCH          = -march=armv6-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv7a)
+-  CC_ARCH          = -march=armv7-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv7ve)
+-  CC_ARCH          = -march=armv7ve -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),arm32)
+-  CC_ARCH          = -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),armv8a)
+-  CC_ARCH          = -march=armv7-a -marm
+-endif
+-
+-ifeq ($(BUILD_PROFILE),aarch64)
+-  CC_ARCH          = -march=armv8-a
+-endif
+-
+-
+ export CC_ARCH
+ export LD_ARCH
+ export LD_PATH
+@@ -127,21 +131,25 @@ export INCLUDE
+ ifeq ($(BUILD_SYSTEM),Windows)
+ # TODO
+ else
+-  export PTHREAD_LIBS     = -lpthread
+-  export ICONV_LIBS       = -liconv
+-  export MATH_LIBS        = -lm
+-  export DL_LIBS          = -ldl
+-  export CAIRO_HEADERS    = $(shell pkg-config --cflags cairo)
+-  export CAIRO_LIBS       = $(shell pkg-config --libs cairo)
+-  export XLIB_HEADERS     = $(shell pkg-config --cflags x11)
+-  export XLIB_LIBS        = $(shell pkg-config --libs x11)
+-  export LV2_HEADERS      = $(shell pkg-config --cflags lv2)
+-  export LV2_LIBS         = $(shell pkg-config --libs lv2)
+-  export SNDFILE_HEADERS  = $(shell pkg-config --cflags sndfile)
+-  export SNDFILE_LIBS     = $(shell pkg-config --libs sndfile)
+-  export JACK_HEADERS     = $(shell pkg-config --cflags jack)
+-  export JACK_LIBS        = $(shell pkg-config --libs jack)
+-  export OPENGL_HEADERS   = $(shell pkg-config --cflags gl 2>/dev/null || echo "")
+-  export OPENGL_LIBS      = $(shell pkg-config --libs gl 2>/dev/null || echo "")
++  export PTHREAD_LIBS         = -lpthread
++  export ICONV_LIBS           = -liconv
++  export MATH_LIBS            = -lm
++  export DL_LIBS              = -ldl
++  export CAIRO_HEADERS        = $(shell $(PKG_CONFIG) --cflags cairo)
++  export CAIRO_LIBS           = $(shell $(PKG_CONFIG) --libs cairo)
++  export XLIB_HEADERS         = $(shell $(PKG_CONFIG) --cflags x11)
++  export XLIB_LIBS            = $(shell $(PKG_CONFIG) --libs x11)
++  export LV2_HEADERS          = $(shell $(PKG_CONFIG) --cflags lv2)
++  export LV2_HEADERS          = $(shell $(PKG_CONFIG) --libs lv2)
++  export SNDFILE_HEADERS      = $(shell $(PKG_CONFIG) --cflags sndfile)
++  export SNDFILE_LIBS         = $(shell $(PKG_CONFIG) --libs sndfile)
++  export JACK_HEADERS         = $(shell $(PKG_CONFIG) --cflags jack)
++  export JACK_LIBS            = $(shell $(PKG_CONFIG) --libs jack)
++  export OPENGL_HEADERS       = $(shell $(PKG_CONFIG) --cflags gl 2>/dev/null || echo "")
++  export OPENGL_LIBS          = $(shell $(PKG_CONFIG) --libs gl 2>/dev/null || echo "")
++  export HOST_SNDFILE_HEADERS = $(shell $(HOST_PKG_CONFIG) --cflags sndfile)
++  export HOST_SNDFILE_LIBS    = $(shell $(HOST_PKG_CONFIG) --libs sndfile)
++  export HOST_LV2_HEADERS     = $(shell $(HOST_PKG_CONFIG) --cflags lv2)
++  export HOST_LV2_LIBS        = $(shell $(HOST_PKG_CONFIG) --libs lv2)
+ endif
+ 
+diff --git a/scripts/make/set_vars.mk b/scripts/make/set_vars.mk
+index a22531a..93916ea 100644
+--- a/scripts/make/set_vars.mk
++++ b/scripts/make/set_vars.mk
+@@ -37,7 +37,52 @@ export BUILD_PLATFORM
+ export LV2_UI
+ export VST_UI
+ 
+-# Detect processor architecture
++# Detect host processor architecture
++ifeq ($(BUILD_PLATFORM),Windows)
++  ifndef HOST_BUILD_PROFILE
++    HOST_BUILD_ARCH           = i586
++    HOST_BUILD_PROFILE             = i586
++    ifeq ($(PROCESSOR_ARCHITECTURE),x86)
++      HOST_BUILD_ARCH         = i586
++      HOST_BUILD_PROFILE      = i586
++    endif
++    ifeq ($(PROCESSOR_ARCHITECTURE),AMD64)
++      HOST_BUILD_ARCH              = x86_64
++      HOST_BUILD_PROFILE           = x86_64
++    endif
++  endif
++else # BUILD_PLATFORM != Windows
++  ifndef HOST_BUILD_PROFILE
++    HOST_BUILD_ARCH    ?= $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
++    HOST_BUILD_PROFILE  = $(HOST_BUILD_ARCH)
++    ifeq ($(patsubst armv6%,armv6,$(HOST_BUILD_ARCH)), armv6)
++      HOST_BUILD_PROFILE      = armv6a
++    endif
++    ifeq ($(patsubst armv7%,armv7,$(HOST_BUILD_ARCH)), armv7)
++      HOST_BUILD_PROFILE      = armv7a
++    endif
++    ifeq ($(patsubst armv8%,armv8,$(HOST_BUILD_ARCH)), armv8)
++      HOST_BUILD_PROFILE      = armv8a
++    endif
++    ifeq ($(patsubst aarch64%,aarch64,$(HOST_BUILD_ARCH)), aarch64)
++      HOST_BUILD_PROFILE      = aarch64
++    endif
++    ifeq ($(HOST_BUILD_ARCH),x86_64)
++      HOST_BUILD_PROFILE      = x86_64
++    endif
++    ifeq ($(HOST_BUILD_ARCH),amd64)
++      HOST_BUILD_PROFILE      = x86_64
++    endif
++    ifeq ($(HOST_BUILD_ARCH),i86pc)
++      HOST_BUILD_PROFILE      = x86_64
++    endif
++    ifeq ($(patsubst i%86,i586,$(HOST_BUILD_ARCH)), i586)
++      HOST_BUILD_PROFILE      = i586
++    endif
++  endif
++endif # BUILD_PLATFORM != Windows
++
++# Detect target processor architecture
+ ifeq ($(BUILD_PLATFORM),Windows)
+   ifndef BUILD_PROFILE
+     BUILD_ARCH                = i586
+@@ -53,7 +98,7 @@ ifeq ($(BUILD_PLATFORM),Windows)
+   endif
+ else # BUILD_PLATFORM != Windows
+   ifndef BUILD_PROFILE
+-    BUILD_ARCH              = $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
++    BUILD_ARCH              ?= $(shell cat "$(OBJDIR)/$(BUILD_PROFILE_FILE)" 2>/dev/null || uname -m)
+     BUILD_PROFILE           = $(BUILD_ARCH)
+     ifeq ($(patsubst armv6%,armv6,$(BUILD_ARCH)), armv6)
+       BUILD_PROFILE           = armv6a
+@@ -82,5 +127,7 @@ else # BUILD_PLATFORM != Windows
+   endif
+ endif # BUILD_PLATFORM != Windows
+ 
+-export BUILD_PROFILE
++HOST_BUILD_PROFILE ?= $(shell uname -m)
+ 
++export BUILD_PROFILE
++export HOST_BUILD_PROFILE
+diff --git a/scripts/make/tools.mk b/scripts/make/tools.mk
+index 1fb917e..508f829 100644
+--- a/scripts/make/tools.mk
++++ b/scripts/make/tools.mk
+@@ -1,14 +1,18 @@
+ # Setup preferred tools
+ TOOL_LD                 = ld
++TOOL_HOST_LD            = ld
+ TOOL_CC                 = gcc
+ TOOL_CXX                = g++
++TOOL_HOST_CXX           = g++
+ TOOL_PHP                = php
++TOOL_PKG_CONFIG         = pkg-config
++TOOL_HOST_PKG_CONFIG    = PKG_CONFIG_SYSROOT_DIR=/ pkg-config
+ 
+ # Setup preferred flags
+ FLAG_RELRO              = -Wl,-z,relro,-z,now
+ FLAG_VERSION            = -DLSP_MAIN_VERSION=\"$(LSP_VERSION)\" -DLSP_INSTALL_PREFIX=\"$(PREFIX)\"
+-FLAG_CTUNE              = -std=c++98 \
+-                          -fno-exceptions -fno-rtti \
++FLAG_CXXSTANDARD        = -std=c++98
++FLAGS_CTUNE             = -fno-exceptions -fno-rtti \
+                           -fdata-sections -ffunction-sections -fno-asynchronous-unwind-tables \
+                           -fvisibility=hidden \
+                           -pipe -Wall
+@@ -17,21 +21,29 @@ FLAG_CTUNE              = -std=c++98 \
+ ifeq ($(BUILD_PLATFORM),Solaris)
+   FLAG_RELRO              =
+   TOOL_LD                 = gld
++  TOOL_HOST_LD            = gld
+ endif
+ 
+ # Setup system variables
+ CC              		 ?= $(TOOL_CC)
+ CXX                      ?= $(TOOL_CXX)
++HOST_CXX                 ?= $(TOOL_HOST_CXX)
+ PHP                      ?= $(TOOL_PHP)
+ LD                       ?= $(TOOL_LD)
++HOST_LD                  ?= $(TOOL_HOST_LD)
++PKG_CONFIG               ?= $(TOOL_PKG_CONFIG)
++HOST_PKG_CONFIG          ?= $(TOOL_HOST_PKG_CONFIG)
+ 
+-MAKE_OPTS                 = -s
+-CFLAGS                   += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-CXXFLAGS                 += $(CC_ARCH) $(FLAG_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
+-SO_FLAGS                  = $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
+-MERGE_FLAGS               = $(LD_ARCH) -r
+-EXE_TEST_FLAGS            = $(LDFLAGS) $(CC_ARCH)
+-EXE_FLAGS                 = $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++CFLAGS                   += $(CC_ARCH) $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) \
++                            $(CC_FLAGS) $(FLAG_VERSION)
++CXXFLAGS                 += $(CC_ARCH) $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) \
++                            $(CC_FLAGS) $(FLAG_VERSION)
++HOST_CXXFLAGS            += $(FLAG_CXXSTANDARD) $(FLAGS_CTUNE) $(CC_FLAGS) $(FLAG_VERSION)
++SO_FLAGS                 += $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections -shared -Llibrary -lc -fPIC
++MERGE_FLAGS              += $(LD_ARCH) -r
++EXE_TEST_FLAGS           += $(LDFLAGS) $(CC_ARCH)
++EXE_FLAGS                += $(LDFLAGS) $(CC_ARCH) $(FLAG_RELRO) -Wl,--gc-sections
++HOST_EXE_FLAGS           += $(HOST_LDFLAGS) $(FLAG_RELRO) -Wl,--gc-sections
+ 
+ ifeq ($(BUILD_PLATFORM), Linux)
+   SO_FLAGS                 += -Wl,--no-undefined
+@@ -59,13 +71,18 @@ endif
+ 
+ export CC
+ export CXX
++export HOST_CXX
+ export PHP
+ export LD
++export HOST_LD
++export PKG_CONFIG
++export HOST_PKG_CONFIG
+ 
+-export MAKE_OPTS
+ export CFLAGS
+ export CXXFLAGS
++export HOST_CXXFLAGS
+ export SO_FLAGS
+ export MERGE_FLAGS
+ export EXE_TEST_FLAGS
+ export EXE_FLAGS
++export HOST_EXE_FLAGS
+diff --git a/src/Makefile b/src/Makefile
+index 8546191..01b9d92 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,7 +1,16 @@
++# Estimate different pre-requisites before launching build
++
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ SUBDIRS                 = core metadata utils 
+ MODULES                 = $(SUBDIRS)
+ CONTAINER_DEPS          = $(OBJ_METADATA) $(OBJ_CORE) $(UTL_FILES)
+-UTL_DEPS                = $(OBJ_CORE) $(OBJ_DSP) $(OBJ_METADATA)
++UTL_DEPS                = $(HOST_OBJ_CORE) $(HOST_OBJ_DSP) $(HOST_OBJ_METADATA)
++OBJDIR                  ?= $(BUILDDIR)
+ 
+ NEED_UI                 = 0
+ NEED_PLUGINS            = 0
+@@ -58,6 +67,7 @@ ifeq ($(NEED_UI),1)
+   CONTAINER_DEPS         += $(OBJ_UI_CORE) $(OBJ_RES_CORE) rendering
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all $(MODULES)
+ 
+ all: $(MODULES)
+@@ -66,19 +76,34 @@ target: all
+ 
+ # Rules
+ $(SUBDIRS):
+-	@echo "Building $(@)"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	@echo "$(BUILDDIR)"
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ all \
++		CXX="$(CXX)" \
++		CXXFLAGS="$(CXXFLAGS)" \
++		LD="$(LD)" \
++		OBJDIR="$(OBJDIR)/$(@)" \
++		BUILD_PROFILE="$(BUILD_PROFILE)" \
++		SNDFILE_HEADERS="$(SNDFILE_HEADERS)" \
++		SNDFILE_LIBS="$(SNDFILE_LIBS)" \
++		LV2_HEADERS="$(LV2_HEADERS)" \
++		LV2_LIBS="$(LV2_LIBS)"
+ 
+ # Object dependencies
+ $(OBJ_CORE): core
+ 
++$(HOST_OBJ_CORE): core
++
+ $(OBJ_DSP): dsp
+ 
++$(HOST_OBJ_DSP): dsp
++
+ $(OBJ_PLUGINS): plugins
+ 
+ $(OBJ_METADATA): metadata
+ 
++$(HOST_OBJ_METADATA): metadata
++
+ $(OBJ_UI_CORE): ui
+ 
+ $(UTL_FILES): utils
+@@ -93,10 +118,10 @@ $(OBJ_TESTING_CORE): test testing rendering
+ 
+ $(OBJ_RES_CORE): $(OBJ_CORE) $(UTL_RESGEN)
+ 	@echo "Generating builtin resources"
+-	@mkdir -p $(OBJDIR)/res
+-	@$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	mkdir -p $(OBJDIR)/res
++	$(UTL_RESGEN) $(OBJDIR)/res/builtin_resource.cpp $(RESOURCE_PATHS)
++	rm -f gmon.out >/dev/null 2>&1
++	$(CXX) -o $(OBJ_RES_CORE) -c $(OBJDIR)/res/builtin_resource.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ # Target dependencies
+ container: $(CONTAINER_DEPS)
+@@ -108,18 +133,18 @@ doc: utils $(PHP_PLUGINS)
+ # Additional processing
+ $(PHP_PLUGINS): $(UTL_GENPHP)
+ 	@echo "Generating PHP file $(notdir $(PHP_PLUGINS))"
+-	@$(UTL_GENPHP) $(PHP_PLUGINS)
++	$(UTL_GENPHP) $(PHP_PLUGINS)
+ 
+ vst_stub: $(UTL_VSTMAKE)
+ 	@echo "Building VST stub"
+-	@mkdir -p $(OBJDIR)/vst
+-	@$(UTL_VSTMAKE) $(OBJDIR)/vst
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
++	mkdir -p $(OBJDIR)/vst
++	$(UTL_VSTMAKE) $(OBJDIR)/vst
++	rm -f gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/vst all OBJDIR=$(OBJDIR)/vst
+ 
+ jack_stub: $(UTL_JACKMAKE)
+ 	@echo "Building JACK stub"
+-	@mkdir -p $(OBJDIR)/jack
+-	@$(UTL_JACKMAKE) $(OBJDIR)/jack
+-	@-rm gmon.out >/dev/null 2>&1
+-	@$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
++	mkdir -p $(OBJDIR)/jack
++	$(UTL_JACKMAKE) $(OBJDIR)/jack
++	rm -f gmon.out >/dev/null 2>&1
++	$(MAKE) $(MAKE_OPTS) -C $(OBJDIR)/jack all OBJDIR=$(OBJDIR)/jack
+diff --git a/src/container/Makefile b/src/container/Makefile
+index 8aa8196..23a2e7a 100644
+--- a/src/container/Makefile
++++ b/src/container/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ OBJ_HELPERS             = $(OBJDIR)/CairoCanvas.o
+@@ -53,46 +59,47 @@ ifeq ($(VST_UI),1)
+   X_VST_LIBS             += $(UI_LIBS)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(MODULES)
+ 
+ $(OBJ_HELPERS):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS)
+ 
+ $(LIB_LADSPA):
+ 	@echo "  $(CXX) ladspa.cpp"
+-	@$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/ladspa.o -c ladspa.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_LADSPA))"
+-	@$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
++	$(CXX) -o $(LIB_LADSPA) $(OBJDIR)/ladspa.o $(OBJFILES) $(SO_FLAGS) $(LIBS)
+ 
+ $(LIB_LV2): $(X_LV2_DEPS)
+ 	@echo "  $(CXX) lv2.cpp"
+-	@$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
+-	@echo "  $(CXX) $(notdir $(X_LIB_LV2))"
+-	@$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
++	$(CXX) -o $(OBJDIR)/lv2.o -c lv2.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(CAIRO_HEADERS) $(LV2_HEADERS)
++	@echo "  $(CXX) $(notdir $(LIB_LV2))"
++	$(CXX) -o $(LIB_LV2) $(OBJDIR)/lv2.o $(X_LV2_OBJFILES) $(SO_FLAGS) $(X_LV2_LIBS)
+ 
+ $(LIB_VST):
+ 	@echo "  $(CXX) vst.cpp"
+-	@$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(OBJDIR)/vst.o -c vst.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	@echo "  $(CXX) $(notdir $(LIB_VST))"
+-	@$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
++	$(CXX) -o $(LIB_VST) $(OBJDIR)/vst.o $(X_VST_OBJFILES) $(SO_FLAGS) $(X_VST_LIBS) 
+ 
+ $(LIB_JACK): $(OBJ_HELPERS)
+ 	@echo "  $(CXX) jack.cpp"
+-	@$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
++	$(CXX) -o $(OBJDIR)/jack.o -c jack.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) $(CAIRO_HEADERS)
+ 	@echo "  $(CXX) $(notdir $(LIB_JACK))"
+-	@$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
++	$(CXX) -o $(LIB_JACK) $(OBJDIR)/jack.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(SO_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS)
+ 
+ $(BIN_PROFILE): $(LIB_JACK)
+ 	@echo "  $(CXX) profile.cpp"
+-	@$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/profile.o -c profile.cpp -fPIC $(CPPFLAGS) -DLSP_PROFILING_MAIN $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_PROFILE))"
+-	@$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
++	$(CXX) -o $(BIN_PROFILE) $(OBJDIR)/jack.o $(OBJDIR)/profile.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) 
+ 
+ $(BIN_TEST): $(LIB_JACK)
+ 	@echo "  $(CXX) test.cpp"
+-	@$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
++	$(CXX) -o $(OBJDIR)/test.o -c test.cpp -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(JACK_HEADERS) 
+ 	@echo "  $(CXX) $(notdir $(BIN_TEST))"
+-	@$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
++	$(CXX) -o $(BIN_TEST) $(OBJDIR)/jack.o $(OBJDIR)/test.o $(OBJ_HELPERS) $(OBJFILES) $(UI_OBJFILES) $(EXE_TEST_FLAGS) $(LIBS) $(UI_LIBS) $(JACK_LIBS) $(OPENGL_LIBS) $(DL_LIBS)   
+diff --git a/src/core/Makefile b/src/core/Makefile
+index a9ce1a5..3ad14a5 100644
+--- a/src/core/Makefile
++++ b/src/core/Makefile
+@@ -1,18 +1,25 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(SNDFILE_HEADERS)
+ LIBS                    = $(PTHREAD_LIBS)
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all
+ 
+ all: $(OBJ_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LIBS) $(INCLUDE) 
+ 
+ $(OBJ_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_CORE))"
+-	@$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
++	$(LD) -o $(OBJ_CORE) -r $(MERGE_FLAGS) $(FILES)
+diff --git a/src/doc/Makefile b/src/doc/Makefile
+index aac73bf..f7f18a1 100644
+--- a/src/doc/Makefile
++++ b/src/doc/Makefile
+@@ -1,6 +1,13 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ PHPDIR      = $(BUILDDIR)/src/doc
+ HTMLDIR     = $(BUILDDIR)/html
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -8,14 +15,14 @@ target: all
+ # Common rules
+ $(PHPDIR)/Makefile:
+ 	@echo "Preparing PHP documentation generator"
+-	@mkdir -p $(PHPDIR)
+-	@mkdir -p $(HTMLDIR)
+-	@cp -rf * $(PHPDIR)/
+-	@cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
+-	@cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
+-	@cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
+-	@$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
++	mkdir -p $(PHPDIR)
++	mkdir -p $(HTMLDIR)
++	cp -rf * $(PHPDIR)/
++	cp -r $(addprefix $(ROOTDIR)/, $(RELEASE_TEXT)) $(PHPDIR)/
++	cp -rf $(RESDIR)/doc/* $(HTMLDIR)/
++	cp -f $(PHP_PLUGINS) $(PHPDIR)/config/plugins.php
++	$(PHP) -f makefile.php $(PHPDIR) >$(PHPDIR)/Makefile
+ 
+ all: $(PHPDIR)/Makefile
+ 	@echo "Generating HTML documentation"
+-	@$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
++	$(MAKE) $(MAKE_OPTS) -C $(PHPDIR)
+diff --git a/src/dsp/Makefile b/src/dsp/Makefile
+index f3d9ab1..cc30a37 100644
+--- a/src/dsp/Makefile
++++ b/src/dsp/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ NATIVE_IMPL             = $(OBJDIR)/native.o
+ 
+ X86_IMPL                = $(OBJDIR)/x86.o
+@@ -28,29 +34,35 @@ LINK_OBJECTS            = $(DSP_IMPL) $(BITS_IMPL) $(NATIVE_IMPL)
+ 
+ # Build different DSP modules dependent on architecture
+ ifeq ($(BUILD_PROFILE), i586)
+-LINK_OBJECTS           += $(X86_IMPL) $(SSE_IMPL) $(SSE2_IMPL) $(SSE3_IMPL) $(SSE4_IMPL) $(AVX_IMPL) $(AVX2_IMPL)
++  LINK_OBJECTS           += $(X86_IMPL) $(SSE_IMPL) $(SSE2_IMPL) $(SSE3_IMPL) \
++                            $(SSE4_IMPL) $(AVX_IMPL) $(AVX2_IMPL)
+ endif
+ ifeq ($(BUILD_PROFILE), x86_64)
+-LINK_OBJECTS           += $(X86_IMPL) $(SSE_IMPL) $(SSE2_IMPL) $(SSE3_IMPL) $(SSE4_IMPL) $(AVX_IMPL) $(AVX2_IMPL)
++LINK_OBJECTS           += $(X86_IMPL) $(SSE_IMPL) $(SSE2_IMPL) $(SSE3_IMPL) \
++                          $(SSE4_IMPL) $(AVX_IMPL) $(AVX2_IMPL)
+ endif
+ ifeq ($(BUILD_PLATFORM), BSD)
+   ifeq ($(BUILD_PROFILE), arm)
+-    LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
++    LINK_OBJECTS         += $(ARM_IMPL) $(NEON_D32_IMPL)
+   endif
+ endif
++ifeq ($(BUILD_PROFILE), armv6a)
++  LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
++endif
+ ifeq ($(BUILD_PROFILE), armv7a)
+-LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
++  LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
+ endif
+ ifeq ($(BUILD_PROFILE), armv7ve)
+-LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
++  LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
+ endif
+ ifeq ($(BUILD_PROFILE), arm32)
+-LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
++  LINK_OBJECTS           += $(ARM_IMPL) $(NEON_D32_IMPL)
+ endif
+ ifeq ($(BUILD_PROFILE), aarch64)
+-LINK_OBJECTS           += $(AARCH64_IMPL) $(ASIMD_IMPL)
++  LINK_OBJECTS           += $(AARCH64_IMPL) $(ASIMD_IMPL)
+ endif
+ 
++.DEFAULT_GOAL          := all
+ .PHONY: all target
+ 
+ target: all
+@@ -59,41 +71,41 @@ all: $(OBJ_DSP)
+ 
+ $(OBJ_DSP): $(LINK_OBJECTS)
+ 	@echo "  $(LD) $(notdir $(OBJ_DSP))"
+-	@$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
++	$(LD) -o $(OBJ_DSP) -r $(MERGE_FLAGS) $(LINK_OBJECTS)
+ 
+ $(DSP_IMPL) $(BITS_IMPL) $(NATIVE_IMPL) $(X86_IMPL) $(ARM_IMPL) $(AARCH64_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 	
+ $(SSE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE2_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE3_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE3_INSTR_SET) $(INCLUDE)
+ 	
+ $(SSE4_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(SSE4_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX_INSTR_SET) $(INCLUDE)
+ 
+ $(AVX2_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(AVX2_INSTR_SET) $(INCLUDE)
+ 	
+ $(NEON_D32_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(NEON_D32_INSTR_SET) $(INCLUDE)
+ 	
+ $(ASIMD_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(ASIMD_INSTR_SET) $(INCLUDE)
+ 
+diff --git a/src/metadata/Makefile b/src/metadata/Makefile
+index 201f89a..403f38a 100644
+--- a/src/metadata/Makefile
++++ b/src/metadata/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -10,8 +16,8 @@ target: all
+ 
+ $(OBJ_METADATA): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_METADATA))"
+-	@$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_METADATA) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+diff --git a/src/plugins/Makefile b/src/plugins/Makefile
+index 1f197dc..85963ba 100644
+--- a/src/plugins/Makefile
++++ b/src/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard               = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,8 +14,8 @@ all:  $(OBJ_PLUGINS)
+ 
+ $(OBJ_PLUGINS): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(OBJ_PLUGINS))"
+-	@$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
++	$(LD) -o $(OBJ_PLUGINS) -r $(MERGE_FLAGS) $(FILES) 
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
++	$(CXX) -o $(@) -c -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE)
+diff --git a/src/rendering/Makefile b/src/rendering/Makefile
+index 897e327..65f3237 100644
+--- a/src/rendering/Makefile
++++ b/src/rendering/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ BASE_IMPL             	= $(OBJDIR)/base_backend.o
+ 
+ GLX_IMPL                = $(OBJDIR)/glx/backend.o $(OBJDIR)/glx/factory.o
+@@ -20,15 +26,15 @@ all: $(MODULES)
+ 
+ $(LIB_R3D_GLX): $(BASE_IMPL) $(GLX_IMPL)
+ 	@echo "  $(CXX) $(notdir $(LIB_R3D_GLX))"
+-	@$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
++	$(CXX) -o $(LIB_R3D_GLX) $(BASE_IMPL) $(GLX_IMPL) $(SO_FLAGS) $(XLIB_LIBS) $(OPENGL_LIBS)
+ 
+ $(BASE_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 	
+ $(GLX_IMPL):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $(@))
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
++	mkdir -p $(dir $(@))
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(XLIB_HEADERS) $(OPENGL_HEADERS)
+ 
+ 
+diff --git a/src/test/Makefile b/src/test/Makefile
+index e8016e1..a89366e 100644
+--- a/src/test/Makefile
++++ b/src/test/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TEST_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TEST_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TEST_CORE))"
+-	@$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TEST_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/testing/Makefile b/src/testing/Makefile
+index 705913d..d048065 100644
+--- a/src/testing/Makefile
++++ b/src/testing/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -8,10 +14,10 @@ all: $(OBJ_TESTING_CORE)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(OPENGL_HEADERS) 
+ 
+ $(OBJ_TESTING_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(OBJ_TESTING_CORE))"
+-	@$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
++	$(LD) -o $(OBJ_TESTING_CORE) -r $(MERGE_FLAGS) $(FILES)  
+ 
+diff --git a/src/testing/mtest/3d/boolean3d.cpp b/src/testing/mtest/3d/boolean3d.cpp
+deleted file mode 100644
+index 636dce1..0000000
+--- a/src/testing/mtest/3d/boolean3d.cpp
++++ /dev/null
+@@ -1,253 +0,0 @@
+-/*
+- * Copyright (C) 2020 Linux Studio Plugins Project <https://lsp-plug.in/>
+- *           (C) 2020 Vladimir Sadovnikov <sadko4u@gmail.com>
+- *
+- * This file is part of lsp-plugins
+- * Created on: 24 дек. 2018 г.
+- *
+- * lsp-plugins is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU Lesser General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * any later version.
+- *
+- * lsp-plugins is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- * GNU Lesser General Public License for more details.
+- *
+- * You should have received a copy of the GNU Lesser General Public License
+- * along with lsp-plugins. If not, see <https://www.gnu.org/licenses/>.
+- */
+-
+-#if 0
+-
+-#include <test/mtest.h>
+-#include <testing/mtest/3d/common/X11Renderer.h>
+-#include <core/files/Model3DFile.h>
+-#include <core/3d/rt_context.h>
+-#include <core/3d/RayTrace3D.h>
+-
+-#include <core/types.h>
+-#include <core/debug.h>
+-#include <core/sugar.h>
+-#include <core/status.h>
+-#include <stdlib.h>
+-#include <errno.h>
+-#include <data/cstorage.h>
+-
+-#include <X11/X.h>
+-#include <X11/Xlib.h>
+-#include <X11/keysymdef.h>
+-#include <GL/gl.h>
+-#include <GL/glx.h>
+-#include <GL/glu.h>
+-#include <sys/poll.h>
+-
+-//#define TEST_DEBUG
+-
+-#ifndef TEST_DEBUG
+-//    #define BREAKPOINT_STEP     -1
+-//    #define BREAKPOINT_STEP     27
+-//    #define BREAKPOINT_STEP     83
+-    #define BREAKPOINT_STEP     215
+-//    #define BREAKPOINT_STEP     0
+-
+-#else /* DEBUG */
+-    #define BREAKPOINT_STEP     0
+-#endif /* DEBUG */
+-
+-MTEST_BEGIN("3d", boolean)
+-
+-    class Renderer: public X11Renderer
+-    {
+-        private:
+-            Scene3D        *pScene;
+-            ssize_t         nTrace;
+-            bool            bDrawMatched;
+-            bool            bDrawIgnored;
+-            bool            bDrawDebug;
+-
+-        public:
+-            explicit Renderer(Scene3D *scene, View3D *view): X11Renderer(view)
+-            {
+-                pScene = scene;
+-                bDrawMatched    = true;
+-                bDrawIgnored    = true;
+-                bDrawDebug      = true;
+-                bDrawNormals    = false;
+-                nTrace          = BREAKPOINT_STEP;
+-
+-                update_view();
+-            }
+-
+-            virtual ~Renderer()
+-            {
+-            }
+-
+-        public:
+-            virtual void on_key_press(const XKeyEvent &ev, KeySym key)
+-            {
+-                switch (key)
+-                {
+-                    case XK_Up:
+-                        nTrace++;
+-                        lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                        update_view();
+-                        break;
+-                    case XK_Down:
+-                        if (nTrace >= 0)
+-                        {
+-                            nTrace--;
+-                            lsp_trace("Set trace breakpoint to %d", int(nTrace));
+-                            update_view();
+-                        }
+-                        break;
+-
+-                    case 'm':
+-                    {
+-                        bDrawMatched = ! bDrawMatched;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'i':
+-                    {
+-                        bDrawIgnored = ! bDrawIgnored;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case 'd':
+-                    {
+-                        bDrawDebug = ! bDrawDebug;
+-                        update_view();
+-                        break;
+-                    }
+-
+-                    case '0': case '1': case '2': case '3': case '4':
+-                    case '5': case '6': case '7': case '8': case '9':
+-                    {
+-                        Object3D *obj = pScene->get_object(key - '0');
+-                        if (obj != NULL)
+-                        {
+-                            obj->set_visible(!obj->is_visible());
+-                            update_view();
+-                        }
+-                        break;
+-                    }
+-                    default:
+-                        X11Renderer::on_key_press(ev, key);
+-                        break;
+-                }
+-            }
+-
+-        protected:
+-            status_t perform_boolean(rt_debug_t *shared)
+-            {
+-                if (pScene->num_objects() <= 0)
+-                    return STATUS_OK;
+-
+-                rt_mesh_t mesh;
+-                mesh.set_debug_context(shared, &shared->trace);
+-
+-                Object3D *obj = pScene->object(0);
+-                status_t res = mesh.init(obj, 0, obj->matrix());
+-                if (res != STATUS_OK)
+-                    return res;
+-
+-                for (size_t i=1, n=pScene->num_objects(); i<n; ++i)
+-                {
+-                    obj = pScene->object(i);
+-                    res = mesh.subtract(obj, i, obj->matrix());
+-                    if (res != STATUS_OK)
+-                        return res;
+-                }
+-
+-                return STATUS_OK;
+-            }
+-
+-            status_t    update_view()
+-            {
+-                v_vertex3d_t v[3];
+-                status_t res = STATUS_OK;
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // List of ignored and matched triangles
+-                rt_debug_t global;
+-                global.breakpoint   = nTrace;
+-                global.step         = 0;
+-
+-                // Perform raytrace
+-                res     = perform_boolean(&global);
+-                if (res == STATUS_BREAKPOINT)
+-                {
+-                    pView->swap(&global.trace);
+-                    res         = STATUS_OK;
+-                }
+-
+-                if (!bDrawDebug)
+-                    pView->clear_all();
+-
+-                if (!pScene->validate())
+-                    return STATUS_BAD_STATE;
+-
+-                // Build final scene from matched and ignored items
+-                if (bDrawIgnored)
+-                {
+-                    for (size_t i=0, m=global.ignored.size(); i < m; ++i)
+-                        pView->add_triangle_1c(global.ignored.at(i), &C_GRAY);
+-                }
+-
+-                if (bDrawMatched)
+-                {
+-                    for (size_t i=0, m=global.matched.size(); i < m; ++i)
+-                    {
+-                        v_triangle3d_t *t = global.matched.at(i);
+-                        v[0].p     = t->p[0];
+-                        v[0].n     = t->n[0];
+-                        v[0].c     = C_RED;
+-
+-                        v[1].p     = t->p[1];
+-                        v[1].n     = t->n[1];
+-                        v[1].c     = C_GREEN;
+-
+-                        v[2].p     = t->p[2];
+-                        v[2].n     = t->n[2];
+-                        v[2].c     = C_BLUE;
+-
+-                        pView->add_triangle(v);
+-                    }
+-                }
+-
+-                global.ignored.flush();
+-                global.matched.flush();
+-
+-                return res;
+-            }
+-    };
+-
+-    MTEST_MAIN
+-    {
+-        const char *scene_file = (argc < 1) ? "res/test/3d/cross.obj" : argv[0];
+-
+-        // Load scene
+-        Scene3D s;
+-        View3D v;
+-        status_t res = Model3DFile::load(&s, scene_file, true);
+-        MTEST_ASSERT_MSG(res == STATUS_OK, "Error loading scene from file %s", scene_file);
+-
+-        // Initialize renderer
+-        Renderer r(&s, &v);
+-        MTEST_ASSERT_MSG(r.init() == STATUS_OK, "Error initializing renderer");
+-        r.run();
+-        r.destroy();
+-
+-        // Destroy scene
+-        s.destroy();
+-    }
+-
+-MTEST_END
+-
+-#endif
+diff --git a/src/testing/mtest/3d/bsp_context.cpp b/src/testing/mtest/3d/bsp_context.cpp
+index de54427..f7b7a34 100644
+--- a/src/testing/mtest/3d/bsp_context.cpp
++++ b/src/testing/mtest/3d/bsp_context.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/testing/mtest/3d/reflections3d.cpp b/src/testing/mtest/3d/reflections3d.cpp
+index e250444..367f86c 100644
+--- a/src/testing/mtest/3d/reflections3d.cpp
++++ b/src/testing/mtest/3d/reflections3d.cpp
+@@ -39,7 +39,7 @@
+ #include <X11/keysymdef.h>
+ #include <GL/gl.h>
+ #include <GL/glx.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ //#define TEST_DEBUG
+ 
+diff --git a/src/ui/Makefile b/src/ui/Makefile
+index 503111d..eb1e4c5 100644
+--- a/src/ui/Makefile
++++ b/src/ui/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= ws tk ctl plugins
+@@ -8,15 +14,15 @@ PACKAGES                = $(OBJ_WS_CORE) $(OBJ_TK_CORE) $(OBJ_CTL_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_UI_CORE): $(FILES) $(SUBDIRS)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_UI_CORE) $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_UI_CORE)
+diff --git a/src/ui/ctl/Makefile b/src/ui/ctl/Makefile
+index 3f727db..692fe9d 100644
+--- a/src/ui/ctl/Makefile
++++ b/src/ui/ctl/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_CTL_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_CTL_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_CTL_CORE) $(SUBDIRS)
+diff --git a/src/ui/plugins/Makefile b/src/ui/plugins/Makefile
+index 8f8db8f..0e6c3d8 100644
+--- a/src/ui/plugins/Makefile
++++ b/src/ui/plugins/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= 
+@@ -6,10 +12,10 @@ SUBDIRS					=
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)  
+ 
+ $(OBJ_PLUGIN_UIS): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_PLUGIN_UIS) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_PLUGIN_UIS) $(SUBDIRS)
+diff --git a/src/ui/tk/Makefile b/src/ui/tk/Makefile
+index 8700f63..cfb4c78 100644
+--- a/src/ui/tk/Makefile
++++ b/src/ui/tk/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ rwildcard				= $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(call rwildcard, , *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+@@ -6,11 +12,11 @@ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@mkdir -p $(dir $@)
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
++	mkdir -p $(dir $@)
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE)
+ 
+ $(OBJ_TK_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
++	$(LD) -o $(OBJ_TK_CORE) $(MERGE_FLAGS) $(PACKAGES) $(FILES)
+ 
+ all: $(OBJ_TK_CORE)
+diff --git a/src/ui/ws/Makefile b/src/ui/ws/Makefile
+index 1109752..b9836d8 100644
+--- a/src/ui/ws/Makefile
++++ b/src/ui/ws/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS					= x11
+@@ -8,15 +14,15 @@ all: $(OBJ_WS_CORE)
+ 
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+ $(OBJ_WS_CORE): $(FILES) $(OBJ_WS_X11_CORE)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
++	$(LD) -o $(OBJ_WS_CORE) $(MERGE_FLAGS) $(PACKAGES) $(OBJ_WS_X11_CORE) $(FILES)
+ 
+ $(OBJ_WS_X11_CORE): $(SUBDIRS)
+diff --git a/src/ui/ws/x11/Makefile b/src/ui/ws/x11/Makefile
+index b99e93d..7bffca3 100644
+--- a/src/ui/ws/x11/Makefile
++++ b/src/ui/ws/x11/Makefile
+@@ -1,3 +1,9 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
+ FILES                   = $(addprefix $(OBJDIR)/, $(patsubst %.cpp, %.o, $(wildcard *.cpp)))
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ INCLUDE                += $(XLIB_HEADERS) $(CAIRO_HEADERS)
+@@ -8,9 +14,9 @@ all: $(OBJ_WS_X11_CORE)
+ 
+ $(OBJ_WS_X11_CORE): $(FILES)
+ 	@echo "  $(LD) $(notdir $(@))"
+-	@$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
++	$(LD) -o $(OBJ_WS_X11_CORE) $(MERGE_FLAGS) -r $(FILES)
+ 
+ $(FILES):
+ 	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
++	$(CXX) -o $(@) -c $(FILE) -fPIC $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) 
+ 
+diff --git a/src/ui/ws/x11/X11Display.cpp b/src/ui/ws/x11/X11Display.cpp
+index d85db51..987e8a9 100644
+--- a/src/ui/ws/x11/X11Display.cpp
++++ b/src/ui/ws/x11/X11Display.cpp
+@@ -23,7 +23,7 @@
+ 
+ #ifdef USE_X11_DISPLAY
+ 
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ 
+@@ -233,7 +233,7 @@ namespace lsp
+                 while (!atomic_cas(&hLock, 0, 1)) { /* Wait */ }
+ 
+                 // Dispatch errors between Displays
+-                for (X11Display *dp = pHandlers; dp != NULL; ++dp)
++                for (X11Display *dp = pHandlers; dp != NULL; dp = dp->pNextHandler)
+                     if (dp->pDisplay == dpy)
+                         dp->handle_error(ev);
+ 
+diff --git a/src/utils/Makefile b/src/utils/Makefile
+index 88b3739..4b4fd2e 100644
+--- a/src/utils/Makefile
++++ b/src/utils/Makefile
+@@ -1,12 +1,24 @@
++# Command-line flag to silence nested $(MAKE).
++MAKE_OPTS              += VERBOSE=$(VERBOSE)
++ifneq ($(VERBOSE),1)
++.SILENT:
++endif
++
++CXX                     = $(HOST_CXX)
++CXXFLAGS                = $(HOST_CXXFLAGS)
++MAKE_OPTS              += CXX=$(HOST_CXX) CXXFLAGS=$(HOST_CXXFLAGS)
++
+ MODULES                 = $(UTL_RESGEN) 
+ FILELIST                = resource_gen.o 
+ FILE                    = $(@:$(OBJDIR)/%.o=%.cpp)
+ SUBDIRS                 =
+-OBJ_FILES               = $(OBJ_CORE) $(OBJ_METADATA)
++OBJ_FILES               = $(HOST_OBJ_CORE) $(HOST_OBJ_METADATA) $(HOST_OBJ_DSP)
+ OBJ_LIBS                = $(PTHREAD_LIBS) $(MATH_LIBS)
+ OBJ_EXTRA               =
+ INCLUDE_EXTRA           =
+ 
++export PKG_CONFIG_SYSROOT_DIR = /
++
+ ifeq ($(BUILD_PLATFORM),BSD)
+   OBJ_LIBS               += $(ICONV_LIBS)
+ endif
+@@ -18,7 +30,7 @@ endif
+ ifeq ($(findstring lv2,$(BUILD_MODULES)),lv2)
+   MODULES                += $(UTL_GENTTL)
+   FILELIST               += lv2_genttl.o
+-  INCLUDE_EXTRA          += $(LV2_HEADERS)
++  INCLUDE_EXTRA          += $(HOST_LV2_HEADERS)
+ endif
+ ifeq ($(findstring vst,$(BUILD_MODULES)),vst)
+   MODULES                += $(UTL_VSTMAKE)
+@@ -44,32 +56,30 @@ target: all
+ # Common rules
+ $(SUBDIRS):
+ 	@echo "Building $@"
+-	@mkdir -p $(OBJDIR)/$(@)
+-	@$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
++	mkdir -p $(OBJDIR)/$(@)
++	$(MAKE) $(MAKE_OPTS) -C $@ $(MAKECMDGOALS) OBJDIR=$(OBJDIR)/$(@)
+ 
+ $(FILES):
+-	@echo "  $(CXX) $(FILE)"
+-	@$(CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
++	@echo "  $(HOST_CXX) $(FILE)"
++	$(HOST_CXX) -o $(@) -c $(FILE) $(CPPFLAGS) -fPIC $(HOST_CXXFLAGS) $(INCLUDE) $(INCLUDE_EXTRA)
+ 
+ # Rules for each utility
+-$(UTL_GENTTL): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENTTL))"
+-	@$(CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
++$(UTL_GENTTL): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENTTL))"
++	$(HOST_CXX) -o $(UTL_GENTTL) $(OBJDIR)/lv2_genttl.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS) $(LV2_LIBS)
+ 	
+-$(UTL_JACKMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_JACKMAKE))"
+-	@$(CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_JACKMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_JACKMAKE))"
++	$(HOST_CXX) -o $(UTL_JACKMAKE) $(OBJDIR)/jack_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_VSTMAKE): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_VSTMAKE))"
+-	@$(CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(EXE_FLAGS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_VSTMAKE): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_VSTMAKE))"
++	$(HOST_CXX) -o $(UTL_VSTMAKE) $(OBJDIR)/vst_genmake.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_GENPHP): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_GENPHP))"
+-	@$(CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
++$(UTL_GENPHP): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_GENPHP))"
++	$(HOST_CXX) -o $(UTL_GENPHP) $(OBJDIR)/gen_php.o $(OBJ_FILES) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+ 	
+-$(UTL_RESGEN): $(FILES) $(SUBDIRS)
+-	@echo "  $(CXX) $(notdir $(UTL_RESGEN))"
+-	@$(CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_DSP) $(OBJ_EXTRA) $(EXE_FLAGS) $(SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+-
+-	
+\ No newline at end of file
++$(UTL_RESGEN): $(OBJ_FILES) $(FILES) $(SUBDIRS)
++	@echo "  $(HOST_CXX) $(notdir $(UTL_RESGEN))"
++	$(HOST_CXX) -o $(UTL_RESGEN) $(OBJDIR)/resource_gen.o $(OBJ_FILES) $(OBJ_EXTRA) $(HOST_EXE_FLAGS) $(HOST_SNDFILE_LIBS) $(DL_LIBS) $(OBJ_LIBS)
+diff --git a/src/utils/jack_genmake.cpp b/src/utils/jack_genmake.cpp
+index 09974b0..3272ad8 100644
+--- a/src/utils/jack_genmake.cpp
++++ b/src/utils/jack_genmake.cpp
+@@ -97,6 +97,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%=%%.cpp)\n");
+@@ -107,11 +112,11 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(EXE_FLAGS) $(DL_LIBS)\n\n");
+ 
+         fprintf(out, "install: $(FILES)\n");
+-        fprintf(out, "\t@$(INSTALL) $(FILES) $(TARGET_PATH)/");
++        fprintf(out, "\t$(INSTALL) $(FILES) $(TARGET_PATH)/");
+ 
+         // Close file
+         fclose(out);
+diff --git a/src/utils/vst_genmake.cpp b/src/utils/vst_genmake.cpp
+index 9eeedeb..f47f783 100644
+--- a/src/utils/vst_genmake.cpp
++++ b/src/utils/vst_genmake.cpp
+@@ -100,6 +100,11 @@ namespace lsp
+         }
+ 
+         fprintf(out, "# Auto generated makefile, do not edit\n\n");
++        fprintf(out, "MAKE_OPTS              += VERBOSE=$(VERBOSE)\n");
++        fprintf(out, "ifneq ($(VERBOSE),1)\n");
++        fprintf(out, ".SILENT:\n");
++        fprintf(out, "endif\n");
++        fprintf(out, "\n");
+ 
+         fprintf(out, "FILES                   = $(patsubst %%.cpp, %%.so, $(wildcard *.cpp))\n");
+         fprintf(out, "FILE                    = $(@:%%.so=%%.cpp)\n");
+@@ -110,8 +115,8 @@ namespace lsp
+         fprintf(out, "all: $(FILES)\n\n");
+ 
+         fprintf(out, "$(FILES):\n");
+-        fprintf(out, "\t@echo \"  $(CXX) $(FILE)\"\n");
+-        fprintf(out, "\t@$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
++        fprintf(out, "\techo \"  $(CXX) $(FILE)\"\n");
++        fprintf(out, "\t$(CXX) -o $(@) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDE) $(FILE) $(SO_FLAGS) $(DL_LIBS)\n\n");
+ 
+         // Close file
+         fclose(out);
+diff --git a/tmp/.gitignore b/tmp/.gitignore
+index 22e8364..d6b7ef3 100644
+--- a/tmp/.gitignore
++++ b/tmp/.gitignore
+@@ -1 +1,2 @@
+-/*
+\ No newline at end of file
++*
++!.gitignore
diff --git a/srcpkgs/lsp-plugins-lv2/template b/srcpkgs/lsp-plugins-lv2/template
new file mode 100644
index 000000000000..fc02794b8dfc
--- /dev/null
+++ b/srcpkgs/lsp-plugins-lv2/template
@@ -0,0 +1,75 @@
+# Template file for 'lsp-plugins-lv2'
+pkgname=lsp-plugins-lv2
+version=1.1.30
+revision=1
+wrksrc=lsp-plugins-${version}
+build_style=gnu-makefile
+make_build_args="VERBOSE=1 PREFIX=/usr"
+make_check_args=$make_build_args
+make_install_target="install install_xdg"
+make_use_env=yes
+hostmakedepends="pkg-config php lv2 libsndfile-devel"
+makedepends="libsndfile-devel libX11-devel libglvnd-devel lv2 cairo-devel
+ ladspa-sdk jack-devel"
+_desc="Collection of free audio plugins"
+short_desc="${_desc} - LV2"
+maintainer="Artur Sinila <freesoftware@logarithmus.dev>"
+license="LGPL-3.0-or-later"
+homepage="https://lsp-plug.in/"
+distfiles="https://github.com/sadko4u/lsp-plugins/archive/refs/tags/${version}.tar.gz"
+checksum=9cf43257729093c240375b3640b1514dff34b092b83b54a5ee68d7e8565c8f80
+
+export SKIP_CC_LD_ARCH=yes
+export HOST_BUILD_ARCH="${XBPS_MACHINE%-*}"
+export HOST_PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
+if [ -n "$CROSS_BUILD" ]; then
+	export BUILD_ARCH="${XBPS_TARGET_MACHINE%-*}"
+	export HOST_CXXFLAGS="$CXXFLAGS_host"
+	export HOST_CXX="$CXX_host"
+	export HOST_LD="$LD_host"
+else
+	export BUILD_ARCH="${XBPS_MACHINE%-*}"
+	export HOST_CXXFLAGS="$BUILD_CXXFLAGS"
+	export HOST_CXX="$BUILD_CXX"
+	export HOST_LD="$BUILD_LD"
+fi
+
+lsp-plugins-jack_package() {
+	short_desc="${_desc} - JACK"
+	pkg_install() {
+		vmove usr/bin
+		vmove usr/lib/lsp-plugins/lsp-plugins-jack-core*
+		vmove usr/lib/lsp-plugins/lsp-plugins-r3d-glx.so
+		vmove usr/share/applications
+		vmove usr/share/desktop-directories
+		vmove usr/share/icons
+		vmove etc/xdg/menus
+	}
+}
+
+lsp-plugins-ladspa_package() {
+	short_desc="${_desc} - LADSPA"
+	pkg_install() {
+		vmove usr/lib/ladspa/lsp-plugins-ladspa.so
+	}
+}
+
+lsp-plugins-vst_package() {
+	short_desc="${_desc} - VST"
+	pkg_install() {
+		vmove usr/lib/vst
+	}
+}
+
+lsp-plugins_package() {
+	short_desc="${_desc} - LV2, JACK, LADSPA, VST"
+	depends="lsp-plugins-lv2 lsp-plugins-jack lsp-plugins-ladspa lsp-plugins-vst"
+	build_style=meta
+}
+
+lsp-plugins-doc_package() {
+	short_desc="${_desc} - documentation"
+	pkg_install() {
+		vmove usr/share/doc
+	}
+}
diff --git a/srcpkgs/lsp-plugins-vst b/srcpkgs/lsp-plugins-vst
new file mode 120000
index 000000000000..6fc2d655292e
--- /dev/null
+++ b/srcpkgs/lsp-plugins-vst
@@ -0,0 +1 @@
+lsp-plugins-lv2
\ No newline at end of file

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (64 preceding siblings ...)
  2021-08-10  2:36 ` [PR PATCH] [Updated] " Logarithmus
@ 2022-04-11 13:16 ` prez
  2022-04-11 13:21 ` Logarithmus
  2022-04-11 13:21 ` [PR PATCH] [Closed]: " Logarithmus
  67 siblings, 0 replies; 69+ messages in thread
From: prez @ 2022-04-11 13:16 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 293 bytes --]

New comment by prez on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#issuecomment-1095037938

Comment:
1.2.0 is out, with a different build process and including the patches for musl. 
Are you going to update your PR or do you want me to take a stab at it?

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (65 preceding siblings ...)
  2022-04-11 13:16 ` prez
@ 2022-04-11 13:21 ` Logarithmus
  2022-04-11 13:21 ` [PR PATCH] [Closed]: " Logarithmus
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2022-04-11 13:21 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 194 bytes --]

New comment by Logarithmus on void-packages repository

https://github.com/void-linux/void-packages/pull/31664#issuecomment-1095045079

Comment:
Unfortunately, I have no time to work on it now.

^ permalink raw reply	[flat|nested] 69+ messages in thread

* Re: [PR PATCH] [Closed]: New package: lsp-plugins-1.1.30
  2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
                   ` (66 preceding siblings ...)
  2022-04-11 13:21 ` Logarithmus
@ 2022-04-11 13:21 ` Logarithmus
  67 siblings, 0 replies; 69+ messages in thread
From: Logarithmus @ 2022-04-11 13:21 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1221 bytes --]

There's a closed pull request on the void-packages repository

New package: lsp-plugins-1.1.30
https://github.com/void-linux/void-packages/pull/31664

Description:
Required by `pulseeffects` compressor, equalizer, delay & loudness compensator effects.
Also used by `easyeffects`, `pulseeffects`' successor 
Continuation of https://github.com/void-linux/void-packages/pull/29932

TODO:
- [ ] wait for https://github.com/sadko4u/lsp-plugins/pull/198
- [ ] implement `VERBOSE` option into `lsp-plugins` Makefiles to save my sanity debugging them
https://github.com/sadko4u/lsp-plugins/pull/200
- [ ] polish & upstream cross build patch https://github.com/sadko4u/lsp-plugins/pull/202
- [x] fix `i686`
- [x] fix `armv6`
- [x] split the package (ladspa, lv2, vst, jack, doc)
- [x] remove parallel check commit 

<!-- Mark items with [x] where applicable -->

#### General
- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me


^ permalink raw reply	[flat|nested] 69+ messages in thread

end of thread, other threads:[~2022-04-11 13:21 UTC | newest]

Thread overview: 69+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-26 15:59 [PR PATCH] New package: lsp-plugins-1.1.30 Logarithmus
2021-06-26 16:43 ` [PR PATCH] [Updated] " Logarithmus
2021-06-26 19:32 ` [PR REVIEW] " paper42
2021-06-26 19:32 ` ericonr
2021-06-26 19:32 ` ericonr
2021-06-27 17:03 ` Logarithmus
2021-06-27 17:05 ` Logarithmus
2021-06-27 17:06 ` Logarithmus
2021-06-27 17:27 ` [PR PATCH] [Updated] " Logarithmus
2021-06-27 18:57 ` Logarithmus
2021-06-27 19:27 ` Logarithmus
2021-07-27 22:53 ` Logarithmus
2021-07-28 18:29 ` Logarithmus
2021-07-28 19:44 ` Logarithmus
2021-07-28 19:48 ` Logarithmus
2021-07-28 19:59 ` Logarithmus
2021-07-28 20:04 ` [PR REVIEW] " paper42
2021-07-28 20:04 ` paper42
2021-07-28 20:04 ` paper42
2021-07-28 20:05 ` paper42
2021-07-28 20:06 ` Logarithmus
2021-07-28 20:08 ` [PR REVIEW] " paper42
2021-07-28 20:10 ` Logarithmus
2021-07-28 20:10 ` Logarithmus
2021-07-28 20:11 ` Logarithmus
2021-07-28 20:11 ` Logarithmus
2021-07-28 20:19 ` [PR REVIEW] " Logarithmus
2021-07-28 20:19 ` Logarithmus
2021-07-28 20:21 ` Logarithmus
2021-07-28 20:33 ` paper42
2021-07-28 20:52 ` [PR PATCH] [Updated] " Logarithmus
2021-07-28 20:57 ` Logarithmus
2021-07-28 21:27 ` [PR REVIEW] " paper42
2021-07-28 22:02 ` [PR PATCH] [Updated] " Logarithmus
2021-07-28 22:31 ` Logarithmus
2021-07-28 23:02 ` Logarithmus
2021-07-31  8:43 ` [PR REVIEW] " paper42
2021-07-31  8:43 ` paper42
2021-07-31  8:43 ` paper42
2021-07-31 10:19 ` Logarithmus
2021-07-31 10:22 ` Logarithmus
2021-07-31 10:32 ` Logarithmus
2021-07-31 10:34 ` Logarithmus
2021-07-31 10:37 ` Logarithmus
2021-07-31 10:38 ` Logarithmus
2021-07-31 10:39 ` Logarithmus
2021-07-31 11:00 ` [PR REVIEW] " paper42
2021-07-31 11:03 ` paper42
2021-07-31 19:59 ` ericonr
2021-07-31 21:35 ` abenson
2021-07-31 21:47 ` Logarithmus
2021-08-01  2:25 ` sgn
2021-08-01 15:45 ` [PR PATCH] [Updated] " Logarithmus
2021-08-01 15:47 ` Logarithmus
2021-08-02  2:34 ` Logarithmus
2021-08-02  3:46 ` Logarithmus
2021-08-02  3:57 ` Logarithmus
2021-08-10  1:26 ` Logarithmus
2021-08-10  1:28 ` Logarithmus
2021-08-10  1:49 ` Logarithmus
2021-08-10  2:09 ` Logarithmus
2021-08-10  2:28 ` [PR REVIEW] " Logarithmus
2021-08-10  2:29 ` Logarithmus
2021-08-10  2:29 ` Logarithmus
2021-08-10  2:31 ` Logarithmus
2021-08-10  2:36 ` [PR PATCH] [Updated] " Logarithmus
2022-04-11 13:16 ` prez
2022-04-11 13:21 ` Logarithmus
2022-04-11 13:21 ` [PR PATCH] [Closed]: " Logarithmus

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).