Update LV2 host

This greatly improves the LV2 host to the point where all
(non-midi) plugins distributed with Ubuntu 18.04 and Fedora
30 are supported.
This commit is contained in:
Leland Lucius 2019-12-17 12:54:30 -06:00
parent be336797b3
commit ccfd2f1c80
43 changed files with 5939 additions and 4191 deletions

View File

@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.15.1 from Makefile.am.
# Makefile.in generated by automake 1.16.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -166,7 +166,8 @@ am__v_at_0 = @
am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src
depcomp = $(SHELL) $(top_srcdir)/autotools/depcomp
am__depfiles_maybe = depfiles
am__maybe_remake_depfiles = depfiles
am__depfiles_remade = ./$(DEPDIR)/audacity.Po
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@ -237,7 +238,7 @@ am__recursive_targets = \
$(RECURSIVE_CLEAN_TARGETS) \
$(am__extra_recursive_targets)
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
cscope distdir dist dist-all distcheck
cscope distdir distdir-am dist dist-all distcheck
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
@ -510,7 +511,6 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
@ -633,8 +633,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@ -701,7 +701,13 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/audacity.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/audacity.Po@am__quote@ # am--include-marker
$(am__depfiles_remade):
@$(MKDIR_P) $(@D)
@echo '# dummy' >$@-t && $(am__mv) $@-t $@
am--depfiles: $(am__depfiles_remade)
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@ -908,7 +914,10 @@ distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
distdir: $(DISTFILES)
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES)
$(am__remove_distdir)
test -d "$(distdir)" || mkdir "$(distdir)"
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@ -1140,7 +1149,7 @@ clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf ./$(DEPDIR)
-rm -f ./$(DEPDIR)/audacity.Po
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-libtool distclean-tags
@ -1189,7 +1198,7 @@ installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-rm -rf ./$(DEPDIR)
-rm -f ./$(DEPDIR)/audacity.Po
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
@ -1212,25 +1221,25 @@ uninstall-am: uninstall-binPROGRAMS uninstall-dist_docDATA \
.MAKE: $(am__recursive_targets) install-am install-strip
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
am--refresh check check-am clean clean-binPROGRAMS \
clean-cscope clean-generic clean-libtool cscope cscopelist-am \
ctags ctags-am dist dist-all dist-bzip2 dist-gzip dist-lzip \
dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \
distclean-compile distclean-generic distclean-libtool \
distclean-tags distcleancheck distdir distuninstallcheck dvi \
dvi-am html html-am info info-am install install-am \
install-binPROGRAMS install-data install-data-am \
install-dist_docDATA install-dist_pkgdataDATA install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-nobase_dist_pkgdataDATA install-pdf install-pdf-am \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs installdirs-am maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \
uninstall-dist_docDATA uninstall-dist_pkgdataDATA \
uninstall-nobase_dist_pkgdataDATA
am--depfiles am--refresh check check-am clean \
clean-binPROGRAMS clean-cscope clean-generic clean-libtool \
cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
distcheck distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distcleancheck distdir \
distuninstallcheck dvi dvi-am html html-am info info-am \
install install-am install-binPROGRAMS install-data \
install-data-am install-dist_docDATA install-dist_pkgdataDATA \
install-dvi install-dvi-am install-exec install-exec-am \
install-html install-html-am install-info install-info-am \
install-man install-nobase_dist_pkgdataDATA install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs installdirs-am \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
uninstall-binPROGRAMS uninstall-dist_docDATA \
uninstall-dist_pkgdataDATA uninstall-nobase_dist_pkgdataDATA
.PRECIOUS: Makefile

248
configure vendored
View File

@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for audacity 2.3.3.
# Generated by GNU Autoconf 2.69 for audacity 2.4.0.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@ -587,8 +587,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='audacity'
PACKAGE_TARNAME='audacity'
PACKAGE_VERSION='2.3.3'
PACKAGE_STRING='audacity 2.3.3'
PACKAGE_VERSION='2.4.0'
PACKAGE_STRING='audacity 2.4.0'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@ -833,7 +833,6 @@ am__nodep
AMDEPBACKSLASH
AMDEP_FALSE
AMDEP_TRUE
am__quote
am__include
DEPDIR
OBJEXT
@ -902,7 +901,6 @@ infodir
docdir
oldincludedir
includedir
runstatedir
localstatedir
sharedstatedir
sysconfdir
@ -921,7 +919,8 @@ PACKAGE_VERSION
PACKAGE_TARNAME
PACKAGE_NAME
PATH_SEPARATOR
SHELL'
SHELL
am__quote'
ac_subst_files=''
ac_user_opts='
enable_option_checking
@ -1086,7 +1085,6 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@ -1339,15 +1337,6 @@ do
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
-runstatedir | --runstatedir | --runstatedi | --runstated \
| --runstate | --runstat | --runsta | --runst | --runs \
| --run | --ru | --r)
ac_prev=runstatedir ;;
-runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
| --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
| --run=* | --ru=* | --r=*)
runstatedir=$ac_optarg ;;
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@ -1485,7 +1474,7 @@ fi
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
libdir localedir mandir runstatedir
libdir localedir mandir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
@ -1598,7 +1587,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures audacity 2.3.3 to adapt to many kinds of systems.
\`configure' configures audacity 2.4.0 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1638,7 +1627,6 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
--runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
@ -1669,7 +1657,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of audacity 2.3.3:";;
short | recursive ) echo "Configuration of audacity 2.4.0:";;
esac
cat <<\_ACEOF
@ -1897,7 +1885,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
audacity configure 2.3.3
audacity configure 2.4.0
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@ -2535,7 +2523,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by audacity $as_me 2.3.3, which was
It was created by audacity $as_me 2.4.0, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@ -2918,7 +2906,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
am__api_version='1.15'
am__api_version='1.16'
# Find a good install program. We prefer a C program (faster),
# so one script is as good as another. But avoid the broken or
@ -3404,7 +3392,7 @@ fi
# Define the identity of the package.
PACKAGE='audacity'
VERSION='2.3.3'
VERSION='2.4.0'
cat >>confdefs.h <<_ACEOF
@ -3434,8 +3422,8 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
# For better backward compatibility. To be removed once Automake 1.9.x
# dies out for good. For more background, see:
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
mkdir_p='$(MKDIR_P)'
# We need awk for the "check" target (and possibly the TAP driver). The
@ -3602,7 +3590,7 @@ END
Aborting the configuration process, to ensure you take notice of the issue.
You can download and install GNU coreutils to get an 'rm' implementation
that behaves properly: <http://www.gnu.org/software/coreutils/>.
that behaves properly: <https://www.gnu.org/software/coreutils/>.
If you want to complete the configuration process using your problematic
'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
@ -3965,45 +3953,45 @@ DEPDIR="${am__leading_dot}deps"
ac_config_commands="$ac_config_commands depfiles"
am_make=${MAKE-make}
cat > confinc << 'END'
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5
$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; }
cat > confinc.mk << 'END'
am__doit:
@echo this is the am__doit target
@echo this is the am__doit target >confinc.out
.PHONY: am__doit
END
# If we don't find an include directive, just comment out the code.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
$as_echo_n "checking for style of include used by $am_make... " >&6; }
am__include="#"
am__quote=
_am_result=none
# First try GNU make style include.
echo "include confinc" > confmf
# Ignore all kinds of additional output from 'make'.
case `$am_make -s -f confmf 2> /dev/null` in #(
*the\ am__doit\ target*)
am__include=include
am__quote=
_am_result=GNU
;;
esac
# Now try BSD make style include.
if test "$am__include" = "#"; then
echo '.include "confinc"' > confmf
case `$am_make -s -f confmf 2> /dev/null` in #(
*the\ am__doit\ target*)
am__include=.include
am__quote="\""
_am_result=BSD
# BSD make does it like this.
echo '.include "confinc.mk" # ignored' > confmf.BSD
# Other make implementations (GNU, Solaris 10, AIX) do it like this.
echo 'include confinc.mk # ignored' > confmf.GNU
_am_result=no
for s in GNU BSD; do
{ echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5
(${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }
case $?:`cat confinc.out 2>/dev/null` in #(
'0:this is the am__doit target') :
case $s in #(
BSD) :
am__include='.include' am__quote='"' ;; #(
*) :
am__include='include' am__quote='' ;;
esac ;; #(
*) :
;;
esac
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
$as_echo "$_am_result" >&6; }
rm -f confinc confmf
esac
if test "$am__include" != "#"; then
_am_result="yes ($s style)"
break
fi
done
rm -f confinc.* confmf.*
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5
$as_echo "${_am_result}" >&6; }
# Check whether --enable-dependency-tracking was given.
if test "${enable_dependency_tracking+set}" = set; then :
@ -22240,12 +22228,12 @@ if test -n "$LV2_CFLAGS"; then
pkg_cv_LV2_CFLAGS="$LV2_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lv2 lilv-0 >= 0.16 suil-0 >= 0.8.2\""; } >&5
($PKG_CONFIG --exists --print-errors "lv2 lilv-0 >= 0.16 suil-0 >= 0.8.2") 2>&5
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lv2 >= 1.16 lilv-0 >= 0.24.4 suil-0 >= 0.10.4\""; } >&5
($PKG_CONFIG --exists --print-errors "lv2 >= 1.16 lilv-0 >= 0.24.4 suil-0 >= 0.10.4") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_LV2_CFLAGS=`$PKG_CONFIG --cflags "lv2 lilv-0 >= 0.16 suil-0 >= 0.8.2" 2>/dev/null`
pkg_cv_LV2_CFLAGS=`$PKG_CONFIG --cflags "lv2 >= 1.16 lilv-0 >= 0.24.4 suil-0 >= 0.10.4" 2>/dev/null`
else
pkg_failed=yes
fi
@ -22256,12 +22244,12 @@ if test -n "$LV2_LIBS"; then
pkg_cv_LV2_LIBS="$LV2_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lv2 lilv-0 >= 0.16 suil-0 >= 0.8.2\""; } >&5
($PKG_CONFIG --exists --print-errors "lv2 lilv-0 >= 0.16 suil-0 >= 0.8.2") 2>&5
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lv2 >= 1.16 lilv-0 >= 0.24.4 suil-0 >= 0.10.4\""; } >&5
($PKG_CONFIG --exists --print-errors "lv2 >= 1.16 lilv-0 >= 0.24.4 suil-0 >= 0.10.4") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_LV2_LIBS=`$PKG_CONFIG --libs "lv2 lilv-0 >= 0.16 suil-0 >= 0.8.2" 2>/dev/null`
pkg_cv_LV2_LIBS=`$PKG_CONFIG --libs "lv2 >= 1.16 lilv-0 >= 0.24.4 suil-0 >= 0.10.4" 2>/dev/null`
else
pkg_failed=yes
fi
@ -22279,9 +22267,9 @@ else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
LV2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "lv2 lilv-0 >= 0.16 suil-0 >= 0.8.2" 2>&1`
LV2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "lv2 >= 1.16 lilv-0 >= 0.24.4 suil-0 >= 0.10.4" 2>&1`
else
LV2_PKG_ERRORS=`$PKG_CONFIG --print-errors "lv2 lilv-0 >= 0.16 suil-0 >= 0.8.2" 2>&1`
LV2_PKG_ERRORS=`$PKG_CONFIG --print-errors "lv2 >= 1.16 lilv-0 >= 0.24.4 suil-0 >= 0.10.4" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
echo "$LV2_PKG_ERRORS" >&5
@ -22299,7 +22287,6 @@ $as_echo "yes" >&6; }
LV2_SYSTEM_AVAILABLE="yes"
fi
if test "$LV2_SYSTEM_AVAILABLE" = "yes"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: LV2 libraries are available as system libraries" >&5
$as_echo "$as_me: LV2 libraries are available as system libraries" >&6;}
@ -23430,8 +23417,10 @@ $as_echo "#define USE_LIBVORBIS 1" >>confdefs.h
if test "$LV2_USE_LOCAL" = yes; then
LV2_CFLAGS='-I$(top_srcdir)/lib-src/lv2/include -I$(top_builddir)/lib-src/lv2/include'
LV2_LIBS='$(top_builddir)/lib-src/lv2/liblv2.a'
LV2_CFLAGS+=' -I$(top_builddir)/lib-src/lv2/build/include'
LV2_CFLAGS+=' -I$(top_builddir)/lib-src/lv2/build/include/lilv-0'
LV2_CFLAGS+=' -I$(top_builddir)/lib-src/lv2/build/include/suil-0'
LV2_LIBS='$(top_builddir)/lib-src/lv2/build/lib/lib*.a'
subdirs="$subdirs lib-src/lv2"
fi
@ -24970,7 +24959,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by audacity $as_me 2.3.3, which was
This file was extended by audacity $as_me 2.4.0, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@ -25036,7 +25025,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
audacity config.status 2.3.3
audacity config.status 2.4.0
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@ -25162,7 +25151,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
# Capture the value of LINGUAS because we need it to compute CATALOGS.
LINGUAS="${LINGUAS-%UNSET%}"
AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"
# The HP-UX ksh and POSIX shell print the target directory to stdout
@ -26273,29 +26262,35 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
# Older Autoconf quotes --file arguments for eval, but not when files
# are listed without --file. Let's play safe and only enable the eval
# if we detect the quoting.
case $CONFIG_FILES in
*\'*) eval set x "$CONFIG_FILES" ;;
*) set x $CONFIG_FILES ;;
esac
# TODO: see whether this extra hack can be removed once we start
# requiring Autoconf 2.70 or later.
case $CONFIG_FILES in #(
*\'*) :
eval set x "$CONFIG_FILES" ;; #(
*) :
set x $CONFIG_FILES ;; #(
*) :
;;
esac
shift
for mf
# Used to flag and report bootstrapping failures.
am_rc=0
for am_mf
do
# Strip MF so we end up with the name of the file.
mf=`echo "$mf" | sed -e 's/:.*$//'`
# Check whether this is an Automake generated Makefile or not.
# We used to match only the files named 'Makefile.in', but
# some people rename them; so instead we look at the file content.
# Grep'ing the first line is not enough: some people post-process
# each Makefile.in and add a new line on top of each file to say so.
# Grep'ing the whole file is not good either: AIX grep has a line
am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'`
# Check whether this is an Automake generated Makefile which includes
# dependency-tracking related rules and includes.
# Grep'ing the whole file directly is not great: AIX grep has a line
# limit of 2048, but all sed's we know have understand at least 4000.
if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
dirpart=`$as_dirname -- "$mf" ||
$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$mf" : 'X\(//\)[^/]' \| \
X"$mf" : 'X\(//\)$' \| \
X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
$as_echo X"$mf" |
sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
|| continue
am_dirpart=`$as_dirname -- "$am_mf" ||
$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$am_mf" : 'X\(//\)[^/]' \| \
X"$am_mf" : 'X\(//\)$' \| \
X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
$as_echo X"$am_mf" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@ -26313,53 +26308,48 @@ $as_echo X"$mf" |
q
}
s/.*/./; q'`
else
continue
fi
# Extract the definition of DEPDIR, am__include, and am__quote
# from the Makefile without running 'make'.
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
test -z "$am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
# simplest approach to changing $(DEPDIR) to its actual value in the
# expansion.
for file in `sed -n "
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
fdir=`$as_dirname -- "$file" ||
$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$file" : 'X\(//\)[^/]' \| \
X"$file" : 'X\(//\)$' \| \
X"$file" : 'X\(/\)' \| . 2>/dev/null ||
$as_echo X"$file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
am_filepart=`$as_basename -- "$am_mf" ||
$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \
X"$am_mf" : 'X\(//\)$' \| \
X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
$as_echo X/"$am_mf" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
/^X\/\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
/^X\/\(\/\).*/{
s//\1/
q
}
s/.*/./; q'`
as_dir=$dirpart/$fdir; as_fn_mkdir_p
# echo "creating $dirpart/$file"
echo '# dummy' > "$dirpart/$file"
done
{ echo "$as_me:$LINENO: cd "$am_dirpart" \
&& sed -e '/# am--include-marker/d' "$am_filepart" \
| $MAKE -f - am--depfiles" >&5
(cd "$am_dirpart" \
&& sed -e '/# am--include-marker/d' "$am_filepart" \
| $MAKE -f - am--depfiles) >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } || am_rc=$?
done
if test $am_rc -ne 0; then
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "Something went wrong bootstrapping makefile fragments
for automatic dependency tracking. Try re-running configure with the
'--disable-dependency-tracking' option to at least be able to build
the package (albeit without support for automatic dependency tracking).
See \`config.log' for more details" "$LINENO" 5; }
fi
{ am_dirpart=; unset am_dirpart;}
{ am_filepart=; unset am_filepart;}
{ am_mf=; unset am_mf;}
{ am_rc=; unset am_rc;}
rm -f conftest-deps.mk
}
;;
"libtool":C)

View File

@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.15.1 from Makefile.am.
# Makefile.in generated by automake 1.16.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -389,7 +389,6 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
@ -422,8 +421,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@ -511,7 +510,10 @@ ctags CTAGS:
cscope cscopelist:
distdir: $(DISTFILES)
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \

View File

@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.15.1 from Makefile.am.
# Makefile.in generated by automake 1.16.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -393,7 +393,6 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
@ -504,8 +503,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@ -697,7 +696,10 @@ ctags CTAGS:
cscope cscopelist:
distdir: $(DISTFILES)
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \

View File

@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.15.1 from Makefile.am.
# Makefile.in generated by automake 1.16.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -189,7 +189,7 @@ am__recursive_targets = \
$(RECURSIVE_CLEAN_TARGETS) \
$(am__extra_recursive_targets)
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
distdir
distdir distdir-am
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
@ -434,7 +434,6 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
@ -984,8 +983,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
$(srcdir)/dist-libsoxr.mk $(srcdir)/dist-libvamp.mk $(srcdir)/dist-portaudio.mk $(am__empty):
@ -1103,7 +1102,10 @@ cscopelist-am: $(am__tagged_files)
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \

View File

@ -168,11 +168,21 @@
/* Begin PBXProject section */
0867D690FE84028FC02AAC07 /* Project object */ = {
isa = PBXProject;
attributes = {
};
buildConfigurationList = 730F235809181A3A00AB638C /* Build configuration list for PBXProject "Ogg" */;
compatibilityVersion = "Xcode 2.4";
developmentRegion = en;
hasScannedForEncodings = 1;
knownRegions = (
en,
Base,
English,
);
mainGroup = 0867D691FE84028FC02AAC07 /* Ogg */;
productRefGroup = 034768DDFF38A45A11DB9C8B /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
8D07F2BC0486CC7A007CD1D0 /* Ogg */,
734FB2E40B18B33E00D561D7 /* libogg (static) */,

View File

@ -524,11 +524,21 @@
/* Begin PBXProject section */
0867D690FE84028FC02AAC07 /* Project object */ = {
isa = PBXProject;
attributes = {
};
buildConfigurationList = 730F23F3091827B200AB638C /* Build configuration list for PBXProject "Vorbis" */;
compatibilityVersion = "Xcode 2.4";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
English,
);
mainGroup = 0867D691FE84028FC02AAC07 /* vorbis */;
productRefGroup = 034768DFFF38A50411DB9C8B /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
730F23A1091827B100AB638C /* Vorbis */,
738835E30B18F870005C7A69 /* libvorbis (static) */,

File diff suppressed because it is too large Load Diff

View File

@ -1,44 +0,0 @@
#!/bin/bash
srcdir=.
while [ $# -gt 0 ]
do
if [[ "$1" =~ --srcdir=.* ]]
then
srcdir=${1#*=}
break
fi
shift
done
function waf
{
pkg=$1
pushd >/dev/null ${pkg}
shift
$(which python python2 | tail -1) waf --prefix="." --include="." $@ build || exit 1
popd >/dev/null
. .buildvars
if [ -e ${pkg}/build/*.a ]
then
mkdir -p obj
pushd obj
ar vx ../${pkg}/build/*.a
ar vq ../liblv2.a *
popd
rm -rf obj
fi
}
[ -e liblv2.a ] && exit 0
waf lv2 --no-plugins
waf serd --static --no-shared --no-utils
waf sord --static --no-shared --no-utils
waf sratom --static --no-shared
waf lilv --static --no-shared --no-utils
waf suil --static --no-shared --no-qt
exit 0

109
lib-src/lv2/configure vendored
View File

@ -1,13 +1,30 @@
#!/bin/bash
# Search for python
python=$(which python python2 python3 | tail -1)
# Define the target build directory
prefix=$(pwd)/build
bypass=
clean=
srcdir=.
while [ $# -gt 0 ]
do
if [[ "$1" =~ --srcdir=.* ]]
then
srcdir=${1#*=}
break
fi
case "${1}" in
--srcdir=*)
srcdir=${1#*=}
;;
--build)
bypass=":"
;;
--clean)
clean="yes"
;;
esac
shift
done
@ -15,75 +32,55 @@ function waf
{
pkg="$1"
shift
mkdir -p ${pkg}
pushd >/dev/null ${pkg}
if [ ! -e "waflib" ]
if [ ! -e "waf" ]
then
cp -a "../${srcdir}/${pkg}"/waflib .
cp -pr "../${srcdir}/${pkg}"/{waf,waflib} .
fi
for f in "../${srcdir}/${pkg}"/*
do
if [ ! -e "${f##*/}" ]
then
ln -s "${f}"
fi
[ ! -e "${f##*/}" ] && ln -s "${f}"
done
$(which python python2 | tail -1) waf --prefix="." --include="." $@ configure || exit 1
popd >/dev/null
export PKG_CONFIG_PATH="${prefix}/lib/pkgconfig"
export LDFLAGS="${LDFLAGS} -ldl -lm"
if [ "${pkg}" == "lv2" ]
common="--prefix=${prefix} --out=build --destdir=/"
if [ "${clean}" = "yes" ]
then
eval $(sed -e '/^VERSION/!d;s/ //g;s/.*VERSION/version/' ${pkg}/wscript)
major=""
lib=""
${python} waf clean ${common} || exit 1
else
eval $(sed -e '/^[A-Z]*_VERSION/!d;s/ //g;s/.*VERSION/version/' ${pkg}/wscript)
major="-${version%%.*}"
lib="-l${pkg}${major}"
${bypass} ${python} waf configure ${common} $@ || exit 1
trap "rm -f .build-timestamp" EXIT
touch .build-timestamp
${python} waf build ${common} $@ || exit 1
if [ -n "$(find . -newer .build-timestamp -type f ! -name compile_commands.json)" ]
then
${python} waf install ${common} $@ || exit 1
fi
rm .build-timestamp
trap - EXIT
fi
cat <<EOF >${pkg}/build/${pkg}${major}.pc
prefix=$(pwd)/${pkg}
exec_prefix=\${prefix}
libdir=\${exec_prefix}/lib
includedir=.
Name: ${pkg}
Version: ${version}
Description: Temporary fake config file
Libs: -L\${libdir} ${lib} -ldl -lm
Cflags: -I\${includedir}/${pkg}${major}
EOF
export PKG_CONFIG_PATH="$(pwd)/${pkg}/build:${PKG_CONFIG_PATH}"
export CFLAGS="-I$(pwd)/${pkg} -I$(pwd)/${pkg}/build ${CFLAGS}"
export LDFLAGS="-L$(pwd)/${pkg}/build ${lib} ${LDFLAGS}"
ln -s ../${pkg}/${pkg} include
popd >/dev/null
}
rm -rf include
mkdir -p include
[ ! -e Makefile ] && ln -s "${srcdir}/Makefile"
[ ! -e build ] && ln -s "${srcdir}/build"
echo >srcdir.mk "srcdir = ${srcdir}"
[ ! -e configure ] && ln -s "${srcdir}/configure"
waf lv2 --no-plugins
waf serd --static --no-shared --no-utils
waf sord --static --no-shared --no-utils
waf sratom --static --no-shared
waf lilv --static --no-shared --no-utils
waf suil --static --no-shared --no-qt
sed -i'' -e "s@suil/lib/suil-0@suil/build@" suil/build/suil_config.h
cat >.buildvars <<EOF
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}"
export CFLAGS="${CFLAGS}"
export LDFLAGS="${LDFLAGS}"
EOF
waf lv2 --no-plugins --no-coverage
waf serd --static --no-shared --no-coverage --no-utils --largefile
waf sord --static --no-shared --no-coverage --no-utils
waf sratom --static --no-shared --no-coverage
waf lilv --static --no-shared --no-coverage --no-utils
waf suil --static --no-shared
exit 0

View File

@ -1,351 +0,0 @@
diff -ruN src.orig/serdnode.c src/serdnode.c
--- src.orig/serdnode.c 1969-12-31 18:00:00.000000000 -0600
+++ src/serdnode.c 2013-10-27 06:02:53.825178800 -0500
@@ -0,0 +1,347 @@
+/*
+ Copyright 2011-2012 David Robillard <http://drobilla.net>
+
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+
+#include "serd_internal.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+#include <math.h>
+#include <float.h>
+
+#ifdef _WIN32
+# define isnan(x) _isnan(x)
+# define isinf(x) (!_finite(x))
+#endif
+
+SERD_API
+SerdNode
+serd_node_from_string(SerdType type, const uint8_t* buf)
+{
+ if (!buf) {
+ return SERD_NODE_NULL;
+ }
+
+ uint32_t flags = 0;
+ size_t buf_n_bytes = 0;
+ const size_t buf_n_chars = serd_strlen(buf, &buf_n_bytes, &flags);
+ SerdNode ret = { buf, buf_n_bytes, buf_n_chars, flags, type };
+ return ret;
+}
+
+SERD_API
+SerdNode
+serd_node_copy(const SerdNode* node)
+{
+ if (!node || !node->buf) {
+ return SERD_NODE_NULL;
+ }
+
+ SerdNode copy = *node;
+ uint8_t* buf = (uint8_t*)malloc(copy.n_bytes + 1);
+ memcpy(buf, node->buf, copy.n_bytes + 1);
+ copy.buf = buf;
+ return copy;
+}
+
+SERD_API
+bool
+serd_node_equals(const SerdNode* a, const SerdNode* b)
+{
+ return (a == b)
+ || (a->type == b->type
+ && a->n_bytes == b->n_bytes
+ && a->n_chars == b->n_chars
+ && ((a->buf == b->buf) || !memcmp((const char*)a->buf,
+ (const char*)b->buf,
+ a->n_bytes + 1)));
+}
+
+static size_t
+serd_uri_string_length(const SerdURI* uri)
+{
+ size_t len = uri->path_base.len;
+
+#define ADD_LEN(field, n_delims) \
+ if ((field).len) { len += (field).len + (n_delims); }
+
+ ADD_LEN(uri->path, 1); // + possible leading `/'
+ ADD_LEN(uri->scheme, 1); // + trailing `:'
+ ADD_LEN(uri->authority, 2); // + leading `//'
+ ADD_LEN(uri->query, 1); // + leading `?'
+ ADD_LEN(uri->fragment, 1); // + leading `#'
+
+ return len + 2; // + 2 for authority `//'
+}
+
+static size_t
+string_sink(const void* buf, size_t len, void* stream)
+{
+ uint8_t** ptr = (uint8_t**)stream;
+ memcpy(*ptr, buf, len);
+ *ptr += len;
+ return len;
+}
+
+SERD_API
+SerdNode
+serd_node_new_uri_from_node(const SerdNode* uri_node,
+ const SerdURI* base,
+ SerdURI* out)
+{
+ return (uri_node->type == SERD_URI)
+ ? serd_node_new_uri_from_string(uri_node->buf, base, out)
+ : SERD_NODE_NULL;
+}
+
+SERD_API
+SerdNode
+serd_node_new_uri_from_string(const uint8_t* str,
+ const SerdURI* base,
+ SerdURI* out)
+{
+ if (!str || str[0] == '\0') {
+ return serd_node_new_uri(base, NULL, out); // Empty URI => Base URI
+ }
+ SerdURI uri;
+ serd_uri_parse(str, &uri);
+ return serd_node_new_uri(&uri, base, out); // Resolve/Serialise
+}
+
+static inline bool
+is_uri_path_char(const uint8_t c)
+{
+ if (is_alpha(c) || is_digit(c)) {
+ return true;
+ }
+ switch (c) {
+ case '-': case '.': case '_': case '~': // unreserved
+ case ':': case '@': // pchar
+ case '/': // separator
+ // sub-delims
+ case '!': case '$': case '&': case '\'': case '(': case ')':
+ case '*': case '+': case ',': case ';': case '=':
+ return true;
+ default:
+ return false;
+ }
+}
+
+SERD_API
+SerdNode
+serd_node_new_file_uri(const uint8_t* path,
+ const uint8_t* hostname,
+ SerdURI* out,
+ bool escape)
+{
+ const size_t path_len = strlen((const char*)path);
+ const size_t hostname_len = hostname ? strlen((const char*)hostname) : 0;
+ const bool evil = is_windows_path(path);
+ size_t uri_len = 0;
+ uint8_t* uri = NULL;
+
+ if (path[0] == '/' || is_windows_path(path)) {
+ uri_len = strlen("file://") + hostname_len + evil;
+ uri = (uint8_t*)malloc(uri_len + 1);
+ snprintf((char*)uri, uri_len + 1, "file://%s%s",
+ hostname ? (const char*)hostname : "",
+ evil ? "/" : "");
+ }
+
+ SerdChunk chunk = { uri, uri_len };
+ for (size_t i = 0; i < path_len; ++i) {
+ if (evil && path[i] == '\\') {
+ serd_chunk_sink("/", 1, &chunk);
+ } else if (path[i] == '%') {
+ serd_chunk_sink("%%", 2, &chunk);
+ } else if (!escape || is_uri_path_char(path[i])) {
+ serd_chunk_sink(path + i, 1, &chunk);
+ } else {
+ char escape_str[4] = { '%', 0, 0, 0 };
+ snprintf(escape_str + 1, sizeof(escape_str) - 1, "%X", path[i]);
+ serd_chunk_sink(escape_str, 3, &chunk);
+ }
+ }
+ serd_chunk_sink_finish(&chunk);
+
+ if (out) {
+ serd_uri_parse(chunk.buf, out);
+ }
+
+ return serd_node_from_string(SERD_URI, chunk.buf);
+}
+
+SERD_API
+SerdNode
+serd_node_new_uri(const SerdURI* uri, const SerdURI* base, SerdURI* out)
+{
+ SerdURI abs_uri = *uri;
+ if (base) {
+ serd_uri_resolve(uri, base, &abs_uri);
+ }
+
+ const size_t len = serd_uri_string_length(&abs_uri);
+ uint8_t* buf = (uint8_t*)malloc(len + 1);
+
+ SerdNode node = { buf, len, len, 0, SERD_URI }; // FIXME: UTF-8
+
+ uint8_t* ptr = buf;
+ const size_t actual_len = serd_uri_serialise(&abs_uri, string_sink, &ptr);
+
+ buf[actual_len] = '\0';
+ node.n_bytes = actual_len;
+ node.n_chars = actual_len;
+
+ if (out) {
+ serd_uri_parse(buf, out); // TODO: cleverly avoid double parse
+ }
+
+ return node;
+}
+
+SERD_API
+SerdNode
+serd_node_new_decimal(double d, unsigned frac_digits)
+{
+ if (isnan(d) || isinf(d)) {
+ return SERD_NODE_NULL;
+ }
+
+ const double abs_d = fabs(d);
+ const unsigned int_digits = (unsigned)fmax(1.0, ceil(log10(abs_d + 1)));
+ char* buf = (char*)calloc(int_digits + frac_digits + 3, 1);
+ SerdNode node = { (const uint8_t*)buf, 0, 0, 0, SERD_LITERAL };
+ const double int_part = floor(abs_d);
+
+ // Point s to decimal point location
+ char* s = buf + int_digits;
+ if (d < 0.0) {
+ *buf = '-';
+ ++s;
+ }
+
+ // Write integer part (right to left)
+ char* t = s - 1;
+ uint64_t dec = (uint64_t)int_part;
+ do {
+ *t-- = '0' + (dec % 10);
+ } while ((dec /= 10) > 0);
+
+ *s++ = '.';
+
+ // Write fractional part (right to left)
+ double frac_part = fabs(d - int_part);
+ if (frac_part < DBL_EPSILON) {
+ *s++ = '0';
+ node.n_bytes = node.n_chars = (s - buf);
+ } else {
+ uint64_t frac = frac_part * pow(10.0, (int)frac_digits) + 0.5;
+ s += frac_digits - 1;
+ unsigned i = 0;
+
+ // Skip trailing zeros
+ for (; i < frac_digits - 1 && !(frac % 10); ++i, --s, frac /= 10) {}
+
+ node.n_bytes = node.n_chars = (s - buf) + 1;
+
+ // Write digits from last trailing zero to decimal point
+ for (; i < frac_digits; ++i) {
+ *s-- = '0' + (frac % 10);
+ frac /= 10;
+ }
+ }
+
+ return node;
+}
+
+SERD_API
+SerdNode
+serd_node_new_integer(int64_t i)
+{
+ int64_t abs_i = (i < 0) ? -i : i;
+ const unsigned digits = fmax(1.0, ceil(log10((double)abs_i + 1)));
+ char* buf = (char*)calloc(digits + 2, 1);
+ SerdNode node = { (const uint8_t*)buf, 0, 0, 0, SERD_LITERAL };
+
+ // Point s to the end
+ char* s = buf + digits - 1;
+ if (i < 0) {
+ *buf = '-';
+ ++s;
+ }
+
+ node.n_bytes = node.n_chars = (s - buf) + 1;
+
+ // Write integer part (right to left)
+ do {
+ *s-- = '0' + (abs_i % 10);
+ } while ((abs_i /= 10) > 0);
+
+ return node;
+}
+
+/**
+ Base64 encoding table.
+ @see <a href="http://tools.ietf.org/html/rfc3548#section-3">RFC3986 S3</a>.
+*/
+static const uint8_t b64_map[] =
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+
+/**
+ Encode 3 raw bytes to 4 base64 characters.
+*/
+static inline void
+encode_chunk(uint8_t out[4], const uint8_t in[3], size_t n_in)
+{
+ out[0] = b64_map[in[0] >> 2];
+ out[1] = b64_map[((in[0] & 0x03) << 4) | ((in[1] & 0xF0) >> 4)];
+ out[2] = ((n_in > 1)
+ ? (b64_map[((in[1] & 0x0F) << 2) | ((in[2] & 0xC0) >> 6)])
+ : (uint8_t)'=');
+ out[3] = ((n_in > 2) ? b64_map[in[2] & 0x3F] : (uint8_t)'=');
+}
+
+SERD_API
+SerdNode
+serd_node_new_blob(const void* buf, size_t size, bool wrap_lines)
+{
+ const size_t len = ((size + 2) / 3) * 4 + (wrap_lines ? (size / 57) : 0);
+ uint8_t* str = (uint8_t*)calloc(1, len + 2);
+ SerdNode node = { str, len, len, 0, SERD_LITERAL };
+ for (size_t i = 0, j = 0; i < size; i += 3, j += 4) {
+ uint8_t in[4] = { 0, 0, 0, 0 };
+ size_t n_in = MIN(3, size - i);
+ memcpy(in, (const uint8_t*)buf + i, n_in);
+
+ if (wrap_lines && i > 0 && (i % 57) == 0) {
+ str[j++] = '\n';
+ node.flags |= SERD_HAS_NEWLINE;
+ }
+
+ encode_chunk(str + j, in, n_in);
+ }
+ return node;
+}
+
+SERD_API
+void
+serd_node_free(SerdNode* node)
+{
+ if (node->buf) {
+ free((uint8_t*)node->buf);
+ node->buf = NULL;
+ }
+}

View File

@ -1,15 +1,20 @@
#!/bin/sh
set -e
for dir in $(find . -type f -name waf); do
pushd "${dir%/*}"
./waf --help > /dev/null
mv .waf-*/* .
sed -i '/^#==>$/,$d' waf
rmdir .waf-*
find waflib -name "*.pyc" -delete
popd
for waf in $(find . -type f -name waf); do
if grep -q '^#==>$' "${waf}"
then
pushd "${waf%/*}"
python3 ./waf --help > /dev/null
if [ -e .waf* ]
then
mv .waf*/* .
sed -i '/^#==>$/,$d' waf
rmdir .waf*
fi
find waflib -name "*.pyc" -o -name "__pycache__" | xargs rm -rf
popd
fi
done
#find . -name waf | xargs svn propset svn:mime-type "text/x-python"
echo "All waf scripts extracted successfully."

View File

@ -1,24 +0,0 @@
--- lilv/src/orig_lilv_internal.h 2012-11-23 00:00:15.000000000 -0600
+++ lilv/src/lilv_internal.h 2013-10-27 05:18:03.970327900 -0500
@@ -30,7 +30,6 @@
# include <windows.h>
# define dlopen(path, flags) LoadLibrary(path)
# define dlclose(lib) FreeLibrary((HMODULE)lib)
-# define dlsym GetProcAddress
# ifdef _MSC_VER
# define __func__ __FUNCTION__
# define INFINITY DBL_MAX + DBL_MAX
@@ -363,9 +362,13 @@
static inline VoidFunc
lilv_dlfunc(void* handle, const char* symbol)
{
+#ifdef _WIN32
+ return (VoidFunc)GetProcAddress((HMODULE)handle, symbol);
+#else
typedef VoidFunc (*VoidFuncGetter)(void*, const char*);
VoidFuncGetter dlfunc = (VoidFuncGetter)dlsym;
return dlfunc(handle, symbol);
+#endif
}
#ifdef LILV_DYN_MANIFEST

View File

@ -1,7 +1,6 @@
dnl Please increment the serial number below whenever you alter this macro
dnl for the benefit of automatic macro update systems
# audacity_checklib_lv2.m4 serial 2
# audacity_checklib_lv2.m4 serial 3
AC_DEFUN([AUDACITY_CHECKLIB_LV2], [
AC_ARG_WITH(lv2,
@ -12,11 +11,10 @@ AC_DEFUN([AUDACITY_CHECKLIB_LV2], [
dnl see if lv2 is installed on the system
PKG_CHECK_MODULES(LV2, [lv2 lilv-0 >= 0.16 suil-0 >= 0.8.2],
PKG_CHECK_MODULES(LV2, [lv2 >= 1.16 lilv-0 >= 0.24.4 suil-0 >= 0.10.4],
LV2_SYSTEM_AVAILABLE="yes",
LV2_SYSTEM_AVAILABLE="no")
if test "$LV2_SYSTEM_AVAILABLE" = "yes"; then
AC_MSG_NOTICE([LV2 libraries are available as system libraries])
else
@ -39,8 +37,10 @@ AC_DEFUN([AUDACITY_CHECKLIB_LV2], [
AC_DEFUN([AUDACITY_CONFIG_LV2], [
if test "$LV2_USE_LOCAL" = yes; then
LV2_CFLAGS='-I$(top_srcdir)/lib-src/lv2/include -I$(top_builddir)/lib-src/lv2/include'
LV2_LIBS='$(top_builddir)/lib-src/lv2/liblv2.a'
LV2_CFLAGS+=' -I$(top_builddir)/lib-src/lv2/build/include'
LV2_CFLAGS+=' -I$(top_builddir)/lib-src/lv2/build/include/lilv-0'
LV2_CFLAGS+=' -I$(top_builddir)/lib-src/lv2/build/include/suil-0'
LV2_LIBS='$(top_builddir)/lib-src/lv2/build/lib/lib*.a'
AC_CONFIG_SUBDIRS([lib-src/lv2])
fi

View File

@ -498,17 +498,6 @@
2840CF860AEB83DB00F49FC3 /* ExportMP2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2840CF840AEB83DB00F49FC3 /* ExportMP2.cpp */; };
2840CFA80AEB883500F49FC3 /* libtwolame.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2840CF220AEB803C00F49FC3 /* libtwolame.a */; };
28456AC20A2C180E00C23C1E /* ThemePrefs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 28456AC00A2C180E00C23C1E /* ThemePrefs.cpp */; };
284750541AD4EB84000AD751 /* common.h in Headers */ = {isa = PBXBuildFile; fileRef = 2847504D1AD4EB84000AD751 /* common.h */; };
284750551AD4EB84000AD751 /* digest.c in Sources */ = {isa = PBXBuildFile; fileRef = 2847504E1AD4EB84000AD751 /* digest.c */; };
284750561AD4EB84000AD751 /* digest.h in Headers */ = {isa = PBXBuildFile; fileRef = 2847504F1AD4EB84000AD751 /* digest.h */; };
284750571AD4EB84000AD751 /* hash.c in Sources */ = {isa = PBXBuildFile; fileRef = 284750501AD4EB84000AD751 /* hash.c */; };
284750581AD4EB84000AD751 /* hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 284750511AD4EB84000AD751 /* hash.h */; };
284750591AD4EB84000AD751 /* tree.c in Sources */ = {isa = PBXBuildFile; fileRef = 284750521AD4EB84000AD751 /* tree.c */; };
2847505A1AD4EB84000AD751 /* tree.h in Headers */ = {isa = PBXBuildFile; fileRef = 284750531AD4EB84000AD751 /* tree.h */; };
2847505E1AD4EBE1000AD751 /* host.c in Sources */ = {isa = PBXBuildFile; fileRef = 2847505B1AD4EBE1000AD751 /* host.c */; };
2847505F1AD4EBE1000AD751 /* suil_instance.c in Sources */ = {isa = PBXBuildFile; fileRef = 2847505C1AD4EBE1000AD751 /* suil_instance.c */; };
284750601AD4EBE1000AD751 /* suil_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2847505D1AD4EBE1000AD751 /* suil_internal.h */; };
284750621AD4EC28000AD751 /* suil.h in Headers */ = {isa = PBXBuildFile; fileRef = 284750611AD4EC28000AD751 /* suil.h */; };
2849A42017F8BEC2005C653F /* KeyView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2849A41E17F8BEC2005C653F /* KeyView.cpp */; };
2849B4620A7444BE00ECF12D /* Dependencies.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2849B4600A7444BE00ECF12D /* Dependencies.cpp */; };
284A7B920F31571C001D7A67 /* nyx.c in Sources */ = {isa = PBXBuildFile; fileRef = 284A7B8F0F31571B001D7A67 /* nyx.c */; };
@ -742,33 +731,6 @@
2860BA240E0F0D8600A13878 /* SoundActivatedRecord.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2860BA200E0F0D8600A13878 /* SoundActivatedRecord.cpp */; };
2860BA250E0F0D8600A13878 /* TimerRecordDialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2860BA220E0F0D8600A13878 /* TimerRecordDialog.cpp */; };
2860BA280E0F0DD800A13878 /* ExportFFmpeg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2860BA260E0F0DD800A13878 /* ExportFFmpeg.cpp */; };
286229C3181CE51800E1AD1A /* lilv.h in Headers */ = {isa = PBXBuildFile; fileRef = 286229B1181CE51800E1AD1A /* lilv.h */; };
286229C4181CE51800E1AD1A /* collections.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229B2181CE51800E1AD1A /* collections.c */; };
286229C5181CE51800E1AD1A /* instance.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229B3181CE51800E1AD1A /* instance.c */; };
286229C6181CE51800E1AD1A /* lib.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229B4181CE51800E1AD1A /* lib.c */; };
286229C7181CE51800E1AD1A /* lilv_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 286229B5181CE51800E1AD1A /* lilv_internal.h */; };
286229C8181CE51800E1AD1A /* node.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229B6181CE51800E1AD1A /* node.c */; };
286229C9181CE51800E1AD1A /* plugin.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229B7181CE51800E1AD1A /* plugin.c */; };
286229CA181CE51800E1AD1A /* pluginclass.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229B8181CE51800E1AD1A /* pluginclass.c */; };
286229CB181CE51800E1AD1A /* port.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229B9181CE51800E1AD1A /* port.c */; };
286229CC181CE51800E1AD1A /* query.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229BA181CE51800E1AD1A /* query.c */; };
286229CD181CE51800E1AD1A /* scalepoint.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229BB181CE51800E1AD1A /* scalepoint.c */; };
286229CE181CE51800E1AD1A /* state.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229BC181CE51800E1AD1A /* state.c */; };
286229CF181CE51800E1AD1A /* ui.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229BD181CE51800E1AD1A /* ui.c */; };
286229D0181CE51800E1AD1A /* util.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229BE181CE51800E1AD1A /* util.c */; };
286229D1181CE51800E1AD1A /* world.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229BF181CE51800E1AD1A /* world.c */; };
286229DD181CE5EC00E1AD1A /* serd.h in Headers */ = {isa = PBXBuildFile; fileRef = 286229D5181CE5EC00E1AD1A /* serd.h */; };
286229DE181CE5EC00E1AD1A /* env.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229D6181CE5EC00E1AD1A /* env.c */; };
286229DF181CE5EC00E1AD1A /* node.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229D7181CE5EC00E1AD1A /* node.c */; };
286229E0181CE5EC00E1AD1A /* reader.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229D8181CE5EC00E1AD1A /* reader.c */; };
286229E1181CE5EC00E1AD1A /* serd_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 286229D9181CE5EC00E1AD1A /* serd_internal.h */; };
286229E2181CE5EC00E1AD1A /* string.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229DA181CE5EC00E1AD1A /* string.c */; };
286229E3181CE5EC00E1AD1A /* uri.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229DB181CE5EC00E1AD1A /* uri.c */; };
286229E4181CE5EC00E1AD1A /* writer.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229DC181CE5EC00E1AD1A /* writer.c */; };
286229E9181CE62A00E1AD1A /* sord.h in Headers */ = {isa = PBXBuildFile; fileRef = 286229E5181CE62A00E1AD1A /* sord.h */; };
286229EA181CE62A00E1AD1A /* sord_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 286229E6181CE62A00E1AD1A /* sord_internal.h */; };
286229EB181CE62A00E1AD1A /* sord.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229E7181CE62A00E1AD1A /* sord.c */; };
286229EC181CE62A00E1AD1A /* syntax.c in Sources */ = {isa = PBXBuildFile; fileRef = 286229E8181CE62A00E1AD1A /* syntax.c */; };
28624C0F181CE65700E1AD1A /* sratom.h in Headers */ = {isa = PBXBuildFile; fileRef = 286243A0181CE65500E1AD1A /* sratom.h */; };
28624C10181CE65700E1AD1A /* sratom.c in Sources */ = {isa = PBXBuildFile; fileRef = 286243A1181CE65500E1AD1A /* sratom.c */; };
2872DFEA1B5EEC15004385B1 /* hy.po in Sources */ = {isa = PBXBuildFile; fileRef = 28ECC1911A66CC5000EECC53 /* hy.po */; };
@ -892,6 +854,55 @@
28A96DC10E28642200F3CE01 /* mfmidi.h in Headers */ = {isa = PBXBuildFile; fileRef = 28F3A3FF0E28289500729866 /* mfmidi.h */; };
28A96DC20E28642300F3CE01 /* strparse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 28F3A4000E28289500729866 /* strparse.cpp */; };
28A96DC30E28642300F3CE01 /* strparse.h in Headers */ = {isa = PBXBuildFile; fileRef = 28F3A4010E28289500729866 /* strparse.h */; };
28AF132623A82F680084A82E /* sord_test.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF131723A82F660084A82E /* sord_test.c */; };
28AF132723A82F680084A82E /* sordi.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF131823A82F660084A82E /* sordi.c */; };
28AF132823A82F680084A82E /* sord_validate.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF131923A82F660084A82E /* sord_validate.c */; };
28AF132923A82F680084A82E /* sordmm_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 28AF131A23A82F670084A82E /* sordmm_test.cpp */; };
28AF132A23A82F680084A82E /* sord.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF131B23A82F670084A82E /* sord.c */; };
28AF132B23A82F680084A82E /* btree.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF131D23A82F670084A82E /* btree.c */; };
28AF132C23A82F680084A82E /* digest.h in Headers */ = {isa = PBXBuildFile; fileRef = 28AF131E23A82F670084A82E /* digest.h */; };
28AF132D23A82F680084A82E /* hash.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF131F23A82F670084A82E /* hash.c */; };
28AF132E23A82F680084A82E /* btree.h in Headers */ = {isa = PBXBuildFile; fileRef = 28AF132023A82F670084A82E /* btree.h */; };
28AF132F23A82F680084A82E /* common.h in Headers */ = {isa = PBXBuildFile; fileRef = 28AF132123A82F670084A82E /* common.h */; };
28AF133023A82F680084A82E /* digest.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF132223A82F670084A82E /* digest.c */; };
28AF133123A82F680084A82E /* hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 28AF132323A82F670084A82E /* hash.h */; };
28AF133223A82F680084A82E /* syntax.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF132423A82F670084A82E /* syntax.c */; };
28AF133323A82F680084A82E /* sord_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 28AF132523A82F670084A82E /* sord_internal.h */; };
28AF133F23A830120084A82E /* reader.h in Headers */ = {isa = PBXBuildFile; fileRef = 28AF133423A830100084A82E /* reader.h */; };
28AF134023A830120084A82E /* uri.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF133523A830100084A82E /* uri.c */; };
28AF134123A830120084A82E /* env.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF133623A830100084A82E /* env.c */; };
28AF134223A830120084A82E /* string.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF133723A830100084A82E /* string.c */; };
28AF134323A830120084A82E /* n3.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF133823A830100084A82E /* n3.c */; };
28AF134423A830120084A82E /* writer.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF133923A830110084A82E /* writer.c */; };
28AF134523A830120084A82E /* serd_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 28AF133A23A830110084A82E /* serd_internal.h */; };
28AF134623A830120084A82E /* serdi.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF133B23A830110084A82E /* serdi.c */; };
28AF134723A830120084A82E /* reader.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF133C23A830110084A82E /* reader.c */; };
28AF134823A830120084A82E /* node.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF133D23A830110084A82E /* node.c */; };
28AF134923A830120084A82E /* byte_source.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF133E23A830120084A82E /* byte_source.c */; };
28AF135C23A830310084A82E /* lib.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF134A23A8302E0084A82E /* lib.c */; };
28AF135D23A830310084A82E /* query.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF134B23A8302E0084A82E /* query.c */; };
28AF135E23A830310084A82E /* util.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF134C23A8302E0084A82E /* util.c */; };
28AF135F23A830310084A82E /* plugin.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF134D23A8302E0084A82E /* plugin.c */; };
28AF136023A830310084A82E /* port.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF134E23A8302F0084A82E /* port.c */; };
28AF136123A830310084A82E /* lilv_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 28AF134F23A8302F0084A82E /* lilv_internal.h */; };
28AF136223A830310084A82E /* scalepoint.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF135023A8302F0084A82E /* scalepoint.c */; };
28AF136323A830310084A82E /* tree.h in Headers */ = {isa = PBXBuildFile; fileRef = 28AF135223A8302F0084A82E /* tree.h */; };
28AF136423A830310084A82E /* common.h in Headers */ = {isa = PBXBuildFile; fileRef = 28AF135323A8302F0084A82E /* common.h */; };
28AF136523A830310084A82E /* tree.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF135423A8302F0084A82E /* tree.c */; };
28AF136623A830310084A82E /* pluginclass.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF135523A8302F0084A82E /* pluginclass.c */; };
28AF136723A830310084A82E /* node.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF135623A830300084A82E /* node.c */; };
28AF136823A830310084A82E /* world.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF135723A830300084A82E /* world.c */; };
28AF136923A830310084A82E /* ui.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF135823A830300084A82E /* ui.c */; };
28AF136A23A830310084A82E /* state.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF135923A830300084A82E /* state.c */; };
28AF136B23A830310084A82E /* collections.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF135A23A830300084A82E /* collections.c */; };
28AF136C23A830310084A82E /* instance.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF135B23A830310084A82E /* instance.c */; };
28AF136E23A8306B0084A82E /* sord.h in Headers */ = {isa = PBXBuildFile; fileRef = 28AF136D23A8306B0084A82E /* sord.h */; };
28AF137023A8307E0084A82E /* serd.h in Headers */ = {isa = PBXBuildFile; fileRef = 28AF136F23A8307E0084A82E /* serd.h */; };
28AF137223A830950084A82E /* lilv.h in Headers */ = {isa = PBXBuildFile; fileRef = 28AF137123A830950084A82E /* lilv.h */; };
28AF137723A831080084A82E /* suil_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 28AF137323A831070084A82E /* suil_internal.h */; };
28AF137823A831080084A82E /* host.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF137423A831070084A82E /* host.c */; };
28AF137923A831080084A82E /* instance.c in Sources */ = {isa = PBXBuildFile; fileRef = 28AF137523A831070084A82E /* instance.c */; };
28AF137A23A831080084A82E /* suil.h in Headers */ = {isa = PBXBuildFile; fileRef = 28AF137623A831070084A82E /* suil.h */; };
28B97B890FBF771A0076CF28 /* VSTEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 28B97B850FBF771A0076CF28 /* VSTEffect.cpp */; };
28BB98051A15BE6800D1CC80 /* NoiseReduction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 28BB98031A15BE6800D1CC80 /* NoiseReduction.cpp */; };
28BD8AB1101DF4C700686679 /* BatchEvalCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 28BD8AA9101DF4C600686679 /* BatchEvalCommand.cpp */; };
@ -2392,17 +2403,6 @@
2844163A1B82D6BC0000574D /* WaveTrackLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WaveTrackLocation.h; sourceTree = "<group>"; };
28456AC00A2C180E00C23C1E /* ThemePrefs.cpp */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 3; lastKnownFileType = sourcecode.cpp.cpp; path = ThemePrefs.cpp; sourceTree = "<group>"; tabWidth = 3; };
28456AC10A2C180E00C23C1E /* ThemePrefs.h */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 3; lastKnownFileType = sourcecode.c.h; path = ThemePrefs.h; sourceTree = "<group>"; tabWidth = 3; };
2847504D1AD4EB84000AD751 /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = common.h; path = lv2/sord/src/zix/common.h; sourceTree = "<group>"; };
2847504E1AD4EB84000AD751 /* digest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = digest.c; path = lv2/sord/src/zix/digest.c; sourceTree = "<group>"; };
2847504F1AD4EB84000AD751 /* digest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = digest.h; path = lv2/sord/src/zix/digest.h; sourceTree = "<group>"; };
284750501AD4EB84000AD751 /* hash.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = hash.c; path = lv2/sord/src/zix/hash.c; sourceTree = "<group>"; };
284750511AD4EB84000AD751 /* hash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = hash.h; path = lv2/sord/src/zix/hash.h; sourceTree = "<group>"; };
284750521AD4EB84000AD751 /* tree.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tree.c; path = lv2/sord/src/zix/tree.c; sourceTree = "<group>"; };
284750531AD4EB84000AD751 /* tree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tree.h; path = lv2/sord/src/zix/tree.h; sourceTree = "<group>"; };
2847505B1AD4EBE1000AD751 /* host.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = host.c; path = lv2/suil/src/host.c; sourceTree = "<group>"; };
2847505C1AD4EBE1000AD751 /* suil_instance.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = suil_instance.c; path = lv2/suil/src/suil_instance.c; sourceTree = "<group>"; };
2847505D1AD4EBE1000AD751 /* suil_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = suil_internal.h; path = lv2/suil/src/suil_internal.h; sourceTree = "<group>"; };
284750611AD4EC28000AD751 /* suil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = suil.h; path = lv2/suil/suil/suil.h; sourceTree = "<group>"; };
2849A41E17F8BEC2005C653F /* KeyView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KeyView.cpp; sourceTree = "<group>"; };
2849A41F17F8BEC2005C653F /* KeyView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeyView.h; sourceTree = "<group>"; };
2849B4600A7444BE00ECF12D /* Dependencies.cpp */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 3; lastKnownFileType = sourcecode.cpp.cpp; path = Dependencies.cpp; sourceTree = "<group>"; tabWidth = 3; };
@ -2659,33 +2659,6 @@
2860BA230E0F0D8600A13878 /* TimerRecordDialog.h */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 3; lastKnownFileType = sourcecode.c.h; path = TimerRecordDialog.h; sourceTree = "<group>"; tabWidth = 3; };
2860BA260E0F0DD800A13878 /* ExportFFmpeg.cpp */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 3; lastKnownFileType = sourcecode.cpp.cpp; path = ExportFFmpeg.cpp; sourceTree = "<group>"; tabWidth = 3; };
286229B0181CE4B600E1AD1A /* liblv2.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = liblv2.a; sourceTree = BUILT_PRODUCTS_DIR; };
286229B1181CE51800E1AD1A /* lilv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lilv.h; path = lv2/lilv/lilv/lilv.h; sourceTree = "<group>"; };
286229B2181CE51800E1AD1A /* collections.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = collections.c; path = lv2/lilv/src/collections.c; sourceTree = "<group>"; };
286229B3181CE51800E1AD1A /* instance.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = instance.c; path = lv2/lilv/src/instance.c; sourceTree = "<group>"; };
286229B4181CE51800E1AD1A /* lib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lib.c; path = lv2/lilv/src/lib.c; sourceTree = "<group>"; };
286229B5181CE51800E1AD1A /* lilv_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lilv_internal.h; path = lv2/lilv/src/lilv_internal.h; sourceTree = "<group>"; };
286229B6181CE51800E1AD1A /* node.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = node.c; path = lv2/lilv/src/node.c; sourceTree = "<group>"; };
286229B7181CE51800E1AD1A /* plugin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = plugin.c; path = lv2/lilv/src/plugin.c; sourceTree = "<group>"; };
286229B8181CE51800E1AD1A /* pluginclass.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pluginclass.c; path = lv2/lilv/src/pluginclass.c; sourceTree = "<group>"; };
286229B9181CE51800E1AD1A /* port.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = port.c; path = lv2/lilv/src/port.c; sourceTree = "<group>"; };
286229BA181CE51800E1AD1A /* query.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = query.c; path = lv2/lilv/src/query.c; sourceTree = "<group>"; };
286229BB181CE51800E1AD1A /* scalepoint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = scalepoint.c; path = lv2/lilv/src/scalepoint.c; sourceTree = "<group>"; };
286229BC181CE51800E1AD1A /* state.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = state.c; path = lv2/lilv/src/state.c; sourceTree = "<group>"; };
286229BD181CE51800E1AD1A /* ui.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ui.c; path = lv2/lilv/src/ui.c; sourceTree = "<group>"; };
286229BE181CE51800E1AD1A /* util.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = util.c; path = lv2/lilv/src/util.c; sourceTree = "<group>"; };
286229BF181CE51800E1AD1A /* world.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = world.c; path = lv2/lilv/src/world.c; sourceTree = "<group>"; };
286229D5181CE5EC00E1AD1A /* serd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = serd.h; path = lv2/serd/serd/serd.h; sourceTree = "<group>"; };
286229D6181CE5EC00E1AD1A /* env.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = env.c; path = lv2/serd/src/env.c; sourceTree = "<group>"; };
286229D7181CE5EC00E1AD1A /* node.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = node.c; path = lv2/serd/src/node.c; sourceTree = "<group>"; };
286229D8181CE5EC00E1AD1A /* reader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = reader.c; path = lv2/serd/src/reader.c; sourceTree = "<group>"; };
286229D9181CE5EC00E1AD1A /* serd_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = serd_internal.h; path = lv2/serd/src/serd_internal.h; sourceTree = "<group>"; };
286229DA181CE5EC00E1AD1A /* string.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = string.c; path = lv2/serd/src/string.c; sourceTree = "<group>"; };
286229DB181CE5EC00E1AD1A /* uri.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = uri.c; path = lv2/serd/src/uri.c; sourceTree = "<group>"; };
286229DC181CE5EC00E1AD1A /* writer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = writer.c; path = lv2/serd/src/writer.c; sourceTree = "<group>"; };
286229E5181CE62A00E1AD1A /* sord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sord.h; path = lv2/sord/sord/sord.h; sourceTree = "<group>"; };
286229E6181CE62A00E1AD1A /* sord_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sord_internal.h; path = lv2/sord/src/sord_internal.h; sourceTree = "<group>"; };
286229E7181CE62A00E1AD1A /* sord.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sord.c; path = lv2/sord/src/sord.c; sourceTree = "<group>"; };
286229E8181CE62A00E1AD1A /* syntax.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = syntax.c; path = lv2/sord/src/syntax.c; sourceTree = "<group>"; };
286243A0181CE65500E1AD1A /* sratom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sratom.h; path = lv2/sratom/sratom/sratom.h; sourceTree = "<group>"; };
286243A1181CE65500E1AD1A /* sratom.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sratom.c; path = lv2/sratom/src/sratom.c; sourceTree = "<group>"; };
2862CECE1AD3900000A53194 /* test.lsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = test.lsp; path = ../nyquist/test.lsp; sourceTree = SOURCE_ROOT; };
@ -2843,6 +2816,55 @@
28AA281E0F267A2D008AED9E /* SilenceMarker.ny */ = {isa = PBXFileReference; explicitFileType = file; fileEncoding = 5; name = SilenceMarker.ny; path = "../plug-ins/SilenceMarker.ny"; sourceTree = SOURCE_ROOT; };
28AA281F0F267A2D008AED9E /* tremolo.ny */ = {isa = PBXFileReference; explicitFileType = file; fileEncoding = 5; name = tremolo.ny; path = "../plug-ins/tremolo.ny"; sourceTree = SOURCE_ROOT; };
28AA28210F267A2D008AED9E /* vocoder.ny */ = {isa = PBXFileReference; explicitFileType = file; fileEncoding = 5; name = vocoder.ny; path = "../plug-ins/vocoder.ny"; sourceTree = SOURCE_ROOT; };
28AF131723A82F660084A82E /* sord_test.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sord_test.c; path = lv2/sord/src/sord_test.c; sourceTree = "<group>"; };
28AF131823A82F660084A82E /* sordi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sordi.c; path = lv2/sord/src/sordi.c; sourceTree = "<group>"; };
28AF131923A82F660084A82E /* sord_validate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sord_validate.c; path = lv2/sord/src/sord_validate.c; sourceTree = "<group>"; };
28AF131A23A82F670084A82E /* sordmm_test.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = sordmm_test.cpp; path = lv2/sord/src/sordmm_test.cpp; sourceTree = "<group>"; };
28AF131B23A82F670084A82E /* sord.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sord.c; path = lv2/sord/src/sord.c; sourceTree = "<group>"; };
28AF131D23A82F670084A82E /* btree.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = btree.c; sourceTree = "<group>"; };
28AF131E23A82F670084A82E /* digest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = digest.h; sourceTree = "<group>"; };
28AF131F23A82F670084A82E /* hash.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hash.c; sourceTree = "<group>"; };
28AF132023A82F670084A82E /* btree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btree.h; sourceTree = "<group>"; };
28AF132123A82F670084A82E /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = "<group>"; };
28AF132223A82F670084A82E /* digest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = digest.c; sourceTree = "<group>"; };
28AF132323A82F670084A82E /* hash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hash.h; sourceTree = "<group>"; };
28AF132423A82F670084A82E /* syntax.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = syntax.c; path = lv2/sord/src/syntax.c; sourceTree = "<group>"; };
28AF132523A82F670084A82E /* sord_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sord_internal.h; path = lv2/sord/src/sord_internal.h; sourceTree = "<group>"; };
28AF133423A830100084A82E /* reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = reader.h; path = lv2/serd/src/reader.h; sourceTree = "<group>"; };
28AF133523A830100084A82E /* uri.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = uri.c; path = lv2/serd/src/uri.c; sourceTree = "<group>"; };
28AF133623A830100084A82E /* env.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = env.c; path = lv2/serd/src/env.c; sourceTree = "<group>"; };
28AF133723A830100084A82E /* string.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = string.c; path = lv2/serd/src/string.c; sourceTree = "<group>"; };
28AF133823A830100084A82E /* n3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = n3.c; path = lv2/serd/src/n3.c; sourceTree = "<group>"; };
28AF133923A830110084A82E /* writer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = writer.c; path = lv2/serd/src/writer.c; sourceTree = "<group>"; };
28AF133A23A830110084A82E /* serd_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = serd_internal.h; path = lv2/serd/src/serd_internal.h; sourceTree = "<group>"; };
28AF133B23A830110084A82E /* serdi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = serdi.c; path = lv2/serd/src/serdi.c; sourceTree = "<group>"; };
28AF133C23A830110084A82E /* reader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = reader.c; path = lv2/serd/src/reader.c; sourceTree = "<group>"; };
28AF133D23A830110084A82E /* node.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = node.c; path = lv2/serd/src/node.c; sourceTree = "<group>"; };
28AF133E23A830120084A82E /* byte_source.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = byte_source.c; path = lv2/serd/src/byte_source.c; sourceTree = "<group>"; };
28AF134A23A8302E0084A82E /* lib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lib.c; path = lv2/lilv/src/lib.c; sourceTree = "<group>"; };
28AF134B23A8302E0084A82E /* query.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = query.c; path = lv2/lilv/src/query.c; sourceTree = "<group>"; };
28AF134C23A8302E0084A82E /* util.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = util.c; path = lv2/lilv/src/util.c; sourceTree = "<group>"; };
28AF134D23A8302E0084A82E /* plugin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = plugin.c; path = lv2/lilv/src/plugin.c; sourceTree = "<group>"; };
28AF134E23A8302F0084A82E /* port.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = port.c; path = lv2/lilv/src/port.c; sourceTree = "<group>"; };
28AF134F23A8302F0084A82E /* lilv_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lilv_internal.h; path = lv2/lilv/src/lilv_internal.h; sourceTree = "<group>"; };
28AF135023A8302F0084A82E /* scalepoint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = scalepoint.c; path = lv2/lilv/src/scalepoint.c; sourceTree = "<group>"; };
28AF135223A8302F0084A82E /* tree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tree.h; sourceTree = "<group>"; };
28AF135323A8302F0084A82E /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = "<group>"; };
28AF135423A8302F0084A82E /* tree.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tree.c; sourceTree = "<group>"; };
28AF135523A8302F0084A82E /* pluginclass.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pluginclass.c; path = lv2/lilv/src/pluginclass.c; sourceTree = "<group>"; };
28AF135623A830300084A82E /* node.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = node.c; path = lv2/lilv/src/node.c; sourceTree = "<group>"; };
28AF135723A830300084A82E /* world.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = world.c; path = lv2/lilv/src/world.c; sourceTree = "<group>"; };
28AF135823A830300084A82E /* ui.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ui.c; path = lv2/lilv/src/ui.c; sourceTree = "<group>"; };
28AF135923A830300084A82E /* state.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = state.c; path = lv2/lilv/src/state.c; sourceTree = "<group>"; };
28AF135A23A830300084A82E /* collections.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = collections.c; path = lv2/lilv/src/collections.c; sourceTree = "<group>"; };
28AF135B23A830310084A82E /* instance.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = instance.c; path = lv2/lilv/src/instance.c; sourceTree = "<group>"; };
28AF136D23A8306B0084A82E /* sord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sord.h; path = lv2/sord/sord/sord.h; sourceTree = "<group>"; };
28AF136F23A8307E0084A82E /* serd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = serd.h; path = lv2/serd/serd/serd.h; sourceTree = "<group>"; };
28AF137123A830950084A82E /* lilv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lilv.h; path = lv2/lilv/lilv/lilv.h; sourceTree = "<group>"; };
28AF137323A831070084A82E /* suil_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = suil_internal.h; path = lv2/suil/src/suil_internal.h; sourceTree = "<group>"; };
28AF137423A831070084A82E /* host.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = host.c; path = lv2/suil/src/host.c; sourceTree = "<group>"; };
28AF137523A831070084A82E /* instance.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = instance.c; path = lv2/suil/src/instance.c; sourceTree = "<group>"; };
28AF137623A831070084A82E /* suil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = suil.h; path = lv2/suil/suil/suil.h; sourceTree = "<group>"; };
28B97B850FBF771A0076CF28 /* VSTEffect.cpp */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 3; lastKnownFileType = sourcecode.cpp.cpp; name = VSTEffect.cpp; path = VST/VSTEffect.cpp; sourceTree = "<group>"; tabWidth = 3; };
28B97B860FBF771A0076CF28 /* VSTEffect.h */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 3; lastKnownFileType = sourcecode.c.h; name = VSTEffect.h; path = VST/VSTEffect.h; sourceTree = "<group>"; tabWidth = 3; };
28BB98031A15BE6800D1CC80 /* NoiseReduction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NoiseReduction.cpp; sourceTree = "<group>"; };
@ -5303,28 +5325,14 @@
2847504B1AD4EB41000AD751 /* suil */ = {
isa = PBXGroup;
children = (
284750611AD4EC28000AD751 /* suil.h */,
2847505B1AD4EBE1000AD751 /* host.c */,
2847505C1AD4EBE1000AD751 /* suil_instance.c */,
2847505D1AD4EBE1000AD751 /* suil_internal.h */,
28AF137423A831070084A82E /* host.c */,
28AF137523A831070084A82E /* instance.c */,
28AF137323A831070084A82E /* suil_internal.h */,
28AF137623A831070084A82E /* suil.h */,
);
name = suil;
sourceTree = "<group>";
};
2847504C1AD4EB5A000AD751 /* zix */ = {
isa = PBXGroup;
children = (
2847504D1AD4EB84000AD751 /* common.h */,
2847504E1AD4EB84000AD751 /* digest.c */,
2847504F1AD4EB84000AD751 /* digest.h */,
284750501AD4EB84000AD751 /* hash.c */,
284750511AD4EB84000AD751 /* hash.h */,
284750521AD4EB84000AD751 /* tree.c */,
284750531AD4EB84000AD751 /* tree.h */,
);
name = zix;
sourceTree = "<group>";
};
284A7B8E0F3156B4001D7A67 /* nyquist */ = {
isa = PBXGroup;
children = (
@ -5782,21 +5790,22 @@
28622999181CE37800E1AD1A /* lilv */ = {
isa = PBXGroup;
children = (
286229B1181CE51800E1AD1A /* lilv.h */,
286229B2181CE51800E1AD1A /* collections.c */,
286229B3181CE51800E1AD1A /* instance.c */,
286229B4181CE51800E1AD1A /* lib.c */,
286229B5181CE51800E1AD1A /* lilv_internal.h */,
286229B6181CE51800E1AD1A /* node.c */,
286229B7181CE51800E1AD1A /* plugin.c */,
286229B8181CE51800E1AD1A /* pluginclass.c */,
286229B9181CE51800E1AD1A /* port.c */,
286229BA181CE51800E1AD1A /* query.c */,
286229BB181CE51800E1AD1A /* scalepoint.c */,
286229BC181CE51800E1AD1A /* state.c */,
286229BD181CE51800E1AD1A /* ui.c */,
286229BE181CE51800E1AD1A /* util.c */,
286229BF181CE51800E1AD1A /* world.c */,
28AF135A23A830300084A82E /* collections.c */,
28AF135B23A830310084A82E /* instance.c */,
28AF134A23A8302E0084A82E /* lib.c */,
28AF137123A830950084A82E /* lilv.h */,
28AF134F23A8302F0084A82E /* lilv_internal.h */,
28AF135623A830300084A82E /* node.c */,
28AF134D23A8302E0084A82E /* plugin.c */,
28AF135523A8302F0084A82E /* pluginclass.c */,
28AF134E23A8302F0084A82E /* port.c */,
28AF134B23A8302E0084A82E /* query.c */,
28AF135023A8302F0084A82E /* scalepoint.c */,
28AF135923A830300084A82E /* state.c */,
28AF135823A830300084A82E /* ui.c */,
28AF134C23A8302E0084A82E /* util.c */,
28AF135723A830300084A82E /* world.c */,
28AF135123A8302F0084A82E /* zix */,
);
name = lilv;
sourceTree = "<group>";
@ -5804,14 +5813,18 @@
2862299A181CE3AE00E1AD1A /* serd */ = {
isa = PBXGroup;
children = (
286229D5181CE5EC00E1AD1A /* serd.h */,
286229D6181CE5EC00E1AD1A /* env.c */,
286229D7181CE5EC00E1AD1A /* node.c */,
286229D8181CE5EC00E1AD1A /* reader.c */,
286229D9181CE5EC00E1AD1A /* serd_internal.h */,
286229DA181CE5EC00E1AD1A /* string.c */,
286229DB181CE5EC00E1AD1A /* uri.c */,
286229DC181CE5EC00E1AD1A /* writer.c */,
28AF133E23A830120084A82E /* byte_source.c */,
28AF133623A830100084A82E /* env.c */,
28AF133823A830100084A82E /* n3.c */,
28AF133D23A830110084A82E /* node.c */,
28AF133C23A830110084A82E /* reader.c */,
28AF133423A830100084A82E /* reader.h */,
28AF133A23A830110084A82E /* serd_internal.h */,
28AF136F23A8307E0084A82E /* serd.h */,
28AF133B23A830110084A82E /* serdi.c */,
28AF133723A830100084A82E /* string.c */,
28AF133523A830100084A82E /* uri.c */,
28AF133923A830110084A82E /* writer.c */,
);
name = serd;
sourceTree = "<group>";
@ -5819,11 +5832,15 @@
2862299B181CE3B400E1AD1A /* sord */ = {
isa = PBXGroup;
children = (
2847504C1AD4EB5A000AD751 /* zix */,
286229E5181CE62A00E1AD1A /* sord.h */,
286229E6181CE62A00E1AD1A /* sord_internal.h */,
286229E7181CE62A00E1AD1A /* sord.c */,
286229E8181CE62A00E1AD1A /* syntax.c */,
28AF132523A82F670084A82E /* sord_internal.h */,
28AF131723A82F660084A82E /* sord_test.c */,
28AF131923A82F660084A82E /* sord_validate.c */,
28AF131B23A82F670084A82E /* sord.c */,
28AF136D23A8306B0084A82E /* sord.h */,
28AF131823A82F660084A82E /* sordi.c */,
28AF131A23A82F670084A82E /* sordmm_test.cpp */,
28AF132423A82F670084A82E /* syntax.c */,
28AF131C23A82F670084A82E /* zix */,
);
name = sord;
sourceTree = "<group>";
@ -6039,6 +6056,32 @@
name = nyquist;
sourceTree = "<group>";
};
28AF131C23A82F670084A82E /* zix */ = {
isa = PBXGroup;
children = (
28AF131D23A82F670084A82E /* btree.c */,
28AF131E23A82F670084A82E /* digest.h */,
28AF131F23A82F670084A82E /* hash.c */,
28AF132023A82F670084A82E /* btree.h */,
28AF132123A82F670084A82E /* common.h */,
28AF132223A82F670084A82E /* digest.c */,
28AF132323A82F670084A82E /* hash.h */,
);
name = zix;
path = lv2/sord/src/zix;
sourceTree = "<group>";
};
28AF135123A8302F0084A82E /* zix */ = {
isa = PBXGroup;
children = (
28AF135223A8302F0084A82E /* tree.h */,
28AF135323A8302F0084A82E /* common.h */,
28AF135423A8302F0084A82E /* tree.c */,
);
name = zix;
path = lv2/lilv/src/zix;
sourceTree = "<group>";
};
28B97B800FBF77030076CF28 /* vst */ = {
isa = PBXGroup;
children = (
@ -7164,19 +7207,22 @@
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
286229C3181CE51800E1AD1A /* lilv.h in Headers */,
286229C7181CE51800E1AD1A /* lilv_internal.h in Headers */,
286229DD181CE5EC00E1AD1A /* serd.h in Headers */,
286229E1181CE5EC00E1AD1A /* serd_internal.h in Headers */,
286229E9181CE62A00E1AD1A /* sord.h in Headers */,
286229EA181CE62A00E1AD1A /* sord_internal.h in Headers */,
28AF137023A8307E0084A82E /* serd.h in Headers */,
28AF132F23A82F680084A82E /* common.h in Headers */,
28AF137723A831080084A82E /* suil_internal.h in Headers */,
28AF133123A82F680084A82E /* hash.h in Headers */,
28AF137223A830950084A82E /* lilv.h in Headers */,
28AF133F23A830120084A82E /* reader.h in Headers */,
28AF132E23A82F680084A82E /* btree.h in Headers */,
28AF136323A830310084A82E /* tree.h in Headers */,
28AF136423A830310084A82E /* common.h in Headers */,
28AF137A23A831080084A82E /* suil.h in Headers */,
28624C0F181CE65700E1AD1A /* sratom.h in Headers */,
284750541AD4EB84000AD751 /* common.h in Headers */,
284750561AD4EB84000AD751 /* digest.h in Headers */,
284750581AD4EB84000AD751 /* hash.h in Headers */,
2847505A1AD4EB84000AD751 /* tree.h in Headers */,
284750601AD4EBE1000AD751 /* suil_internal.h in Headers */,
284750621AD4EC28000AD751 /* suil.h in Headers */,
28AF133323A82F680084A82E /* sord_internal.h in Headers */,
28AF132C23A82F680084A82E /* digest.h in Headers */,
28AF136E23A8306B0084A82E /* sord.h in Headers */,
28AF136123A830310084A82E /* lilv_internal.h in Headers */,
28AF134523A830120084A82E /* serd_internal.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -7650,6 +7696,7 @@
isa = PBXNativeTarget;
buildConfigurationList = 286229AB181CE4B600E1AD1A /* Build configuration list for PBXNativeTarget "lv2" */;
buildPhases = (
28AF137C23A832AC0084A82E /* Run Script */,
2862299F181CE4B600E1AD1A /* Headers */,
286229A0181CE4B600E1AD1A /* Sources */,
);
@ -8060,6 +8107,25 @@
shellPath = /bin/sh;
shellScript = "\"${PROJECT_DIR}/scripts/install_manual.sh\"";
};
28AF137C23A832AC0084A82E /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"$(SRCROOT)/newInputFile",
);
name = "Run Script";
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/bash;
shellScript = "LV2=\"${CONFIGURATION_BUILD_DIR}/include/lv2/lv2plug.in/ns\"\n[ -e \"${LV2}\" ] && exit 0\n\nTOP=\"${SRCROOT}/${TOPLEVEL}\"\nmkdir -p \"${LV2}\"/{ext,extensions,lv2core}\n\npushd \"${LV2}/ext\"\nfor src in \"${TOP}\"/lib-src/lv2/lv2/lv2/*\ndo\n ln -s \"${src}\"\ndone\npopd\n \npushd \"${LV2}/extensions\"\nfor src in \"${TOP}\"/lib-src/lv2/lv2/lv2/{ui,units}\ndo\n ln -s \"${src}\"\ndone\npopd\n \npushd \"${LV2}/lv2core\"\nfor src in \"${TOP}\"/lib-src/lv2/lv2/lv2/core/*.h\ndo\n ln -s \"${src}\"\ndone\npopd\n";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@ -9038,33 +9104,41 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
286229C4181CE51800E1AD1A /* collections.c in Sources */,
286229C5181CE51800E1AD1A /* instance.c in Sources */,
286229C6181CE51800E1AD1A /* lib.c in Sources */,
286229C8181CE51800E1AD1A /* node.c in Sources */,
286229C9181CE51800E1AD1A /* plugin.c in Sources */,
286229CA181CE51800E1AD1A /* pluginclass.c in Sources */,
286229CB181CE51800E1AD1A /* port.c in Sources */,
286229CC181CE51800E1AD1A /* query.c in Sources */,
286229CD181CE51800E1AD1A /* scalepoint.c in Sources */,
286229CE181CE51800E1AD1A /* state.c in Sources */,
286229CF181CE51800E1AD1A /* ui.c in Sources */,
286229D0181CE51800E1AD1A /* util.c in Sources */,
286229D1181CE51800E1AD1A /* world.c in Sources */,
286229DE181CE5EC00E1AD1A /* env.c in Sources */,
286229DF181CE5EC00E1AD1A /* node.c in Sources */,
286229E0181CE5EC00E1AD1A /* reader.c in Sources */,
286229E2181CE5EC00E1AD1A /* string.c in Sources */,
286229E3181CE5EC00E1AD1A /* uri.c in Sources */,
286229E4181CE5EC00E1AD1A /* writer.c in Sources */,
286229EB181CE62A00E1AD1A /* sord.c in Sources */,
286229EC181CE62A00E1AD1A /* syntax.c in Sources */,
28AF136023A830310084A82E /* port.c in Sources */,
28AF135F23A830310084A82E /* plugin.c in Sources */,
28AF136223A830310084A82E /* scalepoint.c in Sources */,
28AF136923A830310084A82E /* ui.c in Sources */,
28AF136523A830310084A82E /* tree.c in Sources */,
28AF134623A830120084A82E /* serdi.c in Sources */,
28AF136723A830310084A82E /* node.c in Sources */,
28AF134123A830120084A82E /* env.c in Sources */,
28AF135D23A830310084A82E /* query.c in Sources */,
28AF134223A830120084A82E /* string.c in Sources */,
28AF134823A830120084A82E /* node.c in Sources */,
28AF135E23A830310084A82E /* util.c in Sources */,
28AF136A23A830310084A82E /* state.c in Sources */,
28AF134923A830120084A82E /* byte_source.c in Sources */,
28AF137923A831080084A82E /* instance.c in Sources */,
28AF136C23A830310084A82E /* instance.c in Sources */,
28AF134723A830120084A82E /* reader.c in Sources */,
28AF134323A830120084A82E /* n3.c in Sources */,
28AF132923A82F680084A82E /* sordmm_test.cpp in Sources */,
28AF136B23A830310084A82E /* collections.c in Sources */,
28AF132723A82F680084A82E /* sordi.c in Sources */,
28AF134023A830120084A82E /* uri.c in Sources */,
28AF132823A82F680084A82E /* sord_validate.c in Sources */,
28AF135C23A830310084A82E /* lib.c in Sources */,
28AF133023A82F680084A82E /* digest.c in Sources */,
28AF132623A82F680084A82E /* sord_test.c in Sources */,
28AF132A23A82F680084A82E /* sord.c in Sources */,
28624C10181CE65700E1AD1A /* sratom.c in Sources */,
284750551AD4EB84000AD751 /* digest.c in Sources */,
284750571AD4EB84000AD751 /* hash.c in Sources */,
284750591AD4EB84000AD751 /* tree.c in Sources */,
2847505E1AD4EBE1000AD751 /* host.c in Sources */,
2847505F1AD4EBE1000AD751 /* suil_instance.c in Sources */,
28AF133223A82F680084A82E /* syntax.c in Sources */,
28AF136823A830310084A82E /* world.c in Sources */,
28AF132B23A82F680084A82E /* btree.c in Sources */,
28AF134423A830120084A82E /* writer.c in Sources */,
28AF137823A831080084A82E /* host.c in Sources */,
28AF132D23A82F680084A82E /* hash.c in Sources */,
28AF136623A830310084A82E /* pluginclass.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -9375,7 +9449,6 @@
"$(TOPLEVEL)/lib-src/lv2/sratom",
"$(TOPLEVEL)/lib-src/lv2/sratom/src/**",
"$(TOPLEVEL)/lib-src/lv2/suil",
"$(TOPLEVEL)/lib-src/lv2/suil/build/**",
"$(TOPLEVEL)/lib-src/lv2/suil/src/**",
);
PRODUCT_NAME = lv2;
@ -9401,7 +9474,6 @@
"$(TOPLEVEL)/lib-src/lv2/sratom",
"$(TOPLEVEL)/lib-src/lv2/sratom/src/**",
"$(TOPLEVEL)/lib-src/lv2/suil",
"$(TOPLEVEL)/lib-src/lv2/suil/build/**",
"$(TOPLEVEL)/lib-src/lv2/suil/src/**",
);
PRODUCT_NAME = lv2;
@ -10424,7 +10496,6 @@
"$(TOPLEVEL)/lib-src/lv2/sratom",
"$(TOPLEVEL)/lib-src/lv2/sratom/src/**",
"$(TOPLEVEL)/lib-src/lv2/suil",
"$(TOPLEVEL)/lib-src/lv2/suil/build/**",
"$(TOPLEVEL)/lib-src/lv2/suil/src/**",
);
PRODUCT_NAME = lv2;
@ -10887,7 +10958,6 @@
"$(TOPLEVEL)/lib-src/lv2/sratom",
"$(TOPLEVEL)/lib-src/lv2/sratom/src/**",
"$(TOPLEVEL)/lib-src/lv2/suil",
"$(TOPLEVEL)/lib-src/lv2/suil/build/**",
"$(TOPLEVEL)/lib-src/lv2/suil/src/**",
);
PRODUCT_NAME = lv2;

View File

@ -3,15 +3,18 @@
#ifndef W_LILV_CONFIG_H_WAF
#define W_LILV_CONFIG_H_WAF
/* #undef HAVE_GCOV */
#define HAVE_LV2 1
#define HAVE_SERD 1
#define HAVE_SORD 1
#define HAVE_SRATOM 1
#define LILV_NEW_LV2 1
/* #undef HAVE_FLOCK */
/* #undef HAVE_FILENO */
/* #undef HAVE_CLOCK_GETTIME */
#define LILV_VERSION "0.20.0"
#define HAVE_SNDFILE 1
#define HAVE_LSTAT 1
#define HAVE_FLOCK 1
#define HAVE_FILENO 1
#define HAVE_CLOCK_GETTIME 1
#define HAVE_LIBDL 1
#define LILV_VERSION "0.24.6"
#define LILV_PATH_SEP ":"
#define LILV_DIR_SEP "/"
#define LILV_DEFAULT_LV2_PATH "~/Library/Audio/Plug-Ins/LV2:~/.lv2:/usr/local/lib/lv2:/usr/lib/lv2:/Library/Audio/Plug-Ins/LV2"

View File

@ -3,10 +3,10 @@
#ifndef W_SERD_CONFIG_H_WAF
#define W_SERD_CONFIG_H_WAF
#define HAVE_FMAX 1
#define HAVE_POSIX_MEMALIGN 1
/* #undef HAVE_POSIX_FADVISE */
/* #undef HAVE_GCOV */
#define HAVE_FILENO 1
#define SERD_VERSION "0.20.0"
/* #undef HAVE_POSIX_FADVISE */
#define HAVE_POSIX_MEMALIGN 1
#define SERD_VERSION "0.30.2"
#endif /* W_SERD_CONFIG_H_WAF */

View File

@ -3,8 +3,9 @@
#ifndef W_SORD_CONFIG_H_WAF
#define W_SORD_CONFIG_H_WAF
/* #undef HAVE_GCOV */
#define HAVE_SERD 1
#define HAVE_PCRE 1
#define SORD_VERSION "0.12.2"
/* #undef HAVE_PCRE */
#define SORD_VERSION "0.16.4"
#endif /* W_SORD_CONFIG_H_WAF */

View File

@ -3,9 +3,10 @@
#ifndef W_SRATOM_CONFIG_H_WAF
#define W_SRATOM_CONFIG_H_WAF
/* #undef HAVE_GCOV */
#define HAVE_LV2 1
#define HAVE_SERD 1
#define HAVE_SORD 1
#define SRATOM_VERSION "0.4.6"
#define SRATOM_VERSION "0.6.4"
#endif /* W_SRATOM_CONFIG_H_WAF */

View File

@ -3,14 +3,17 @@
#ifndef W_SUIL_CONFIG_H_WAF
#define W_SUIL_CONFIG_H_WAF
#define SUIL_VERSION "0.10.6"
#define HAVE_LV2 1
#define HAVE_LV2_1_6_0 1
/* #undef HAVE_LIBDL */
#define SUIL_VERSION "0.8.2"
#define SUIL_MODULE_DIR "/Users/yam/o/audacity/lib-src/lv2/suil/build"
#define HAVE_X11 1
/* #undef HAVE_QMACCOCOAVIEWCONTAINER */
#define HAVE_LIBDL 1
#define SUIL_MODULE_DIR "/usr/local/lib/suil-0"
#define SUIL_DIR_SEP "/"
#define SUIL_GTK2_LIB_NAME "libgtk-x11-2.0.so.0"
#define SUIL_GTK3_LIB_NAME "libgtk-x11-3.0.so.0"
#define SUIL_WITH_X11 1
#define SUIL_MODULE_PREFIX "lib"
#define SUIL_MODULE_EXT ".so"
#define SUIL_MODULE_EXT ".dylib"
#endif /* W_SUIL_CONFIG_H_WAF */

View File

@ -3,15 +3,18 @@
#ifndef W_LILV_CONFIG_H_WAF
#define W_LILV_CONFIG_H_WAF
/* #undef HAVE_GCOV */
#define HAVE_LV2 1
#define HAVE_SERD 1
#define HAVE_SORD 1
#define HAVE_SRATOM 1
#define LILV_NEW_LV2 1
#define HAVE_SNDFILE 1
#define HAVE_LSTAT 1
#define HAVE_FLOCK 1
#define HAVE_FILENO 1
/* #undef HAVE_CLOCK_GETTIME */
#define LILV_VERSION "0.20.0"
#define HAVE_CLOCK_GETTIME 1
#define HAVE_LIBDL 1
#define LILV_VERSION "0.24.4"
#define LILV_PATH_SEP ":"
#define LILV_DIR_SEP "/"
#define LILV_DEFAULT_LV2_PATH "~/Library/Audio/Plug-Ins/LV2:~/.lv2:/usr/local/lib/lv2:/usr/lib/lv2:/Library/Audio/Plug-Ins/LV2"

View File

@ -3,10 +3,10 @@
#ifndef W_SERD_CONFIG_H_WAF
#define W_SERD_CONFIG_H_WAF
#define HAVE_FMAX 1
#define HAVE_POSIX_MEMALIGN 1
/* #undef HAVE_POSIX_FADVISE */
/* #undef HAVE_GCOV */
#define HAVE_FILENO 1
#define SERD_VERSION "0.20.0"
/* #undef HAVE_POSIX_FADVISE */
#define HAVE_POSIX_MEMALIGN 1
#define SERD_VERSION "0.30.0"
#endif /* W_SERD_CONFIG_H_WAF */

View File

@ -3,8 +3,9 @@
#ifndef W_SORD_CONFIG_H_WAF
#define W_SORD_CONFIG_H_WAF
/* #undef HAVE_GCOV */
#define HAVE_SERD 1
#define HAVE_PCRE 1
#define SORD_VERSION "0.12.2"
/* #undef HAVE_PCRE */
#define SORD_VERSION "0.16.2"
#endif /* W_SORD_CONFIG_H_WAF */

View File

@ -3,9 +3,10 @@
#ifndef W_SRATOM_CONFIG_H_WAF
#define W_SRATOM_CONFIG_H_WAF
/* #undef HAVE_GCOV */
#define HAVE_LV2 1
#define HAVE_SERD 1
#define HAVE_SORD 1
#define SRATOM_VERSION "0.4.6"
#define SRATOM_VERSION "0.6.2"
#endif /* W_SRATOM_CONFIG_H_WAF */

View File

@ -3,14 +3,17 @@
#ifndef W_SUIL_CONFIG_H_WAF
#define W_SUIL_CONFIG_H_WAF
#define SUIL_VERSION "0.10.4"
#define HAVE_LV2 1
#define HAVE_LV2_1_6_0 1
/* #undef HAVE_LIBDL */
#define SUIL_VERSION "0.8.2"
#define SUIL_MODULE_DIR "/Users/yam/o/audacity/lib-src/lv2/suil/build"
#define HAVE_X11 1
/* #undef HAVE_QMACCOCOAVIEWCONTAINER */
#define HAVE_LIBDL 1
#define SUIL_MODULE_DIR "/usr/local/lib/suil-0"
#define SUIL_DIR_SEP "/"
#define SUIL_GTK2_LIB_NAME "libgtk-x11-2.0.so.0"
#define SUIL_GTK3_LIB_NAME "libgtk-x11-3.0.so.0"
#define SUIL_WITH_X11 1
#define SUIL_MODULE_PREFIX "lib"
#define SUIL_MODULE_EXT ".so"
#define SUIL_MODULE_EXT ".dylib"
#endif /* W_SUIL_CONFIG_H_WAF */

View File

@ -895,6 +895,11 @@ audacity_SOURCES += \
effects/lv2/LoadLV2.h \
effects/lv2/LV2Effect.cpp \
effects/lv2/LV2Effect.h \
effects/lv2/NativeWindow.h \
effects/lv2/lv2_external_ui.h \
effects/lv2/zix/common.h \
effects/lv2/zix/ring.cpp \
effects/lv2/zix/ring.h \
$(NULL)
endif

File diff suppressed because it is too large Load Diff

2783
src/effects/lv2/LV2Effect.cpp Normal file → Executable file

File diff suppressed because it is too large Load Diff

461
src/effects/lv2/LV2Effect.h Normal file → Executable file
View File

@ -18,26 +18,38 @@ class wxArrayString;
#include <vector>
#include <wx/event.h> // to inherit
#include <wx/msgqueue.h>
#include <wx/thread.h>
#include <wx/timer.h>
#include "lv2/lv2plug.in/ns/ext/atom/forge.h"
#include "lv2/lv2plug.in/ns/ext/data-access/data-access.h"
#include "lv2/lv2plug.in/ns/ext/options/options.h"
#include "lv2/lv2plug.in/ns/ext/uri-map/uri-map.h"
#include "lv2/lv2plug.in/ns/ext/urid/urid.h"
#include "lv2/lv2plug.in/ns/extensions/ui/ui.h"
#include "lv2/atom/forge.h"
#include "lv2/data-access/data-access.h"
#include "lv2/log/log.h"
#include "lv2/midi/midi.h"
#include "lv2/options/options.h"
#include "lv2/state/state.h"
#include "lv2/time/time.h"
#include "lv2/uri-map/uri-map.h"
#include "lv2/urid/urid.h"
#include "lv2/worker/worker.h"
#include "lv2/ui/ui.h"
#include <lilv/lilv.h>
#include <suil/suil.h>
#include "../../ShuttleGui.h"
#include "../../SampleFormat.h"
#include "LoadLV2.h"
#include "NativeWindow.h"
#include "lv2_external_ui.h"
#include "zix/ring.h"
#include <unordered_map>
class wxSlider;
class wxTextCtrl;
class NumericTextCtrl;
#define LV2EFFECTS_VERSION wxT("1.0.0.0")
@ -45,63 +57,200 @@ class NumericTextCtrl;
"Linux Audio Developer's Simple Plugin API (LADSPA) version 2" */
#define LV2EFFECTS_FAMILY XO("LV2")
/** A structure that contains information about a single LV2 plugin port. */
// DECLARE_LOCAL_EVENT_TYPE(EVT_SIZEWINDOW, -1);
class LV2Port
{
public:
LV2Port()
LV2Port(const LilvPort *port,
int index,
bool isInput,
const wxString & symbol,
const wxString & name,
const wxString & group)
: mPort(port),
mIndex(index),
mIsInput(isInput),
mSymbol(symbol),
mName(name),
mGroup(group)
{
mInput = false;
};
LV2Port(const LV2Port &) = default;
LV2Port &operator = (const LV2Port &) = default;
const LilvPort *mPort;
uint32_t mIndex;
bool mIsInput;
wxString mSymbol;
wxString mName;
wxString mGroup;
};
class LV2AudioPort : public LV2Port
{
public:
LV2AudioPort(const LilvPort *port,
int index,
bool isInput,
const wxString & symbol,
const wxString & name,
const wxString & group)
: LV2Port(port, index, isInput, symbol, name, group)
{
}
};
using LV2AudioPortPtr = std::shared_ptr<LV2AudioPort>;
using LV2AudioPortArray = std::vector<LV2AudioPortPtr>;
class LV2AtomPort : public LV2Port
{
public:
LV2AtomPort(const LilvPort *port,
int index,
bool isInput,
const wxString & symbol,
const wxString & name,
const wxString & group)
: LV2Port(port, index, isInput, symbol, name, group)
{
mIsMidi = false;
mWantsPosition = false;
mMinimumSize = 1024;
mRing = NULL;
}
virtual ~LV2AtomPort()
{
if (mRing)
{
zix_ring_free(mRing);
}
}
uint32_t mMinimumSize;
bool mIsMidi;
bool mWantsPosition;
std::vector<uint8_t> mBuffer;
ZixRing *mRing;
};
using LV2AtomPortPtr = std::shared_ptr<LV2AtomPort>;
using LV2AtomPortArray = std::vector<LV2AtomPortPtr>;
class LV2CVPort : public LV2Port
{
public:
LV2CVPort(const LilvPort *port,
int index,
bool isInput,
const wxString & symbol,
const wxString & name,
const wxString & group)
: LV2Port(port, index, isInput, symbol, name, group)
{
mMin = 0.0;
mMax = 1.0;
mDef = 0.0;
mHasLo = false;
mHasHi = false;
};
float mMin;
float mMax;
float mDef;
bool mHasLo;
bool mHasHi;
Floats mBuffer;
};
using LV2CVPortPtr = std::shared_ptr<LV2CVPort>;
using LV2CVPortArray = std::vector<LV2CVPortPtr>;
class LV2EffectMeter;
/** A structure that contains information about a single LV2 plugin port. */
class LV2ControlPort : public LV2Port
{
public:
LV2ControlPort(const LilvPort *port,
int index,
bool isInput,
const wxString & symbol,
const wxString & name,
const wxString & group)
: LV2Port(port, index, isInput, symbol, name, group)
{
mMin = 0.0;
mMax = 0.0;
mDef = 0.0;
mVal = 0.0;
mLst = 0.0;
mTmp = 0.0;
mDmy = 0.0;
mLo = 0.0;
mHi = 0.0;
mHasLo = false;
mHasHi = false;
mToggle = false;
mTrigger = false;
mInteger = false;
mSampleRate = false;
mEnumeration = false;
mLogarithmic = false;
mHasLo = false;
mHasHi = false;
}
LV2Port( const LV2Port & ) = default;
LV2Port& operator = ( const LV2Port & ) = default;
//LV2Port( LV2Port && ) = default;
//LV2Port& operator = ( LV2Port && ) = default;
uint32_t mIndex;
wxString mSymbol;
wxString mName;
wxString mGroup;
mNotOnGui = false;
mCtrl.button = NULL;
mText = NULL;
};
wxString mUnits;
float mMin;
float mMax;
float mDef;
float mVal;
float mLst;
float mTmp;
float mDmy;
float mLo;
float mHi;
bool mHasLo;
bool mHasHi;
bool mInput;
bool mToggle;
bool mTrigger;
bool mInteger;
bool mSampleRate;
bool mEnumeration;
bool mLogarithmic;
LilvPort *mPort;
bool mNotOnGui;
// ScalePoints
std::vector<double> mScaleValues;
wxArrayString mScaleLabels;
};
using LV2GroupMap = std::unordered_map<wxString, std::vector<int>>;
// UI
wxTextCtrl *mText;
union
{
wxButton *button;
wxCheckBox *checkbox;
wxChoice *choice;
LV2EffectMeter *meter;
wxSlider *slider;
} mCtrl;
};
using LV2ControlPortPtr = std::shared_ptr<LV2ControlPort>;
using LV2ControlPortArray = std::vector<LV2ControlPortPtr>;
class LV2EffectSettingsDialog;
class LV2Wrapper;
using URIDMap = std::vector<MallocString<>>;
class LV2Effect final : public wxEvtHandler,
public EffectClientInterface,
public EffectUIClientInterface
public EffectClientInterface,
public EffectUIClientInterface
{
public:
LV2Effect(const LilvPlugin *plug);
@ -153,10 +302,7 @@ public:
bool RealtimeSuspend() override;
bool RealtimeResume() override;
bool RealtimeProcessStart() override;
size_t RealtimeProcess(int group,
float **inbuf,
float **outbuf,
size_t numSamples) override;
size_t RealtimeProcess(int group, float **inbuf, float **outbuf, size_t numSamples) override;
bool RealtimeProcessEnd() override;
bool ShowInterface(wxWindow *parent, bool forceModal = false) override;
@ -190,21 +336,18 @@ public:
// LV2Effect implementation
private:
bool Load();
void Unload();
bool LoadParameters(const RegistryPath & group);
bool SaveParameters(const RegistryPath & group);
LilvInstance *InitInstance(float sampleRate);
void FreeInstance(LilvInstance *handle);
LV2Wrapper *InitInstance(float sampleRate);
void FreeInstance(LV2Wrapper *wrapper);
static uint32_t uri_to_id(LV2_URI_Map_Callback_Data callback_data,
const char *map,
const char *uri);
static LV2_URID urid_map(LV2_URID_Map_Handle handle, const char *uri);
LV2_URID URID_Map(const char *uri);
static LV2_URID Lookup_URI(URIDMap & map, const char *uri, bool add = true);
static const char *urid_unmap(LV2_URID_Unmap_Handle handle, LV2_URID urid);
const char *URID_Unmap(LV2_URID urid);
@ -212,15 +355,32 @@ private:
static int ui_resize(LV2UI_Feature_Handle handle, int width, int height);
int UIResize(int width, int height);
size_t AddOption(const char *key, uint32_t size, const char *type, void *value);
static void ui_closed(LV2UI_Controller controller);
void UIClosed();
static int log_printf(LV2_Log_Handle handle, LV2_URID type, const char *fmt, ...);
static int log_vprintf(LV2_Log_Handle handle, LV2_URID type, const char *fmt, va_list ap);
int LogVPrintf(LV2_URID type, const char *fmt, va_list ap);
#if defined(__WXGTK__)
static void size_request(GtkWidget *widget, GtkRequisition *requisition, LV2Effect *win);
void SizeRequest(GtkWidget *widget, GtkRequisition *requisition);
#endif
size_t AddOption(LV2_URID, uint32_t size, LV2_URID, const void *value);
bool ValidateOptions(const LilvNode *subject);
bool CheckOptions(const LilvNode *subject, const LilvNode *predicate, bool required);
LV2_Feature *AddFeature(const char *uri, void *data);
bool ValidateFeatures(const LilvNode *subject);
bool CheckFeatures(const LilvNode *subject, const LilvNode *predicate, bool required);
bool BuildFancy();
bool BuildPlain();
bool TransferDataToWindow() /* not override */;
bool TransferDataFromWindow() /* not override */;
void SetSlider(wxSlider *slider, const LV2Port & ctrl);
void SetSlider(const LV2ControlPortPtr & port);
void OnTrigger(wxCommandEvent & evt);
void OnToggle(wxCommandEvent & evt);
@ -228,98 +388,170 @@ private:
void OnText(wxCommandEvent & evt);
void OnSlider(wxCommandEvent & evt);
void OnTimer(wxTimerEvent & evt);
void OnIdle(wxIdleEvent & evt);
void OnSize(wxSizeEvent & evt);
void OnSizeWindow(wxCommandEvent & evt);
static void suil_write_func(SuilController controller,
uint32_t port_index,
uint32_t buffer_size,
uint32_t protocol,
const void *buffer);
static void suil_port_write_func(SuilController controller,
uint32_t port_index,
uint32_t buffer_size,
uint32_t protocol,
const void *buffer);
void SuilPortWrite(uint32_t port_index,
uint32_t buffer_size,
uint32_t protocol,
const void *buffer);
void UIWrite(uint32_t port_index,
uint32_t buffer_size,
uint32_t protocol,
const void *buffer);
static uint32_t suil_port_index_func(SuilController controller,
const char *port_symbol);
uint32_t SuilPortIndex(const char *port_symbol);
static const void *get_value_func(const char *port_symbol,
void *user_data,
uint32_t *size,
uint32_t *type);
const void *GetPortValue(const char *port_symbol,
uint32_t *size,
uint32_t *type);
static void set_value_func(const char *port_symbol,
void *user_data,
void *user_data,
const void *value,
uint32_t size,
uint32_t type);
uint32_t size,
uint32_t type);
void SetPortValue(const char *port_symbol,
const void *value,
uint32_t size,
uint32_t type);
uint32_t size,
uint32_t type);
private:
// Declare the static URI nodes
#undef URI
#define URI(n, u) static LilvNode *n;
URILIST
// Declare the global and local URI maps
static URIDMap gURIDMap;
URIDMap mURIDMap;
// Declare the static LILV URI nodes
#undef NODE
#define NODE(n, u) static LilvNode *node_##n;
NODELIST
// Declare the static URIDs
#undef URID
#define URID(n, u) static LV2_URID urid_##n;
URIDLIST
const LilvPlugin *mPlug;
EffectHostInterface *mHost;
size_t mBlockSize;
double mSampleRate;
float mSampleRate;
int mBlockSize;
int mSeqSize;
wxLongToLongHashMap mControlsMap;
std::vector<LV2Port> mControls;
std::vector<int> mAudioInputs;
std::vector<int> mAudioOutputs;
int mMinBlockSize;
int mMaxBlockSize;
int mUserBlockSize;
LV2GroupMap mGroupMap;
std::unordered_map<uint32_t, LV2ControlPortPtr> mControlPortMap;
LV2ControlPortArray mControlPorts;
LV2AudioPortArray mAudioPorts;
unsigned mAudioIn;
unsigned mAudioOut;
LV2AtomPortArray mAtomPorts;
LV2AtomPortPtr mControlIn;
LV2AtomPortPtr mControlOut;
unsigned mMidiIn;
unsigned mMidiOut;
LV2CVPortArray mCVPorts;
unsigned mCVIn;
unsigned mCVOut;
std::unordered_map<wxString, std::vector<int>> mGroupMap;
wxArrayString mGroups;
bool mWantsOptionsInterface;
bool mWantsStateInterface;
bool mWantsWorkerInterface;
bool mNoResize;
bool mUseLatency;
int mLatencyPort;
bool mLatencyDone;
float mLatency;
bool mRolling;
bool mActivated;
LilvInstance *mMaster;
LilvInstance *mProcess;
std::vector<LilvInstance*> mSlaves;
LV2Wrapper *mMaster;
LV2Wrapper *mProcess;
std::vector<LV2Wrapper *> mSlaves;
FloatBuffers mMasterIn, mMasterOut;
size_t mNumSamples;
size_t mFramePos;
FloatBuffers mCVInBuffers;
FloatBuffers mCVOutBuffers;
// Position info
float mPositionSpeed;
float mPositionFrame;
double mLength;
wxTimer mTimer;
wxDialog *mDialog;
wxWindow *mParent;
EffectUIHostInterface *mUIHost;
bool mUseGUI;
std::vector< std::unique_ptr<char, freer> > mURIMap;
// Features we support
LV2_URI_Map_Feature mUriMapFeature;
LV2_URID_Map mURIDMapFeature;
LV2_URID_Unmap mURIDUnmapFeature;
LV2UI_Resize mUIResizeFeature;
LV2_Extension_Data_Feature mExtDataFeature;
LV2_Log_Log mLogFeature;
LV2_Extension_Data_Feature mExtensionDataFeature;
LV2_External_UI_Host mExternalUIHost;
LV2_External_UI_Widget* mExternalWidget;
bool mExternalUIClosed;
LV2_Atom_Forge mForge;
std::vector<LV2_Options_Option> mOptions;
size_t mBlockSizeOption;
size_t mSampleRateOption;
LV2_Options_Interface *mOptionsInterface;
std::vector<LV2_Options_Option> mOptions;
bool mSupportsNominalBlockLength;
bool mSupportsSampleRate;
std::vector<std::unique_ptr<LV2_Feature>> mFeatures;
LV2_Feature *mInstanceAccessFeature;
LV2_Feature *mParentFeature;
LV2_Feature *mWorkerScheduleFeature;
const LV2UI_Idle_Interface *mIdleFeature;
bool mFreewheeling;
SuilHost *mSuilHost;
SuilInstance *mSuilInstance;
NativeWindow *mNativeWin;
wxSize mNativeWinInitialSize;
wxSize mNativeWinLastSize;
bool mResizing;
#if defined(__WXGTK__)
bool mResized;
#endif
LV2UI_Idle_Interface *mUIIdleInterface;
LV2UI_Show_Interface *mUIShowInterface;
NumericTextCtrl *mDuration;
ArrayOf<wxSlider*> mSliders;
ArrayOf<wxTextCtrl*> mFields;
bool mFactoryPresetsLoaded;
RegistryPaths mFactoryPresetNames;
@ -327,6 +559,7 @@ private:
DECLARE_EVENT_TABLE()
friend class LV2Wrapper;
friend class LV2EffectSettingsDialog;
friend class LV2EffectsModule;
};
@ -347,5 +580,73 @@ inline wxString LilvString(LilvNode *node, bool free)
return str;
};
class LV2Wrapper : public wxThreadHelper
{
public:
typedef struct LV2Work
{
uint32_t size;
const void *data;
} LV2Work;
public:
LV2Wrapper(LV2Effect *effect);
virtual ~LV2Wrapper();
LilvInstance *Instantiate(const LilvPlugin *plugin,
double sampleRrate,
std::vector<std::unique_ptr<LV2_Feature>> & features);
void *Entry();
LilvInstance *GetInstance();
LV2_Handle GetHandle();
float GetLatency();
void SetFreeWheeling(bool enable);
void SetSampleRate();
void SetBlockSize();
void ConnectPorts(float **inbuf, float **outbuf);
void SendResponses();
static LV2_Worker_Status schedule_work(LV2_Worker_Schedule_Handle handle,
uint32_t size,
const void *data);
LV2_Worker_Status ScheduleWork(uint32_t size, const void *data);
static LV2_Worker_Status respond(LV2_Worker_Respond_Handle handle,
uint32_t size,
const void *data);
LV2_Worker_Status Respond(uint32_t size, const void *data);
private:
LV2Effect *mEffect;
LilvInstance *mInstance;
LV2_Handle mHandle;
wxMessageQueue<LV2Work> mRequests;
wxMessageQueue<LV2Work> mResponses;
// Options extension
LV2_Options_Interface *mOptionsInterface;
// State extension
LV2_State_Interface *mStateInterface;
// Worker extension
LV2_Worker_Interface *mWorkerInterface;
LV2_Worker_Schedule mWorkerSchedule;
float mLatency;
bool mFreeWheeling;
bool mStopWorker;
};
#endif

63
src/effects/lv2/LoadLV2.cpp Normal file → Executable file
View File

@ -17,6 +17,11 @@ Functions that find and load all LV2 plugins on the system.
#include "../../Audacity.h" // for USE_* macros
#if defined(USE_LV2)
#if defined(__GNUC__)
#pragma GCC diagnostic ignored "-Wparentheses"
#endif
#include "LoadLV2.h"
#include <cstdio>
@ -33,12 +38,12 @@ Functions that find and load all LV2 plugins on the system.
#include "../../Internat.h"
#include "LV2Effect.h"
#include "lv2/lv2plug.in/ns/ext/event/event.h"
#include "lv2/lv2plug.in/ns/ext/instance-access/instance-access.h"
#include "lv2/lv2plug.in/ns/ext/port-groups/port-groups.h"
#include "lv2/lv2plug.in/ns/ext/port-props/port-props.h"
#include "lv2/lv2plug.in/ns/ext/uri-map/uri-map.h"
#include "lv2/lv2plug.in/ns/ext/presets/presets.h"
#include "lv2/event/event.h"
#include "lv2/instance-access/instance-access.h"
#include "lv2/port-groups/port-groups.h"
#include "lv2/port-props/port-props.h"
#include "lv2/uri-map/uri-map.h"
#include "lv2/presets/presets.h"
#include <unordered_map>
@ -130,9 +135,14 @@ bool LV2EffectsModule::Initialize()
}
// Create LilvNodes for each of the URIs we need
#undef URI
#define URI(n, u) LV2Effect::n = lilv_new_uri(gWorld, u);
URILIST
#undef NODE
#define NODE(n, u) LV2Effect::node_##n = lilv_new_uri(gWorld, u);
NODELIST
// Generatre URIDs
#undef URID
#define URID(n, u) LV2Effect::urid_##n = LV2Effect::Lookup_URI(LV2Effect::gURIDMap, u);
URIDLIST
wxString newVar;
@ -166,12 +176,13 @@ bool LV2EffectsModule::Initialize()
libdir.AppendDir(wxT("lv2"));
newVar += wxT(":$HOME/.lv2");
newVar += wxT(":/usr/local/lib/lv2");
newVar += wxT(":/usr/lib/lv2");
#if defined(__LP64__)
newVar += wxT(":/usr/local/lib64/lv2");
newVar += wxT(":/usr/lib64/lv2");
#endif
newVar += wxT(":/usr/local/lib/lv2");
newVar += wxT(":/usr/lib/lv2");
newVar += wxT(":") + libdir.GetPath();
#endif
// Start with the LV2_PATH environment variable (if any)
@ -188,7 +199,6 @@ bool LV2EffectsModule::Initialize()
}
wxSetEnv(wxT("LV2_PATH"), pathVar);
lilv_world_load_all(gWorld);
return true;
@ -197,9 +207,10 @@ bool LV2EffectsModule::Initialize()
void LV2EffectsModule::Terminate()
{
// Free the LilvNodes for each of the URIs we need
#undef URI
#define URI(n, u) lilv_node_free(LV2Effect::n);
URILIST
#undef NODE
#define NODE(n, u) \
lilv_node_free(LV2Effect::node_##n);
NODELIST
lilv_world_free(gWorld);
gWorld = NULL;
@ -237,11 +248,25 @@ PluginPaths LV2EffectsModule::FindPluginPaths(PluginManagerInterface & WXUNUSED(
LILV_FOREACH(plugins, i, plugs)
{
const LilvPlugin *plug = lilv_plugins_get(plugs, i);
const LilvNode *cls = lilv_plugin_class_get_uri(lilv_plugin_get_class(plug));
const LilvNode *name = lilv_plugin_get_name(plug);
// Bypass Instrument (MIDI) plugins for now
const LilvPluginClass *cls = lilv_plugin_get_class(plug);
if (lilv_node_equals(lilv_plugin_class_get_uri(cls), LV2Effect::gInstrument))
// Bypass unsupported plugin types
if (lilv_node_equals(cls, LV2Effect::node_InstrumentPlugin) ||
lilv_node_equals(cls, LV2Effect::node_MIDIPlugin) ||
lilv_node_equals(cls, LV2Effect::node_MathConstants) ||
lilv_node_equals(cls, LV2Effect::node_MathFunctions))
{
wxLogInfo(wxT("LV2 plugin '%s' has unsupported type '%s'"), lilv_node_as_string(lilv_plugin_get_uri(plug)), lilv_node_as_string(cls));
printf("LV2 plugin '%s' has unsupported type '%s'\n", lilv_node_as_string(lilv_plugin_get_uri(plug)), lilv_node_as_string(cls));
continue;
}
// If it doesn't have a name or has no ports, then it's not valid
if (!name || !lilv_plugin_get_port_by_index(plug, 0))
{
wxLogInfo(wxT("LV2 plugin '%s' is invalid"), lilv_node_as_string(lilv_plugin_get_uri(plug)));
printf("LV2 plugin '%s' is invalid\n", lilv_node_as_string(lilv_plugin_get_uri(plug)));
continue;
}

171
src/effects/lv2/LoadLV2.h Normal file → Executable file
View File

@ -14,52 +14,145 @@
#include "../../MemoryX.h"
#include <lilv/lilv.h>
#include "lilv/lilv.h"
#include "lv2/lv2plug.in/ns/lv2core/lv2.h"
#include "lv2/lv2plug.in/ns/ext/data-access/data-access.h"
#include "lv2/lv2plug.in/ns/ext/instance-access/instance-access.h"
#include "lv2/lv2plug.in/ns/ext/port-groups/port-groups.h"
#include "lv2/lv2plug.in/ns/ext/port-props/port-props.h"
#include "lv2/lv2plug.in/ns/ext/presets/presets.h"
#include "lv2/lv2plug.in/ns/ext/uri-map/uri-map.h"
#include "lv2/lv2plug.in/ns/extensions/units/units.h"
#include "lv2/core/lv2.h"
#include "lv2/buf-size/buf-size.h"
#include "lv2/data-access/data-access.h"
#include "lv2/event/event.h"
#include "lv2/instance-access/instance-access.h"
#include "lv2/midi/midi.h"
#include "lv2/parameters/parameters.h"
#include "lv2/port-groups/port-groups.h"
#include "lv2/port-props/port-props.h"
#include "lv2/presets/presets.h"
#include "lv2/resize-port/resize-port.h"
#include "lv2/time/time.h"
#include "lv2/uri-map/uri-map.h"
#include "lv2/units/units.h"
#include "audacity/ModuleInterface.h"
#include "audacity/EffectInterface.h"
#include "audacity/PluginInterface.h"
#undef URI
#define URI(n, u)
#include "lv2_external_ui.h"
// Define the list of URIs that we will use
#undef URILIST
#define URILIST \
URI( gBool, LV2_ATOM__Bool ) \
URI( gDouble, LV2_ATOM__Double ) \
URI( gFloat, LV2_ATOM__Float ) \
URI( gInt, LV2_ATOM__Int ) \
URI( gLong, LV2_ATOM__Long ) \
URI( gAudio, LV2_CORE__AudioPort ) \
URI( gControl, LV2_CORE__ControlPort ) \
URI( gInput, LV2_CORE__InputPort ) \
URI( gInstrument, LV2_CORE__InstrumentPlugin ) \
URI( gOutput, LV2_CORE__OutputPort ) \
URI( gOptional, LV2_CORE__connectionOptional ) \
URI( gEnumeration, LV2_CORE__enumeration ) \
URI( gInteger, LV2_CORE__integer ) \
URI( gName, LV2_CORE__name ) \
URI( gLatency, LV2_CORE__reportsLatency ) \
URI( gSampleRate, LV2_CORE__sampleRate ) \
URI( gToggled, LV2_CORE__toggled ) \
URI( gGroup, LV2_PORT_GROUPS__group ) \
URI( gSubGroupOf, LV2_PORT_GROUPS__subGroupOf ) \
URI( gLogarithmic, LV2_PORT_PROPS__logarithmic ) \
URI( gTrigger, LV2_PORT_PROPS__trigger ) \
URI( gPreset, LV2_PRESETS__Preset ) \
URI( gUnit, LV2_UNITS__unit ) \
URI( gUnitSymbol, LV2_UNITS__symbol ) \
URI( gLabel, LILV_NS_RDFS "label" )
#if !defined(LV2_CORE__MIDIPlugin)
#define LV2_CORE__MIDIPlugin LV2_CORE_PREFIX "MIDIPlugin"
#endif
#if !defined(LV2_CORE__Enabled)
#define LV2_CORE__enabled LV2_CORE_PREFIX "enabled"
#endif
#if !defined(LV2_UI__makeResident)
#define LV2_UI__makeResident LV2_UI_PREFIX "makeResident"
#endif
#if !defined(LV2_BUF_SIZE__nominalBlockLength)
#define LV2_BUF_SIZE__nominalBlockLength LV2_BUF_SIZE_PREFIX "nominalBlockLength"
#endif
// The "ll-plugin" package includes math functions that appear as plugins
// and the best way to exclude them is by their class URI.
#define LL_NAMESPACE "http://ll-plugins.nongnu.org/lv2/namespace#"
#define LL_MATH_CONSTANTS LL_NAMESPACE "MathConstantPlugin"
#define LL_MATH_FUNCTIONS LL_NAMESPACE "MathFunctionPlugin"
// Define the list of URIs that need an LilvNode created
#undef NODE
#define NODE(n, u)
#undef NODELIST
#define NODELIST \
NODE( AtomPort, LV2_ATOM__AtomPort ) \
NODE( MaxBlockLength, LV2_BUF_SIZE__maxBlockLength ) \
NODE( MinBlockLength, LV2_BUF_SIZE__minBlockLength ) \
NODE( AudioPort, LV2_CORE__AudioPort ) \
NODE( ControlPort, LV2_CORE__ControlPort ) \
NODE( CVPort, LV2_CORE__CVPort ) \
NODE( Designation, LV2_CORE__designation ) \
NODE( InputPort, LV2_CORE__InputPort ) \
NODE( InstrumentPlugin, LV2_CORE__InstrumentPlugin ) \
NODE( MIDIPlugin, LV2_CORE__MIDIPlugin ) \
NODE( OutputPort, LV2_CORE__OutputPort ) \
NODE( Control, LV2_CORE__control ) \
NODE( Enumeration, LV2_CORE__enumeration ) \
NODE( Integer, LV2_CORE__integer ) \
NODE( Name, LV2_CORE__name ) \
NODE( OptionalFeature, LV2_CORE__optionalFeature ) \
NODE( RequiredFeature, LV2_CORE__requiredFeature ) \
NODE( SampleRate, LV2_CORE__sampleRate ) \
NODE( Toggled, LV2_CORE__toggled ) \
NODE( ExternalUI, LV2_EXTERNAL_UI__Widget ) \
NODE( ExternalUIOld, LV2_EXTERNAL_UI_DEPRECATED_URI ) \
NODE( MidiEvent, LV2_MIDI__MidiEvent ) \
NODE( SupportedOption, LV2_OPTIONS__supportedOption ) \
NODE( RequiredOption, LV2_OPTIONS__requiredOption ) \
NODE( Group, LV2_PORT_GROUPS__group ) \
NODE( Logarithmic, LV2_PORT_PROPS__logarithmic ) \
NODE( Trigger, LV2_PORT_PROPS__trigger ) \
NODE( Preset, LV2_PRESETS__Preset ) \
NODE( MinimumSize, LV2_RESIZE_PORT__minimumSize ) \
NODE( Position, LV2_TIME__Position ) \
NODE( Gtk, LV2_UI__GtkUI ) \
NODE( Gtk3, LV2_UI__Gtk3UI ) \
NODE( Unit, LV2_UNITS__unit ) \
NODE( Comment, LILV_NS_RDFS "comment" ) \
NODE( Label, LILV_NS_RDFS "label" ) \
NODE( MathConstants, LL_MATH_CONSTANTS ) \
NODE( MathFunctions, LL_MATH_FUNCTIONS )
// Define the list of URIs that need a URID registered
#undef URID
#define URID(n, u)
#undef URIDLIST
#define URIDLIST \
URID( Blank, LV2_ATOM__Blank ) \
URID( Bool, LV2_ATOM__Bool ) \
URID( Chunk, LV2_ATOM__Chunk ) \
URID( Double, LV2_ATOM__Double ) \
URID( Float, LV2_ATOM__Float ) \
URID( Int, LV2_ATOM__Int ) \
URID( Literal, LV2_ATOM__Literal ) \
URID( Long, LV2_ATOM__Long ) \
URID( Object, LV2_ATOM__Object ) \
URID( Path, LV2_ATOM__Path ) \
URID( Property, LV2_ATOM__Property ) \
URID( Resource, LV2_ATOM__Resource ) \
URID( Sequence, LV2_ATOM__Sequence ) \
URID( String, LV2_ATOM__String ) \
URID( Tuple, LV2_ATOM__Tuple ) \
URID( Uri, LV2_ATOM__URI ) \
URID( Urid, LV2_ATOM__URID ) \
URID( Vector, LV2_ATOM__Vector ) \
URID( EventTransfer, LV2_ATOM__eventTransfer ) \
URID( AtomSupports, LV2_ATOM__supports ) \
URID( MaxBlockLength, LV2_BUF_SIZE__maxBlockLength ) \
URID( MinBlockLength, LV2_BUF_SIZE__minBlockLength ) \
URID( NominalBlockLength, LV2_BUF_SIZE__nominalBlockLength ) \
URID( SequenceSize, LV2_BUF_SIZE__sequenceSize ) \
URID( InstrumentPlugin, LV2_CORE__InstrumentPlugin ) \
URID( MIDIPlugin, LV2_CORE__MIDIPlugin ) \
URID( Toggled, LV2_CORE__toggled ) \
URID( ExternalUI, LV2_EXTERNAL_UI__Widget ) \
URID( ExternalUIOld, LV2_EXTERNAL_UI_DEPRECATED_URI ) \
URID( Error, LV2_LOG__Error ) \
URID( Note, LV2_LOG__Note ) \
URID( Trace, LV2_LOG__Trace ) \
URID( Warning, LV2_LOG__Warning ) \
URID( MidiEvent, LV2_MIDI__MidiEvent ) \
URID( RequiredOption, LV2_OPTIONS__requiredOption ) \
URID( SampleRate, LV2_PARAMETERS__sampleRate ) \
URID( RangeSteps, LV2_PORT_PROPS__rangeSteps ) \
URID( NotOnGUI, LV2_PORT_PROPS__notOnGUI ) \
URID( Expensive, LV2_PORT_PROPS__expensive ) \
URID( CausesArtifacts, LV2_PORT_PROPS__causesArtifacts ) \
URID( NotAutomatic, LV2_PORT_PROPS__notAutomatic ) \
URID( Position, LV2_TIME__Position ) \
URID( Speed, LV2_TIME__speed ) \
URID( Frame, LV2_TIME__frame )
///////////////////////////////////////////////////////////////////////////////
//

120
src/effects/lv2/NativeWindow.h Executable file
View File

@ -0,0 +1,120 @@
/**********************************************************************
Audacity: A Digital Audio Editor
NativeWindow.h
Audacity(R) is copyright (c) 1999-2008 Audacity Team.
License: GPL v2. See License.txt.
NOTE: Mostly copied from wxWidgets 3.1.1
*********************************************************************/
#ifndef NATIVEWINDOW_H
#define NATIVEWINDOW_H
#if defined(__WXMSW__)
#include <wx/msw/private.h>
#elif defined(__WXMAC__)
#include <wx/osx/private.h>
#elif defined(__WXGTK__)
#include <gtk/gtk.h>
#endif
class NativeWindow : public wxWindow
{
public:
NativeWindow()
{
}
#if defined(__WXMSW__)
virtual ~NativeWindow()
{
UnsubclassWin();
}
bool Create(wxWindow* parent, WXWidget hwnd)
{
const wxRect r = wxRectFromRECT(wxGetWindowRect((HWND)hwnd));
// Skip wxWindow::Create() which would try to create a new HWND, we don't
// want this as we already have one.
if (!CreateBase(parent,
wxID_ANY,
r.GetPosition(),
r.GetSize(),
0,
wxDefaultValidator,
wxS("nativewindow")))
{
return false;
}
parent->AddChild(this);
SubclassWin(hwnd);
InheritAttributes();
return true;
}
#elif defined(__WXMAC__)
virtual ~NativeWindow()
{
GetPeer()->RemoveFromParent();
m_peer = NULL;
}
bool Create(wxWindow* parent, WXWidget view)
{
DontCreatePeer();
if (!wxWindow::Create(parent, wxID_ANY))
{
return false;
}
SetPeer(new wxWidgetCocoaImpl(this, view));
return true;
}
#elif defined(__WXGTK__)
virtual ~NativeWindow()
{
}
bool Create(wxWindow* parent, WXWidget widget)
{
if (!CreateBase(parent, wxID_ANY))
{
return false;
}
m_widget = widget;
g_object_ref(m_widget);
parent->DoAddChild(this);
PostCreation();
// Ensure that the best (and minimal) size is set to fully display the
// widget.
GtkRequisition req;
gtk_widget_size_request(widget, &req);
SetInitialSize(wxSize(req.width, req.height));
return true;
}
#endif
};
#endif

109
src/effects/lv2/lv2_external_ui.h Executable file
View File

@ -0,0 +1,109 @@
/*
LV2 External UI extension
This work is in public domain.
This file 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.
If you have questions, contact Filipe Coelho (aka falkTX) <falktx@falktx.com>
or ask in #lad channel, FreeNode IRC network.
*/
/**
@file lv2_external_ui.h
C header for the LV2 External UI extension <http://kxstudio.sf.net/ns/lv2ext/external-ui>.
*/
#ifndef LV2_EXTERNAL_UI_H
#define LV2_EXTERNAL_UI_H
#include "lv2/lv2plug.in/ns/extensions/ui/ui.h"
#define LV2_EXTERNAL_UI_URI "http://kxstudio.sf.net/ns/lv2ext/external-ui"
#define LV2_EXTERNAL_UI_PREFIX LV2_EXTERNAL_UI_URI "#"
#define LV2_EXTERNAL_UI__Host LV2_EXTERNAL_UI_PREFIX "Host"
#define LV2_EXTERNAL_UI__Widget LV2_EXTERNAL_UI_PREFIX "Widget"
/** This extension used to be defined by a lv2plug.in URI */
#define LV2_EXTERNAL_UI_DEPRECATED_URI "http://lv2plug.in/ns/extensions/ui#external"
#ifdef __cplusplus
extern "C" {
#endif
/**
* When LV2_EXTERNAL_UI__Widget UI is instantiated, the returned
* LV2UI_Widget handle must be cast to pointer to LV2_External_UI_Widget.
* UI is created in invisible state.
*/
typedef struct _LV2_External_UI_Widget {
/**
* Host calls this function regulary. UI library implementing the
* callback may do IPC or redraw the UI.
*
* @param _this_ the UI context
*/
void (*run)(struct _LV2_External_UI_Widget * _this_);
/**
* Host calls this function to make the plugin UI visible.
*
* @param _this_ the UI context
*/
void (*show)(struct _LV2_External_UI_Widget * _this_);
/**
* Host calls this function to make the plugin UI invisible again.
*
* @param _this_ the UI context
*/
void (*hide)(struct _LV2_External_UI_Widget * _this_);
} LV2_External_UI_Widget;
#define LV2_EXTERNAL_UI_RUN(ptr) (ptr)->run(ptr)
#define LV2_EXTERNAL_UI_SHOW(ptr) (ptr)->show(ptr)
#define LV2_EXTERNAL_UI_HIDE(ptr) (ptr)->hide(ptr)
/**
* On UI instantiation, host must supply LV2_EXTERNAL_UI__Host feature.
* LV2_Feature::data must be pointer to LV2_External_UI_Host.
*/
typedef struct _LV2_External_UI_Host {
/**
* Callback that plugin UI will call when UI (GUI window) is closed by user.
* This callback will be called during execution of LV2_External_UI_Widget::run()
* (i.e. not from background thread).
*
* After this callback is called, UI is defunct. Host must call LV2UI_Descriptor::cleanup().
* If host wants to make the UI visible again, the UI must be reinstantiated.
*
* @note When using the depreated URI LV2_EXTERNAL_UI_DEPRECATED_URI,
* some hosts will not call LV2UI_Descriptor::cleanup() as they should,
* and may call show() again without re-initialization.
*
* @param controller Host context associated with plugin UI, as
* supplied to LV2UI_Descriptor::instantiate().
*/
void (*ui_closed)(LV2UI_Controller controller);
/**
* Optional (may be NULL) "user friendly" identifier which the UI
* may display to allow a user to easily associate this particular
* UI instance with the correct plugin instance as it is represented
* by the host (e.g. "track 1" or "channel 4").
*
* If supplied by host, the string will be referenced only during
* LV2UI_Descriptor::instantiate()
*/
const char * plugin_human_id;
} LV2_External_UI_Host;
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* LV2_EXTERNAL_UI_H */

View File

@ -1,38 +0,0 @@
// Ubuntu (and probably others) do not ship this file
// and we need it to embed the LV2 GUIs into a wxWindow.
/* ///////////////////////////////////////////////////////////////////////////
// Name: wx/gtk/private/win_gtk.h
// Purpose: native GTK+ widget for wxWindow
// Author: Robert Roebling
// Copyright: (c) 1998 Robert Roebling
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////// */
#ifndef _WX_GTK_PIZZA_H_
#define _WX_GTK_PIZZA_H_
#define WX_PIZZA(obj) G_TYPE_CHECK_INSTANCE_CAST(obj, wxPizza::type(), wxPizza)
#define WX_IS_PIZZA(obj) G_TYPE_CHECK_INSTANCE_TYPE(obj, wxPizza::type())
struct WXDLLIMPEXP_CORE wxPizza
{
// borders styles which can be used with wxPizza
enum { BORDER_STYLES =
wxBORDER_SIMPLE | wxBORDER_RAISED | wxBORDER_SUNKEN | wxBORDER_THEME };
static GtkWidget* New(long windowStyle = 0);
static GType type();
void move(GtkWidget* widget, int x, int y, int width, int height);
void put(GtkWidget* widget, int x, int y, int width, int height);
void scroll(int dx, int dy);
void get_border(GtkBorder& border);
GtkFixed m_fixed;
GList* m_children;
int m_scroll_x;
int m_scroll_y;
int m_windowStyle;
};
#endif // _WX_GTK_PIZZA_H_

103
src/effects/lv2/zix/common.h Executable file
View File

@ -0,0 +1,103 @@
/*
Copyright 2011 David Robillard <http://drobilla.net>
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef ZIX_COMMON_H
#define ZIX_COMMON_H
/**
@addtogroup zix
@{
*/
/** @cond */
#ifdef ZIX_SHARED
# ifdef _WIN32
# define ZIX_LIB_IMPORT __declspec(dllimport)
# define ZIX_LIB_EXPORT __declspec(dllexport)
# else
# define ZIX_LIB_IMPORT __attribute__((visibility("default")))
# define ZIX_LIB_EXPORT __attribute__((visibility("default")))
# endif
# ifdef ZIX_INTERNAL
# define ZIX_API ZIX_LIB_EXPORT
# else
# define ZIX_API ZIX_LIB_IMPORT
# endif
# define ZIX_PRIVATE static
#elif defined(ZIX_INLINE)
# define ZIX_API static inline
# define ZIX_PRIVATE static inline
#else
# define ZIX_API
# define ZIX_PRIVATE static
#endif
/** @endcond */
#ifdef __cplusplus
extern "C" {
#else
# include <stdbool.h>
#endif
typedef enum {
ZIX_STATUS_SUCCESS,
ZIX_STATUS_ERROR,
ZIX_STATUS_NO_MEM,
ZIX_STATUS_NOT_FOUND,
ZIX_STATUS_EXISTS,
ZIX_STATUS_BAD_ARG,
ZIX_STATUS_BAD_PERMS,
} ZixStatus;
static inline const char*
zix_strerror(const ZixStatus status)
{
switch (status) {
case ZIX_STATUS_SUCCESS: return "Success";
case ZIX_STATUS_ERROR: return "Unknown error";
case ZIX_STATUS_NO_MEM: return "Out of memory";
case ZIX_STATUS_NOT_FOUND: return "Not found";
case ZIX_STATUS_EXISTS: return "Exists";
case ZIX_STATUS_BAD_ARG: return "Bad argument";
case ZIX_STATUS_BAD_PERMS: return "Bad permissions";
}
return "Unknown error";
}
/**
Function for comparing two elements.
*/
typedef int (*ZixComparator)(const void* a, const void* b, void* user_data);
/**
Function for testing equality of two elements.
*/
typedef bool (*ZixEqualFunc)(const void* a, const void* b);
/**
Function to destroy an element.
*/
typedef void (*ZixDestroyFunc)(void* ptr);
/**
@}
*/
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* ZIX_COMMON_H */

222
src/effects/lv2/zix/ring.cpp Executable file
View File

@ -0,0 +1,222 @@
/*
Copyright 2011 David Robillard <http://drobilla.net>
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#ifdef HAVE_MLOCK
# include <sys/mman.h>
# define ZIX_MLOCK(ptr, size) mlock((ptr), (size))
#elif defined(_WIN32)
# include <windows.h>
# define ZIX_MLOCK(ptr, size) VirtualLock((ptr), (size))
#else
# pragma message("warning: No memory locking, possible RT violations")
# define ZIX_MLOCK(ptr, size)
#endif
#if defined(__APPLE__)
# include <libkern/OSAtomic.h>
# define ZIX_FULL_BARRIER() OSMemoryBarrier()
#elif defined(_WIN32)
# include <windows.h>
# define ZIX_FULL_BARRIER() MemoryBarrier()
#elif (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)
# define ZIX_FULL_BARRIER() __sync_synchronize()
#else
# pragma message("warning: No memory barriers, possible SMP bugs")
# define ZIX_FULL_BARRIER()
#endif
/* No support for any systems with separate read and write barriers */
#define ZIX_READ_BARRIER() ZIX_FULL_BARRIER()
#define ZIX_WRITE_BARRIER() ZIX_FULL_BARRIER()
#include "ring.h"
struct ZixRingImpl {
uint32_t write_head; ///< Read index into buf
uint32_t read_head; ///< Write index into buf
uint32_t size; ///< Size (capacity) in bytes
uint32_t size_mask; ///< Mask for fast modulo
char* buf; ///< Contents
};
static inline uint32_t
next_power_of_two(uint32_t size)
{
// http://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2
size--;
size |= size >> 1;
size |= size >> 2;
size |= size >> 4;
size |= size >> 8;
size |= size >> 16;
size++;
return size;
}
ZixRing*
zix_ring_new(uint32_t size)
{
ZixRing* ring = (ZixRing*)malloc(sizeof(ZixRing));
ring->write_head = 0;
ring->read_head = 0;
ring->size = next_power_of_two(size);
ring->size_mask = ring->size - 1;
ring->buf = (char*)malloc(ring->size);
return ring;
}
void
zix_ring_free(ZixRing* ring)
{
free(ring->buf);
free(ring);
}
void
zix_ring_mlock(ZixRing* ring)
{
ZIX_MLOCK(ring, sizeof(ZixRing));
ZIX_MLOCK(ring->buf, ring->size);
}
void
zix_ring_reset(ZixRing* ring)
{
ring->write_head = 0;
ring->read_head = 0;
}
static inline uint32_t
read_space_internal(const ZixRing* ring, uint32_t r, uint32_t w)
{
if (r < w) {
return w - r;
} else {
return (w - r + ring->size) & ring->size_mask;
}
}
uint32_t
zix_ring_read_space(const ZixRing* ring)
{
return read_space_internal(ring, ring->read_head, ring->write_head);
}
static inline uint32_t
write_space_internal(const ZixRing* ring, uint32_t r, uint32_t w)
{
if (r == w) {
return ring->size - 1;
} else if (r < w) {
return ((r - w + ring->size) & ring->size_mask) - 1;
} else {
return (r - w) - 1;
}
}
uint32_t
zix_ring_write_space(const ZixRing* ring)
{
return write_space_internal(ring, ring->read_head, ring->write_head);
}
uint32_t
zix_ring_capacity(const ZixRing* ring)
{
return ring->size - 1;
}
static inline uint32_t
peek_internal(const ZixRing* ring, uint32_t r, uint32_t w,
uint32_t size, void* dst)
{
if (read_space_internal(ring, r, w) < size) {
return 0;
}
if (r + size < ring->size) {
memcpy(dst, &ring->buf[r], size);
} else {
const uint32_t first_size = ring->size - r;
memcpy(dst, &ring->buf[r], first_size);
memcpy((char*)dst + first_size, &ring->buf[0], size - first_size);
}
return size;
}
uint32_t
zix_ring_peek(ZixRing* ring, void* dst, uint32_t size)
{
return peek_internal(ring, ring->read_head, ring->write_head, size, dst);
}
uint32_t
zix_ring_read(ZixRing* ring, void* dst, uint32_t size)
{
const uint32_t r = ring->read_head;
const uint32_t w = ring->write_head;
if (peek_internal(ring, r, w, size, dst)) {
ZIX_READ_BARRIER();
ring->read_head = (r + size) & ring->size_mask;
return size;
} else {
return 0;
}
}
uint32_t
zix_ring_skip(ZixRing* ring, uint32_t size)
{
const uint32_t r = ring->read_head;
const uint32_t w = ring->write_head;
if (read_space_internal(ring, r, w) < size) {
return 0;
}
ZIX_READ_BARRIER();
ring->read_head = (r + size) & ring->size_mask;
return size;
}
uint32_t
zix_ring_write(ZixRing* ring, const void* src, uint32_t size)
{
const uint32_t r = ring->read_head;
const uint32_t w = ring->write_head;
if (write_space_internal(ring, r, w) < size) {
return 0;
}
if (w + size <= ring->size) {
memcpy(&ring->buf[w], src, size);
ZIX_WRITE_BARRIER();
ring->write_head = (w + size) & ring->size_mask;
} else {
const uint32_t this_size = ring->size - w;
memcpy(&ring->buf[w], src, this_size);
memcpy(&ring->buf[0], (const char*)src + this_size, size - this_size);
ZIX_WRITE_BARRIER();
ring->write_head = size - this_size;
}
return size;
}

130
src/effects/lv2/zix/ring.h Executable file
View File

@ -0,0 +1,130 @@
/*
Copyright 2011-2014 David Robillard <http://drobilla.net>
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef ZIX_RING_H
#define ZIX_RING_H
#include <stdint.h>
#include "common.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
@addtogroup zix
@{
@name Ring
@{
*/
/**
A lock-free ring buffer.
Thread-safe with a single reader and single writer, and realtime safe
on both ends.
*/
typedef struct ZixRingImpl ZixRing;
/**
Create a new ring.
@param size Size in bytes (note this may be rounded up).
At most `size` - 1 bytes may be stored in the ring at once.
*/
ZixRing*
zix_ring_new(uint32_t size);
/**
Destroy a ring.
*/
void
zix_ring_free(ZixRing* ring);
/**
Lock the ring data into physical memory.
This function is NOT thread safe or real-time safe, but it should be called
after zix_ring_new() to lock all ring memory to avoid page faults while
using the ring (i.e. this function MUST be called first in order for the
ring to be truly real-time safe).
*/
void
zix_ring_mlock(ZixRing* ring);
/**
Reset (empty) a ring.
This function is NOT thread-safe, it may only be called when there are no
readers or writers.
*/
void
zix_ring_reset(ZixRing* ring);
/**
Return the number of bytes of space available for reading.
*/
uint32_t
zix_ring_read_space(const ZixRing* ring);
/**
Return the number of bytes of space available for writing.
*/
uint32_t
zix_ring_write_space(const ZixRing* ring);
/**
Return the capacity (i.e. total write space when empty).
*/
uint32_t
zix_ring_capacity(const ZixRing* ring);
/**
Read from the ring without advancing the read head.
*/
uint32_t
zix_ring_peek(ZixRing* ring, void* dst, uint32_t size);
/**
Read from the ring and advance the read head.
*/
uint32_t
zix_ring_read(ZixRing* ring, void* dst, uint32_t size);
/**
Skip data in the ring (advance read head without reading).
*/
uint32_t
zix_ring_skip(ZixRing* ring, uint32_t size);
/**
Write data to the ring.
*/
uint32_t
zix_ring_write(ZixRing* ring, const void* src, uint32_t size);
/**
@}
@}
*/
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* ZIX_RING_H */

View File

@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.15.1 from Makefile.am.
# Makefile.in generated by automake 1.16.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
# Copyright (C) 1994-2018 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -165,7 +165,9 @@ am__v_at_0 = @
am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src
depcomp = $(SHELL) $(top_srcdir)/autotools/depcomp
am__depfiles_maybe = depfiles
am__maybe_remake_depfiles = depfiles
am__depfiles_remade = ./$(DEPDIR)/SequenceTest-SequenceTest.Po \
./$(DEPDIR)/SimpleBlockFileTest-SimpleBlockFileTest.Po
am__mv = mv -f
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
@ -616,7 +618,6 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
@ -666,8 +667,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@ -702,8 +703,14 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SequenceTest-SequenceTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SimpleBlockFileTest-SimpleBlockFileTest.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SequenceTest-SequenceTest.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SimpleBlockFileTest-SimpleBlockFileTest.Po@am__quote@ # am--include-marker
$(am__depfiles_remade):
@$(MKDIR_P) $(@D)
@echo '# dummy' >$@-t && $(am__mv) $@-t $@
am--depfiles: $(am__depfiles_remade)
.cpp.o:
@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@ -935,7 +942,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
fi; \
$$success || exit 1
check-TESTS:
check-TESTS: $(check_PROGRAMS)
@list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
@ -985,7 +992,10 @@ SimpleBlockFileTest.log: SimpleBlockFileTest$(EXEEXT)
@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
distdir: $(DISTFILES)
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
@ -1060,7 +1070,8 @@ clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f ./$(DEPDIR)/SequenceTest-SequenceTest.Po
-rm -f ./$(DEPDIR)/SimpleBlockFileTest-SimpleBlockFileTest.Po
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
@ -1106,7 +1117,8 @@ install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f ./$(DEPDIR)/SequenceTest-SequenceTest.Po
-rm -f ./$(DEPDIR)/SimpleBlockFileTest-SimpleBlockFileTest.Po
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
@ -1127,16 +1139,16 @@ uninstall-am:
.MAKE: check-am install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \
ctags ctags-am distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-pdf install-pdf-am \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs maintainer-clean \
.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \
check-am clean clean-checkPROGRAMS clean-generic clean-libtool \
cscopelist-am ctags ctags-am distclean distclean-compile \
distclean-generic distclean-libtool distclean-tags distdir dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
recheck tags tags-am uninstall uninstall-am

View File

@ -55,7 +55,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<AdditionalIncludeDirectories>$(WXWIN)\lib\vc_dll\mswu;$(WXWIN)\include;..\..;..\..\..\include;..\..\..\src;..\..\..\lib-src\expat\lib;..\..\..\lib-src\FileDialog;..\..\..\lib-src\FileDialog\win;..\..\..\lib-src\ffmpeg\win32;..\..\..\lib-src\ffmpeg;..\..\..\lib-src\lib-widget-extra;..\..\..\lib-src\libflac\include;..\..\..\lib-src\libid3tag;..\..\..\lib-src\libmad\msvc++;..\..\..\lib-src\libmad;..\..\..\lib-src\libnyquist;..\..\..\lib-src\libogg\include;..\..\..\lib-src\libscorealign;..\libsndfile;..\..\..\lib-src\libsoxr\src;..\..\..\lib-src\libvamp;..\..\..\lib-src\libvorbis\include;..\..\..\lib-src\portaudio-v19\include;..\..\..\lib-src\portmixer\include;..\..\..\lib-src\portsmf;..\..\..\lib-src\sbsms\include;..\..\..\lib-src\soundtouch\include;..\..\..\lib-src\twolame\libtwolame;..\..\..\lib-src\portmidi\pm_common;..\..\..\lib-src\portmidi\pm_win;..\..\..\lib-src\portmidi\porttime;..\..\..\lib-src\lv2\lilv;..\..\..\lib-src\lv2\lv2;..\..\..\lib-src\lv2\suil;..\..\..\lib-src\lame;$(GSTREAMER_SDK)\include\gstreamer-1.0;$(GSTREAMER_SDK)\include\glib-2.0;$(GSTREAMER_SDK)\lib\glib-2.0\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(WXWIN)\lib\vc_dll\mswu;$(WXWIN)\include;..\..;..\..\..\include;..\..\..\src;..\..\..\lib-src\expat\lib;..\..\..\lib-src\FileDialog;..\..\..\lib-src\FileDialog\win;..\..\..\lib-src\ffmpeg\win32;..\..\..\lib-src\ffmpeg;..\..\..\lib-src\lib-widget-extra;..\..\..\lib-src\libflac\include;..\..\..\lib-src\libid3tag;..\..\..\lib-src\libmad\msvc++;..\..\..\lib-src\libmad;..\..\..\lib-src\libnyquist;..\..\..\lib-src\libogg\include;..\..\..\lib-src\libscorealign;..\libsndfile;..\..\..\lib-src\libsoxr\src;..\..\..\lib-src\libvamp;..\..\..\lib-src\libvorbis\include;..\..\..\lib-src\portaudio-v19\include;..\..\..\lib-src\portmixer\include;..\..\..\lib-src\portsmf;..\..\..\lib-src\sbsms\include;..\..\..\lib-src\soundtouch\include;..\..\..\lib-src\twolame\libtwolame;..\..\..\lib-src\portmidi\pm_common;..\..\..\lib-src\portmidi\pm_win;..\..\..\lib-src\portmidi\porttime;$(OutDir)\include;..\..\..\lib-src\lv2\lilv;..\..\..\lib-src\lv2\lv2;..\..\..\lib-src\lv2\suil;..\..\..\lib-src\lame;$(GSTREAMER_SDK)\include\gstreamer-1.0;$(GSTREAMER_SDK)\include\glib-2.0;$(GSTREAMER_SDK)\lib\glib-2.0\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>BUILDING_AUDACITY;FLAC__NO_DLL;XML_STATIC;__STDC_CONSTANT_MACROS;WXINTL_NO_GETTEXT_MACRO;WXUSINGDLL;__WXMSW__;wxDEBUG_LEVEL=0;NDEBUG;WIN32;STRICT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
@ -86,7 +86,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(WXWIN)\lib\vc_dll\mswud;$(WXWIN)\include;..\..;..\..\..\include;..\..\..\src;..\..\..\lib-src\expat\lib;..\..\..\lib-src\FileDialog;..\..\..\lib-src\FileDialog\win;..\..\..\lib-src\ffmpeg\win32;..\..\..\lib-src\ffmpeg;..\..\..\lib-src\lib-widget-extra;..\..\..\lib-src\libflac\include;..\..\..\lib-src\libid3tag;..\..\..\lib-src\libmad\msvc++;..\..\..\lib-src\libmad;..\..\..\lib-src\libnyquist;..\..\..\lib-src\libogg\include;..\..\..\lib-src\libscorealign;..\libsndfile;..\..\..\lib-src\libsoxr\src;..\..\..\lib-src\libvamp;..\..\..\lib-src\libvorbis\include;..\..\..\lib-src\portaudio-v19\include;..\..\..\lib-src\portmixer\include;..\..\..\lib-src\portsmf;..\..\..\lib-src\sbsms\include;..\..\..\lib-src\soundtouch\include;..\..\..\lib-src\twolame\libtwolame;..\..\..\lib-src\portmidi\pm_common;..\..\..\lib-src\portmidi\pm_win;..\..\..\lib-src\portmidi\porttime;..\..\..\lib-src\lv2\lilv;..\..\..\lib-src\lv2\lv2;..\..\..\lib-src\lv2\suil;..\..\..\lib-src\lame;$(GSTREAMER_SDK)\include\gstreamer-1.0;$(GSTREAMER_SDK)\include\glib-2.0;$(GSTREAMER_SDK)\lib\glib-2.0\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(WXWIN)\lib\vc_dll\mswud;$(WXWIN)\include;..\..;..\..\..\include;..\..\..\src;..\..\..\lib-src\expat\lib;..\..\..\lib-src\FileDialog;..\..\..\lib-src\FileDialog\win;..\..\..\lib-src\ffmpeg\win32;..\..\..\lib-src\ffmpeg;..\..\..\lib-src\lib-widget-extra;..\..\..\lib-src\libflac\include;..\..\..\lib-src\libid3tag;..\..\..\lib-src\libmad\msvc++;..\..\..\lib-src\libmad;..\..\..\lib-src\libnyquist;..\..\..\lib-src\libogg\include;..\..\..\lib-src\libscorealign;..\libsndfile;..\..\..\lib-src\libsoxr\src;..\..\..\lib-src\libvamp;..\..\..\lib-src\libvorbis\include;..\..\..\lib-src\portaudio-v19\include;..\..\..\lib-src\portmixer\include;..\..\..\lib-src\portsmf;..\..\..\lib-src\sbsms\include;..\..\..\lib-src\soundtouch\include;..\..\..\lib-src\twolame\libtwolame;..\..\..\lib-src\portmidi\pm_common;..\..\..\lib-src\portmidi\pm_win;..\..\..\lib-src\portmidi\porttime;$(OutDir)\include;..\..\..\lib-src\lv2\lilv;..\..\..\lib-src\lv2\lv2;..\..\..\lib-src\lv2\suil;..\..\..\lib-src\lame;$(GSTREAMER_SDK)\include\gstreamer-1.0;$(GSTREAMER_SDK)\include\glib-2.0;$(GSTREAMER_SDK)\lib\glib-2.0\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>BUILDING_AUDACITY;FLAC__NO_DLL;XML_STATIC;__STDC_CONSTANT_MACROS;WXINTL_NO_GETTEXT_MACRO;WXUSINGDLL;__WXMSW__;__WXDEBUG__;_DEBUG;WIN32;STRICT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
@ -162,6 +162,7 @@
<ClCompile Include="..\..\..\src\effects\Distortion.cpp" />
<ClCompile Include="..\..\..\src\effects\EffectRack.cpp" />
<ClCompile Include="..\..\..\src\effects\Equalization48x.cpp" />
<ClCompile Include="..\..\..\src\effects\lv2\zix\ring.cpp" />
<ClCompile Include="..\..\..\src\effects\NoiseReduction.cpp" />
<ClCompile Include="..\..\..\src\effects\Phaser.cpp" />
<ClCompile Include="..\..\..\src\effects\VST\VSTControlMSW.cpp" />
@ -561,6 +562,8 @@
<ClInclude Include="..\..\..\src\effects\Distortion.h" />
<ClInclude Include="..\..\..\src\effects\EffectRack.h" />
<ClInclude Include="..\..\..\src\effects\Equalization48x.h" />
<ClInclude Include="..\..\..\src\effects\lv2\zix\common.h" />
<ClInclude Include="..\..\..\src\effects\lv2\zix\ring.h" />
<ClInclude Include="..\..\..\src\effects\NoiseReduction.h" />
<ClInclude Include="..\..\..\src\effects\Phaser.h" />
<ClInclude Include="..\..\..\src\effects\VST\VSTControlMSW.h" />

View File

@ -108,6 +108,9 @@
<Filter Include="src\menus">
<UniqueIdentifier>{86457c18-e1ec-4e2a-9790-f4ceaf6380a3}</UniqueIdentifier>
</Filter>
<Filter Include="src\effects\lv2\zix">
<UniqueIdentifier>{fa7108aa-5bf5-4e48-b33a-6af62340e5a1}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\src\AboutDialog.cpp">
@ -1253,6 +1256,9 @@
<ClCompile Include="..\..\..\src\tracks\ui\TrackView.cpp">
<Filter>src\tracks\ui</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\effects\lv2\zix\ring.cpp">
<Filter>src\effects\lv2\zix</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\src\AboutDialog.h">
@ -2443,6 +2449,12 @@
<ClInclude Include="..\..\..\src\TrackPanelDrawable.h">
<Filter>src</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\effects\lv2\zix\common.h">
<Filter>src\effects\lv2\zix</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\effects\lv2\zix\ring.h">
<Filter>src\effects\lv2\zix</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Image Include="..\..\audacity.ico">

0
win/Projects/Audacity/Directory.Build.props Normal file → Executable file
View File

View File

@ -47,11 +47,12 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<CustomBuildAfterTargets>Clean</CustomBuildAfterTargets>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<AdditionalIncludeDirectories>..\..\..\lib-src\lv2\windows;..\..\..\lib-src\lv2\sord\src;..\..\..\lib-src\lv2\lilv;..\..\..\lib-src\lv2\lv2;..\..\..\lib-src\lv2\serd;..\..\..\lib-src\lv2\sord;..\..\..\lib-src\lv2\sratom;..\..\..\lib-src\lv2\suil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..\..\lib-src\lv2\windows;..\..\..\lib-src\lv2\include;..\..\..\lib-src\lv2\sord\src;..\..\..\lib-src\lv2\lilv;..\..\..\lib-src\lv2\lilv\src;..\..\..\lib-src\lv2\lv2;..\..\..\lib-src\lv2\serd;..\..\..\lib-src\lv2\sord;..\..\..\lib-src\lv2\sratom;..\..\..\lib-src\lv2\suil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;$(AudacityConditionalSnprintf);HAVE_FMAX;LILV_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
@ -61,11 +62,27 @@
<CompileAs>CompileAsCpp</CompileAs>
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile>
<PreBuildEvent>
<Command>echo "$(OutDir)\include\lv2"
ECHO ON
IF EXIST "$(OutDir)\include\lv2" GOTO done
MKDIR "$(OutDir)\include\lv2\lv2plug.in\ns\ext"
MKDIR "$(OutDir)\include\lv2\lv2plug.in\ns\extensions"
MKDIR "$(OutDir)\include\lv2\lv2plug.in\ns\lv2core"
XCOPY /IE "$(SolutionDir)\..\lib-src\lv2\lv2\lv2" "$(OutDir)\include\lv2"
XCOPY /IE "$(SolutionDir)\..\lib-src\lv2\lv2\lv2\core\lv2.h" "$(OutDir)\include\lv2"
XCOPY /IE "$(SolutionDir)\..\lib-src\lv2\lv2\lv2" "$(OutDir)\include\lv2\lv2plug.in\ns\ext"
XCOPY /IE "$(SolutionDir)\..\lib-src\lv2\lv2\lv2\ui\*.h" "$(OutDir)\include\lv2\lv2plug.in\ns\extensions\ui"
XCOPY /IE "$(SolutionDir)\..\lib-src\lv2\lv2\lv2\units\*.h" "$(OutDir)\include\lv2\lv2plug.in\ns\extensions\units"
XCOPY /IE "$(SolutionDir)\..\lib-src\lv2\lv2\lv2\core\*.h" "$(OutDir)\include\lv2\lv2plug.in\ns\lv2core"
:done
</Command>
</PreBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\..\lib-src\lv2\windows;..\..\..\lib-src\lv2\sord\src;..\..\..\lib-src\lv2\lilv;..\..\..\lib-src\lv2\lv2;..\..\..\lib-src\lv2\serd;..\..\..\lib-src\lv2\sord;..\..\..\lib-src\lv2\sratom;..\..\..\lib-src\lv2\suil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(OutDir)\include;..\..\..\lib-src\lv2\windows;..\..\..\lib-src\lv2\sord\src;..\..\..\lib-src\lv2\lilv;..\..\..\lib-src\lv2\lilv\src;..\..\..\lib-src\lv2\lv2;..\..\..\lib-src\lv2\serd;..\..\..\lib-src\lv2\sord;..\..\..\lib-src\lv2\sratom;..\..\..\lib-src\lv2\suil;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;$(AudacityConditionalSnprintf);HAVE_FMAX;LILV_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
@ -83,16 +100,37 @@
<Lib>
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
</Lib>
<PreBuildEvent>
<Command>IF EXIST "$(OutDir)\include\lv2" GOTO done
MKDIR "$(OutDir)\include\lv2\lv2plug.in\ns\ext"
MKDIR "$(OutDir)\include\lv2\lv2plug.in\ns\extensions"
MKDIR "$(OutDir)\include\lv2\lv2plug.in\ns\lv2core"
XCOPY /I /E /Q "$(SolutionDir)\..\lib-src\lv2\lv2\lv2" "$(OutDir)\include\lv2"
XCOPY /I /E /Q "$(SolutionDir)\..\lib-src\lv2\lv2\lv2\core\lv2.h" "$(OutDir)\include"
XCOPY /I /E /Q "$(SolutionDir)\..\lib-src\lv2\lv2\lv2" "$(OutDir)\include\lv2\lv2plug.in\ns\ext"
XCOPY /I /E /Q "$(SolutionDir)\..\lib-src\lv2\lv2\lv2\ui\*.h" "$(OutDir)\include\lv2\lv2plug.in\ns\extensions\ui"
XCOPY /I /E /Q "$(SolutionDir)\..\lib-src\lv2\lv2\lv2\units\*.h" "$(OutDir)\include\lv2\lv2plug.in\ns\extensions\units"
XCOPY /I /E /Q "$(SolutionDir)\..\lib-src\lv2\lv2\lv2\core\*.h" "$(OutDir)\include\lv2\lv2plug.in\ns\lv2core"
:done
</Command>
<Message>Performing Custom Build Step</Message>
</PreBuildEvent>
<CustomBuildStep>
<Command>RD /S /Q "$(OutDir)/include"</Command>
<Outputs>dummy</Outputs>
<Message>Performing Custom Clean Step</Message>
</CustomBuildStep>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\..\lib-src\lv2\lilv\src\collections.c">
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
<ClCompile Include="..\..\..\lib-src\lv2\lilv\src\collections.c" />
<ClCompile Include="..\..\..\lib-src\lv2\lilv\src\instance.c">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)\lilv_instance.obj</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)\lilv_instance.obj</ObjectFileName>
</ClCompile>
<ClCompile Include="..\..\..\lib-src\lv2\lilv\src\instance.c" />
<ClCompile Include="..\..\..\lib-src\lv2\lilv\src\lib.c" />
<ClCompile Include="..\..\..\lib-src\lv2\lilv\src\node.c">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)lilv-node.obj</ObjectFileName>
<XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)lilv-node.obj</XMLDocumentationFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)\lilv_node.obj</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)\lilv_node.obj</ObjectFileName>
</ClCompile>
<ClCompile Include="..\..\..\lib-src\lv2\lilv\src\plugin.c" />
<ClCompile Include="..\..\..\lib-src\lv2\lilv\src\pluginclass.c" />
@ -103,33 +141,78 @@
<ClCompile Include="..\..\..\lib-src\lv2\lilv\src\ui.c" />
<ClCompile Include="..\..\..\lib-src\lv2\lilv\src\util.c" />
<ClCompile Include="..\..\..\lib-src\lv2\lilv\src\world.c" />
<ClCompile Include="..\..\..\lib-src\lv2\lilv\src\zix\tree.c" />
<ClCompile Include="..\..\..\lib-src\lv2\serd\src\byte_source.c" />
<ClCompile Include="..\..\..\lib-src\lv2\serd\src\env.c" />
<ClCompile Include="..\..\..\lib-src\lv2\serd\src\n3.c" />
<ClCompile Include="..\..\..\lib-src\lv2\serd\src\node.c">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)\serd_node.obj</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)\serd_node.obj</ObjectFileName>
</ClCompile>
<ClCompile Include="..\..\..\lib-src\lv2\serd\src\reader.c" />
<ClCompile Include="..\..\..\lib-src\lv2\serd\src\serdnode.c" />
<ClCompile Include="..\..\..\lib-src\lv2\serd\src\serdi.c" />
<ClCompile Include="..\..\..\lib-src\lv2\serd\src\string.c" />
<ClCompile Include="..\..\..\lib-src\lv2\serd\src\uri.c" />
<ClCompile Include="..\..\..\lib-src\lv2\serd\src\writer.c" />
<ClCompile Include="..\..\..\lib-src\lv2\sord\src\sord.c" />
<ClCompile Include="..\..\..\lib-src\lv2\sord\src\sordi.c" />
<ClCompile Include="..\..\..\lib-src\lv2\sord\src\sord_validate.c" />
<ClCompile Include="..\..\..\lib-src\lv2\sord\src\syntax.c" />
<ClCompile Include="..\..\..\lib-src\lv2\sord\src\zix\btree.c" />
<ClCompile Include="..\..\..\lib-src\lv2\sord\src\zix\digest.c" />
<ClCompile Include="..\..\..\lib-src\lv2\sord\src\zix\hash.c" />
<ClCompile Include="..\..\..\lib-src\lv2\sord\src\zix\tree.c" />
<ClCompile Include="..\..\..\lib-src\lv2\sratom\src\sratom.c" />
<ClCompile Include="..\..\..\lib-src\lv2\suil\src\host.c" />
<ClCompile Include="..\..\..\lib-src\lv2\suil\src\suil_instance.c" />
<ClCompile Include="..\..\..\lib-src\lv2\suil\src\instance.c">
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)\suil_instance.obj</ObjectFileName>
<ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)\suil_instance.obj</ObjectFileName>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\lib-src\lv2\lilv\lilv\lilv.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lilv\src\lilv_internal.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lilv\src\zix\common.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lilv\src\zix\tree.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\atom\atom.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\atom\forge.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\atom\util.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\buf-size\buf-size.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\core\attributes.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\core\lv2.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\core\lv2_util.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\data-access\data-access.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\dynmanifest\dynmanifest.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\event\event-helpers.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\event\event.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\instance-access\instance-access.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\log\log.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\midi\midi.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\morph\morph.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\options\options.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\parameters\parameters.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\patch\patch.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\port-groups\port-groups.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\port-props\port-props.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\presets\presets.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\resize-port\resize-port.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\state\state.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\time\time.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\ui\ui.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\units\units.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\uri-map\uri-map.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\urid\urid.h" />
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\worker\worker.h" />
<ClInclude Include="..\..\..\lib-src\lv2\serd\serd\serd.h" />
<ClInclude Include="..\..\..\lib-src\lv2\serd\src\reader.h" />
<ClInclude Include="..\..\..\lib-src\lv2\serd\src\serd_internal.h" />
<ClInclude Include="..\..\..\lib-src\lv2\sord\sord\sord.h" />
<ClInclude Include="..\..\..\lib-src\lv2\sord\src\sord_internal.h" />
<ClInclude Include="..\..\..\lib-src\lv2\sord\src\zix\btree.h" />
<ClInclude Include="..\..\..\lib-src\lv2\sord\src\zix\common.h" />
<ClInclude Include="..\..\..\lib-src\lv2\sord\src\zix\digest.h" />
<ClInclude Include="..\..\..\lib-src\lv2\sord\src\zix\hash.h" />
<ClInclude Include="..\..\..\lib-src\lv2\sord\src\zix\tree.h" />
<ClInclude Include="..\..\..\lib-src\lv2\sratom\sratom\sratom.h" />
<ClInclude Include="..\..\..\lib-src\lv2\suil\src\suil_internal.h" />
<ClInclude Include="..\..\..\lib-src\lv2\suil\suil\suil.h" />
<ClInclude Include="..\..\..\lib-src\lv2\windows\lilv_config.h" />
<ClInclude Include="..\..\..\lib-src\lv2\windows\serd_config.h" />

View File

@ -64,8 +64,89 @@
<Filter Include="sord\Header Files\zix">
<UniqueIdentifier>{aff2e7d6-f42d-4c74-8fcc-afc61eb173e0}</UniqueIdentifier>
</Filter>
<Filter Include="lv2">
<UniqueIdentifier>{71ea567f-2ee0-48e8-9fd2-0bbeb3ad5793}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers">
<UniqueIdentifier>{71dc7ddf-2c35-4c85-a240-fc1727bc2972}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers\atom">
<UniqueIdentifier>{b50c6bd7-f653-4f29-9cdb-51bffa4ec599}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers\buf-size">
<UniqueIdentifier>{4ad29d4d-bc79-4024-865d-9628aa9a4a90}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers\core">
<UniqueIdentifier>{9bfa79df-8c29-4906-9074-68e4d05020ef}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers\data-access">
<UniqueIdentifier>{77249059-9994-4c8d-94cf-7009fb706698}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers\dynmanifest">
<UniqueIdentifier>{cbaf795c-ff65-4836-a7b0-ee3edee1cf0f}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers\event">
<UniqueIdentifier>{3e45f6b0-a278-4e32-9fc5-0e41e07c94c0}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers\instance-access">
<UniqueIdentifier>{62b5e770-a1cf-4f94-ae04-efaf851c3228}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers\log">
<UniqueIdentifier>{e2a699da-e36d-49db-acde-b14ed23134b5}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers\midi">
<UniqueIdentifier>{92bfcd2c-9d6e-4ac4-90f6-f49196b43b04}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers\morph">
<UniqueIdentifier>{ff62d40e-6042-41bd-9180-e7ade240c11d}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers\options">
<UniqueIdentifier>{d658a88d-f3d6-42a3-a0a2-8aada0e62787}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers\parameters">
<UniqueIdentifier>{f2b769e1-6536-4be2-892a-c4dfc43a74c6}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers\patch">
<UniqueIdentifier>{8ffcf542-361f-4d88-9e10-e489b8a34a52}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers\port-groups">
<UniqueIdentifier>{48107c6a-a9f7-4f53-a838-e56b09ce010f}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers\port-props">
<UniqueIdentifier>{4421b238-9f7b-45ad-9a96-c6963c4d81af}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers\presets">
<UniqueIdentifier>{b376e2bb-4a92-47d9-85af-bf02aa327854}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers\resize-port">
<UniqueIdentifier>{98b89324-dd5b-4e96-9ba1-82abb48b1ae4}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers\state">
<UniqueIdentifier>{c39f617d-2530-4143-940f-2152a5869d62}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers\time">
<UniqueIdentifier>{d63d6499-2cfc-47c8-8f39-778e92dfb738}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers\ui">
<UniqueIdentifier>{ec7611c0-ecd5-4b1c-83c9-fc14edf76c77}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers\units">
<UniqueIdentifier>{aba9e39f-7c42-4937-b295-a21d4d075067}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers\uri-map">
<UniqueIdentifier>{5099e59f-7172-43bf-a8b0-e1d4317d927f}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers\worker">
<UniqueIdentifier>{8622d246-048d-453b-9cd5-ffbd14bc044c}</UniqueIdentifier>
</Filter>
<Filter Include="lv2\Headers\urid">
<UniqueIdentifier>{57ac3edf-02f0-429e-89c3-26578f0fc119}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\lib-src\lv2\lilv\src\zix\tree.c">
<Filter>lilv\Source Files\zix</Filter>
</ClCompile>
<ClCompile Include="..\..\..\lib-src\lv2\lilv\src\collections.c">
<Filter>lilv\Source Files</Filter>
</ClCompile>
@ -105,13 +186,19 @@
<ClCompile Include="..\..\..\lib-src\lv2\lilv\src\world.c">
<Filter>lilv\Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\lib-src\lv2\serd\src\byte_source.c">
<Filter>serd\Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\lib-src\lv2\serd\src\env.c">
<Filter>serd\Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\lib-src\lv2\serd\src\n3.c">
<Filter>serd\Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\lib-src\lv2\serd\src\reader.c">
<Filter>serd\Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\lib-src\lv2\serd\src\serdnode.c">
<ClCompile Include="..\..\..\lib-src\lv2\serd\src\serdi.c">
<Filter>serd\Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\lib-src\lv2\serd\src\string.c">
@ -123,9 +210,24 @@
<ClCompile Include="..\..\..\lib-src\lv2\serd\src\writer.c">
<Filter>serd\Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\lib-src\lv2\sord\src\zix\btree.c">
<Filter>sord\Source Files\zix</Filter>
</ClCompile>
<ClCompile Include="..\..\..\lib-src\lv2\sord\src\zix\digest.c">
<Filter>sord\Source Files\zix</Filter>
</ClCompile>
<ClCompile Include="..\..\..\lib-src\lv2\sord\src\zix\hash.c">
<Filter>sord\Source Files\zix</Filter>
</ClCompile>
<ClCompile Include="..\..\..\lib-src\lv2\sord\src\sord.c">
<Filter>sord\Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\lib-src\lv2\sord\src\sord_validate.c">
<Filter>sord\Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\lib-src\lv2\sord\src\sordi.c">
<Filter>sord\Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\lib-src\lv2\sord\src\syntax.c">
<Filter>sord\Source Files</Filter>
</ClCompile>
@ -135,17 +237,11 @@
<ClCompile Include="..\..\..\lib-src\lv2\suil\src\host.c">
<Filter>suil\Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\lib-src\lv2\suil\src\suil_instance.c">
<ClCompile Include="..\..\..\lib-src\lv2\suil\src\instance.c">
<Filter>suil\Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\lib-src\lv2\sord\src\zix\digest.c">
<Filter>sord\Source Files\zix</Filter>
</ClCompile>
<ClCompile Include="..\..\..\lib-src\lv2\sord\src\zix\hash.c">
<Filter>sord\Source Files\zix</Filter>
</ClCompile>
<ClCompile Include="..\..\..\lib-src\lv2\sord\src\zix\tree.c">
<Filter>sord\Source Files\zix</Filter>
<ClCompile Include="..\..\..\lib-src\lv2\serd\src\node.c">
<Filter>serd\Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
@ -155,24 +251,6 @@
<ClInclude Include="..\..\..\lib-src\lv2\lilv\src\lilv_internal.h">
<Filter>lilv\Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\serd\serd\serd.h">
<Filter>serd\Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\serd\src\serd_internal.h">
<Filter>serd\Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\sord\sord\sord.h">
<Filter>sord\Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\sord\src\sord_internal.h">
<Filter>sord\Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\sratom\sratom\sratom.h">
<Filter>sratom\Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\suil\suil\suil.h">
<Filter>suil\Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\windows\lilv_config.h">
<Filter>windows\Header Fiels</Filter>
</ClInclude>
@ -188,6 +266,21 @@
<ClInclude Include="..\..\..\lib-src\lv2\windows\suil_config.h">
<Filter>windows\Header Fiels</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lilv\src\zix\common.h">
<Filter>lilv\Header Files\zix</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lilv\src\zix\tree.h">
<Filter>lilv\Header Files\zix</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\serd\src\reader.h">
<Filter>serd\Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\serd\src\serd_internal.h">
<Filter>serd\Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\sord\src\zix\btree.h">
<Filter>sord\Header Files\zix</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\sord\src\zix\common.h">
<Filter>sord\Header Files\zix</Filter>
</ClInclude>
@ -197,8 +290,110 @@
<ClInclude Include="..\..\..\lib-src\lv2\sord\src\zix\hash.h">
<Filter>sord\Header Files\zix</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\sord\src\zix\tree.h">
<Filter>sord\Header Files\zix</Filter>
<ClInclude Include="..\..\..\lib-src\lv2\sord\src\sord_internal.h">
<Filter>sord\Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\sratom\sratom\sratom.h">
<Filter>sratom\Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\sord\sord\sord.h">
<Filter>sord\Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\serd\serd\serd.h">
<Filter>serd\Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\suil\suil\suil.h">
<Filter>suil\Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\suil\src\suil_internal.h">
<Filter>suil\Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\atom\atom.h">
<Filter>lv2\Headers\atom</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\atom\forge.h">
<Filter>lv2\Headers\atom</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\atom\util.h">
<Filter>lv2\Headers\atom</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\buf-size\buf-size.h">
<Filter>lv2\Headers\buf-size</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\core\attributes.h">
<Filter>lv2\Headers\core</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\core\lv2.h">
<Filter>lv2\Headers\core</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\core\lv2_util.h">
<Filter>lv2\Headers\core</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\data-access\data-access.h">
<Filter>lv2\Headers\data-access</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\dynmanifest\dynmanifest.h">
<Filter>lv2\Headers\dynmanifest</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\event\event.h">
<Filter>lv2\Headers\event</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\event\event-helpers.h">
<Filter>lv2\Headers\event</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\instance-access\instance-access.h">
<Filter>lv2\Headers\instance-access</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\log\log.h">
<Filter>lv2\Headers\log</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\midi\midi.h">
<Filter>lv2\Headers\midi</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\morph\morph.h">
<Filter>lv2\Headers\morph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\state\state.h">
<Filter>lv2\Headers\state</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\time\time.h">
<Filter>lv2\Headers\time</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\ui\ui.h">
<Filter>lv2\Headers\ui</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\units\units.h">
<Filter>lv2\Headers\units</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\uri-map\uri-map.h">
<Filter>lv2\Headers\uri-map</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\urid\urid.h">
<Filter>lv2\Headers\urid</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\worker\worker.h">
<Filter>lv2\Headers\worker</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\options\options.h">
<Filter>lv2\Headers\options</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\parameters\parameters.h">
<Filter>lv2\Headers\parameters</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\patch\patch.h">
<Filter>lv2\Headers\patch</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\port-groups\port-groups.h">
<Filter>lv2\Headers\port-groups</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\port-props\port-props.h">
<Filter>lv2\Headers\port-props</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\presets\presets.h">
<Filter>lv2\Headers\presets</Filter>
</ClInclude>
<ClInclude Include="..\..\..\lib-src\lv2\lv2\lv2\resize-port\resize-port.h">
<Filter>lv2\Headers\resize-port</Filter>
</ClInclude>
</ItemGroup>
</Project>