diff --git a/CMakeLists.txt b/CMakeLists.txt index e35658db19..be73802ffa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -55,7 +55,7 @@ include(extras/Build/CMake/JUCEUtils.cmake) set_directory_properties(PROPERTIES JUCE_COMPANY_NAME "JUCE" - JUCE_COMPANY_WEBSITE "juce.com" + JUCE_COMPANY_WEBSITE "https://juce.com" JUCE_COMPANY_EMAIL "info@juce.com" JUCE_COMPANY_COPYRIGHT "Copyright (c) 2020 - Raw Material Software Limited") @@ -138,6 +138,7 @@ install(FILES "${JUCE_BINARY_DIR}/JUCEConfigVersion.cmake" "${JUCE_CMAKE_UTILS_DIR}/JUCEHelperTargets.cmake" "${JUCE_CMAKE_UTILS_DIR}/JUCEModuleSupport.cmake" "${JUCE_CMAKE_UTILS_DIR}/JUCEUtils.cmake" + "${JUCE_CMAKE_UTILS_DIR}/JuceLV2Defines.h.in" "${JUCE_CMAKE_UTILS_DIR}/LaunchScreen.storyboard" "${JUCE_CMAKE_UTILS_DIR}/PIPAudioProcessor.cpp.in" "${JUCE_CMAKE_UTILS_DIR}/PIPComponent.cpp.in" diff --git a/examples/DemoRunner/Builds/LinuxMakefile/Makefile b/examples/DemoRunner/Builds/LinuxMakefile/Makefile index 236baadfd0..4501004c8e 100644 --- a/examples/DemoRunner/Builds/LinuxMakefile/Makefile +++ b/examples/DemoRunner/Builds/LinuxMakefile/Makefile @@ -40,7 +40,7 @@ ifeq ($(CONFIG),Debug) endif JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DDEBUG=1" "-D_DEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_analytics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_box2d=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_dsp=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_MODULE_AVAILABLE_juce_osc=1" "-DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1" "-DJUCE_MODULE_AVAILABLE_juce_video=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_USE_MP3AUDIOFORMAT=1" "-DJUCE_PLUGINHOST_VST3=1" "-DJUCE_PLUGINHOST_LV2=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_USE_CAMERA=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCE_DEMO_RUNNER=1" "-DJUCE_UNIT_TESTS=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=6.1.6" "-DJUCE_APP_VERSION_HEX=0x60106" $(shell $(PKG_CONFIG) --cflags alsa freetype2 libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 -I../../../../modules/juce_audio_processors/format_types/LV2_SDK -I../../../../modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) - JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" + JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" "-DJucePlugin_Build_LV2=0" JUCE_TARGET_APP := DemoRunner JUCE_CFLAGS += $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0 $(CFLAGS) @@ -61,7 +61,7 @@ ifeq ($(CONFIG),Release) endif JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_analytics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_box2d=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_dsp=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_MODULE_AVAILABLE_juce_osc=1" "-DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1" "-DJUCE_MODULE_AVAILABLE_juce_video=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_USE_MP3AUDIOFORMAT=1" "-DJUCE_PLUGINHOST_VST3=1" "-DJUCE_PLUGINHOST_LV2=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_USE_CAMERA=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCE_DEMO_RUNNER=1" "-DJUCE_UNIT_TESTS=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=6.1.6" "-DJUCE_APP_VERSION_HEX=0x60106" $(shell $(PKG_CONFIG) --cflags alsa freetype2 libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 -I../../../../modules/juce_audio_processors/format_types/LV2_SDK -I../../../../modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) - JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" + JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" "-DJucePlugin_Build_LV2=0" JUCE_TARGET_APP := DemoRunner JUCE_CFLAGS += $(JUCE_CPPFLAGS) $(TARGET_ARCH) -O3 $(CFLAGS) diff --git a/examples/DemoRunner/Builds/MacOSX/DemoRunner.xcodeproj/project.pbxproj b/examples/DemoRunner/Builds/MacOSX/DemoRunner.xcodeproj/project.pbxproj index a000dd3d7e..60f1814900 100644 --- a/examples/DemoRunner/Builds/MacOSX/DemoRunner.xcodeproj/project.pbxproj +++ b/examples/DemoRunner/Builds/MacOSX/DemoRunner.xcodeproj/project.pbxproj @@ -552,6 +552,7 @@ "JucePlugin_Build_AAX=0", "JucePlugin_Build_Standalone=0", "JucePlugin_Build_Unity=0", + "JucePlugin_Build_LV2=0", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( @@ -644,6 +645,7 @@ "JucePlugin_Build_AAX=0", "JucePlugin_Build_Standalone=0", "JucePlugin_Build_Unity=0", + "JucePlugin_Build_LV2=0", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( diff --git a/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj index 7af428eb3e..fff1bfc407 100644 --- a/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj +++ b/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -106,7 +106,7 @@ Full ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreaded true NotUsing diff --git a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj index c2dc587bc3..08f94d3255 100644 --- a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj +++ b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -106,7 +106,7 @@ Full ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreaded true NotUsing diff --git a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj index 365218980b..fc20ce9631 100644 --- a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj +++ b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -106,7 +106,7 @@ Full ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreaded true NotUsing diff --git a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj index 467260f38c..145a0c3869 100644 --- a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj +++ b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -106,7 +106,7 @@ Full ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreaded true NotUsing diff --git a/examples/DemoRunner/Builds/iOS/DemoRunner.xcodeproj/project.pbxproj b/examples/DemoRunner/Builds/iOS/DemoRunner.xcodeproj/project.pbxproj index eeddbe32f8..5230f6d63a 100644 --- a/examples/DemoRunner/Builds/iOS/DemoRunner.xcodeproj/project.pbxproj +++ b/examples/DemoRunner/Builds/iOS/DemoRunner.xcodeproj/project.pbxproj @@ -556,6 +556,7 @@ "JucePlugin_Build_AAX=0", "JucePlugin_Build_Standalone=0", "JucePlugin_Build_Unity=0", + "JucePlugin_Build_LV2=0", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( @@ -648,6 +649,7 @@ "JucePlugin_Build_AAX=0", "JucePlugin_Build_Standalone=0", "JucePlugin_Build_Unity=0", + "JucePlugin_Build_LV2=0", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( diff --git a/extras/AudioPerformanceTest/Builds/LinuxMakefile/Makefile b/extras/AudioPerformanceTest/Builds/LinuxMakefile/Makefile index 90bc98ba94..a5a703096e 100644 --- a/extras/AudioPerformanceTest/Builds/LinuxMakefile/Makefile +++ b/extras/AudioPerformanceTest/Builds/LinuxMakefile/Makefile @@ -40,7 +40,7 @@ ifeq ($(CONFIG),Debug) endif JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DDEBUG=1" "-D_DEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell $(PKG_CONFIG) --cflags alsa freetype2 libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) - JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" + JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" "-DJucePlugin_Build_LV2=0" JUCE_TARGET_APP := AudioPerformanceTest JUCE_CFLAGS += $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0 $(CFLAGS) @@ -61,7 +61,7 @@ ifeq ($(CONFIG),Release) endif JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell $(PKG_CONFIG) --cflags alsa freetype2 libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) - JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" + JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" "-DJucePlugin_Build_LV2=0" JUCE_TARGET_APP := AudioPerformanceTest JUCE_CFLAGS += $(JUCE_CPPFLAGS) $(TARGET_ARCH) -O3 $(CFLAGS) diff --git a/extras/AudioPerformanceTest/Builds/MacOSX/AudioPerformanceTest.xcodeproj/project.pbxproj b/extras/AudioPerformanceTest/Builds/MacOSX/AudioPerformanceTest.xcodeproj/project.pbxproj index 164a725b88..47e4d35f5c 100644 --- a/extras/AudioPerformanceTest/Builds/MacOSX/AudioPerformanceTest.xcodeproj/project.pbxproj +++ b/extras/AudioPerformanceTest/Builds/MacOSX/AudioPerformanceTest.xcodeproj/project.pbxproj @@ -354,6 +354,7 @@ "JucePlugin_Build_AAX=0", "JucePlugin_Build_Standalone=0", "JucePlugin_Build_Unity=0", + "JucePlugin_Build_LV2=0", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( @@ -417,6 +418,7 @@ "JucePlugin_Build_AAX=0", "JucePlugin_Build_Standalone=0", "JucePlugin_Build_Unity=0", + "JucePlugin_Build_LV2=0", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( diff --git a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj index e1211c3072..83cfb2029f 100644 --- a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj +++ b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -105,7 +105,7 @@ Full ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDLL true NotUsing diff --git a/extras/AudioPerformanceTest/Builds/iOS/AudioPerformanceTest.xcodeproj/project.pbxproj b/extras/AudioPerformanceTest/Builds/iOS/AudioPerformanceTest.xcodeproj/project.pbxproj index b7e28d9ce5..b43aa9a583 100644 --- a/extras/AudioPerformanceTest/Builds/iOS/AudioPerformanceTest.xcodeproj/project.pbxproj +++ b/extras/AudioPerformanceTest/Builds/iOS/AudioPerformanceTest.xcodeproj/project.pbxproj @@ -367,6 +367,7 @@ "JucePlugin_Build_AAX=0", "JucePlugin_Build_Standalone=0", "JucePlugin_Build_Unity=0", + "JucePlugin_Build_LV2=0", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( @@ -429,6 +430,7 @@ "JucePlugin_Build_AAX=0", "JucePlugin_Build_Standalone=0", "JucePlugin_Build_Unity=0", + "JucePlugin_Build_LV2=0", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( diff --git a/extras/AudioPluginHost/Builds/LinuxMakefile/Makefile b/extras/AudioPluginHost/Builds/LinuxMakefile/Makefile index 7fd2578a66..b5ae84ac75 100644 --- a/extras/AudioPluginHost/Builds/LinuxMakefile/Makefile +++ b/extras/AudioPluginHost/Builds/LinuxMakefile/Makefile @@ -40,7 +40,7 @@ ifeq ($(CONFIG),Debug) endif JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DDEBUG=1" "-D_DEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_dsp=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_WASAPI=1" "-DJUCE_DIRECTSOUND=1" "-DJUCE_ALSA=1" "-DJUCE_USE_FLAC=0" "-DJUCE_USE_OGGVORBIS=1" "-DJUCE_PLUGINHOST_VST3=1" "-DJUCE_PLUGINHOST_AU=1" "-DJUCE_PLUGINHOST_LADSPA=1" "-DJUCE_PLUGINHOST_LV2=1" "-DJUCE_USE_CDREADER=0" "-DJUCE_USE_CDBURNER=0" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell $(PKG_CONFIG) --cflags alsa freetype2 libcurl) -pthread -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 -I../../../../modules/juce_audio_processors/format_types/LV2_SDK -I../../../../modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) - JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" + JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" "-DJucePlugin_Build_LV2=0" JUCE_TARGET_APP := AudioPluginHost JUCE_CFLAGS += $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0 $(CFLAGS) @@ -61,7 +61,7 @@ ifeq ($(CONFIG),Release) endif JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_dsp=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_WASAPI=1" "-DJUCE_DIRECTSOUND=1" "-DJUCE_ALSA=1" "-DJUCE_USE_FLAC=0" "-DJUCE_USE_OGGVORBIS=1" "-DJUCE_PLUGINHOST_VST3=1" "-DJUCE_PLUGINHOST_AU=1" "-DJUCE_PLUGINHOST_LADSPA=1" "-DJUCE_PLUGINHOST_LV2=1" "-DJUCE_USE_CDREADER=0" "-DJUCE_USE_CDBURNER=0" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell $(PKG_CONFIG) --cflags alsa freetype2 libcurl) -pthread -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 -I../../../../modules/juce_audio_processors/format_types/LV2_SDK -I../../../../modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) - JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" + JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" "-DJucePlugin_Build_LV2=0" JUCE_TARGET_APP := AudioPluginHost JUCE_CFLAGS += $(JUCE_CPPFLAGS) $(TARGET_ARCH) -Os $(CFLAGS) diff --git a/extras/AudioPluginHost/Builds/MacOSX/AudioPluginHost.xcodeproj/project.pbxproj b/extras/AudioPluginHost/Builds/MacOSX/AudioPluginHost.xcodeproj/project.pbxproj index ace3223cc1..78aac00578 100644 --- a/extras/AudioPluginHost/Builds/MacOSX/AudioPluginHost.xcodeproj/project.pbxproj +++ b/extras/AudioPluginHost/Builds/MacOSX/AudioPluginHost.xcodeproj/project.pbxproj @@ -477,6 +477,7 @@ "JucePlugin_Build_AAX=0", "JucePlugin_Build_Standalone=0", "JucePlugin_Build_Unity=0", + "JucePlugin_Build_LV2=0", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( @@ -617,6 +618,7 @@ "JucePlugin_Build_AAX=0", "JucePlugin_Build_Standalone=0", "JucePlugin_Build_Unity=0", + "JucePlugin_Build_LV2=0", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( diff --git a/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj index 3dca655868..5a347101d3 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj +++ b/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_PLUGINHOST_LV2=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_PLUGINHOST_LV2=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -106,7 +106,7 @@ Full ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_PLUGINHOST_LV2=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_PLUGINHOST_LV2=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDLL true NotUsing diff --git a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj index b615027cbd..ad59eadc2b 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj +++ b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_PLUGINHOST_LV2=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_PLUGINHOST_LV2=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -106,7 +106,7 @@ Full ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_PLUGINHOST_LV2=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_PLUGINHOST_LV2=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDLL true NotUsing diff --git a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj index 458f0ec903..3a444aac02 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj +++ b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_PLUGINHOST_LV2=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_PLUGINHOST_LV2=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -106,7 +106,7 @@ Full ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_PLUGINHOST_LV2=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_PLUGINHOST_LV2=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDLL true NotUsing diff --git a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj index f2391d269d..134418ca2f 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj +++ b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_PLUGINHOST_LV2=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_PLUGINHOST_LV2=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -106,7 +106,7 @@ Full ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_PLUGINHOST_LV2=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_WASAPI=1;JUCE_DIRECTSOUND=1;JUCE_ALSA=1;JUCE_USE_FLAC=0;JUCE_USE_OGGVORBIS=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_AU=1;JUCE_PLUGINHOST_LADSPA=1;JUCE_PLUGINHOST_LV2=1;JUCE_USE_CDREADER=0;JUCE_USE_CDBURNER=0;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDLL true NotUsing diff --git a/extras/AudioPluginHost/Builds/iOS/AudioPluginHost.xcodeproj/project.pbxproj b/extras/AudioPluginHost/Builds/iOS/AudioPluginHost.xcodeproj/project.pbxproj index 77eb91a585..2333e3ba22 100644 --- a/extras/AudioPluginHost/Builds/iOS/AudioPluginHost.xcodeproj/project.pbxproj +++ b/extras/AudioPluginHost/Builds/iOS/AudioPluginHost.xcodeproj/project.pbxproj @@ -486,6 +486,7 @@ "JucePlugin_Build_AAX=0", "JucePlugin_Build_Standalone=0", "JucePlugin_Build_Unity=0", + "JucePlugin_Build_LV2=0", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( @@ -627,6 +628,7 @@ "JucePlugin_Build_AAX=0", "JucePlugin_Build_Standalone=0", "JucePlugin_Build_Unity=0", + "JucePlugin_Build_LV2=0", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( diff --git a/extras/BinaryBuilder/Builds/LinuxMakefile/Makefile b/extras/BinaryBuilder/Builds/LinuxMakefile/Makefile index 7a1affb4e9..2aa29378af 100644 --- a/extras/BinaryBuilder/Builds/LinuxMakefile/Makefile +++ b/extras/BinaryBuilder/Builds/LinuxMakefile/Makefile @@ -40,7 +40,7 @@ ifeq ($(CONFIG),Debug) endif JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DDEBUG=1" "-D_DEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell $(PKG_CONFIG) --cflags libcurl) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) - JUCE_CPPFLAGS_CONSOLEAPP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" + JUCE_CPPFLAGS_CONSOLEAPP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" "-DJucePlugin_Build_LV2=0" JUCE_TARGET_CONSOLEAPP := BinaryBuilder JUCE_CFLAGS += $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0 $(CFLAGS) @@ -61,7 +61,7 @@ ifeq ($(CONFIG),Release) endif JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell $(PKG_CONFIG) --cflags libcurl) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) - JUCE_CPPFLAGS_CONSOLEAPP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" + JUCE_CPPFLAGS_CONSOLEAPP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" "-DJucePlugin_Build_LV2=0" JUCE_TARGET_CONSOLEAPP := BinaryBuilder JUCE_CFLAGS += $(JUCE_CPPFLAGS) $(TARGET_ARCH) -Os $(CFLAGS) diff --git a/extras/BinaryBuilder/Builds/MacOSX/BinaryBuilder.xcodeproj/project.pbxproj b/extras/BinaryBuilder/Builds/MacOSX/BinaryBuilder.xcodeproj/project.pbxproj index 83de5c3d8d..acc1688263 100644 --- a/extras/BinaryBuilder/Builds/MacOSX/BinaryBuilder.xcodeproj/project.pbxproj +++ b/extras/BinaryBuilder/Builds/MacOSX/BinaryBuilder.xcodeproj/project.pbxproj @@ -216,6 +216,7 @@ "JucePlugin_Build_AAX=0", "JucePlugin_Build_Standalone=0", "JucePlugin_Build_Unity=0", + "JucePlugin_Build_LV2=0", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( @@ -314,6 +315,7 @@ "JucePlugin_Build_AAX=0", "JucePlugin_Build_Standalone=0", "JucePlugin_Build_Unity=0", + "JucePlugin_Build_LV2=0", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( diff --git a/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj b/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj index 62cf8190d0..d388eecece 100644 --- a/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj +++ b/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -105,7 +105,7 @@ Full ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDLL true NotUsing diff --git a/extras/Build/CMake/JUCEConfig.cmake.in b/extras/Build/CMake/JUCEConfig.cmake.in index 782c732154..6a96e24e57 100644 --- a/extras/Build/CMake/JUCEConfig.cmake.in +++ b/extras/Build/CMake/JUCEConfig.cmake.in @@ -20,6 +20,8 @@ @PACKAGE_INIT@ +include("${CMAKE_CURRENT_LIST_DIR}/LV2_HELPER.cmake") + if(NOT TARGET juce::juceaide) add_executable(juce::juceaide IMPORTED) set_target_properties(juce::juceaide PROPERTIES diff --git a/extras/Build/CMake/JUCEUtils.cmake b/extras/Build/CMake/JUCEUtils.cmake index eb32c1eb58..a2de746b1e 100644 --- a/extras/Build/CMake/JUCEUtils.cmake +++ b/extras/Build/CMake/JUCEUtils.cmake @@ -68,6 +68,10 @@ define_property(TARGET PROPERTY JUCE_UNITY_COPY_DIR INHERITED BRIEF_DOCS "Install location for Unity plugins" FULL_DOCS "This is where the plugin will be copied if plugin copying is enabled") +define_property(TARGET PROPERTY JUCE_LV2_COPY_DIR INHERITED + BRIEF_DOCS "Install location for LV2 plugins" + FULL_DOCS "This is where the plugin will be copied if plugin copying is enabled") + define_property(TARGET PROPERTY JUCE_COPY_PLUGIN_AFTER_BUILD INHERITED BRIEF_DOCS "Whether or not plugins should be copied after building" FULL_DOCS "Whether or not plugins should be copied after building") @@ -90,10 +94,12 @@ endif() function(_juce_set_default_properties) if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") - set_property(GLOBAL PROPERTY JUCE_VST_COPY_DIR "$ENV{HOME}/Library/Audio/Plug-Ins/VST") - set_property(GLOBAL PROPERTY JUCE_VST3_COPY_DIR "$ENV{HOME}/Library/Audio/Plug-Ins/VST3") - set_property(GLOBAL PROPERTY JUCE_AU_COPY_DIR "$ENV{HOME}/Library/Audio/Plug-Ins/Components") - set_property(GLOBAL PROPERTY JUCE_AAX_COPY_DIR "/Library/Application Support/Avid/Audio/Plug-Ins") + set_property(GLOBAL PROPERTY JUCE_LV2_COPY_DIR "$ENV{HOME}/Library/Audio/Plug-Ins/LV2") + set_property(GLOBAL PROPERTY JUCE_VST_COPY_DIR "$ENV{HOME}/Library/Audio/Plug-Ins/VST") + set_property(GLOBAL PROPERTY JUCE_VST3_COPY_DIR "$ENV{HOME}/Library/Audio/Plug-Ins/VST3") + set_property(GLOBAL PROPERTY JUCE_AU_COPY_DIR "$ENV{HOME}/Library/Audio/Plug-Ins/Components") + set_property(GLOBAL PROPERTY JUCE_UNITY_COPY_DIR "$ENV{HOME}/Library/Audio/Plug-Ins/Unity") + set_property(GLOBAL PROPERTY JUCE_AAX_COPY_DIR "/Library/Application Support/Avid/Audio/Plug-Ins") elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") if(CMAKE_SIZEOF_VOID_P EQUAL 8) set_property(GLOBAL PROPERTY JUCE_VST_COPY_DIR "$ENV{ProgramW6432}/Steinberg/Vstplugins") @@ -103,11 +109,15 @@ function(_juce_set_default_properties) set(prefix "$ENV{CommonProgramFiles\(x86\)}") endif() - set_property(GLOBAL PROPERTY JUCE_VST3_COPY_DIR "${prefix}/VST3") - set_property(GLOBAL PROPERTY JUCE_AAX_COPY_DIR "${prefix}/Avid/Audio/Plug-Ins") + set_property(GLOBAL PROPERTY JUCE_VST3_COPY_DIR "${prefix}/VST3") + set_property(GLOBAL PROPERTY JUCE_AAX_COPY_DIR "${prefix}/Avid/Audio/Plug-Ins") + set_property(GLOBAL PROPERTY JUCE_LV2_COPY_DIR "$ENV{APPDATA}/LV2") + set_property(GLOBAL PROPERTY JUCE_UNITY_COPY_DIR "$ENV{APPDATA}/Unity") elseif((CMAKE_SYSTEM_NAME STREQUAL "Linux") OR (CMAKE_SYSTEM_NAME MATCHES ".*BSD")) - set_property(GLOBAL PROPERTY JUCE_VST_COPY_DIR "$ENV{HOME}/.vst") - set_property(GLOBAL PROPERTY JUCE_VST3_COPY_DIR "$ENV{HOME}/.vst3") + set_property(GLOBAL PROPERTY JUCE_LV2_COPY_DIR "$ENV{HOME}/.lv2") + set_property(GLOBAL PROPERTY JUCE_VST_COPY_DIR "$ENV{HOME}/.vst") + set_property(GLOBAL PROPERTY JUCE_VST3_COPY_DIR "$ENV{HOME}/.vst3") + set_property(GLOBAL PROPERTY JUCE_UNITY_COPY_DIR "$ENV{HOME}/.unity") endif() endfunction() @@ -499,10 +509,13 @@ function(_juce_execute_juceaide) message(FATAL_ERROR "juceaide was imported, but it doesn't exist!") endif() - execute_process(COMMAND "${juceaide_location}" ${ARGN} RESULT_VARIABLE result_variable) + execute_process(COMMAND "${juceaide_location}" ${ARGN} + RESULT_VARIABLE result_variable + OUTPUT_VARIABLE output + ERROR_VARIABLE output) if(result_variable) - message(FATAL_ERROR "Running juceaide failed") + message(FATAL_ERROR "Running juceaide failed:\n${output}") endif() endfunction() @@ -985,6 +998,29 @@ function(_juce_set_plugin_target_properties shared_code_target kind) "${script_file}" JUCE_UNITY_COPY_DIR) endif() + elseif(kind STREQUAL "LV2") + set_target_properties(${target_name} PROPERTIES BUNDLE FALSE) + + get_target_property(JUCE_LV2URI "${shared_code_target}" JUCE_LV2URI) + + if(NOT JUCE_LV2URI MATCHES "https?://.*") + message(WARNING + "LV2URI should be well-formed with an 'http' prefix. " + "Check the LV2URI argument to juce_add_plugin.") + endif() + + set(source_header "${JUCE_CMAKE_UTILS_DIR}/JuceLV2Defines.h.in") + get_target_property(juce_library_code "${shared_code_target}" JUCE_GENERATED_SOURCES_DIRECTORY) + configure_file("${source_header}" "${juce_library_code}/JuceLV2Defines.h") + + set(output_path "${products_folder}/${product_name}.lv2") + set_target_properties(${target_name} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${output_path}") + + add_custom_command(TARGET ${target_name} POST_BUILD + COMMAND juce::juce_lv2_helper "$" + VERBATIM) + + _juce_set_copy_properties(${shared_code_target} ${target_name} "${output_path}" JUCE_LV2_COPY_DIR) endif() endfunction() @@ -1010,6 +1046,8 @@ function(_juce_get_plugin_kind_name kind out_var) set(${out_var} "AUv3 AppExtension" PARENT_SCOPE) elseif(kind STREQUAL "AAX") set(${out_var} "AAX" PARENT_SCOPE) + elseif(kind STREQUAL "LV2") + set(${out_var} "LV2" PARENT_SCOPE) elseif(kind STREQUAL "Standalone") set(${out_var} "Standalone Plugin" PARENT_SCOPE) elseif(kind STREQUAL "Unity") @@ -1070,7 +1108,10 @@ function(_juce_link_plugin_wrapper shared_code_target kind) add_dependencies(${shared_code_target}_All ${target_name}) - _juce_configure_bundle(${shared_code_target} ${target_name}) + if(NOT kind STREQUAL "LV2") + _juce_configure_bundle(${shared_code_target} ${target_name}) + endif() + _juce_set_plugin_target_properties(${shared_code_target} ${kind}) endfunction() @@ -1464,6 +1505,12 @@ function(_juce_set_fallback_properties target) if(NOT aax_category_int STREQUAL "") set_target_properties(${target} PROPERTIES JUCE_AAX_CATEGORY ${aax_category_int}) endif() + + # Ensure this matches the Projucer implementation + get_target_property(company_website ${target} JUCE_COMPANY_WEBSITE) + get_target_property(plugin_name ${target} JUCE_PLUGIN_NAME) + string(MAKE_C_IDENTIFIER "${plugin_name}" plugin_name_sanitised) + _juce_set_property_if_not_set(${target} LV2URI "${company_website}/plugins/${plugin_name_sanitised}") endfunction() # ================================================================================================== @@ -1530,6 +1577,7 @@ function(_juce_initialise_target target) SUPPRESS_AU_PLIST_RESOURCE_USAGE PLUGINHOST_AU # Set this true if you want to host AU plugins USE_LEGACY_COMPATIBILITY_PLUGIN_CODE + LV2URI VST_COPY_DIR VST3_COPY_DIR @@ -1768,7 +1816,7 @@ function(juce_add_pip header) list(APPEND extra_target_args MICROPHONE_PERMISSION_ENABLED TRUE) juce_add_plugin(${JUCE_PIP_NAME} - FORMATS AU AUv3 VST3 Unity Standalone ${extra_formats} + FORMATS AU AUv3 LV2 Standalone Unity VST3 ${extra_formats} ${extra_target_args}) elseif(pip_kind STREQUAL "Component") set(source_main "${JUCE_CMAKE_UTILS_DIR}/PIPComponent.cpp.in") diff --git a/extras/Build/CMake/JuceLV2Defines.h.in b/extras/Build/CMake/JuceLV2Defines.h.in new file mode 100644 index 0000000000..3e3ea0e783 --- /dev/null +++ b/extras/Build/CMake/JuceLV2Defines.h.in @@ -0,0 +1,5 @@ +#pragma once + +#ifndef JucePlugin_LV2URI + #define JucePlugin_LV2URI "${JUCE_LV2URI}" +#endif diff --git a/extras/Build/juce_build_tools/utils/juce_BuildHelperFunctions.cpp b/extras/Build/juce_build_tools/utils/juce_BuildHelperFunctions.cpp index cce91a2cd4..db222a368b 100644 --- a/extras/Build/juce_build_tools/utils/juce_BuildHelperFunctions.cpp +++ b/extras/Build/juce_build_tools/utils/juce_BuildHelperFunctions.cpp @@ -71,6 +71,8 @@ namespace build_tools case Type::ConsoleApp: case Type::StaticLibrary: case Type::DynamicLibrary: + case Type::LV2PlugIn: + case Type::LV2TurtleProgram: case Type::SharedCodeTarget: case Type::AggregateTarget: case Type::unspecified: @@ -101,6 +103,8 @@ namespace build_tools case Type::ConsoleApp: case Type::StaticLibrary: case Type::DynamicLibrary: + case Type::LV2PlugIn: + case Type::LV2TurtleProgram: case Type::SharedCodeTarget: case Type::AggregateTarget: case Type::unspecified: diff --git a/extras/Build/juce_build_tools/utils/juce_ProjectType.h b/extras/Build/juce_build_tools/utils/juce_ProjectType.h index 151601ac64..f65e8c5330 100644 --- a/extras/Build/juce_build_tools/utils/juce_ProjectType.h +++ b/extras/Build/juce_build_tools/utils/juce_ProjectType.h @@ -69,10 +69,13 @@ namespace build_tools AudioUnitv3PlugIn = 15, StandalonePlugIn = 16, UnityPlugIn = 17, + LV2PlugIn = 18, SharedCodeTarget = 20, // internal AggregateTarget = 21, + LV2TurtleProgram = 25, // internal + unspecified = 30 }; @@ -105,8 +108,10 @@ namespace build_tools case AAXPlugIn: return "AAX"; case RTASPlugIn: return "RTAS"; case UnityPlugIn: return "Unity Plugin"; + case LV2PlugIn: return "LV2 Plugin"; case SharedCodeTarget: return "Shared Code"; case AggregateTarget: return "All"; + case LV2TurtleProgram: return "LV2 Manifest Helper"; case unspecified: default: break; } @@ -116,20 +121,22 @@ namespace build_tools static Type typeFromName (const String& name) { - if (name == "App") return Type::GUIApp; - if (name == "ConsoleApp") return Type::ConsoleApp; - if (name == "Static Library") return Type::StaticLibrary; - if (name == "Dynamic Library") return Type::DynamicLibrary; - if (name == "VST") return Type::VSTPlugIn; - if (name == "VST3") return Type::VST3PlugIn; - if (name == "AU") return Type::AudioUnitPlugIn; - if (name == "Standalone Plugin") return Type::StandalonePlugIn; - if (name == "AUv3 AppExtension") return Type::AudioUnitv3PlugIn; - if (name == "AAX") return Type::AAXPlugIn; - if (name == "RTAS") return Type::RTASPlugIn; - if (name == "Unity Plugin") return Type::UnityPlugIn; - if (name == "Shared Code") return Type::SharedCodeTarget; - if (name == "All") return Type::AggregateTarget; + if (name == "App") return Type::GUIApp; + if (name == "ConsoleApp") return Type::ConsoleApp; + if (name == "Static Library") return Type::StaticLibrary; + if (name == "Dynamic Library") return Type::DynamicLibrary; + if (name == "VST") return Type::VSTPlugIn; + if (name == "VST3") return Type::VST3PlugIn; + if (name == "AU") return Type::AudioUnitPlugIn; + if (name == "Standalone Plugin") return Type::StandalonePlugIn; + if (name == "AUv3 AppExtension") return Type::AudioUnitv3PlugIn; + if (name == "AAX") return Type::AAXPlugIn; + if (name == "RTAS") return Type::RTASPlugIn; + if (name == "Unity Plugin") return Type::UnityPlugIn; + if (name == "LV2 Plugin") return Type::LV2PlugIn; + if (name == "Shared Code") return Type::SharedCodeTarget; + if (name == "All") return Type::AggregateTarget; + if (name == "LV2 Manifest Helper") return Type::LV2TurtleProgram; jassertfalse; return Type::ConsoleApp; @@ -151,7 +158,9 @@ namespace build_tools case AAXPlugIn: return pluginBundle; case RTASPlugIn: return pluginBundle; case UnityPlugIn: return pluginBundle; + case LV2PlugIn: return pluginBundle; case SharedCodeTarget: return staticLibrary; + case LV2TurtleProgram: return executable; case AggregateTarget: case unspecified: default: break; @@ -236,6 +245,8 @@ namespace build_tools case Target::AudioUnitv3PlugIn: case Target::StandalonePlugIn: case Target::UnityPlugIn: + case Target::LV2PlugIn: + case Target::LV2TurtleProgram: case Target::SharedCodeTarget: case Target::AggregateTarget: return true; diff --git a/extras/NetworkGraphicsDemo/Builds/LinuxMakefile/Makefile b/extras/NetworkGraphicsDemo/Builds/LinuxMakefile/Makefile index f75f6cc524..ae0f896c9a 100644 --- a/extras/NetworkGraphicsDemo/Builds/LinuxMakefile/Makefile +++ b/extras/NetworkGraphicsDemo/Builds/LinuxMakefile/Makefile @@ -40,7 +40,7 @@ ifeq ($(CONFIG),Debug) endif JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DDEBUG=1" "-D_DEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_MODULE_AVAILABLE_juce_osc=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell $(PKG_CONFIG) --cflags alsa freetype2 libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) - JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" + JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" "-DJucePlugin_Build_LV2=0" JUCE_TARGET_APP := JUCE\ Network\ Graphics\ Demo JUCE_CFLAGS += $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0 $(CFLAGS) @@ -61,7 +61,7 @@ ifeq ($(CONFIG),Release) endif JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_MODULE_AVAILABLE_juce_osc=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell $(PKG_CONFIG) --cflags alsa freetype2 libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) - JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" + JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" "-DJucePlugin_Build_LV2=0" JUCE_TARGET_APP := JUCE\ Network\ Graphics\ Demo JUCE_CFLAGS += $(JUCE_CPPFLAGS) $(TARGET_ARCH) -O3 $(CFLAGS) diff --git a/extras/NetworkGraphicsDemo/Builds/MacOSX/NetworkGraphicsDemo.xcodeproj/project.pbxproj b/extras/NetworkGraphicsDemo/Builds/MacOSX/NetworkGraphicsDemo.xcodeproj/project.pbxproj index adb24a00db..6829fd1ba3 100644 --- a/extras/NetworkGraphicsDemo/Builds/MacOSX/NetworkGraphicsDemo.xcodeproj/project.pbxproj +++ b/extras/NetworkGraphicsDemo/Builds/MacOSX/NetworkGraphicsDemo.xcodeproj/project.pbxproj @@ -397,6 +397,7 @@ "JucePlugin_Build_AAX=0", "JucePlugin_Build_Standalone=0", "JucePlugin_Build_Unity=0", + "JucePlugin_Build_LV2=0", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( @@ -562,6 +563,7 @@ "JucePlugin_Build_AAX=0", "JucePlugin_Build_Standalone=0", "JucePlugin_Build_Unity=0", + "JucePlugin_Build_LV2=0", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( diff --git a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj index 853b7b22c9..dc3c7d0c88 100644 --- a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj +++ b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -105,7 +105,7 @@ Full ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDLL true NotUsing diff --git a/extras/NetworkGraphicsDemo/Builds/iOS/NetworkGraphicsDemo.xcodeproj/project.pbxproj b/extras/NetworkGraphicsDemo/Builds/iOS/NetworkGraphicsDemo.xcodeproj/project.pbxproj index 1ad1b06da9..df1bc6aaa8 100644 --- a/extras/NetworkGraphicsDemo/Builds/iOS/NetworkGraphicsDemo.xcodeproj/project.pbxproj +++ b/extras/NetworkGraphicsDemo/Builds/iOS/NetworkGraphicsDemo.xcodeproj/project.pbxproj @@ -410,6 +410,7 @@ "JucePlugin_Build_AAX=0", "JucePlugin_Build_Standalone=0", "JucePlugin_Build_Unity=0", + "JucePlugin_Build_LV2=0", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( @@ -578,6 +579,7 @@ "JucePlugin_Build_AAX=0", "JucePlugin_Build_Standalone=0", "JucePlugin_Build_Unity=0", + "JucePlugin_Build_LV2=0", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( diff --git a/extras/Projucer/Builds/LinuxMakefile/Makefile b/extras/Projucer/Builds/LinuxMakefile/Makefile index 263c613a7a..68e41d3407 100644 --- a/extras/Projucer/Builds/LinuxMakefile/Makefile +++ b/extras/Projucer/Builds/LinuxMakefile/Makefile @@ -40,7 +40,7 @@ ifeq ($(CONFIG),Debug) endif JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DDEBUG=1" "-D_DEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_build_tools=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_LOG_ASSERTIONS=1" "-DJUCE_USE_CURL=1" "-DJUCE_LOAD_CURL_SYMBOLS_LAZILY=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=6.1.6" "-DJUCE_APP_VERSION_HEX=0x60106" $(shell $(PKG_CONFIG) --cflags freetype2) -pthread -I../../JuceLibraryCode -I../../../Build -I../../../../modules $(CPPFLAGS) - JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" + JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" "-DJucePlugin_Build_LV2=0" JUCE_TARGET_APP := Projucer JUCE_CFLAGS += $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0 $(CFLAGS) @@ -61,7 +61,7 @@ ifeq ($(CONFIG),Release) endif JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_build_tools=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_LOG_ASSERTIONS=1" "-DJUCE_USE_CURL=1" "-DJUCE_LOAD_CURL_SYMBOLS_LAZILY=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=6.1.6" "-DJUCE_APP_VERSION_HEX=0x60106" $(shell $(PKG_CONFIG) --cflags freetype2) -pthread -I../../JuceLibraryCode -I../../../Build -I../../../../modules $(CPPFLAGS) - JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" + JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" "-DJucePlugin_Build_LV2=0" JUCE_TARGET_APP := Projucer JUCE_CFLAGS += $(JUCE_CPPFLAGS) $(TARGET_ARCH) -O3 $(CFLAGS) diff --git a/extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj b/extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj index 5c5fe087f8..b40db3b608 100644 --- a/extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj +++ b/extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj @@ -246,6 +246,7 @@ 8FEF6F5EA676B824C021EB6F /* wizard_AnimatedApp.svg */ /* wizard_AnimatedApp.svg */ = {isa = PBXFileReference; lastKnownFileType = file.svg; name = wizard_AnimatedApp.svg; path = ../../Source/BinaryData/Icons/wizard_AnimatedApp.svg; sourceTree = SOURCE_ROOT; }; 8FF26BF72A522FBEAAFDDF54 /* wizard_AudioApp.svg */ /* wizard_AudioApp.svg */ = {isa = PBXFileReference; lastKnownFileType = file.svg; name = wizard_AudioApp.svg; path = ../../Source/BinaryData/Icons/wizard_AudioApp.svg; sourceTree = SOURCE_ROOT; }; 9069981E414A631B036CC9AC /* jucer_MainWindow.cpp */ /* jucer_MainWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_MainWindow.cpp; path = ../../Source/Application/jucer_MainWindow.cpp; sourceTree = SOURCE_ROOT; }; + 921D263A2EAFD96C8D389693 /* JuceLV2Defines.h.in */ /* JuceLV2Defines.h.in */ = {isa = PBXFileReference; lastKnownFileType = file.in; name = JuceLV2Defines.h.in; path = ../../../Build/CMake/JuceLV2Defines.h.in; sourceTree = SOURCE_ROOT; }; 92926A4D3CC4BB2A9D35EB0B /* jucer_UTF8WindowComponent.h */ /* jucer_UTF8WindowComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_UTF8WindowComponent.h; path = ../../Source/Application/Windows/jucer_UTF8WindowComponent.h; sourceTree = SOURCE_ROOT; }; 92A66A8BD87F98EB6B4FB6D0 /* jucer_ProjectContentComponent.h */ /* jucer_ProjectContentComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ProjectContentComponent.h; path = ../../Source/Project/UI/jucer_ProjectContentComponent.h; sourceTree = SOURCE_ROOT; }; 94146B40B41BF0AACF4359DD /* jucer_LicenseState.h */ /* jucer_LicenseState.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_LicenseState.h; path = ../../Source/Application/UserAccount/jucer_LicenseState.h; sourceTree = SOURCE_ROOT; }; @@ -846,6 +847,7 @@ DC3A4B0AD79334BA8A7E0661 /* BinaryData */ = { isa = PBXGroup; children = ( + 921D263A2EAFD96C8D389693, 50F89D3827B83B48855B3564, A0ECDAF137029C445910D3ED, 463C8CF42FAA00014198B71B, @@ -1157,6 +1159,7 @@ "JucePlugin_Build_AAX=0", "JucePlugin_Build_Standalone=0", "JucePlugin_Build_Unity=0", + "JucePlugin_Build_LV2=0", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( @@ -1227,6 +1230,7 @@ "JucePlugin_Build_AAX=0", "JucePlugin_Build_Standalone=0", "JucePlugin_Build_Unity=0", + "JucePlugin_Build_LV2=0", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( diff --git a/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj index 9084547f13..eef4cbe087 100644 --- a/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj +++ b/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\JuceLibraryCode;..\..\..\Build;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -106,7 +106,7 @@ Full ..\..\JuceLibraryCode;..\..\..\Build;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreaded true NotUsing @@ -2141,6 +2141,7 @@ + diff --git a/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj.filters index 97820a92ca..d5f0a1bc4a 100644 --- a/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj.filters +++ b/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj.filters @@ -3776,6 +3776,9 @@ + + Projucer\BinaryData + Projucer\BinaryData diff --git a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj index 712ba5f91d..5b8cd08ba0 100644 --- a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj +++ b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\JuceLibraryCode;..\..\..\Build;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDebug true NotUsing @@ -106,7 +106,7 @@ Full ..\..\JuceLibraryCode;..\..\..\Build;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreaded true NotUsing @@ -2141,6 +2141,7 @@ + diff --git a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters index 8181840dfc..3db0598689 100644 --- a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters +++ b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters @@ -3776,6 +3776,9 @@ + + Projucer\BinaryData + Projucer\BinaryData diff --git a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj index 9b2d02fd14..92e787482d 100644 --- a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj +++ b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\JuceLibraryCode;..\..\..\Build;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDebug true NotUsing @@ -106,7 +106,7 @@ Full ..\..\JuceLibraryCode;..\..\..\Build;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreaded true NotUsing @@ -2141,6 +2141,7 @@ + diff --git a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters index 47f240eeb9..3a6b70316d 100644 --- a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters +++ b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters @@ -3776,6 +3776,9 @@ + + Projucer\BinaryData + Projucer\BinaryData diff --git a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj index d8dcb4a4b2..1ad2377115 100644 --- a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj +++ b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\JuceLibraryCode;..\..\..\Build;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDebug true NotUsing @@ -106,7 +106,7 @@ Full ..\..\JuceLibraryCode;..\..\..\Build;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=6.1.6;JUCE_APP_VERSION_HEX=0x60106;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreaded true NotUsing @@ -2141,6 +2141,7 @@ + diff --git a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters index 5f8655e7ec..154e88be0d 100644 --- a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters +++ b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters @@ -3776,6 +3776,9 @@ + + Projucer\BinaryData + Projucer\BinaryData diff --git a/extras/Projucer/CMakeLists.txt b/extras/Projucer/CMakeLists.txt index fa336401c3..c31a76c74c 100644 --- a/extras/Projucer/CMakeLists.txt +++ b/extras/Projucer/CMakeLists.txt @@ -142,6 +142,7 @@ juce_add_binary_data(ProjucerData SOURCES Source/BinaryData/gradle/gradlew Source/BinaryData/gradle/gradlew.bat + ../Build/CMake/JuceLV2Defines.h.in ../Build/CMake/LaunchScreen.storyboard ../Build/CMake/PIPAudioProcessor.cpp.in ../Build/CMake/PIPComponent.cpp.in diff --git a/extras/Projucer/JuceLibraryCode/BinaryData.cpp b/extras/Projucer/JuceLibraryCode/BinaryData.cpp index 7b5505add3..7bd0332fe2 100644 --- a/extras/Projucer/JuceLibraryCode/BinaryData.cpp +++ b/extras/Projucer/JuceLibraryCode/BinaryData.cpp @@ -9,8 +9,18 @@ namespace BinaryData { -//================== LaunchScreen.storyboard ================== +//================== JuceLV2Defines.h.in ================== static const unsigned char temp_binary_data_0[] = +"#pragma once\n" +"\n" +"#ifndef JucePlugin_LV2URI\n" +" #define JucePlugin_LV2URI \"${JUCE_LV2URI}\"\n" +"#endif\n"; + +const char* JuceLV2Defines_h_in = (const char*) temp_binary_data_0; + +//================== LaunchScreen.storyboard ================== +static const unsigned char temp_binary_data_1[] = "\n" "\n" @@ -29,10 +39,10 @@ static const unsigned char temp_binary_data_0[] = " \n" "\n"; -const char* LaunchScreen_storyboard = (const char*) temp_binary_data_0; +const char* LaunchScreen_storyboard = (const char*) temp_binary_data_1; //================== PIPAudioProcessor.cpp.in ================== -static const unsigned char temp_binary_data_1[] = +static const unsigned char temp_binary_data_2[] = "/*\n" " ==============================================================================\n" "\n" @@ -50,10 +60,10 @@ static const unsigned char temp_binary_data_1[] = " return new ${JUCE_PIP_MAIN_CLASS}();\n" "}\n"; -const char* PIPAudioProcessor_cpp_in = (const char*) temp_binary_data_1; +const char* PIPAudioProcessor_cpp_in = (const char*) temp_binary_data_2; //================== PIPComponent.cpp.in ================== -static const unsigned char temp_binary_data_2[] = +static const unsigned char temp_binary_data_3[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -123,10 +133,10 @@ static const unsigned char temp_binary_data_2[] = "//==============================================================================\r\n" "START_JUCE_APPLICATION (Application)\r\n"; -const char* PIPComponent_cpp_in = (const char*) temp_binary_data_2; +const char* PIPComponent_cpp_in = (const char*) temp_binary_data_3; //================== PIPConsole.cpp.in ================== -static const unsigned char temp_binary_data_3[] = +static const unsigned char temp_binary_data_4[] = "/*\n" " ==============================================================================\n" "\n" @@ -138,10 +148,10 @@ static const unsigned char temp_binary_data_3[] = "#include \n" "#include \"${JUCE_PIP_HEADER}\"\n"; -const char* PIPConsole_cpp_in = (const char*) temp_binary_data_3; +const char* PIPConsole_cpp_in = (const char*) temp_binary_data_4; //================== RecentFilesMenuTemplate.nib ================== -static const unsigned char temp_binary_data_4[] = +static const unsigned char temp_binary_data_5[] = { 98,112,108,105,115,116,48,48,212,0,1,0,2,0,3,0,4,0,5,0,6,1,53,1,54,88,36,118,101,114,115,105,111,110,88,36,111,98,106,101,99,116,115,89,36,97,114,99,104,105,118,101,114,84,36,116,111,112,18,0,1,134,160,175,16,74,0,7,0,8,0,31,0,35,0,36,0,42,0,46,0,50, 0,53,0,57,0,74,0,77,0,78,0,86,0,87,0,97,0,112,0,113,0,114,0,119,0,120,0,121,0,124,0,128,0,129,0,132,0,143,0,144,0,145,0,149,0,153,0,162,0,163,0,164,0,169,0,173,0,180,0,181,0,182,0,185,0,192,0,193,0,200,0,201,0,208,0,209,0,216,0,217,0,224,0,225,0,226, 0,229,0,230,0,232,0,249,1,11,1,29,1,30,1,31,1,32,1,33,1,34,1,35,1,36,1,37,1,38,1,39,1,40,1,41,1,42,1,43,1,44,1,47,1,50,85,36,110,117,108,108,219,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0, @@ -178,10 +188,10 @@ static const unsigned char temp_binary_data_4[] = 7,157,7,159,7,161,7,163,7,165,7,167,7,169,7,171,7,173,7,175,7,177,7,179,7,181,7,190,7,192,7,225,7,227,7,229,7,231,7,233,7,235,7,237,7,239,7,241,7,243,7,245,7,247,7,249,7,251,7,253,7,255,8,2,8,5,8,8,8,11,8,14,8,17,8,20,8,23,8,26,8,29,8,32,8,35,8,38,8, 41,8,44,8,53,8,55,8,56,8,65,8,67,8,68,8,77,8,92,8,97,8,115,8,120,8,134,0,0,0,0,0,0,2,2,0,0,0,0,0,0,1,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,136,0,0 }; -const char* RecentFilesMenuTemplate_nib = (const char*) temp_binary_data_4; +const char* RecentFilesMenuTemplate_nib = (const char*) temp_binary_data_5; //================== UnityPluginGUIScript.cs.in ================== -static const unsigned char temp_binary_data_5[] = +static const unsigned char temp_binary_data_6[] = "#if UNITY_EDITOR\n" "\n" "using UnityEditor;\n" @@ -364,10 +374,10 @@ static const unsigned char temp_binary_data_5[] = "\n" "#endif\n"; -const char* UnityPluginGUIScript_cs_in = (const char*) temp_binary_data_5; +const char* UnityPluginGUIScript_cs_in = (const char*) temp_binary_data_6; //================== gradle-wrapper.jar ================== -static const unsigned char temp_binary_data_6[] = +static const unsigned char temp_binary_data_7[] = { 80,75,3,4,10,0,0,8,8,0,42,178,149,71,0,0,0,0,2,0,0,0,0,0,0,0,9,0,0,0,77,69,84,65,45,73,78,70,47,3,0,80,75,3,4,10,0,0,8,8,0,42,178,149,71,215,149,152,82,63,0,0,0,85,0,0,0,20,0,0,0,77,69,84,65,45,73,78,70,47,77,65,78,73,70,69,83,84,46,77,70,243,77,204, 203,76,75,45,46,209,13,75,45,42,206,204,207,179,82,48,212,51,224,229,242,204,45,200,73,205,77,205,43,73,44,1,10,234,134,100,150,228,164,90,41,184,23,37,166,228,164,98,200,194,181,26,233,25,2,245,242,114,1,0,80,75,3,4,10,0,0,8,8,0,22,178,149,71,0,0,0, 0,2,0,0,0,0,0,0,0,4,0,0,0,111,114,103,47,3,0,80,75,3,4,10,0,0,8,8,0,22,178,149,71,0,0,0,0,2,0,0,0,0,0,0,0,11,0,0,0,111,114,103,47,103,114,97,100,108,101,47,3,0,80,75,3,4,10,0,0,8,8,0,22,178,149,71,0,0,0,0,2,0,0,0,0,0,0,0,19,0,0,0,111,114,103,47,103,114, @@ -1119,10 +1129,10 @@ static const unsigned char temp_binary_data_6[] = 76,105,110,101,80,97,114,115,101,114,36,65,102,116,101,114,70,105,114,115,116,83,117,98,67,111,109,109,97,110,100,46,99,108,97,115,115,80,75,1,2,20,3,10,0,0,8,8,0,10,178,149,71,105,222,125,0,70,0,0,0,68,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,180,129,219,191, 0,0,103,114,97,100,108,101,45,99,108,105,45,99,108,97,115,115,112,97,116,104,46,112,114,111,112,101,114,116,105,101,115,80,75,5,6,0,0,0,0,49,0,49,0,16,17,0,0,94,192,0,0,0,0,0,0 }; -const char* gradlewrapper_jar = (const char*) temp_binary_data_6; +const char* gradlewrapper_jar = (const char*) temp_binary_data_7; //================== gradlew ================== -static const unsigned char temp_binary_data_7[] = +static const unsigned char temp_binary_data_8[] = "#!/usr/bin/env bash\n" "\n" "##############################################################################\n" @@ -1284,10 +1294,10 @@ static const unsigned char temp_binary_data_7[] = "\n" "exec \"$JAVACMD\" \"${JVM_OPTS[@]}\" -classpath \"$CLASSPATH\" org.gradle.wrapper.GradleWrapperMain \"$@\"\n"; -const char* gradlew = (const char*) temp_binary_data_7; +const char* gradlew = (const char*) temp_binary_data_8; //================== gradlew.bat ================== -static const unsigned char temp_binary_data_8[] = +static const unsigned char temp_binary_data_9[] = "@if \"%DEBUG%\" == \"\" @echo off\r\n" "@rem ##########################################################################\r\n" "@rem\r\n" @@ -1379,10 +1389,10 @@ static const unsigned char temp_binary_data_8[] = "\r\n" ":omega\r\n"; -const char* gradlew_bat = (const char*) temp_binary_data_8; +const char* gradlew_bat = (const char*) temp_binary_data_9; //================== LICENSE ================== -static const unsigned char temp_binary_data_9[] = +static const unsigned char temp_binary_data_10[] = "Apache License\n" " Version 2.0, January 2004\n" " http://www.apache.org/licenses/\n" @@ -1586,10 +1596,10 @@ static const unsigned char temp_binary_data_9[] = " limitations under the License.\n" "\n"; -const char* LICENSE = (const char*) temp_binary_data_9; +const char* LICENSE = (const char*) temp_binary_data_10; //================== background_logo.svg ================== -static const unsigned char temp_binary_data_10[] = +static const unsigned char temp_binary_data_11[] = "\n" " \n" " \n" @@ -1608,10 +1618,10 @@ static const unsigned char temp_binary_data_10[] = "19.41 26.977 21.709 2.136.408 6.1.755 7.377.645.325-.028 1.48-.094 2.564-.147z\" fill=\"#b8b8b8\"/>\n" "\n"; -const char* background_logo_svg = (const char*) temp_binary_data_10; +const char* background_logo_svg = (const char*) temp_binary_data_11; //================== export_android.svg ================== -static const unsigned char temp_binary_data_11[] = +static const unsigned char temp_binary_data_12[] = "\n" "\n" " \n" @@ -1642,10 +1652,10 @@ static const unsigned char temp_binary_data_11[] = " \n" ""; -const char* export_android_svg = (const char*) temp_binary_data_11; +const char* export_android_svg = (const char*) temp_binary_data_12; //================== export_clion.svg ================== -static const unsigned char temp_binary_data_12[] = +static const unsigned char temp_binary_data_13[] = "\n" " \n" " \n" @@ -1681,10 +1691,10 @@ static const unsigned char temp_binary_data_12[] = " \n" "\n"; -const char* export_clion_svg = (const char*) temp_binary_data_12; +const char* export_clion_svg = (const char*) temp_binary_data_13; //================== export_codeBlocks.svg ================== -static const unsigned char temp_binary_data_13[] = +static const unsigned char temp_binary_data_14[] = "\n" "\n" " \n" @@ -1706,10 +1716,10 @@ static const unsigned char temp_binary_data_13[] = " \n" ""; -const char* export_codeBlocks_svg = (const char*) temp_binary_data_13; +const char* export_codeBlocks_svg = (const char*) temp_binary_data_14; //================== export_linux.svg ================== -static const unsigned char temp_binary_data_14[] = +static const unsigned char temp_binary_data_15[] = "\n" "\n" " \n" @@ -1859,10 +1869,10 @@ static const unsigned char temp_binary_data_14[] = " \n" ""; -const char* export_linux_svg = (const char*) temp_binary_data_14; +const char* export_linux_svg = (const char*) temp_binary_data_15; //================== export_visualStudio.svg ================== -static const unsigned char temp_binary_data_15[] = +static const unsigned char temp_binary_data_16[] = "\n" "\n" " \n" @@ -1886,10 +1896,10 @@ static const unsigned char temp_binary_data_15[] = " \n" ""; -const char* export_visualStudio_svg = (const char*) temp_binary_data_15; +const char* export_visualStudio_svg = (const char*) temp_binary_data_16; //================== export_xcode.svg ================== -static const unsigned char temp_binary_data_16[] = +static const unsigned char temp_binary_data_17[] = "\n" "\n" " \n" @@ -1961,10 +1971,10 @@ static const unsigned char temp_binary_data_16[] = " \n" ""; -const char* export_xcode_svg = (const char*) temp_binary_data_16; +const char* export_xcode_svg = (const char*) temp_binary_data_17; //================== gpl_logo.svg ================== -static const unsigned char temp_binary_data_17[] = +static const unsigned char temp_binary_data_18[] = "\n" " \n" " "; -const char* gpl_logo_svg = (const char*) temp_binary_data_17; +const char* gpl_logo_svg = (const char*) temp_binary_data_18; //================== juce_icon.png ================== -static const unsigned char temp_binary_data_18[] = +static const unsigned char temp_binary_data_19[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,0,0,0,2,0,8,6,0,0,0,244,120,212,250,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,132,101,88,73,102,77,77,0,42,0,0,0,8,0,5,1,18,0,3,0,0,0,1,0,1,0,0,1,26,0,5,0,0,0,1,0,0,0,74,1,27,0,5,0,0,0,1,0,0,0,82, 1,40,0,3,0,0,0,1,0,2,0,0,135,105,0,4,0,0,0,1,0,0,0,90,0,0,0,0,0,0,0,144,0,0,0,1,0,0,0,144,0,0,0,1,0,3,160,1,0,3,0,0,0,1,0,1,0,0,160,2,0,4,0,0,0,1,0,0,2,0,160,3,0,4,0,0,0,1,0,0,2,0,0,0,0,0,25,192,84,16,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82, 36,240,0,0,1,89,105,84,88,116,88,77,76,58,99,111,109,46,97,100,111,98,101,46,120,109,112,0,0,0,0,0,60,120,58,120,109,112,109,101,116,97,32,120,109,108,110,115,58,120,61,34,97,100,111,98,101,58,110,115,58,109,101,116,97,47,34,32,120,58,120,109,112,116, @@ -3585,10 +3595,10 @@ static const unsigned char temp_binary_data_18[] = 246,44,212,239,33,44,75,155,114,119,199,74,182,59,225,163,230,56,187,0,203,253,163,244,158,144,61,194,134,54,75,89,109,30,70,120,118,29,207,206,219,205,104,221,216,184,128,155,196,214,68,235,181,92,180,4,225,231,230,249,31,56,76,178,107,226,240,74,169, 60,174,167,167,149,58,7,146,87,83,147,170,92,246,47,193,107,255,83,221,119,125,168,20,16,4,4,1,245,55,199,228,93,104,231,183,98,169,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* juce_icon_png = (const char*) temp_binary_data_18; +const char* juce_icon_png = (const char*) temp_binary_data_19; //================== wizard_AnimatedApp.svg ================== -static const unsigned char temp_binary_data_19[] = +static const unsigned char temp_binary_data_20[] = "\n" "\n" "\n" @@ -3765,10 +3775,10 @@ static const unsigned char temp_binary_data_19[] = " id=\"line44\"\n" " style=\"stroke:#a45c94;stroke-opacity:0.94117647\" />"; -const char* wizard_AnimatedApp_svg = (const char*) temp_binary_data_19; +const char* wizard_AnimatedApp_svg = (const char*) temp_binary_data_20; //================== wizard_AudioApp.svg ================== -static const unsigned char temp_binary_data_20[] = +static const unsigned char temp_binary_data_21[] = "\n" "\n" "\n" @@ -4522,10 +4532,10 @@ static const unsigned char temp_binary_data_20[] = " id=\"line131\"\n" " style=\"stroke:#a45c94;stroke-opacity:1\" />"; -const char* wizard_AudioApp_svg = (const char*) temp_binary_data_20; +const char* wizard_AudioApp_svg = (const char*) temp_binary_data_21; //================== wizard_AudioPlugin.svg ================== -static const unsigned char temp_binary_data_21[] = +static const unsigned char temp_binary_data_22[] = "\n" "\n" "\n" @@ -5381,10 +5391,10 @@ static const unsigned char temp_binary_data_21[] = " id=\"circle175\"\n" " style=\"stroke:#a45c94;stroke-opacity:1;fill:#a45c94;fill-opacity:1\" />"; -const char* wizard_AudioPlugin_svg = (const char*) temp_binary_data_21; +const char* wizard_AudioPlugin_svg = (const char*) temp_binary_data_22; //================== wizard_ConsoleApp.svg ================== -static const unsigned char temp_binary_data_22[] = +static const unsigned char temp_binary_data_23[] = "\n" "\n" "\n" @@ -5471,10 +5481,10 @@ static const unsigned char temp_binary_data_22[] = " id=\"path19\"\n" " style=\"stroke:#a45c94;stroke-opacity:1;fill:#a45c94;fill-opacity:1\" />"; -const char* wizard_ConsoleApp_svg = (const char*) temp_binary_data_22; +const char* wizard_ConsoleApp_svg = (const char*) temp_binary_data_23; //================== wizard_DLL.svg ================== -static const unsigned char temp_binary_data_23[] = +static const unsigned char temp_binary_data_24[] = "\n" "\n" "\n" @@ -5745,10 +5755,10 @@ static const unsigned char temp_binary_data_23[] = " id=\"path54\"\n" " style=\"stroke:#a45c94;stroke-opacity:1\" />"; -const char* wizard_DLL_svg = (const char*) temp_binary_data_23; +const char* wizard_DLL_svg = (const char*) temp_binary_data_24; //================== wizard_GUI.svg ================== -static const unsigned char temp_binary_data_24[] = +static const unsigned char temp_binary_data_25[] = "\n" "\n" "\n" @@ -5918,10 +5928,10 @@ static const unsigned char temp_binary_data_24[] = " id=\"path47\"\n" " style=\"stroke:#a45c94;stroke-opacity:1\" />"; -const char* wizard_GUI_svg = (const char*) temp_binary_data_24; +const char* wizard_GUI_svg = (const char*) temp_binary_data_25; //================== wizard_Highlight.svg ================== -static const unsigned char temp_binary_data_25[] = +static const unsigned char temp_binary_data_26[] = "\n" "\n" "\n" @@ -5971,10 +5981,10 @@ static const unsigned char temp_binary_data_25[] = " id=\"path3\"\n" " style=\"fill:#a45c94;fill-opacity:1\" />"; -const char* wizard_Highlight_svg = (const char*) temp_binary_data_25; +const char* wizard_Highlight_svg = (const char*) temp_binary_data_26; //================== wizard_Openfile.svg ================== -static const unsigned char temp_binary_data_26[] = +static const unsigned char temp_binary_data_27[] = "\n" "\n" "\n" @@ -6026,10 +6036,10 @@ static const unsigned char temp_binary_data_26[] = " id=\"path3\"\n" " style=\"stroke:#a45c94;stroke-opacity:1\" />"; -const char* wizard_Openfile_svg = (const char*) temp_binary_data_26; +const char* wizard_Openfile_svg = (const char*) temp_binary_data_27; //================== wizard_OpenGL.svg ================== -static const unsigned char temp_binary_data_27[] = +static const unsigned char temp_binary_data_28[] = "\n" "\n" "\n" @@ -6157,10 +6167,10 @@ static const unsigned char temp_binary_data_27[] = " id=\"path23\"\n" " style=\"stroke:#a45c94;stroke-opacity:1\" />"; -const char* wizard_OpenGL_svg = (const char*) temp_binary_data_27; +const char* wizard_OpenGL_svg = (const char*) temp_binary_data_28; //================== wizard_StaticLibrary.svg ================== -static const unsigned char temp_binary_data_28[] = +static const unsigned char temp_binary_data_29[] = "\n" "\n" "\n" @@ -6431,10 +6441,10 @@ static const unsigned char temp_binary_data_28[] = " id=\"path54\"\n" " style=\"stroke:#a45c94;stroke-opacity:1\" />"; -const char* wizard_StaticLibrary_svg = (const char*) temp_binary_data_28; +const char* wizard_StaticLibrary_svg = (const char*) temp_binary_data_29; //================== jucer_AnimatedComponentSimpleTemplate.h ================== -static const unsigned char temp_binary_data_29[] = +static const unsigned char temp_binary_data_30[] = "#pragma once\r\n" "\r\n" "%%include_juce%%\r\n" @@ -6492,10 +6502,10 @@ static const unsigned char temp_binary_data_29[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n" "};\r\n"; -const char* jucer_AnimatedComponentSimpleTemplate_h = (const char*) temp_binary_data_29; +const char* jucer_AnimatedComponentSimpleTemplate_h = (const char*) temp_binary_data_30; //================== jucer_AnimatedComponentTemplate.cpp ================== -static const unsigned char temp_binary_data_30[] = +static const unsigned char temp_binary_data_31[] = "%%include_corresponding_header%%\r\n" "\r\n" "//==============================================================================\r\n" @@ -6534,10 +6544,10 @@ static const unsigned char temp_binary_data_30[] = " // update their positions.\r\n" "}\r\n"; -const char* jucer_AnimatedComponentTemplate_cpp = (const char*) temp_binary_data_30; +const char* jucer_AnimatedComponentTemplate_cpp = (const char*) temp_binary_data_31; //================== jucer_AnimatedComponentTemplate.h ================== -static const unsigned char temp_binary_data_31[] = +static const unsigned char temp_binary_data_32[] = "#pragma once\r\n" "\r\n" "%%include_juce%%\r\n" @@ -6569,10 +6579,10 @@ static const unsigned char temp_binary_data_31[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n" "};\r\n"; -const char* jucer_AnimatedComponentTemplate_h = (const char*) temp_binary_data_31; +const char* jucer_AnimatedComponentTemplate_h = (const char*) temp_binary_data_32; //================== jucer_AudioComponentSimpleTemplate.h ================== -static const unsigned char temp_binary_data_32[] = +static const unsigned char temp_binary_data_33[] = "#pragma once\r\n" "\r\n" "%%include_juce%%\r\n" @@ -6668,10 +6678,10 @@ static const unsigned char temp_binary_data_32[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n" "};\r\n"; -const char* jucer_AudioComponentSimpleTemplate_h = (const char*) temp_binary_data_32; +const char* jucer_AudioComponentSimpleTemplate_h = (const char*) temp_binary_data_33; //================== jucer_AudioComponentTemplate.cpp ================== -static const unsigned char temp_binary_data_33[] = +static const unsigned char temp_binary_data_34[] = "%%include_corresponding_header%%\r\n" "\r\n" "//==============================================================================\r\n" @@ -6748,10 +6758,10 @@ static const unsigned char temp_binary_data_33[] = " // update their positions.\r\n" "}\r\n"; -const char* jucer_AudioComponentTemplate_cpp = (const char*) temp_binary_data_33; +const char* jucer_AudioComponentTemplate_cpp = (const char*) temp_binary_data_34; //================== jucer_AudioComponentTemplate.h ================== -static const unsigned char temp_binary_data_34[] = +static const unsigned char temp_binary_data_35[] = "#pragma once\r\n" "\r\n" "%%include_juce%%\r\n" @@ -6785,10 +6795,10 @@ static const unsigned char temp_binary_data_34[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n" "};\r\n"; -const char* jucer_AudioComponentTemplate_h = (const char*) temp_binary_data_34; +const char* jucer_AudioComponentTemplate_h = (const char*) temp_binary_data_35; //================== jucer_AudioPluginEditorTemplate.cpp ================== -static const unsigned char temp_binary_data_35[] = +static const unsigned char temp_binary_data_36[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -6829,10 +6839,10 @@ static const unsigned char temp_binary_data_35[] = " // subcomponents in your editor..\r\n" "}\r\n"; -const char* jucer_AudioPluginEditorTemplate_cpp = (const char*) temp_binary_data_35; +const char* jucer_AudioPluginEditorTemplate_cpp = (const char*) temp_binary_data_36; //================== jucer_AudioPluginEditorTemplate.h ================== -static const unsigned char temp_binary_data_36[] = +static const unsigned char temp_binary_data_37[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -6866,10 +6876,10 @@ static const unsigned char temp_binary_data_36[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%editor_class_name%%)\r\n" "};\r\n"; -const char* jucer_AudioPluginEditorTemplate_h = (const char*) temp_binary_data_36; +const char* jucer_AudioPluginEditorTemplate_h = (const char*) temp_binary_data_37; //================== jucer_AudioPluginFilterTemplate.cpp ================== -static const unsigned char temp_binary_data_37[] = +static const unsigned char temp_binary_data_38[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -7061,10 +7071,10 @@ static const unsigned char temp_binary_data_37[] = " return new %%filter_class_name%%();\r\n" "}\r\n"; -const char* jucer_AudioPluginFilterTemplate_cpp = (const char*) temp_binary_data_37; +const char* jucer_AudioPluginFilterTemplate_cpp = (const char*) temp_binary_data_38; //================== jucer_AudioPluginFilterTemplate.h ================== -static const unsigned char temp_binary_data_38[] = +static const unsigned char temp_binary_data_39[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -7125,10 +7135,10 @@ static const unsigned char temp_binary_data_38[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%filter_class_name%%)\r\n" "};\r\n"; -const char* jucer_AudioPluginFilterTemplate_h = (const char*) temp_binary_data_38; +const char* jucer_AudioPluginFilterTemplate_h = (const char*) temp_binary_data_39; //================== jucer_ComponentTemplate.cpp ================== -static const unsigned char temp_binary_data_39[] = +static const unsigned char temp_binary_data_40[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -7204,10 +7214,10 @@ static const unsigned char temp_binary_data_39[] = "//[EndFile] You can add extra defines here...\r\n" "//[/EndFile]\r\n"; -const char* jucer_ComponentTemplate_cpp = (const char*) temp_binary_data_39; +const char* jucer_ComponentTemplate_cpp = (const char*) temp_binary_data_40; //================== jucer_ComponentTemplate.h ================== -static const unsigned char temp_binary_data_40[] = +static const unsigned char temp_binary_data_41[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -7270,10 +7280,10 @@ static const unsigned char temp_binary_data_40[] = "//[EndFile] You can add extra defines here...\r\n" "//[/EndFile]\r\n"; -const char* jucer_ComponentTemplate_h = (const char*) temp_binary_data_40; +const char* jucer_ComponentTemplate_h = (const char*) temp_binary_data_41; //================== jucer_ContentCompSimpleTemplate.h ================== -static const unsigned char temp_binary_data_41[] = +static const unsigned char temp_binary_data_42[] = "#pragma once\r\n" "\r\n" "%%include_juce%%\r\n" @@ -7323,10 +7333,10 @@ static const unsigned char temp_binary_data_41[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n" "};\r\n"; -const char* jucer_ContentCompSimpleTemplate_h = (const char*) temp_binary_data_41; +const char* jucer_ContentCompSimpleTemplate_h = (const char*) temp_binary_data_42; //================== jucer_ContentCompTemplate.cpp ================== -static const unsigned char temp_binary_data_42[] = +static const unsigned char temp_binary_data_43[] = "%%include_corresponding_header%%\r\n" "\r\n" "//==============================================================================\r\n" @@ -7357,10 +7367,10 @@ static const unsigned char temp_binary_data_42[] = " // update their positions.\r\n" "}\r\n"; -const char* jucer_ContentCompTemplate_cpp = (const char*) temp_binary_data_42; +const char* jucer_ContentCompTemplate_cpp = (const char*) temp_binary_data_43; //================== jucer_ContentCompTemplate.h ================== -static const unsigned char temp_binary_data_43[] = +static const unsigned char temp_binary_data_44[] = "#pragma once\r\n" "\r\n" "%%include_juce%%\r\n" @@ -7389,10 +7399,10 @@ static const unsigned char temp_binary_data_43[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n" "};\r\n"; -const char* jucer_ContentCompTemplate_h = (const char*) temp_binary_data_43; +const char* jucer_ContentCompTemplate_h = (const char*) temp_binary_data_44; //================== jucer_InlineComponentTemplate.h ================== -static const unsigned char temp_binary_data_44[] = +static const unsigned char temp_binary_data_45[] = "//==============================================================================\r\n" "class %%component_class%% : public juce::Component\r\n" "{\r\n" @@ -7434,10 +7444,10 @@ static const unsigned char temp_binary_data_44[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%component_class%%)\r\n" "};\r\n"; -const char* jucer_InlineComponentTemplate_h = (const char*) temp_binary_data_44; +const char* jucer_InlineComponentTemplate_h = (const char*) temp_binary_data_45; //================== jucer_MainConsoleAppTemplate.cpp ================== -static const unsigned char temp_binary_data_45[] = +static const unsigned char temp_binary_data_46[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -7458,10 +7468,10 @@ static const unsigned char temp_binary_data_45[] = " return 0;\r\n" "}\r\n"; -const char* jucer_MainConsoleAppTemplate_cpp = (const char*) temp_binary_data_45; +const char* jucer_MainConsoleAppTemplate_cpp = (const char*) temp_binary_data_46; //================== jucer_MainTemplate_NoWindow.cpp ================== -static const unsigned char temp_binary_data_46[] = +static const unsigned char temp_binary_data_47[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -7514,10 +7524,10 @@ static const unsigned char temp_binary_data_46[] = "// This macro generates the main() routine that launches the app.\r\n" "START_JUCE_APPLICATION (%%app_class_name%%)\r\n"; -const char* jucer_MainTemplate_NoWindow_cpp = (const char*) temp_binary_data_46; +const char* jucer_MainTemplate_NoWindow_cpp = (const char*) temp_binary_data_47; //================== jucer_MainTemplate_Window.cpp ================== -static const unsigned char temp_binary_data_47[] = +static const unsigned char temp_binary_data_48[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -7623,10 +7633,10 @@ static const unsigned char temp_binary_data_47[] = "// This macro generates the main() routine that launches the app.\r\n" "START_JUCE_APPLICATION (%%app_class_name%%)\r\n"; -const char* jucer_MainTemplate_Window_cpp = (const char*) temp_binary_data_47; +const char* jucer_MainTemplate_Window_cpp = (const char*) temp_binary_data_48; //================== jucer_NewComponentTemplate.cpp ================== -static const unsigned char temp_binary_data_48[] = +static const unsigned char temp_binary_data_49[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -7679,10 +7689,10 @@ static const unsigned char temp_binary_data_48[] = "\r\n" "}\r\n"; -const char* jucer_NewComponentTemplate_cpp = (const char*) temp_binary_data_48; +const char* jucer_NewComponentTemplate_cpp = (const char*) temp_binary_data_49; //================== jucer_NewComponentTemplate.h ================== -static const unsigned char temp_binary_data_49[] = +static const unsigned char temp_binary_data_50[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -7713,10 +7723,10 @@ static const unsigned char temp_binary_data_49[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%component_class%%)\r\n" "};\r\n"; -const char* jucer_NewComponentTemplate_h = (const char*) temp_binary_data_49; +const char* jucer_NewComponentTemplate_h = (const char*) temp_binary_data_50; //================== jucer_NewCppFileTemplate.cpp ================== -static const unsigned char temp_binary_data_50[] = +static const unsigned char temp_binary_data_51[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -7729,10 +7739,10 @@ static const unsigned char temp_binary_data_50[] = "\r\n" "%%include_corresponding_header%%\r\n"; -const char* jucer_NewCppFileTemplate_cpp = (const char*) temp_binary_data_50; +const char* jucer_NewCppFileTemplate_cpp = (const char*) temp_binary_data_51; //================== jucer_NewCppFileTemplate.h ================== -static const unsigned char temp_binary_data_51[] = +static const unsigned char temp_binary_data_52[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -7745,10 +7755,10 @@ static const unsigned char temp_binary_data_51[] = "\r\n" "#pragma once\r\n"; -const char* jucer_NewCppFileTemplate_h = (const char*) temp_binary_data_51; +const char* jucer_NewCppFileTemplate_h = (const char*) temp_binary_data_52; //================== jucer_NewInlineComponentTemplate.h ================== -static const unsigned char temp_binary_data_52[] = +static const unsigned char temp_binary_data_53[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -7811,10 +7821,10 @@ static const unsigned char temp_binary_data_52[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%component_class%%)\r\n" "};\r\n"; -const char* jucer_NewInlineComponentTemplate_h = (const char*) temp_binary_data_52; +const char* jucer_NewInlineComponentTemplate_h = (const char*) temp_binary_data_53; //================== jucer_OpenGLComponentSimpleTemplate.h ================== -static const unsigned char temp_binary_data_53[] = +static const unsigned char temp_binary_data_54[] = "#pragma once\r\n" "\r\n" "%%include_juce%%\r\n" @@ -7883,10 +7893,10 @@ static const unsigned char temp_binary_data_53[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n" "};\r\n"; -const char* jucer_OpenGLComponentSimpleTemplate_h = (const char*) temp_binary_data_53; +const char* jucer_OpenGLComponentSimpleTemplate_h = (const char*) temp_binary_data_54; //================== jucer_OpenGLComponentTemplate.cpp ================== -static const unsigned char temp_binary_data_54[] = +static const unsigned char temp_binary_data_55[] = "%%include_corresponding_header%%\r\n" "\r\n" "//==============================================================================\r\n" @@ -7936,10 +7946,10 @@ static const unsigned char temp_binary_data_54[] = " // update their positions.\r\n" "}\r\n"; -const char* jucer_OpenGLComponentTemplate_cpp = (const char*) temp_binary_data_54; +const char* jucer_OpenGLComponentTemplate_cpp = (const char*) temp_binary_data_55; //================== jucer_OpenGLComponentTemplate.h ================== -static const unsigned char temp_binary_data_55[] = +static const unsigned char temp_binary_data_56[] = "#pragma once\r\n" "\r\n" "%%include_juce%%\r\n" @@ -7973,10 +7983,10 @@ static const unsigned char temp_binary_data_55[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n" "};\r\n"; -const char* jucer_OpenGLComponentTemplate_h = (const char*) temp_binary_data_55; +const char* jucer_OpenGLComponentTemplate_h = (const char*) temp_binary_data_56; //================== jucer_PIPAudioProcessorTemplate.h ================== -static const unsigned char temp_binary_data_56[] = +static const unsigned char temp_binary_data_57[] = "class %%class_name%% : public juce::AudioProcessor\r\n" "{\r\n" "public:\r\n" @@ -8085,10 +8095,10 @@ static const unsigned char temp_binary_data_56[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%class_name%%)\r\n" "};\r\n"; -const char* jucer_PIPAudioProcessorTemplate_h = (const char*) temp_binary_data_56; +const char* jucer_PIPAudioProcessorTemplate_h = (const char*) temp_binary_data_57; //================== jucer_PIPTemplate.h ================== -static const unsigned char temp_binary_data_57[] = +static const unsigned char temp_binary_data_58[] = "/*******************************************************************************\r\n" " The block below describes the properties of this PIP. A PIP is a short snippet\r\n" " of code that can be read by the Projucer and used to generate a JUCE project.\r\n" @@ -8107,10 +8117,10 @@ static const unsigned char temp_binary_data_57[] = "//==============================================================================\r\n" "%%pip_code%%\r\n"; -const char* jucer_PIPTemplate_h = (const char*) temp_binary_data_57; +const char* jucer_PIPTemplate_h = (const char*) temp_binary_data_58; //================== colourscheme_dark.xml ================== -static const unsigned char temp_binary_data_58[] = +static const unsigned char temp_binary_data_59[] = "\r\n" "\r\n" "\r\n" @@ -8135,10 +8145,10 @@ static const unsigned char temp_binary_data_58[] = " \r\n" "\r\n"; -const char* colourscheme_dark_xml = (const char*) temp_binary_data_58; +const char* colourscheme_dark_xml = (const char*) temp_binary_data_59; //================== colourscheme_light.xml ================== -static const unsigned char temp_binary_data_59[] = +static const unsigned char temp_binary_data_60[] = "\r\n" "\r\n" "\r\n" @@ -8163,10 +8173,10 @@ static const unsigned char temp_binary_data_59[] = " \r\n" "\r\n"; -const char* colourscheme_light_xml = (const char*) temp_binary_data_59; +const char* colourscheme_light_xml = (const char*) temp_binary_data_60; //================== juce_runtime_arch_detection.cpp ================== -static const unsigned char temp_binary_data_60[] = +static const unsigned char temp_binary_data_61[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -8245,7 +8255,7 @@ static const unsigned char temp_binary_data_60[] = "\r\n" "#endif\r\n"; -const char* juce_runtime_arch_detection_cpp = (const char*) temp_binary_data_60; +const char* juce_runtime_arch_detection_cpp = (const char*) temp_binary_data_61; const char* getNamedResource (const char* resourceNameUTF8, int& numBytes); @@ -8259,6 +8269,7 @@ const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) switch (hash) { + case 0xd764ff7e: numBytes = 91; return JuceLV2Defines_h_in; case 0x31d21131: numBytes = 1042; return LaunchScreen_storyboard; case 0x24e5a04d: numBytes = 483; return PIPAudioProcessor_cpp_in; case 0xd572ce5a: numBytes = 2275; return PIPComponent_cpp_in; @@ -8329,6 +8340,7 @@ const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) const char* namedResourceList[] = { + "JuceLV2Defines_h_in", "LaunchScreen_storyboard", "PIPAudioProcessor_cpp_in", "PIPComponent_cpp_in", @@ -8394,6 +8406,7 @@ const char* namedResourceList[] = const char* originalFilenames[] = { + "JuceLV2Defines.h.in", "LaunchScreen.storyboard", "PIPAudioProcessor.cpp.in", "PIPComponent.cpp.in", diff --git a/extras/Projucer/JuceLibraryCode/BinaryData.h b/extras/Projucer/JuceLibraryCode/BinaryData.h index 70e459410c..a21c2091c3 100644 --- a/extras/Projucer/JuceLibraryCode/BinaryData.h +++ b/extras/Projucer/JuceLibraryCode/BinaryData.h @@ -8,6 +8,9 @@ namespace BinaryData { + extern const char* JuceLV2Defines_h_in; + const int JuceLV2Defines_h_inSize = 91; + extern const char* LaunchScreen_storyboard; const int LaunchScreen_storyboardSize = 1042; @@ -192,7 +195,7 @@ namespace BinaryData const int juce_runtime_arch_detection_cppSize = 2760; // Number of elements in the namedResourceList and originalFileNames arrays. - const int namedResourceListSize = 61; + const int namedResourceListSize = 62; // Points to the start of a list of resource names. extern const char* namedResourceList[]; diff --git a/extras/Projucer/Projucer.jucer b/extras/Projucer/Projucer.jucer index 49dd7305e0..9400d5b4a5 100644 --- a/extras/Projucer/Projucer.jucer +++ b/extras/Projucer/Projucer.jucer @@ -187,6 +187,8 @@ file="Source/Application/jucer_MainWindow.h"/> + @@ -192,6 +194,7 @@ public: String getDefaultBundleIdentifierString() const; String getDefaultAAXIdentifierString() const { return getDefaultBundleIdentifierString(); } String getDefaultPluginManufacturerString() const; + String getDefaultLV2URI() const { return getCompanyWebsiteString() + "/plugins/" + build_tools::makeValidIdentifier (getProjectNameString(), false, true, false); } String getCompanyNameString() const { return companyNameValue.get(); } String getCompanyCopyrightString() const { return companyCopyrightValue.get(); } @@ -265,6 +268,7 @@ public: bool shouldBuildAAX() const { return isAudioPluginProject() && checkMultiChoiceVar (pluginFormatsValue, Ids::buildAAX); } bool shouldBuildStandalonePlugin() const { return isAudioPluginProject() && checkMultiChoiceVar (pluginFormatsValue, Ids::buildStandalone); } bool shouldBuildUnityPlugin() const { return isAudioPluginProject() && checkMultiChoiceVar (pluginFormatsValue, Ids::buildUnity); } + bool shouldBuildLV2() const { return isAudioPluginProject() && checkMultiChoiceVar (pluginFormatsValue, Ids::buildLV2); } bool shouldEnableIAA() const { return isAudioPluginProject() && checkMultiChoiceVar (pluginFormatsValue, Ids::enableIAA); } bool isPluginSynth() const { return checkMultiChoiceVar (pluginCharacteristicsValue, Ids::pluginIsSynth); } @@ -314,6 +318,8 @@ public: return name; } + String getLV2URI() const { return pluginLV2URIValue.get(); } + //============================================================================== bool isAUPluginHost(); bool isVSTPluginHost(); @@ -550,7 +556,7 @@ private: ValueTreePropertyWithDefault pluginFormatsValue, pluginNameValue, pluginDescriptionValue, pluginManufacturerValue, pluginManufacturerCodeValue, pluginCodeValue, pluginChannelConfigsValue, pluginCharacteristicsValue, pluginAUExportPrefixValue, pluginAAXIdentifierValue, pluginAUMainTypeValue, pluginAUSandboxSafeValue, pluginRTASCategoryValue, pluginVSTCategoryValue, pluginVST3CategoryValue, pluginAAXCategoryValue, - pluginVSTNumMidiInputsValue, pluginVSTNumMidiOutputsValue; + pluginVSTNumMidiInputsValue, pluginVSTNumMidiOutputsValue, pluginLV2URIValue; //============================================================================== std::unique_ptr enabledModulesList; @@ -595,6 +601,7 @@ private: void updateTitleDependencies(); void updateCompanyNameDependencies(); void updateProjectSettings(); + void updateWebsiteDependencies(); ValueTree getConfigurations() const; ValueTree getConfigNode(); diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CodeBlocks.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CodeBlocks.h index 0c249dcf7c..732491b534 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CodeBlocks.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CodeBlocks.h @@ -100,24 +100,28 @@ public: bool supportsTargetType (build_tools::ProjectType::Target::Type type) const override { + using Target = build_tools::ProjectType::Target; + switch (type) { - case build_tools::ProjectType::Target::StandalonePlugIn: - case build_tools::ProjectType::Target::GUIApp: - case build_tools::ProjectType::Target::ConsoleApp: - case build_tools::ProjectType::Target::StaticLibrary: - case build_tools::ProjectType::Target::SharedCodeTarget: - case build_tools::ProjectType::Target::AggregateTarget: - case build_tools::ProjectType::Target::VSTPlugIn: - case build_tools::ProjectType::Target::DynamicLibrary: + case Target::StandalonePlugIn: + case Target::GUIApp: + case Target::ConsoleApp: + case Target::StaticLibrary: + case Target::SharedCodeTarget: + case Target::AggregateTarget: + case Target::VSTPlugIn: + case Target::DynamicLibrary: return true; - case build_tools::ProjectType::Target::AAXPlugIn: - case build_tools::ProjectType::Target::RTASPlugIn: - case build_tools::ProjectType::Target::UnityPlugIn: - case build_tools::ProjectType::Target::VST3PlugIn: - case build_tools::ProjectType::Target::AudioUnitPlugIn: - case build_tools::ProjectType::Target::AudioUnitv3PlugIn: - case build_tools::ProjectType::Target::unspecified: + case Target::AAXPlugIn: + case Target::RTASPlugIn: + case Target::UnityPlugIn: + case Target::LV2PlugIn: + case Target::LV2TurtleProgram: + case Target::VST3PlugIn: + case Target::AudioUnitPlugIn: + case Target::AudioUnitv3PlugIn: + case Target::unspecified: default: break; } diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h index f858a3513b..30a5e0c258 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h @@ -162,6 +162,7 @@ public: vst3BinaryLocation (config, Ids::vst3BinaryLocation, getUndoManager()), rtasBinaryLocation (config, Ids::rtasBinaryLocation, getUndoManager()), aaxBinaryLocation (config, Ids::aaxBinaryLocation, getUndoManager()), + lv2BinaryLocation (config, Ids::aaxBinaryLocation, getUndoManager()), unityPluginBinaryLocation (config, Ids::unityPluginBinaryLocation, getUndoManager(), {}) { setPluginBinaryCopyLocationDefaults(); @@ -181,6 +182,7 @@ public: String getVST3BinaryLocationString() const { return vst3BinaryLocation.get(); } String getRTASBinaryLocationString() const { return rtasBinaryLocation.get();} String getAAXBinaryLocationString() const { return aaxBinaryLocation.get();} + String getLV2BinaryLocationString() const { return lv2BinaryLocation.get();} String getUnityPluginBinaryLocationString() const { return unityPluginBinaryLocation.get(); } String getIntermediatesPathString() const { return intermediatesPathValue.get(); } String getCharacterSetString() const { return characterSetValue.get(); } @@ -204,8 +206,16 @@ public: return getName() + "|" + (is64Bit() ? "x64" : "Win32"); } - String getOutputFilename (const String& suffix, bool forceSuffix, bool forceUnityPrefix) const + String getOutputFilename (const String& suffix, + bool forceSuffix, + build_tools::ProjectType::Target::Type type) const { + using Target = build_tools::ProjectType::Target::Type; + + if (type == Target::LV2TurtleProgram) + return Project::getLV2FileWriterName() + suffix; + + const auto forceUnityPrefix = type == Target::UnityPlugIn; auto target = File::createLegalFileName (getTargetBinaryNameString (forceUnityPrefix).trim()); if (forceSuffix || ! target.containsChar ('.')) @@ -316,7 +326,7 @@ public: intermediatesPathValue, characterSetValue, architectureTypeValue, fastMathValue, debugInformationFormatValue, pluginBinaryCopyStepValue; - ValueTreePropertyWithDefault vstBinaryLocation, vst3BinaryLocation, rtasBinaryLocation, aaxBinaryLocation, unityPluginBinaryLocation; + ValueTreePropertyWithDefault vstBinaryLocation, vst3BinaryLocation, rtasBinaryLocation, aaxBinaryLocation, lv2BinaryLocation, unityPluginBinaryLocation; Value architectureValueToListenTo; @@ -345,6 +355,11 @@ public: 1024, false), "The folder in which the compiled AAX binary should be placed."); + if (project.shouldBuildLV2()) + props.add (new TextPropertyComponentWithEnablement (lv2BinaryLocation, pluginBinaryCopyStepValue, "LV2 Binary Location", + 1024, false), + "The folder in which the compiled LV2 binary should be placed."); + if (project.shouldBuildUnityPlugin()) props.add (new TextPropertyComponentWithEnablement (unityPluginBinaryLocation, pluginBinaryCopyStepValue, "Unity Binary Location", 1024, false), @@ -367,6 +382,7 @@ public: vst3BinaryLocation.setDefault (prefix + String ("\\VST3")); rtasBinaryLocation.setDefault (prefix + String ("\\Digidesign\\DAE\\Plug-Ins")); aaxBinaryLocation.setDefault (prefix + String ("\\Avid\\Audio\\Plug-Ins")); + lv2BinaryLocation.setDefault ("%APPDATA%\\LV2"); } void valueChanged (Value&) override @@ -513,7 +529,7 @@ public: { auto* targetName = props->createNewChildElement ("TargetName"); setConditionAttribute (*targetName, config); - targetName->addTextElement (msBuildEscape (config.getOutputFilename ("", false, type == UnityPlugIn))); + targetName->addTextElement (msBuildEscape (config.getOutputFilename ("", false, type))); } { @@ -555,7 +571,7 @@ public: } bool isUsingEditAndContinue = false; - const auto pdbFilename = getOwner().getIntDirFile (config, config.getOutputFilename (".pdb", true, type == UnityPlugIn)); + const auto pdbFilename = getOwner().getIntDirFile (config, config.getOutputFilename (".pdb", true, type)); { auto* cl = group->createNewChildElement ("ClCompile"); @@ -565,7 +581,7 @@ public: if (isDebug || config.shouldGenerateDebugSymbols()) { cl->createNewChildElement ("DebugInformationFormat") - ->addTextElement (config.getDebugInformationFormatString()); + ->addTextElement (config.getDebugInformationFormatString()); } auto includePaths = getOwner().getHeaderSearchPaths (config); @@ -607,24 +623,24 @@ public: } auto externalLibraries = getExternalLibraries (config, getOwner().getExternalLibrariesStringArray()); - auto additionalDependencies = type != SharedCodeTarget && ! externalLibraries.isEmpty() + auto additionalDependencies = type != SharedCodeTarget && type != LV2TurtleProgram && ! externalLibraries.isEmpty() ? externalLibraries.joinIntoString (";") + ";%(AdditionalDependencies)" : String(); auto librarySearchPaths = config.getLibrarySearchPaths(); - auto additionalLibraryDirs = type != SharedCodeTarget && librarySearchPaths.size() > 0 + auto additionalLibraryDirs = type != SharedCodeTarget && type != LV2TurtleProgram && librarySearchPaths.size() > 0 ? getOwner().replacePreprocessorTokens (config, librarySearchPaths.joinIntoString (";")) + ";%(AdditionalLibraryDirectories)" : String(); { auto* link = group->createNewChildElement ("Link"); - link->createNewChildElement ("OutputFile")->addTextElement (getOutputFilePath (config, type == UnityPlugIn)); + link->createNewChildElement ("OutputFile")->addTextElement (getOutputFilePath (config)); link->createNewChildElement ("SuppressStartupBanner")->addTextElement ("true"); link->createNewChildElement ("IgnoreSpecificDefaultLibraries")->addTextElement (isDebug ? "libcmt.lib; msvcrt.lib;;%(IgnoreSpecificDefaultLibraries)" : "%(IgnoreSpecificDefaultLibraries)"); link->createNewChildElement ("GenerateDebugInformation")->addTextElement ((isDebug || config.shouldGenerateDebugSymbols()) ? "true" : "false"); link->createNewChildElement ("ProgramDatabaseFile")->addTextElement (pdbFilename); - link->createNewChildElement ("SubSystem")->addTextElement (type == ConsoleApp ? "Console" : "Windows"); + link->createNewChildElement ("SubSystem")->addTextElement (type == ConsoleApp || type == LV2TurtleProgram ? "Console" : "Windows"); if (! config.is64Bit()) link->createNewChildElement ("TargetMachine")->addTextElement ("MachineX86"); @@ -667,10 +683,10 @@ public: { auto* bsc = group->createNewChildElement ("Bscmake"); bsc->createNewChildElement ("SuppressStartupBanner")->addTextElement ("true"); - bsc->createNewChildElement ("OutputFile")->addTextElement (getOwner().getIntDirFile (config, config.getOutputFilename (".bsc", true, type == UnityPlugIn))); + bsc->createNewChildElement ("OutputFile")->addTextElement (getOwner().getIntDirFile (config, config.getOutputFilename (".bsc", true, type))); } - if (type != SharedCodeTarget) + if (type != SharedCodeTarget && type != LV2TurtleProgram) { auto* lib = group->createNewChildElement ("Lib"); @@ -725,6 +741,12 @@ public: if (group.getNumChildren() > 0) addFilesToCompile (group, *cppFiles, *headerFiles, *otherFilesGroup); } + + if (type == LV2TurtleProgram) + { + cppFiles->createNewChildElement ("ClCompile") + ->setAttribute ("Include", owner.getLV2TurtleDumpProgramSource().toWindowsStyle()); + } } if (getOwner().iconFile.existsAsFile()) @@ -1055,8 +1077,12 @@ public: String getConfigTargetPath (const BuildConfiguration& config) const { - auto solutionTargetFolder = getSolutionTargetPath (config); - return solutionTargetFolder + "\\" + getName(); + const auto result = getSolutionTargetPath (config) + "\\" + getName(); + + if (type == LV2PlugIn) + return result + "\\" + config.getTargetBinaryNameString() + ".lv2"; + + return result; } String getIntermediatesPath (const MSVCBuildConfiguration& config) const @@ -1101,13 +1127,6 @@ public: return {}; } - XmlElement* createToolElement (XmlElement& parent, const String& toolName) const - { - auto* e = parent.createNewChildElement ("Tool"); - e->setAttribute ("Name", toolName); - return e; - } - String getPreprocessorDefs (const BuildConfiguration& config, const String& joinString) const { auto defines = getOwner().msvcExtraPreprocessorDefs; @@ -1168,13 +1187,13 @@ public: build_tools::RelativePath bundleScript = aaxSDK.getChildFile ("Utilities").getChildFile ("CreatePackage.bat"); build_tools::RelativePath iconFilePath = getAAXIconFile(); - auto outputFilename = config.getOutputFilename (".aaxplugin", true, false); + auto outputFilename = config.getOutputFilename (".aaxplugin", true, type); auto bundleDir = getOwner().getOutDirFile (config, outputFilename); auto bundleContents = bundleDir + "\\Contents"; auto archDir = bundleContents + String ("\\") + (config.is64Bit() ? "x64" : "Win32"); auto executablePath = archDir + String ("\\") + outputFilename; - auto pkgScript = String ("copy /Y ") + getOutputFilePath (config, false).quoted() + String (" ") + executablePath.quoted() + String ("\r\ncall ") + auto pkgScript = String ("copy /Y ") + getOutputFilePath (config).quoted() + String (" ") + executablePath.quoted() + String ("\r\ncall ") + createRebasedPath (bundleScript) + String (" ") + archDir.quoted() + String (" ") + createRebasedPath (iconFilePath); if (config.isPluginBinaryCopyStepEnabled()) @@ -1183,11 +1202,12 @@ public: return pkgScript; } - else if (type == UnityPlugIn) + + if (type == UnityPlugIn) { build_tools::RelativePath scriptPath (config.project.getGeneratedCodeFolder().getChildFile (config.project.getUnityScriptName()), - getOwner().getTargetFolder(), - build_tools::RelativePath::projectFolder); + getOwner().getTargetFolder(), + build_tools::RelativePath::projectFolder); auto pkgScript = String ("copy /Y ") + scriptPath.toWindowsStyle().quoted() + " \"$(OutDir)\""; @@ -1201,7 +1221,35 @@ public: return pkgScript; } - else if (config.isPluginBinaryCopyStepEnabled()) + + if (type == LV2PlugIn) + { + const auto* writerTarget = [&]() -> MSVCTargetBase* + { + for (auto* target : owner.targets) + if (target->type == LV2TurtleProgram) + return target; + + return nullptr; + }(); + + const auto writer = writerTarget->getConfigTargetPath (config) + + "\\" + + writerTarget->getBinaryNameWithSuffix (config); + + const auto copyScript = [&]() -> String + { + if (! config.isPluginBinaryCopyStepEnabled()) + return ""; + + return "xcopy /E /H /I /K /R /Y \"$(OutDir)\" \"" + config.getLV2BinaryLocationString() + + '\\' + config.getTargetBinaryNameString() + ".lv2\"\r\n"; + }(); + + return writer.quoted() + " \"$(OutDir)$(TargetFileName)\"\r\n" + copyScript; + } + + if (config.isPluginBinaryCopyStepEnabled()) { auto copyScript = String ("copy /Y \"$(OutDir)$(TargetFileName)\"") + String (" \"$COPYDIR$\\$(TargetFileName)\""); @@ -1219,7 +1267,7 @@ public: { String script; - auto bundleDir = getOwner().getOutDirFile (config, config.getOutputFilename (".aaxplugin", false, false)); + auto bundleDir = getOwner().getOutDirFile (config, config.getOutputFilename (".aaxplugin", false, type)); auto bundleContents = bundleDir + "\\Contents"; auto archDir = bundleContents + String ("\\") + (config.is64Bit() ? "x64" : "Win32"); @@ -1311,21 +1359,21 @@ public: return searchPaths; } - String getBinaryNameWithSuffix (const MSVCBuildConfiguration& config, bool forceUnityPrefix) const + String getBinaryNameWithSuffix (const MSVCBuildConfiguration& config) const { - return config.getOutputFilename (getTargetSuffix(), true, forceUnityPrefix); + return config.getOutputFilename (getTargetSuffix(), true, type); } - String getOutputFilePath (const MSVCBuildConfiguration& config, bool forceUnityPrefix) const + String getOutputFilePath (const MSVCBuildConfiguration& config) const { - return getOwner().getOutDirFile (config, getBinaryNameWithSuffix (config, forceUnityPrefix)); + return getOwner().getOutDirFile (config, getBinaryNameWithSuffix (config)); } StringArray getLibrarySearchPaths (const BuildConfiguration& config) const { auto librarySearchPaths = config.getLibrarySearchPaths(); - if (type != SharedCodeTarget) + if (type != SharedCodeTarget && type != LV2TurtleProgram) if (auto* shared = getOwner().getSharedCodeTarget()) librarySearchPaths.add (shared->getConfigTargetPath (config)); @@ -1348,9 +1396,9 @@ public: result.addArray (msBuildEscape (getOwner().getModuleLibs())); - if (type != SharedCodeTarget) + if (type != SharedCodeTarget && type != LV2TurtleProgram) if (auto* shared = getOwner().getSharedCodeTarget()) - result.add (msBuildEscape (shared->getBinaryNameWithSuffix (config, false))); + result.add (msBuildEscape (shared->getBinaryNameWithSuffix (config))); return result; } @@ -1440,24 +1488,28 @@ public: bool supportsTargetType (build_tools::ProjectType::Target::Type type) const override { + using Target = build_tools::ProjectType::Target; + switch (type) { - case build_tools::ProjectType::Target::StandalonePlugIn: - case build_tools::ProjectType::Target::GUIApp: - case build_tools::ProjectType::Target::ConsoleApp: - case build_tools::ProjectType::Target::StaticLibrary: - case build_tools::ProjectType::Target::SharedCodeTarget: - case build_tools::ProjectType::Target::AggregateTarget: - case build_tools::ProjectType::Target::VSTPlugIn: - case build_tools::ProjectType::Target::VST3PlugIn: - case build_tools::ProjectType::Target::AAXPlugIn: - case build_tools::ProjectType::Target::RTASPlugIn: - case build_tools::ProjectType::Target::UnityPlugIn: - case build_tools::ProjectType::Target::DynamicLibrary: + case Target::StandalonePlugIn: + case Target::GUIApp: + case Target::ConsoleApp: + case Target::StaticLibrary: + case Target::SharedCodeTarget: + case Target::AggregateTarget: + case Target::VSTPlugIn: + case Target::VST3PlugIn: + case Target::AAXPlugIn: + case Target::RTASPlugIn: + case Target::UnityPlugIn: + case Target::LV2PlugIn: + case Target::LV2TurtleProgram: + case Target::DynamicLibrary: return true; - case build_tools::ProjectType::Target::AudioUnitPlugIn: - case build_tools::ProjectType::Target::AudioUnitv3PlugIn: - case build_tools::ProjectType::Target::unspecified: + case Target::AudioUnitPlugIn: + case Target::AudioUnitv3PlugIn: + case Target::unspecified: default: break; } @@ -1639,14 +1691,11 @@ protected: return getCleanedStringArray (searchPaths); } - String getSharedCodeGuid() const + String getTargetGuid (MSVCTargetBase::Type type) const { - String sharedCodeGuid; - - for (int i = 0; i < targets.size(); ++i) - if (auto* target = targets[i]) - if (target->type == build_tools::ProjectType::Target::SharedCodeTarget) - return target->getProjectGuid(); + for (auto* target : targets) + if (target != nullptr && target->type == type) + return target->getProjectGuid(); return {}; } @@ -1654,7 +1703,8 @@ protected: //============================================================================== void writeProjectDependencies (OutputStream& out) const { - auto sharedCodeGuid = getSharedCodeGuid(); + const auto sharedCodeGuid = getTargetGuid (MSVCTargetBase::SharedCodeTarget); + const auto turtleGuid = getTargetGuid (MSVCTargetBase::LV2TurtleProgram); for (int addingOtherTargets = 0; addingOtherTargets < (sharedCodeGuid.isNotEmpty() ? 2 : 1); ++addingOtherTargets) { @@ -1662,16 +1712,24 @@ protected: { if (auto* target = targets[i]) { - if (sharedCodeGuid.isEmpty() || (addingOtherTargets != 0) == (target->type != build_tools::ProjectType::Target::StandalonePlugIn)) + if (sharedCodeGuid.isEmpty() || (addingOtherTargets != 0) == (target->type != MSVCTargetBase::StandalonePlugIn)) { out << "Project(\"{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\") = \"" << projectName << " - " << target->getName() << "\", \"" << target->getVCProjFile().getFileName() << "\", \"" << target->getProjectGuid() << '"' << newLine; - if (sharedCodeGuid.isNotEmpty() && target->type != build_tools::ProjectType::Target::SharedCodeTarget) + if (sharedCodeGuid.isNotEmpty() + && target->type != MSVCTargetBase::SharedCodeTarget + && target->type != MSVCTargetBase::LV2TurtleProgram) + { out << "\tProjectSection(ProjectDependencies) = postProject" << newLine - << "\t\t" << sharedCodeGuid << " = " << sharedCodeGuid << newLine - << "\tEndProjectSection" << newLine; + << "\t\t" << sharedCodeGuid << " = " << sharedCodeGuid << newLine; + + if (target->type == MSVCTargetBase::LV2PlugIn && turtleGuid.isNotEmpty()) + out << "\t\t" << turtleGuid << " = " << turtleGuid << newLine; + + out << "\tEndProjectSection" << newLine; + } out << "EndProject" << newLine; } diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h index 06353b532b..8d40563ffc 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h @@ -33,6 +33,7 @@ protected: pluginBinaryCopyStepValue (config, Ids::enablePluginBinaryCopyStep, getUndoManager(), true), vstBinaryLocation (config, Ids::vstBinaryLocation, getUndoManager(), "$(HOME)/.vst"), vst3BinaryLocation (config, Ids::vst3BinaryLocation, getUndoManager(), "$(HOME)/.vst3"), + lv2BinaryLocation (config, Ids::lv2BinaryLocation, getUndoManager(), "$(HOME)/.lv2"), unityPluginBinaryLocation (config, Ids::unityPluginBinaryLocation, getUndoManager(), "$(HOME)/UnityPlugins") { linkTimeOptimisationValue.setDefault (false); @@ -50,7 +51,7 @@ protected: "Specifies the 32/64-bit architecture to use. If you don't see the required architecture in this list, you can also specify the desired " "flag on the command-line when invoking make by passing \"TARGET_ARCH=-march=\""); - auto isBuildingAnyPlugins = (project.shouldBuildVST() || project.shouldBuildVST3() || project.shouldBuildUnityPlugin()); + auto isBuildingAnyPlugins = (project.shouldBuildVST() || project.shouldBuildVST3() || project.shouldBuildUnityPlugin() || project.shouldBuildLV2()); if (isBuildingAnyPlugins) { @@ -62,6 +63,11 @@ protected: 1024, false), "The folder in which the compiled VST3 binary should be placed."); + if (project.shouldBuildLV2()) + props.add (new TextPropertyComponentWithEnablement (lv2BinaryLocation, pluginBinaryCopyStepValue, "LV2 Binary Location", + 1024, false), + "The folder in which the compiled LV2 binary should be placed."); + if (project.shouldBuildUnityPlugin()) props.add (new TextPropertyComponentWithEnablement (unityPluginBinaryLocation, pluginBinaryCopyStepValue, "Unity Binary Location", 1024, false), @@ -96,12 +102,13 @@ protected: bool isPluginBinaryCopyStepEnabled() const { return pluginBinaryCopyStepValue.get(); } String getVSTBinaryLocationString() const { return vstBinaryLocation.get(); } String getVST3BinaryLocationString() const { return vst3BinaryLocation.get(); } + String getLV2BinaryLocationString() const { return lv2BinaryLocation.get(); } String getUnityPluginBinaryLocationString() const { return unityPluginBinaryLocation.get(); } private: //============================================================================== ValueTreePropertyWithDefault architectureTypeValue, pluginBinaryCopyStepValue, - vstBinaryLocation, vst3BinaryLocation, unityPluginBinaryLocation; + vstBinaryLocation, vst3BinaryLocation, lv2BinaryLocation, unityPluginBinaryLocation; }; BuildConfiguration::Ptr createBuildConfig (const ValueTree& tree) const override @@ -202,10 +209,20 @@ public: s.add ("JUCE_UNITYDIR := Unity"); targetName = "$(JUCE_UNITYDIR)/" + targetName; } + else if (type == LV2PlugIn) + { + s.add ("JUCE_LV2DIR := " + targetName + ".lv2"); + targetName = "$(JUCE_LV2DIR)/" + targetName + ".so"; + } + else if (type == LV2TurtleProgram) + { + targetName = Project::getLV2FileWriterName(); + } s.add ("JUCE_TARGET_" + getTargetVarName() + String (" := ") + escapeQuotesAndSpaces (targetName)); - if (config.isPluginBinaryCopyStepEnabled() && (type == VST3PlugIn || type == VSTPlugIn || type == UnityPlugIn)) + if (config.isPluginBinaryCopyStepEnabled() + && (type == VST3PlugIn || type == VSTPlugIn || type == UnityPlugIn || type == LV2PlugIn)) { String copyCmd ("JUCE_COPYCMD_" + getTargetVarName() + String (" := $(JUCE_OUTDIR)/")); @@ -224,6 +241,12 @@ public: s.add ("JUCE_UNITYDESTDIR := " + config.getUnityPluginBinaryLocationString()); s.add (copyCmd + "$(JUCE_UNITYDIR)/. $(JUCE_UNITYDESTDIR)"); } + else if (type == LV2PlugIn) + { + s.add ("JUCE_LV2DESTDIR := " + config.getLV2BinaryLocationString()); + s.add ("JUCE_LV2_FULL_PATH := $(JUCE_OUTDIR)/$(JUCE_TARGET_LV2_PLUGIN)"); + s.add (copyCmd + "$(JUCE_LV2DIR) $(JUCE_LV2DESTDIR)"); + } } return s; @@ -282,6 +305,9 @@ public: String getPhonyName() const { + if (type == LV2TurtleProgram) + return "LV2_MANIFEST_HELPER"; + return String (getName()).upToFirstOccurrenceOf (" ", false, false); } @@ -295,6 +321,9 @@ public: if (type != SharedCodeTarget && owner.shouldBuildTargetType (SharedCodeTarget)) out << " $(JUCE_OUTDIR)/$(JUCE_TARGET_SHARED_CODE)"; + if (type == LV2PlugIn) + out << " $(JUCE_OUTDIR)/$(JUCE_TARGET_LV2_MANIFEST_HELPER)"; + out << newLine; if (! packages.isEmpty()) @@ -317,6 +346,8 @@ public: out << "\t-$(V_AT)mkdir -p $(JUCE_OUTDIR)/$(JUCE_VST3DIR)/$(JUCE_VST3SUBDIR)" << newLine; else if (type == UnityPlugIn) out << "\t-$(V_AT)mkdir -p $(JUCE_OUTDIR)/$(JUCE_UNITYDIR)" << newLine; + else if (type == LV2PlugIn) + out << "\t-$(V_AT)mkdir -p $(JUCE_OUTDIR)/$(JUCE_LV2DIR)" << newLine; if (owner.projectType.isStaticLibrary() || type == SharedCodeTarget) { @@ -362,6 +393,13 @@ public: << "\t-$(V_AT)mkdir -p $(JUCE_UNITYDESTDIR)" << newLine << "\t-$(V_AT)cp -R $(JUCE_COPYCMD_UNITY_PLUGIN)" << newLine; } + else if (type == LV2PlugIn) + { + out << "\t$(V_AT) $(JUCE_OUTDIR)/$(JUCE_TARGET_LV2_MANIFEST_HELPER) " + "$(abspath $(JUCE_LV2_FULL_PATH))" << newLine + << "\t-$(V_AT)mkdir -p $(JUCE_LV2DESTDIR)" << newLine + << "\t-$(V_AT)cp -R $(JUCE_COPYCMD_LV2_PLUGIN)" << newLine; + } out << newLine; } @@ -417,24 +455,28 @@ public: bool supportsTargetType (build_tools::ProjectType::Target::Type type) const override { + using Target = build_tools::ProjectType::Target; + switch (type) { - case build_tools::ProjectType::Target::GUIApp: - case build_tools::ProjectType::Target::ConsoleApp: - case build_tools::ProjectType::Target::StaticLibrary: - case build_tools::ProjectType::Target::SharedCodeTarget: - case build_tools::ProjectType::Target::AggregateTarget: - case build_tools::ProjectType::Target::VSTPlugIn: - case build_tools::ProjectType::Target::VST3PlugIn: - case build_tools::ProjectType::Target::StandalonePlugIn: - case build_tools::ProjectType::Target::DynamicLibrary: - case build_tools::ProjectType::Target::UnityPlugIn: + case Target::GUIApp: + case Target::ConsoleApp: + case Target::StaticLibrary: + case Target::SharedCodeTarget: + case Target::AggregateTarget: + case Target::VSTPlugIn: + case Target::VST3PlugIn: + case Target::StandalonePlugIn: + case Target::DynamicLibrary: + case Target::UnityPlugIn: + case Target::LV2PlugIn: + case Target::LV2TurtleProgram: return true; - case build_tools::ProjectType::Target::AAXPlugIn: - case build_tools::ProjectType::Target::RTASPlugIn: - case build_tools::ProjectType::Target::AudioUnitPlugIn: - case build_tools::ProjectType::Target::AudioUnitv3PlugIn: - case build_tools::ProjectType::Target::unspecified: + case Target::AAXPlugIn: + case Target::RTASPlugIn: + case Target::AudioUnitPlugIn: + case Target::AudioUnitv3PlugIn: + case Target::unspecified: default: break; } @@ -961,9 +1003,9 @@ private: writeCompilerFlagSchemes (out, filesToCompile); - auto getFilesForTarget = [] (const Array>& files, - MakefileTarget* target, - const Project& p) -> Array> + auto getFilesForTarget = [this] (const Array>& files, + MakefileTarget* target, + const Project& p) -> Array> { Array> targetFiles; @@ -973,6 +1015,9 @@ private: if (p.getTargetTypeFromFilePath (f.first, true) == targetType) targetFiles.add (f); + if (targetType == MakefileTarget::LV2TurtleProgram) + targetFiles.add ({ project.resolveFilename (getLV2TurtleDumpProgramSource().toUnixStyle()), {} }); + return targetFiles; }; diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h index 55c29e77b9..d1433d31bc 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h @@ -260,25 +260,29 @@ public: bool supportsTargetType (build_tools::ProjectType::Target::Type type) const override { + using Target = build_tools::ProjectType::Target; + switch (type) { - case build_tools::ProjectType::Target::AudioUnitv3PlugIn: - case build_tools::ProjectType::Target::StandalonePlugIn: - case build_tools::ProjectType::Target::GUIApp: - case build_tools::ProjectType::Target::StaticLibrary: - case build_tools::ProjectType::Target::DynamicLibrary: - case build_tools::ProjectType::Target::SharedCodeTarget: - case build_tools::ProjectType::Target::AggregateTarget: + case Target::AudioUnitv3PlugIn: + case Target::StandalonePlugIn: + case Target::GUIApp: + case Target::StaticLibrary: + case Target::DynamicLibrary: + case Target::SharedCodeTarget: + case Target::AggregateTarget: return true; - case build_tools::ProjectType::Target::ConsoleApp: - case build_tools::ProjectType::Target::VSTPlugIn: - case build_tools::ProjectType::Target::VST3PlugIn: - case build_tools::ProjectType::Target::AAXPlugIn: - case build_tools::ProjectType::Target::RTASPlugIn: - case build_tools::ProjectType::Target::AudioUnitPlugIn: - case build_tools::ProjectType::Target::UnityPlugIn: + case Target::ConsoleApp: + case Target::VSTPlugIn: + case Target::VST3PlugIn: + case Target::AAXPlugIn: + case Target::RTASPlugIn: + case Target::AudioUnitPlugIn: + case Target::UnityPlugIn: + case Target::LV2PlugIn: + case Target::LV2TurtleProgram: return ! iOS; - case build_tools::ProjectType::Target::unspecified: + case Target::unspecified: default: break; } @@ -800,7 +804,8 @@ protected: auBinaryLocation (config, Ids::auBinaryLocation, getUndoManager(), "$(HOME)/Library/Audio/Plug-Ins/Components/"), rtasBinaryLocation (config, Ids::rtasBinaryLocation, getUndoManager(), "/Library/Application Support/Digidesign/Plug-Ins/"), aaxBinaryLocation (config, Ids::aaxBinaryLocation, getUndoManager(), "/Library/Application Support/Avid/Audio/Plug-Ins/"), - unityPluginBinaryLocation (config, Ids::unityPluginBinaryLocation, getUndoManager()) + unityPluginBinaryLocation (config, Ids::unityPluginBinaryLocation, getUndoManager()), + lv2BinaryLocation (config, Ids::lv2BinaryLocation, getUndoManager(), "$(HOME)/Library/Audio/Plug-Ins/LV2/") { updateOldPluginBinaryLocations(); updateOldSDKDefaults(); @@ -896,6 +901,7 @@ protected: String getRTASBinaryLocationString() const { return rtasBinaryLocation.get();} String getAAXBinaryLocationString() const { return aaxBinaryLocation.get();} String getUnityPluginBinaryLocationString() const { return unityPluginBinaryLocation.get(); } + String getLV2PluginBinaryLocationString() const { return lv2BinaryLocation.get(); } private: //============================================================================== @@ -905,7 +911,7 @@ protected: customXcodeFlags, plistPreprocessorDefinitions, codeSignIdentity, fastMathEnabled, stripLocalSymbolsEnabled, pluginBinaryCopyStepEnabled, vstBinaryLocation, vst3BinaryLocation, auBinaryLocation, rtasBinaryLocation, - aaxBinaryLocation, unityPluginBinaryLocation; + aaxBinaryLocation, unityPluginBinaryLocation, lv2BinaryLocation; //============================================================================== void valueTreePropertyChanged (ValueTree&, const Identifier& property) override @@ -957,6 +963,11 @@ protected: 1024, false), "The folder in which the compiled AAX binary should be placed."); + if (project.shouldBuildLV2()) + props.add (new TextPropertyComponentWithEnablement (lv2BinaryLocation, pluginBinaryCopyStepEnabled, "LV2 Binary Location", + 1024, false), + "The folder in which the compiled LV2 binary should be placed."); + if (project.shouldBuildUnityPlugin()) props.add (new TextPropertyComponentWithEnablement (unityPluginBinaryLocation, pluginBinaryCopyStepEnabled, "Unity Binary Location", 1024, false), @@ -1041,6 +1052,7 @@ public: break; case ConsoleApp: + case LV2TurtleProgram: xcodeFileType = "compiled.mach-o.executable"; xcodeBundleExtension = String(); xcodeProductType = "com.apple.product-type.tool"; @@ -1122,6 +1134,13 @@ public: xcodeCopyToProductInstallPathAfterBuild = true; break; + case LV2PlugIn: + xcodeFileType = "compiled.mach-o.executable"; + xcodeProductType = "com.apple.product-type.tool"; + xcodeBundleExtension = ".so"; + xcodeCopyToProductInstallPathAfterBuild = true; + break; + case SharedCodeTarget: xcodeFileType = "archive.ar"; xcodeBundleExtension = ".a"; @@ -1173,43 +1192,6 @@ public: String mainBuildProductID; File infoPlistFile; - struct SourceFileInfo - { - build_tools::RelativePath path; - bool shouldBeCompiled = false; - }; - - Array getSourceFilesInfo (const Project::Item& projectItem) const - { - Array result; - - auto targetType = (owner.getProject().isAudioPluginProject() ? type : SharedCodeTarget); - - if (projectItem.isGroup()) - { - for (int i = 0; i < projectItem.getNumChildren(); ++i) - result.addArray (getSourceFilesInfo (projectItem.getChild (i))); - } - else if (projectItem.shouldBeAddedToTargetProject() && projectItem.shouldBeAddedToTargetExporter (owner) - && owner.getProject().getTargetTypeFromFilePath (projectItem.getFile(), true) == targetType) - { - SourceFileInfo info; - - info.path = build_tools::RelativePath (projectItem.getFile(), - owner.getTargetFolder(), - build_tools::RelativePath::buildTargetFolder); - - jassert (info.path.getRoot() == build_tools::RelativePath::buildTargetFolder); - - if (targetType == SharedCodeTarget || projectItem.shouldBeCompiled()) - info.shouldBeCompiled = projectItem.shouldBeCompiled(); - - result.add (info); - } - - return result; - } - //============================================================================== void addMainBuildProduct() const { @@ -1218,12 +1200,18 @@ public: if (ProjectExporter::BuildConfiguration::Ptr config = owner.getConfiguration (0)) { - auto productName = owner.replacePreprocessorTokens (*config, config->getTargetBinaryNameString (type == UnityPlugIn)); + const auto productName = [&]() -> String + { + const auto binaryName = owner.replacePreprocessorTokens (*config, config->getTargetBinaryNameString (type == UnityPlugIn)); - if (xcodeFileType == "archive.ar") - productName = getStaticLibbedFilename (productName); - else - productName += xcodeBundleExtension; + if (xcodeFileType == "archive.ar") + return getStaticLibbedFilename (binaryName); + + if (type == LV2TurtleProgram) + return Project::getLV2FileWriterName(); + + return binaryName + xcodeBundleExtension; + }(); addBuildProduct (xcodeFileType, productName); } @@ -1274,6 +1262,18 @@ public: if (target->type != XcodeTarget::AggregateTarget) dependencyIDs.add (target->addDependencyFor (*this)); } + else if (type == XcodeTarget::LV2PlugIn) + { + if (auto* helperTarget = owner.getTargetOfType (XcodeTarget::LV2TurtleProgram)) + dependencyIDs.add (helperTarget->addDependencyFor (*this)); + + if (auto* sharedCodeTarget = owner.getTargetOfType (XcodeTarget::SharedCodeTarget)) + dependencyIDs.add (sharedCodeTarget->addDependencyFor (*this)); + } + else if (type == XcodeTarget::LV2TurtleProgram) + { + // No thanks + } else if (type != XcodeTarget::SharedCodeTarget) // shared code doesn't depend on anything; all other targets depend only on the shared code { if (auto* sharedCodeTarget = owner.getTargetOfType (XcodeTarget::SharedCodeTarget)) @@ -1429,6 +1429,27 @@ public: return mergePreprocessorDefs (defines, owner.getAllPreprocessorDefs (config, type)); } + String getConfigurationBuildDir (const XcodeBuildConfiguration& config) const + { + const String configurationBuildDir ("$(PROJECT_DIR)/build/$(CONFIGURATION)"); + + if (config.getTargetBinaryRelativePathString().isEmpty()) + return configurationBuildDir; + + // a target's position can either be defined via installPath + xcodeCopyToProductInstallPathAfterBuild + // (= for audio plug-ins) or using a custom binary path (for everything else), but not both (= conflict!) + jassert (! xcodeCopyToProductInstallPathAfterBuild); + + build_tools::RelativePath binaryPath (config.getTargetBinaryRelativePathString(), + build_tools::RelativePath::projectFolder); + + return expandPath (binaryPath.rebased (owner.projectFolder, + owner.getTargetFolder(), + build_tools::RelativePath::buildTargetFolder).toUnixStyle()); + } + + String getLV2BundleName() const { return owner.project.getPluginNameString() + ".lv2"; } + //============================================================================== StringPairArray getTargetSettings (const XcodeBuildConfiguration& config) const { @@ -1444,7 +1465,15 @@ public: return s; } - s.set ("PRODUCT_NAME", owner.replacePreprocessorTokens (config, config.getTargetBinaryNameString (type == UnityPlugIn)).quoted()); + const auto productName = [&] + { + if (type == LV2TurtleProgram) + return Project::getLV2FileWriterName().quoted(); + + return owner.replacePreprocessorTokens (config, config.getTargetBinaryNameString (type == UnityPlugIn)).quoted(); + }(); + + s.set ("PRODUCT_NAME", productName); s.set ("PRODUCT_BUNDLE_IDENTIFIER", getBundleIdentifier()); auto arch = (! owner.isiOS() && type == Target::AudioUnitv3PlugIn) ? macOSArch_64Bit @@ -1598,7 +1627,7 @@ public: { s.set ("INSTALL_PATH", installPath.quoted()); - if (type == Target::SharedCodeTarget) + if (type == Target::SharedCodeTarget || type == Target::LV2PlugIn) s.set ("SKIP_INSTALL", "YES"); if (! owner.embeddedFrameworkIDs.isEmpty()) @@ -1621,24 +1650,11 @@ public: if (xcodeOtherRezFlags.isNotEmpty()) s.set ("OTHER_REZFLAGS", "\"" + xcodeOtherRezFlags + "\""); - String configurationBuildDir ("$(PROJECT_DIR)/build/$(CONFIGURATION)"); + const auto configurationBuildDir = getConfigurationBuildDir (config); + const auto adjustedConfigBuildDir = type == LV2PlugIn ? configurationBuildDir + "/" + getLV2BundleName() + : configurationBuildDir; - if (config.getTargetBinaryRelativePathString().isNotEmpty()) - { - // a target's position can either be defined via installPath + xcodeCopyToProductInstallPathAfterBuild - // (= for audio plug-ins) or using a custom binary path (for everything else), but not both (= conflict!) - jassert (! xcodeCopyToProductInstallPathAfterBuild); - - build_tools::RelativePath binaryPath (config.getTargetBinaryRelativePathString(), - build_tools::RelativePath::projectFolder); - - configurationBuildDir = expandPath (binaryPath.rebased (owner.projectFolder, - owner.getTargetFolder(), - build_tools::RelativePath::buildTargetFolder) - .toUnixStyle()); - } - - s.set ("CONFIGURATION_BUILD_DIR", addQuotesIfRequired (configurationBuildDir)); + s.set ("CONFIGURATION_BUILD_DIR", addQuotesIfRequired (adjustedConfigBuildDir)); if (owner.isHardenedRuntimeEnabled()) s.set ("ENABLE_HARDENED_RUNTIME", "YES"); @@ -1703,6 +1719,10 @@ public: s.set ("OTHER_LDFLAGS", linkerFlags.joinIntoString (" ").quoted()); librarySearchPaths.addArray (config.getLibrarySearchPaths()); + + if (type == LV2PlugIn) + librarySearchPaths.add (configurationBuildDir); + librarySearchPaths = getCleanedStringArray (librarySearchPaths); if (librarySearchPaths.size() > 0) @@ -1777,8 +1797,10 @@ public: case RTASPlugIn: return config.isPluginBinaryCopyStepEnabled() ? config.getRTASBinaryLocationString() : String(); case AAXPlugIn: return config.isPluginBinaryCopyStepEnabled() ? config.getAAXBinaryLocationString() : String(); case UnityPlugIn: return config.isPluginBinaryCopyStepEnabled() ? config.getUnityPluginBinaryLocationString() : String(); + case LV2PlugIn: return config.isPluginBinaryCopyStepEnabled() ? config.getLV2PluginBinaryLocationString() : String(); case SharedCodeTarget: return owner.isiOS() ? "@executable_path/Frameworks" : "@executable_path/../Frameworks"; case StaticLibrary: + case LV2TurtleProgram: case DynamicLibrary: case AudioUnitv3PlugIn: case StandalonePlugIn: @@ -1794,7 +1816,7 @@ public: if (getTargetFileType() == pluginBundle) flags.add (owner.isiOS() ? "-bitcode_bundle" : "-bundle"); - if (type != Target::SharedCodeTarget) + if (type != Target::SharedCodeTarget && type != Target::LV2TurtleProgram) { Array extraLibs; @@ -2141,6 +2163,18 @@ private: target->addMainBuildProduct(); + if (target->type == XcodeTarget::LV2TurtleProgram + && project.getEnabledModules().isModuleEnabled ("juce_audio_plugin_client")) + { + const auto path = getLV2TurtleDumpProgramSource(); + addFile (FileOptions().withRelativePath ({ expandPath (path.toUnixStyle()), path.getRoot() }) + .withSkipPCHEnabled (true) + .withCompilationEnabled (true) + .withInhibitWarningsEnabled (true) + .withCompilerFlags ("-std=c++11") + .withXcodeTarget (target)); + } + auto targetName = String (target->getName()); auto fileID = createID (targetName + "__targetbuildref"); auto fileRefID = createID ("__productFileID" + targetName); @@ -2289,7 +2323,10 @@ private: { auto skipAUv3 = (target->type == XcodeTarget::AudioUnitv3PlugIn && ! shouldDuplicateAppExResourcesFolder()); - if (! projectType.isStaticLibrary() && target->type != XcodeTarget::SharedCodeTarget && ! skipAUv3) + if (! projectType.isStaticLibrary() + && target->type != XcodeTarget::SharedCodeTarget + && target->type != XcodeTarget::LV2TurtleProgram + && ! skipAUv3) target->addBuildPhase ("PBXResourcesBuildPhase", resourceIDs); auto rezFiles = rezFileIDs; @@ -2306,10 +2343,35 @@ private: target->addBuildPhase ("PBXSourcesBuildPhase", sourceFiles); - if (! projectType.isStaticLibrary() && target->type != XcodeTarget::SharedCodeTarget) + if (! projectType.isStaticLibrary() + && target->type != XcodeTarget::SharedCodeTarget + && target->type != XcodeTarget::LV2TurtleProgram) target->addBuildPhase ("PBXFrameworksBuildPhase", target->frameworkIDs); } + if (target->type == XcodeTarget::LV2PlugIn) + { + auto script = "set -e\n\"$CONFIGURATION_BUILD_DIR/../" + + Project::getLV2FileWriterName() + + "\" \"$CONFIGURATION_BUILD_DIR/$PRODUCT_NAME\"\n"; + + for (ConstConfigIterator config (*this); config.next();) + { + auto& xcodeConfig = dynamic_cast (*config); + const auto installPath = target->getInstallPathForConfiguration (xcodeConfig); + + if (installPath.isNotEmpty()) + { + script << "if [ \"$CONFIGURATION\" = \"" << config->getName() + << "\" ]; then\n /bin/ln -sfh \"$CONFIGURATION_BUILD_DIR\" \"" + << installPath.replace ("$(HOME)", "$HOME") << '/' << target->getLV2BundleName() + << "\"\nfi\n"; + } + } + + target->addShellScriptBuildPhase ("Generate manifest", script); + } + target->addShellScriptBuildPhase ("Post-build script", getPostBuildScript()); if (project.isAudioPluginProject() && project.shouldBuildAUv3() diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp index 166736950f..7c04d1f3e0 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp @@ -364,7 +364,7 @@ void ProjectExporter::addExtraIncludePathsIfPluginOrHost() const auto lv2BasePath = getModuleFolderRelativeToProject ("juce_audio_processors").getChildFile ("format_types") .getChildFile ("LV2_SDK"); - if (project.isLV2PluginHost()) + if ((shouldBuildTargetType (Target::LV2PlugIn) && project.shouldBuildLV2()) || project.isLV2PluginHost()) { const std::vector paths[] { { "" }, { "lv2" }, @@ -455,16 +455,16 @@ StringPairArray ProjectExporter::getAllPreprocessorDefs() const void ProjectExporter::addTargetSpecificPreprocessorDefs (StringPairArray& defs, const build_tools::ProjectType::Target::Type targetType) const { - std::pair targetFlags[] = { - {"JucePlugin_Build_VST", build_tools::ProjectType::Target::VSTPlugIn}, - {"JucePlugin_Build_VST3", build_tools::ProjectType::Target::VST3PlugIn}, - {"JucePlugin_Build_AU", build_tools::ProjectType::Target::AudioUnitPlugIn}, - {"JucePlugin_Build_AUv3", build_tools::ProjectType::Target::AudioUnitv3PlugIn}, - {"JucePlugin_Build_RTAS", build_tools::ProjectType::Target::RTASPlugIn}, - {"JucePlugin_Build_AAX", build_tools::ProjectType::Target::AAXPlugIn}, - {"JucePlugin_Build_Standalone", build_tools::ProjectType::Target::StandalonePlugIn}, - {"JucePlugin_Build_Unity", build_tools::ProjectType::Target::UnityPlugIn} - }; + using Target = build_tools::ProjectType::Target::Type; + const std::pair targetFlags[] { { "JucePlugin_Build_VST", Target::VSTPlugIn }, + { "JucePlugin_Build_VST3", Target::VST3PlugIn }, + { "JucePlugin_Build_AU", Target::AudioUnitPlugIn }, + { "JucePlugin_Build_AUv3", Target::AudioUnitv3PlugIn }, + { "JucePlugin_Build_RTAS", Target::RTASPlugIn }, + { "JucePlugin_Build_AAX", Target::AAXPlugIn }, + { "JucePlugin_Build_Standalone", Target::StandalonePlugIn }, + { "JucePlugin_Build_Unity", Target::UnityPlugIn }, + { "JucePlugin_Build_LV2", Target::LV2PlugIn } }; if (targetType == build_tools::ProjectType::Target::SharedCodeTarget) { diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.h index b837b3447b..e25b2b9360 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.h @@ -181,6 +181,13 @@ public: void createPropertyEditors (PropertyListBuilder&); void addSettingsForProjectType (const build_tools::ProjectType&); + build_tools::RelativePath getLV2TurtleDumpProgramSource() const + { + return getModuleFolderRelativeToProject ("juce_audio_plugin_client") + .getChildFile ("LV2") + .getChildFile ("juce_LV2TurtleDumpProgram.cpp"); + } + //============================================================================== void copyMainGroupFromProject(); Array& getAllGroups() noexcept { jassert (itemGroups.size() > 0); return itemGroups; } @@ -460,7 +467,6 @@ private: : name + suffix; } - void createDependencyPathProperties (PropertyListBuilder&); void createIconProperties (PropertyListBuilder&); void addExtraIncludePathsIfPluginOrHost(); void addCommonAudioPluginSettings(); diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectSaver.cpp b/extras/Projucer/Source/ProjectSaving/jucer_ProjectSaver.cpp index 883b8c9d03..6445fe627d 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectSaver.cpp +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectSaver.cpp @@ -74,6 +74,7 @@ Result ProjectSaver::saveResourcesOnly() void ProjectSaver::saveBasicProjectItems (const OwnedArray& modules, const String& appConfigUserContent) { + writeLV2DefinesFile(); writePluginDefines(); writeAppConfigFile (modules, appConfigUserContent); writeBinaryDataFiles(); @@ -495,6 +496,17 @@ void ProjectSaver::writeAppConfigFile (const OwnedArray& modules, }); } +void ProjectSaver::writeLV2DefinesFile() +{ + if (! project.shouldBuildLV2()) + return; + + writeOrRemoveGeneratedFile (Project::getJuceLV2DefinesFilename(), [&] (MemoryOutputStream& mem) + { + writeLV2Defines (mem); + }); +} + void ProjectSaver::writeAppHeader (MemoryOutputStream& out, const OwnedArray& modules) { writeAutoGenWarningComment (out); @@ -638,6 +650,21 @@ void ProjectSaver::writeBinaryDataFiles() } } +void ProjectSaver::writeLV2Defines (MemoryOutputStream& mem) +{ + String templateFile { BinaryData::JuceLV2Defines_h_in }; + + const auto isValidUri = [&] (const String& text) { return URL (text).isWellFormed(); }; + + if (! isValidUri (project.getLV2URI())) + { + addError ("LV2 URI is malformed."); + return; + } + + mem << templateFile.replace ("${JUCE_LV2URI}", project.getLV2URI()); +} + void ProjectSaver::writeReadmeFile() { MemoryOutputStream out; diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectSaver.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectSaver.h index a3f5ebb14c..258f222f8c 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectSaver.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectSaver.h @@ -96,6 +96,7 @@ private: void writePluginDefines (MemoryOutputStream& outStream) const; void writePluginDefines(); void writeAppConfigFile (const OwnedArray& modules, const String& userContent); + void writeLV2Defines (MemoryOutputStream&); void writeProjectFile(); void writeAppConfig (MemoryOutputStream& outStream, const OwnedArray& modules, const String& userContent); @@ -107,6 +108,7 @@ private: void writePluginCharacteristicsFile(); void writeUnityScriptFile(); void writeProjects (const OwnedArray&, ProjectExporter*); + void writeLV2DefinesFile(); void runPostExportScript(); void saveExporter (ProjectExporter& exporter, const OwnedArray& modules); diff --git a/extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h b/extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h index 98a50f510a..72c20af1ba 100644 --- a/extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h +++ b/extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h @@ -332,6 +332,7 @@ namespace Ids DECLARE_ID (buildAAX); DECLARE_ID (buildStandalone); DECLARE_ID (buildUnity); + DECLARE_ID (buildLV2); DECLARE_ID (enableIAA); DECLARE_ID (pluginName); DECLARE_ID (pluginDesc); @@ -376,6 +377,9 @@ namespace Ids DECLARE_ID (guiEditorEnabled); DECLARE_ID (jucerFormatVersion); DECLARE_ID (buildNumber); + DECLARE_ID (lv2Uri); + DECLARE_ID (lv2UriUi); + DECLARE_ID (lv2BinaryLocation); DECLARE_ID (osxSDK); DECLARE_ID (osxCompatibility); diff --git a/extras/UnitTestRunner/Builds/LinuxMakefile/Makefile b/extras/UnitTestRunner/Builds/LinuxMakefile/Makefile index 43b6a4a326..385e9a7470 100644 --- a/extras/UnitTestRunner/Builds/LinuxMakefile/Makefile +++ b/extras/UnitTestRunner/Builds/LinuxMakefile/Makefile @@ -40,7 +40,7 @@ ifeq ($(CONFIG),Debug) endif JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DDEBUG=1" "-D_DEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_analytics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_dsp=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_MODULE_AVAILABLE_juce_osc=1" "-DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1" "-DJUCE_MODULE_AVAILABLE_juce_video=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_PLUGINHOST_VST3=1" "-DJUCE_PLUGINHOST_LV2=1" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCE_UNIT_TESTS=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell $(PKG_CONFIG) --cflags alsa freetype2 libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 -I../../../../modules/juce_audio_processors/format_types/LV2_SDK -I../../../../modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) - JUCE_CPPFLAGS_CONSOLEAPP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" + JUCE_CPPFLAGS_CONSOLEAPP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" "-DJucePlugin_Build_LV2=0" JUCE_TARGET_CONSOLEAPP := UnitTestRunner JUCE_CFLAGS += $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0 $(CFLAGS) @@ -61,7 +61,7 @@ ifeq ($(CONFIG),Release) endif JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60106" "-DJUCE_MODULE_AVAILABLE_juce_analytics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_dsp=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_MODULE_AVAILABLE_juce_osc=1" "-DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1" "-DJUCE_MODULE_AVAILABLE_juce_video=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_PLUGINHOST_VST3=1" "-DJUCE_PLUGINHOST_LV2=1" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCE_UNIT_TESTS=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=1.0.0" "-DJUCE_APP_VERSION_HEX=0x10000" $(shell $(PKG_CONFIG) --cflags alsa freetype2 libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 -I../../../../modules/juce_audio_processors/format_types/LV2_SDK -I../../../../modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS) - JUCE_CPPFLAGS_CONSOLEAPP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" + JUCE_CPPFLAGS_CONSOLEAPP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" "-DJucePlugin_Build_LV2=0" JUCE_TARGET_CONSOLEAPP := UnitTestRunner JUCE_CFLAGS += $(JUCE_CPPFLAGS) $(TARGET_ARCH) -O3 $(CFLAGS) diff --git a/extras/UnitTestRunner/Builds/MacOSX/UnitTestRunner.xcodeproj/project.pbxproj b/extras/UnitTestRunner/Builds/MacOSX/UnitTestRunner.xcodeproj/project.pbxproj index a884a999ab..14759a8d3a 100644 --- a/extras/UnitTestRunner/Builds/MacOSX/UnitTestRunner.xcodeproj/project.pbxproj +++ b/extras/UnitTestRunner/Builds/MacOSX/UnitTestRunner.xcodeproj/project.pbxproj @@ -444,6 +444,7 @@ "JucePlugin_Build_AAX=0", "JucePlugin_Build_Standalone=0", "JucePlugin_Build_Unity=0", + "JucePlugin_Build_LV2=0", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( @@ -577,6 +578,7 @@ "JucePlugin_Build_AAX=0", "JucePlugin_Build_Standalone=0", "JucePlugin_Build_Unity=0", + "JucePlugin_Build_LV2=0", ); GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( diff --git a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj index 0d1578d457..8fc8f04991 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj +++ b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -107,7 +107,7 @@ Full ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDLL true NotUsing diff --git a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj index d906dc19ec..d054e2d9dd 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj +++ b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -107,7 +107,7 @@ Full ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDLL true NotUsing diff --git a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj index 0d639da42e..d08e471059 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj +++ b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;JUCE_UNIT_TESTS=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;JUCE_UNIT_TESTS=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -107,7 +107,7 @@ Full ..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;JUCE_UNIT_TESTS=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;_CONSOLE;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;JUCE_UNIT_TESTS=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions) MultiThreadedDLL true NotUsing diff --git a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj index 128633dc2a..c5f7a50ea2 100644 --- a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj +++ b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj @@ -64,7 +64,7 @@ Disabled ProgramDatabase ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DLL_BUILD=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;_LIB;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DLL_BUILD=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;_LIB;%(PreprocessorDefinitions) MultiThreadedDebugDLL true NotUsing @@ -105,7 +105,7 @@ Full ..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DLL_BUILD=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;_LIB;%(PreprocessorDefinitions) + _CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60106;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DLL_BUILD=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=1.0.0;JUCE_APP_VERSION_HEX=0x10000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;_LIB;%(PreprocessorDefinitions) MultiThreadedDLL true NotUsing diff --git a/modules/juce_audio_plugin_client/LV2/juce_LV2_Client.cpp b/modules/juce_audio_plugin_client/LV2/juce_LV2_Client.cpp new file mode 100644 index 0000000000..e9401a981e --- /dev/null +++ b/modules/juce_audio_plugin_client/LV2/juce_LV2_Client.cpp @@ -0,0 +1,1756 @@ +/* + ============================================================================== + + This file is part of the JUCE 7 technical preview. + Copyright (c) 2022 - Raw Material Software Limited + + You may use this code under the terms of the GPL v3 + (see www.gnu.org/licenses). + + For the technical preview this file cannot be licensed commercially. + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +#if JucePlugin_Build_LV2 + +#ifndef _SCL_SECURE_NO_WARNINGS + #define _SCL_SECURE_NO_WARNINGS +#endif + +#ifndef _CRT_SECURE_NO_WARNINGS + #define _CRT_SECURE_NO_WARNINGS +#endif + +#define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1 +#define JUCE_CORE_INCLUDE_OBJC_HELPERS 1 +#define JUCE_GUI_BASICS_INCLUDE_XHEADERS 1 + +#include +#include +#include + +#include +#include + +#include "JuceLV2Defines.h" +#include + +#include + +#define JUCE_TURTLE_RECALL_URI "https://lv2-extensions.juce.com/turtle_recall" + +#ifndef JucePlugin_LV2URI + #error "You need to define the JucePlugin_LV2URI value! If you're using the Projucer/CMake, the definition will be written into JuceLV2Defines.h automatically." +#endif + +namespace juce +{ +namespace lv2_client +{ + +constexpr auto uriSeparator = ":"; +const auto JucePluginLV2UriUi = String (JucePlugin_LV2URI) + uriSeparator + "UI"; +const auto JucePluginLV2UriState = String (JucePlugin_LV2URI) + uriSeparator + "StateString"; +const auto JucePluginLV2UriProgram = String (JucePlugin_LV2URI) + uriSeparator + "Program"; + +static const LV2_Feature* findMatchingFeature (const LV2_Feature* const* features, const char* uri) +{ + for (auto feature = features; *feature != nullptr; ++feature) + if (std::strcmp ((*feature)->URI, uri) == 0) + return *feature; + + return nullptr; +} + +static bool hasFeature (const LV2_Feature* const* features, const char* uri) +{ + return findMatchingFeature (features, uri) != nullptr; +} + +template +Data findMatchingFeatureData (const LV2_Feature* const* features, const char* uri) +{ + if (const auto* feature = findMatchingFeature (features, uri)) + return static_cast (feature->data); + + return {}; +} + +static const LV2_Options_Option* findMatchingOption (const LV2_Options_Option* options, LV2_URID urid) +{ + for (auto option = options; option->value != nullptr; ++option) + if (option->key == urid) + return option; + + return nullptr; +} + +class ParameterStorage : private AudioProcessorListener +{ +public: + ParameterStorage (AudioProcessor& proc, LV2_URID_Map map) + : processor (proc), + mapFeature (map), + legacyParameters (proc, false) + { + processor.addListener (this); + } + + ~ParameterStorage() override + { + processor.removeListener (this); + } + + static String getUri (const AudioProcessorParameter& param) + { + return LegacyAudioParameter::getParamID (¶m, false); + } + + void setValueFromHost (LV2_URID urid, float value) noexcept + { + const auto it = uridToIndexMap.find (urid); + + if (it == uridToIndexMap.end()) + { + // No such parameter. + jassertfalse; + return; + } + + if (auto* param = legacyParameters.getParamForIndex ((int) it->second)) + { + const auto scaledValue = [&] + { + if (auto* rangedParam = dynamic_cast (param)) + return rangedParam->convertTo0to1 (value); + + return value; + }(); + + if (scaledValue != param->getValue()) + { + ScopedValueSetter scope (ignoreCallbacks, true); + param->setValueNotifyingHost (scaledValue); + } + } + } + + struct Options + { + bool parameterValue, gestureBegin, gestureEnd; + }; + + static constexpr auto newClientValue = 1 << 0, + gestureBegan = 1 << 1, + gestureEnded = 1 << 2; + + template + void forEachChangedParameter (Callback&& callback) + { + stateCache.ifSet ([this, &callback] (size_t parameterIndex, float, uint32_t bits) + { + const Options options { (bits & newClientValue) != 0, + (bits & gestureBegan) != 0, + (bits & gestureEnded) != 0 }; + + callback (*legacyParameters.getParamForIndex ((int) parameterIndex), + indexToUridMap[parameterIndex], + options); + }); + } + +private: + void audioProcessorParameterChanged (AudioProcessor*, int parameterIndex, float value) override + { + if (! ignoreCallbacks) + stateCache.setValueAndBits ((size_t) parameterIndex, value, newClientValue); + } + + void audioProcessorParameterChangeGestureBegin (AudioProcessor*, int parameterIndex) override + { + if (! ignoreCallbacks) + stateCache.setBits ((size_t) parameterIndex, gestureBegan); + } + + void audioProcessorParameterChangeGestureEnd (AudioProcessor*, int parameterIndex) override + { + if (! ignoreCallbacks) + stateCache.setBits ((size_t) parameterIndex, gestureEnded); + } + + void audioProcessorChanged (AudioProcessor*, const ChangeDetails&) override {} + + AudioProcessor& processor; + const LV2_URID_Map mapFeature; + const LegacyAudioParametersWrapper legacyParameters; + const std::vector indexToUridMap = [&] + { + std::vector result; + + for (auto* param : legacyParameters) + { + jassert ((size_t) param->getParameterIndex() == result.size()); + + const auto uri = JucePlugin_LV2URI + String (uriSeparator) + getUri (*param); + const auto urid = mapFeature.map (mapFeature.handle, uri.toRawUTF8()); + result.push_back (urid); + } + + return result; + }(); + const std::map uridToIndexMap = [&] + { + std::map result; + size_t index = 0; + + for (const auto& urid : indexToUridMap) + result.emplace (urid, index++); + + return result; + }(); + FlaggedFloatCache<3> stateCache { (size_t) legacyParameters.getNumParameters() }; + bool ignoreCallbacks = false; + + JUCE_LEAK_DETECTOR (ParameterStorage) +}; + +enum class PortKind { seqInput, seqOutput, latencyOutput, freeWheelingInput, enabledInput }; + +struct PortIndices +{ + PortIndices (int numInputsIn, int numOutputsIn) + : numInputs (numInputsIn), numOutputs (numOutputsIn) {} + + int getPortIndexForAudioInput (int audioIndex) const noexcept + { + return audioIndex; + } + + int getPortIndexForAudioOutput (int audioIndex) const noexcept + { + return audioIndex + numInputs; + } + + int getPortIndexFor (PortKind p) const noexcept { return getMaxAudioPortIndex() + (int) p; } + + // Audio ports are numbered from 0 to numInputs + numOutputs + int getMaxAudioPortIndex() const noexcept { return numInputs + numOutputs; } + + int numInputs, numOutputs; +}; + +//============================================================================== +class PlayHead : public AudioPlayHead +{ +public: + PlayHead (LV2_URID_Map mapFeatureIn, double sampleRateIn) + : parser (mapFeatureIn), sampleRate (sampleRateIn) + { + info.frameRate = fpsUnknown; + info.isLooping = false; + info.isRecording = false; + info.ppqLoopEnd = 0; + info.ppqLoopStart = 0; + info.ppqPositionOfLastBarStart = 0; + } + + void invalidate() { valid = false; } + + void readNewInfo (const LV2_Atom_Event* event) + { + if (event->body.type != mLV2_ATOM__Object && event->body.type != mLV2_ATOM__Blank) + return; + + const auto* object = reinterpret_cast (&event->body); + + if (object->body.otype != mLV2_TIME__Position) + return; + + const LV2_Atom* atomFrame = nullptr; + const LV2_Atom* atomSpeed = nullptr; + const LV2_Atom* atomBeat = nullptr; + const LV2_Atom* atomBeatUnit = nullptr; + const LV2_Atom* atomBeatsPerBar = nullptr; + const LV2_Atom* atomBeatsPerMinute = nullptr; + + LV2_Atom_Object_Query query[] { { mLV2_TIME__frame, &atomFrame }, + { mLV2_TIME__speed, &atomSpeed }, + { mLV2_TIME__beat, &atomBeat }, + { mLV2_TIME__beatUnit, &atomBeatUnit }, + { mLV2_TIME__beatsPerBar, &atomBeatsPerBar }, + { mLV2_TIME__beatsPerMinute, &atomBeatsPerMinute }, + LV2_ATOM_OBJECT_QUERY_END }; + + lv2_atom_object_query (object, query); + + const auto setTimeInFrames = [&] (int64_t value) + { + info.timeInSamples = value; + info.timeInSeconds = (double) info.timeInSamples / sampleRate; + }; + + // Carla always seems to give us an integral 'beat' even though I'd expect + // it to be a floating-point value + + if ( parser.parseNumericAtom (atomBeatsPerMinute).andThen ([&] (float value) { info.bpm = value; }) + && parser.parseNumericAtom (atomBeatsPerBar) .andThen ([&] (float value) { info.timeSigNumerator = (int) value; }) + && parser.parseNumericAtom (atomBeatUnit) .andThen ([&] (int32_t value) { info.timeSigDenominator = value; }) + && parser.parseNumericAtom (atomBeat) .andThen ([&] (double value) { info.ppqPosition = value; }) + && parser.parseNumericAtom (atomSpeed) .andThen ([&] (float value) { info.isPlaying = value != 0.0f; }) + && parser.parseNumericAtom (atomFrame) .andThen (setTimeInFrames)) + { + valid = true; + } + } + + bool getCurrentPosition (CurrentPositionInfo& result) override + { + result = info; + return valid; + } + +private: + lv2_shared::NumericAtomParser parser; + CurrentPositionInfo info; + double sampleRate; + bool valid = false; + + #define X(str) const LV2_URID m##str = parser.map (str); + X (LV2_ATOM__Blank) + X (LV2_ATOM__Object) + X (LV2_TIME__Position) + X (LV2_TIME__beat) + X (LV2_TIME__beatUnit) + X (LV2_TIME__beatsPerBar) + X (LV2_TIME__beatsPerMinute) + X (LV2_TIME__frame) + X (LV2_TIME__speed) + #undef X + + JUCE_LEAK_DETECTOR (PlayHead) +}; + +//============================================================================== +class Ports +{ +public: + Ports (LV2_URID_Map map, int numInputsIn, int numOutputsIn) + : forge (map), + indices (numInputsIn, numOutputsIn), + mLV2_ATOM__Sequence (map.map (map.handle, LV2_ATOM__Sequence)) + { + audioBuffers.resize (static_cast (numInputsIn + numOutputsIn), nullptr); + } + + void connect (int port, void* data) + { + // The following is not UB _if_ data really points to an object with the expected type. + + if (port == indices.getPortIndexFor (PortKind::seqInput)) + { + inputData = static_cast (data); + } + else if (port == indices.getPortIndexFor (PortKind::seqOutput)) + { + outputData = static_cast (data); + } + else if (port == indices.getPortIndexFor (PortKind::latencyOutput)) + { + latency = static_cast (data); + } + else if (port == indices.getPortIndexFor (PortKind::freeWheelingInput)) + { + freeWheeling = static_cast (data); + } + else if (port == indices.getPortIndexFor (PortKind::enabledInput)) + { + enabled = static_cast (data); + } + else if (isPositiveAndBelow (port, indices.getMaxAudioPortIndex())) + { + audioBuffers[(size_t) port] = static_cast (data); + } + else + { + // This port was not declared! + jassertfalse; + } + } + + template + void forEachInputEvent (Callback&& callback) + { + if (inputData != nullptr && inputData->atom.type == mLV2_ATOM__Sequence) + for (const auto* event : lv2_shared::SequenceIterator { lv2_shared::SequenceWithSize { inputData } }) + callback (event); + } + + void prepareToWrite() + { + // Note: Carla seems to have a bug (verified with the eg-fifths plugin) where + // the output buffer size is incorrect on alternate calls. + forge.setBuffer (reinterpret_cast (outputData), outputData->atom.size); + } + + void writeLatency (int value) + { + if (latency != nullptr) + *latency = (float) value; + } + + const float* getBufferForAudioInput (int index) const noexcept + { + return audioBuffers[(size_t) indices.getPortIndexForAudioInput (index)]; + } + + float* getBufferForAudioOutput (int index) const noexcept + { + return audioBuffers[(size_t) indices.getPortIndexForAudioOutput (index)]; + } + + bool isFreeWheeling() const noexcept + { + if (freeWheeling != nullptr) + return *freeWheeling > 0.5f; + + return false; + } + + bool isEnabled() const noexcept + { + if (enabled != nullptr) + return *enabled > 0.5f; + + return true; + } + + lv2_shared::AtomForge forge; + PortIndices indices; + +private: + static constexpr auto numParamPorts = 3; + const LV2_Atom_Sequence* inputData = nullptr; + LV2_Atom_Sequence* outputData = nullptr; + float* latency = nullptr; + float* freeWheeling = nullptr; + float* enabled = nullptr; + std::vector audioBuffers; + const LV2_URID mLV2_ATOM__Sequence; + + JUCE_LEAK_DETECTOR (Ports) +}; + +class LV2PluginInstance : private AudioProcessorListener +{ +public: + LV2PluginInstance (double sampleRate, + int64_t maxBlockSize, + const char*, + LV2_URID_Map mapFeatureIn) + : mapFeature (mapFeatureIn), + playHead (mapFeature, sampleRate) + { + processor->addListener (this); + processor->setPlayHead (&playHead); + prepare (sampleRate, (int) maxBlockSize); + } + + void connect (uint32_t port, void* data) + { + ports.connect ((int) port, data); + } + + void activate() {} + + template + static void iterateAudioBuffer (AudioBuffer& ab, UnaryFunction fn) + { + float** sampleData = ab.getArrayOfWritePointers(); + + for (int c = ab.getNumChannels(); --c >= 0;) + for (int s = ab.getNumSamples(); --s >= 0;) + fn (sampleData[c][s]); + } + + static int countNaNs (AudioBuffer& ab) noexcept + { + int count = 0; + iterateAudioBuffer (ab, [&count] (float s) + { + if (std::isnan (s)) + ++count; + }); + + return count; + } + + void run (uint32_t numSteps) + { + midi.clear(); + playHead.invalidate(); + + ports.forEachInputEvent ([&] (const LV2_Atom_Event* event) + { + struct Callback + { + explicit Callback (LV2PluginInstance& s) : self (s) {} + + void setParameter (LV2_URID property, float value) const noexcept + { + self.parameters.setValueFromHost (property, value); + } + + // The host probably shouldn't send us 'touched' messages. + void gesture (LV2_URID, bool) const noexcept {} + + LV2PluginInstance& self; + }; + + patchSetHelper.processPatchSet (event, Callback { *this }); + + playHead.readNewInfo (event); + + if (event->body.type == mLV2_MIDI__MidiEvent) + midi.addEvent (event + 1, static_cast (event->body.size), static_cast (event->time.frames)); + }); + + processor->setNonRealtime (ports.isFreeWheeling()); + + for (auto i = 0, end = processor->getTotalNumInputChannels(); i < end; ++i) + audio.copyFrom (i, 0, ports.getBufferForAudioInput (i), (int) numSteps); + + jassert (countNaNs (audio) == 0); + + { + const ScopedLock lock { processor->getCallbackLock() }; + + if (processor->isSuspended()) + { + for (auto i = 0, end = processor->getTotalNumOutputChannels(); i < end; ++i) + { + const auto ptr = ports.getBufferForAudioOutput (i); + std::fill (ptr, ptr + numSteps, 0.0f); + } + } + else + { + const auto isEnabled = ports.isEnabled(); + + if (auto* param = processor->getBypassParameter()) + { + param->setValueNotifyingHost (isEnabled ? 0.0f : 1.0f); + processor->processBlock (audio, midi); + } + else if (isEnabled) + { + processor->processBlock (audio, midi); + } + else + { + processor->processBlockBypassed (audio, midi); + } + } + } + + for (auto i = 0, end = processor->getTotalNumOutputChannels(); i < end; ++i) + { + const auto src = audio.getReadPointer (i); + const auto dst = ports.getBufferForAudioOutput (i); + + if (dst != nullptr) + std::copy (src, src + numSteps, dst); + } + + ports.prepareToWrite(); + auto* forge = ports.forge.get(); + lv2_shared::SequenceFrame sequence { forge, (uint32_t) 0 }; + + parameters.forEachChangedParameter ([&] (const AudioProcessorParameter& param, + LV2_URID paramUrid, + const ParameterStorage::Options& options) + { + const auto sendTouched = [&] (bool state) + { + // TODO Implement begin/end change gesture support once it's supported by LV2 + ignoreUnused (state); + }; + + if (options.gestureBegin) + sendTouched (true); + + if (options.parameterValue) + { + lv2_atom_forge_frame_time (forge, 0); + + lv2_shared::ObjectFrame object { forge, (uint32_t) 0, patchSetHelper.mLV2_PATCH__Set }; + + lv2_atom_forge_key (forge, patchSetHelper.mLV2_PATCH__property); + lv2_atom_forge_urid (forge, paramUrid); + + lv2_atom_forge_key (forge, patchSetHelper.mLV2_PATCH__value); + lv2_atom_forge_float (forge, [&] + { + if (auto* rangedParam = dynamic_cast (¶m)) + return rangedParam->convertFrom0to1 (rangedParam->getValue()); + + return param.getValue(); + }()); + } + + if (options.gestureEnd) + sendTouched (false); + }); + + if (shouldSendStateChange.exchange (false)) + { + lv2_atom_forge_frame_time (forge, 0); + lv2_shared::ObjectFrame { forge, (uint32_t) 0, mLV2_STATE__StateChanged }; + } + + for (const auto meta : midi) + { + const auto bytes = static_cast (meta.numBytes); + lv2_atom_forge_frame_time (forge, meta.samplePosition); + lv2_atom_forge_atom (forge, bytes, mLV2_MIDI__MidiEvent); + lv2_atom_forge_write (forge, meta.data, bytes); + } + + ports.writeLatency (processor->getLatencySamples()); + } + + void deactivate() {} + + LV2_State_Status store (LV2_State_Store_Function storeFn, + LV2_State_Handle handle, + uint32_t, + const LV2_Feature* const*) + { + MemoryBlock block; + processor->getStateInformation (block); + const auto text = block.toBase64Encoding(); + storeFn (handle, + mJucePluginLV2UriState, + text.toRawUTF8(), + text.getNumBytesAsUTF8() + 1, + mLV2_ATOM__String, + LV2_STATE_IS_POD | LV2_STATE_IS_PORTABLE); + + return LV2_STATE_SUCCESS; + } + + LV2_State_Status retrieve (LV2_State_Retrieve_Function retrieveFn, + LV2_State_Handle handle, + uint32_t, + const LV2_Feature* const*) + { + size_t size = 0; + uint32_t type = 0; + uint32_t dataFlags = 0; + + // Try retrieving a port index (if this is a 'program' preset). + const auto* programData = retrieveFn (handle, mJucePluginLV2UriProgram, &size, &type, &dataFlags); + + if (programData != nullptr && type == mLV2_ATOM__Int && size == sizeof (int32_t)) + { + const auto programIndex = readUnaligned (programData); + processor->setCurrentProgram (programIndex); + return LV2_STATE_SUCCESS; + } + + // This doesn't seem to be a 'program' preset, try setting the full state from a string instead. + const auto* data = retrieveFn (handle, mJucePluginLV2UriState, &size, &type, &dataFlags); + + if (data == nullptr) + return LV2_STATE_ERR_NO_PROPERTY; + + if (type != mLV2_ATOM__String) + return LV2_STATE_ERR_BAD_TYPE; + + String text (static_cast (data), (size_t) size); + MemoryBlock block; + block.fromBase64Encoding (text); + processor->setStateInformation (block.getData(), (int) block.getSize()); + + return LV2_STATE_SUCCESS; + } + + std::unique_ptr createEditor() + { + return std::unique_ptr (processor->createEditorIfNeeded()); + } + + void editorBeingDeleted (AudioProcessorEditor* editor) + { + processor->editorBeingDeleted (editor); + } + + static std::unique_ptr createProcessorInstance() + { + std::unique_ptr result { createPluginFilterOfType (AudioProcessor::wrapperType_LV2) }; + + #if defined (JucePlugin_PreferredChannelConfigurations) + constexpr short channelConfigurations[][2] { JucePlugin_PreferredChannelConfigurations }; + + static_assert (numElementsInArray (channelConfigurations) > 0, + "JucePlugin_PreferredChannelConfigurations must contain at least one entry"); + static_assert (channelConfigurations[0][0] > 0 || channelConfigurations[0][1] > 0, + "JucePlugin_PreferredChannelConfigurations must have at least one input or output channel"); + result->setPlayConfigDetails (channelConfigurations[0][0], channelConfigurations[0][1], 44100.0, 1024); + + const auto desiredChannels = std::make_tuple (channelConfigurations[0][0], channelConfigurations[0][1]); + const auto actualChannels = std::make_tuple (result->getTotalNumInputChannels(), result->getTotalNumOutputChannels()); + + if (desiredChannels != actualChannels) + Logger::outputDebugString ("Failed to apply requested channel configuration!"); + #else + result->enableAllBuses(); + #endif + + return result; + } + +private: + void audioProcessorParameterChanged (AudioProcessor*, int, float) override {} + + void audioProcessorChanged (AudioProcessor*, const ChangeDetails& details) override + { + // Only check for non-parameter state here because: + // - Latency is automatically written every block. + // - There's no way for an LV2 plugin to report an internal program change. + // - Parameter info is hard-coded in the plugin's turtle description. + if (details.nonParameterStateChanged) + shouldSendStateChange = true; + } + + void prepare (double sampleRate, int maxBlockSize) + { + jassert (processor != nullptr); + processor->setRateAndBufferSizeDetails (sampleRate, maxBlockSize); + processor->prepareToPlay (sampleRate, maxBlockSize); + + const auto numChannels = jmax (processor->getTotalNumInputChannels(), + processor->getTotalNumOutputChannels()); + + midi.ensureSize (8192); + audio.setSize (numChannels, maxBlockSize); + audio.clear(); + } + + LV2_URID map (StringRef uri) const { return mapFeature.map (mapFeature.handle, uri); } + + ScopedJuceInitialiser_GUI scopedJuceInitialiser; + + #if JUCE_LINUX || JUCE_BSD + SharedResourcePointer messageThread; + #endif + + std::unique_ptr processor = createProcessorInstance(); + const LV2_URID_Map mapFeature; + ParameterStorage parameters { *processor, mapFeature }; + Ports ports { mapFeature, + processor->getTotalNumInputChannels(), + processor->getTotalNumOutputChannels() }; + lv2_shared::PatchSetHelper patchSetHelper { mapFeature, JucePlugin_LV2URI }; + PlayHead playHead; + MidiBuffer midi; + AudioBuffer audio; + std::atomic shouldSendStateChange { false }; + + #define X(str) const LV2_URID m##str = map (str); + X (JucePluginLV2UriProgram) + X (JucePluginLV2UriState) + X (LV2_ATOM__Int) + X (LV2_ATOM__String) + X (LV2_BUF_SIZE__maxBlockLength) + X (LV2_BUF_SIZE__sequenceSize) + X (LV2_MIDI__MidiEvent) + X (LV2_PATCH__Set) + X (LV2_STATE__StateChanged) + #undef X + + JUCE_LEAK_DETECTOR (LV2PluginInstance) +}; + +//============================================================================== +struct RecallFeature +{ + int (*doRecall) (const char*) = [] (const char* libraryPath) -> int + { + const ScopedJuceInitialiser_GUI scope; + const auto processor = LV2PluginInstance::createProcessorInstance(); + const File absolutePath { CharPointer_UTF8 { libraryPath } }; + + processor->enableAllBuses(); + + for (auto* fn : { writeManifestTtl, writeDspTtl, writeUiTtl }) + { + const auto result = fn (*processor, absolutePath); + + if (result.wasOk()) + continue; + + std::cerr << result.getErrorMessage() << '\n'; + return 1; + } + + return 0; + }; + +private: + static String getPresetUri (int index) + { + return JucePlugin_LV2URI + String (uriSeparator) + "preset" + String (index + 1); + } + + static std::ofstream openStream (const File& libraryPath, StringRef name) + { + return std::ofstream { libraryPath.getSiblingFile (name + ".ttl").getFullPathName().toRawUTF8() }; + } + + static Result writeManifestTtl (AudioProcessor& proc, const File& libraryPath) + { + auto os = openStream (libraryPath, "manifest"); + + os << "@prefix lv2: .\n" + "@prefix rdfs: .\n" + "@prefix pset: .\n" + "@prefix state: .\n" + "@prefix ui: .\n" + "@prefix xsd: .\n" + "\n" + "<" JucePlugin_LV2URI ">\n" + "\ta lv2:Plugin ;\n" + "\tlv2:binary <" << libraryPath.getFileName() << "> ;\n" + "\trdfs:seeAlso .\n"; + + if (proc.hasEditor()) + { + #if JUCE_MAC + #define JUCE_LV2_UI_KIND "CocoaUI" + #elif JUCE_WINDOWS + #define JUCE_LV2_UI_KIND "WindowsUI" + #elif JUCE_LINUX + #define JUCE_LV2_UI_KIND "X11UI" + #else + #error "LV2 UI is unsupported on this platform" + #endif + + os << "\n" + "<" << JucePluginLV2UriUi << ">\n" + "\ta ui:" JUCE_LV2_UI_KIND " ;\n" + "\tlv2:binary <" << libraryPath.getFileName() << "> ;\n" + "\trdfs:seeAlso .\n" + "\n"; + } + + for (auto i = 0, end = proc.getNumPrograms(); i < end; ++i) + { + os << "<" << getPresetUri (i) << ">\n" + "\ta pset:Preset ;\n" + "\tlv2:appliesTo <" JucePlugin_LV2URI "> ;\n" + "\trdfs:label \"" << proc.getProgramName (i) << "\" ;\n" + "\tstate:state [ <" << JucePluginLV2UriProgram << "> \"" << i << "\"^^xsd:int ; ] .\n" + "\n"; + } + + return Result::ok(); + } + + static std::vector findAllSubgroupsDepthFirst (const AudioProcessorParameterGroup& group, + std::vector foundSoFar = {}) + { + foundSoFar.push_back (&group); + + for (auto* node : group) + { + if (auto* subgroup = node->getGroup()) + foundSoFar = findAllSubgroupsDepthFirst (*subgroup, std::move (foundSoFar)); + } + + return foundSoFar; + } + + using GroupSymbolMap = std::map; + + static String getFlattenedGroupSymbol (const AudioProcessorParameterGroup& group, String symbol = "") + { + if (auto* parent = group.getParent()) + return getFlattenedGroupSymbol (*parent, group.getID() + (symbol.isEmpty() ? "" : group.getSeparator() + symbol)); + + return symbol; + } + + static String getSymbolForGroup (const AudioProcessorParameterGroup& group) + { + const String allowedCharacters ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789"); + const auto base = getFlattenedGroupSymbol (group); + + if (base.isEmpty()) + return {}; + + String copy; + + for (const auto character : base) + copy << String::charToString (allowedCharacters.containsChar (character) ? character : (juce_wchar) '_'); + + return "paramgroup_" + copy; + } + + static GroupSymbolMap getGroupsAndSymbols (const std::vector& groups) + { + std::set symbols; + GroupSymbolMap result; + + for (const auto& group : groups) + { + const auto symbol = [&] + { + const auto idealSymbol = getSymbolForGroup (*group); + + if (symbols.find (idealSymbol) == symbols.cend()) + return idealSymbol; + + for (auto i = 2; i < std::numeric_limits::max(); ++i) + { + const auto toTest = idealSymbol + "_" + String (i); + + if (symbols.find (toTest) == symbols.cend()) + return toTest; + } + + jassertfalse; + return String(); + }(); + + symbols.insert (symbol); + result.emplace (group, symbol); + } + + return result; + } + + template + static void visitAllParameters (const GroupSymbolMap& groups, Fn&& fn) + { + for (const auto& group : groups) + for (const auto* node : *group.first) + if (auto* param = node->getParameter()) + fn (group.second, *param); + } + + static Result writeDspTtl (AudioProcessor& proc, const File& libraryPath) + { + auto os = openStream (libraryPath, "dsp"); + + os << "@prefix atom: .\n" + "@prefix bufs: .\n" + "@prefix doap: .\n" + "@prefix foaf: .\n" + "@prefix lv2: .\n" + "@prefix midi: .\n" + "@prefix opts: .\n" + "@prefix param: .\n" + "@prefix patch: .\n" + "@prefix pg: .\n" + "@prefix plug: <" JucePlugin_LV2URI << uriSeparator << "> .\n" + "@prefix pprop: .\n" + "@prefix rdfs: .\n" + "@prefix rdf: .\n" + "@prefix state: .\n" + "@prefix time: .\n" + "@prefix ui: .\n" + "@prefix units: .\n" + "@prefix urid: .\n" + "@prefix xsd: .\n" + "\n"; + + LegacyAudioParametersWrapper legacyParameters (proc, false); + + const auto allGroups = findAllSubgroupsDepthFirst (legacyParameters.getGroup()); + const auto groupsAndSymbols = getGroupsAndSymbols (allGroups); + + const auto parameterVisitor = [&] (const String& symbol, + const AudioProcessorParameter& param) + { + os << "plug:" << ParameterStorage::getUri (param) << "\n" + "\ta lv2:Parameter ;\n" + "\trdfs:label \"" << param.getName (1024) << "\" ;\n"; + + if (symbol.isNotEmpty()) + os << "\tpg:group plug:" << symbol << " ;\n"; + + os << "\trdfs:range atom:Float ;\n"; + + if (auto* rangedParam = dynamic_cast (¶m)) + { + os << "\tlv2:default " << rangedParam->convertFrom0to1 (rangedParam->getDefaultValue()) << " ;\n" + "\tlv2:minimum " << rangedParam->getNormalisableRange().start << " ;\n" + "\tlv2:maximum " << rangedParam->getNormalisableRange().end; + } + else + { + os << "\tlv2:default " << param.getDefaultValue() << " ;\n" + "\tlv2:minimum 0.0 ;\n" + "\tlv2:maximum 1.0"; + } + + // Avoid writing out loads of scale points for parameters with lots of steps + constexpr auto stepLimit = 1000; + const auto numSteps = param.getNumSteps(); + + if (param.isDiscrete() && 2 <= numSteps && numSteps < stepLimit) + { + os << "\t ;\n" + "\tlv2:portProperty lv2:enumeration " << (param.isBoolean() ? ", lv2:toggled " : "") << ";\n" + "\tlv2:scalePoint "; + + const auto maxIndex = numSteps - 1; + + for (int i = 0; i < numSteps; ++i) + { + const auto value = (float) i / (float) maxIndex; + const auto text = param.getText (value, 1024); + + os << (i != 0 ? ", " : "") << "[\n" + "\t\trdfs:label \"" << text << "\" ;\n" + "\t\trdf:value " << value << " ;\n" + "\t]"; + } + } + + os << " .\n\n"; + }; + + visitAllParameters (groupsAndSymbols, parameterVisitor); + + for (const auto& groupInfo : groupsAndSymbols) + { + if (groupInfo.second.isEmpty()) + continue; + + os << "plug:" << groupInfo.second << "\n" + "\ta pg:Group ;\n"; + + if (auto* parent = groupInfo.first->getParent()) + { + if (parent->getParent() != nullptr) + { + const auto it = groupsAndSymbols.find (parent); + + if (it != groupsAndSymbols.cend()) + os << "\tpg:subGroupOf plug:" << it->second << " ;\n"; + } + } + + os << "\tlv2:symbol \"" << groupInfo.second << "\" ;\n" + "\tlv2:name \"" << groupInfo.first->getName() << "\" .\n\n"; + } + + const auto getBaseBusName = [] (bool isInput) { return isInput ? "input_group_" : "output_group_"; }; + + for (const auto isInput : { true, false }) + { + const auto baseBusName = getBaseBusName (isInput); + const auto groupKind = isInput ? "InputGroup" : "OutputGroup"; + const auto busCount = proc.getBusCount (isInput); + + for (auto i = 0; i < busCount; ++i) + { + if (const auto* bus = proc.getBus (isInput, i)) + { + os << "plug:" << baseBusName << (i + 1) << "\n" + "\ta pg:" << groupKind << " ;\n" + "\tlv2:name \"" << bus->getName() << "\" ;\n" + "\tlv2:symbol \"" << baseBusName << (i + 1) << "\" .\n\n"; + } + } + } + + os << "<" JucePlugin_LV2URI ">\n"; + + if (proc.hasEditor()) + os << "\tui:ui <" << JucePluginLV2UriUi << "> ;\n"; + + const auto versionParts = StringArray::fromTokens (JucePlugin_VersionString, ".", ""); + + const auto getVersionOrZero = [&] (int indexFromBack) + { + const auto str = versionParts[versionParts.size() - indexFromBack]; + return str.isEmpty() ? 0 : str.getIntValue(); + }; + + const auto minorVersion = getVersionOrZero (2); + const auto microVersion = getVersionOrZero (1); + + os << "\ta " + #if JucePlugin_IsSynth + "lv2:InstrumentPlugin" + #else + "lv2:Plugin" + #endif + " ;\n" + "\tdoap:name \"" JucePlugin_Name "\" ;\n" + "\tdoap:description \"" JucePlugin_Desc "\" ;\n" + "\tlv2:minorVersion " << minorVersion << " ;\n" + "\tlv2:microVersion " << microVersion << " ;\n" + "\tdoap:maintainer [\n" + "\t\ta foaf:Person ;\n" + "\t\tfoaf:name \"" JucePlugin_Manufacturer "\" ;\n" + "\t\tfoaf:homepage <" JucePlugin_ManufacturerWebsite "> ;\n" + "\t\tfoaf:mbox <" JucePlugin_ManufacturerEmail "> ;\n" + "\t] ;\n" + "\tdoap:release [\n" + "\t\ta doap:Version ;\n" + "\t\tdoap:revision \"" JucePlugin_VersionString "\" ;\n" + "\t] ;\n" + "\tlv2:optionalFeature\n" + "\t\tlv2:hardRTCapable ;\n" + "\tlv2:extensionData\n" + "\t\t<" JUCE_TURTLE_RECALL_URI "> ,\n" + "\t\tstate:interface ;\n" + "\tlv2:requiredFeature\n" + "\t\turid:map ,\n" + "\t\topts:options ,\n" + "\t\tbufs:boundedBlockLength ;\n"; + + for (const auto isInput : { true, false }) + { + const auto kind = isInput ? "mainInput" : "mainOutput"; + + if (proc.getBusCount (isInput) > 0) + os << "\tpg:" << kind << " plug:" << getBaseBusName (isInput) << "1 ;\n"; + } + + if (legacyParameters.size() != 0) + { + for (const auto header : { "writable", "readable" }) + { + os << "\tpatch:" << header; + + bool isFirst = true; + + for (const auto* param : legacyParameters) + { + os << (isFirst ? "" : " ,") << "\n\t\tplug:" << ParameterStorage::getUri (*param); + isFirst = false; + } + + os << " ;\n"; + } + } + + os << "\tlv2:port [\n"; + + const PortIndices indices (proc.getTotalNumInputChannels(), + proc.getTotalNumOutputChannels()); + + const auto designationMap = [&] + { + std::map result; + + for (const auto& pair : lv2_shared::channelDesignationMap) + result.emplace (pair.second, pair.first); + + return result; + }(); + + // TODO add support for specific audio group kinds + for (const auto isInput : { true, false }) + { + const auto baseBusName = getBaseBusName (isInput); + const auto portKind = isInput ? "InputPort" : "OutputPort"; + const auto portName = isInput ? "Audio In " : "Audio Out "; + const auto portSymbol = isInput ? "audio_in_" : "audio_out_"; + const auto busCount = proc.getBusCount (isInput); + + auto channelCounter = 0; + + for (auto busIndex = 0; busIndex < busCount; ++busIndex) + { + if (const auto* bus = proc.getBus (isInput, busIndex)) + { + const auto channelCount = bus->getNumberOfChannels(); + const auto optionalBus = ! bus->isEnabledByDefault(); + + for (auto channelIndex = 0; channelIndex < channelCount; ++channelIndex, ++channelCounter) + { + const auto portIndex = isInput ? indices.getPortIndexForAudioInput (channelCounter) + : indices.getPortIndexForAudioOutput (channelCounter); + + os << "\t\ta lv2:" << portKind << " , lv2:AudioPort ;\n" + "\t\tlv2:index " << portIndex << " ;\n" + "\t\tlv2:symbol \"" << portSymbol << (channelCounter + 1) << "\" ;\n" + "\t\tlv2:name \"" << portName << (channelCounter + 1) << "\" ;\n" + "\t\tpg:group plug:" << baseBusName << (busIndex + 1) << " ;\n"; + + if (optionalBus) + os << "\t\tlv2:portProperty lv2:connectionOptional ;\n"; + + const auto designation = bus->getCurrentLayout().getTypeOfChannel (channelIndex); + const auto it = designationMap.find (designation); + + if (it != designationMap.end()) + os << "\t\tlv2:designation <" << it->second << "> ;\n"; + + os << "\t] , [\n"; + } + } + } + } + + os << "\t\ta lv2:InputPort , atom:AtomPort ;\n" + "\t\tatom:bufferType atom:Sequence ;\n" + "\t\tatom:supports\n"; + + #if ! JucePlugin_IsSynth && ! JucePlugin_IsMidiEffect + if (proc.acceptsMidi()) + #endif + os << "\t\t\tmidi:MidiEvent ,\n"; + + os << "\t\t\tpatch:Message ,\n" + "\t\t\ttime:Position ;\n" + "\t\tlv2:designation lv2:control ;\n" + "\t\tlv2:index " << indices.getPortIndexFor (PortKind::seqInput) << " ;\n" + "\t\tlv2:symbol \"in\" ;\n" + "\t\tlv2:name \"In\" ;\n" + "\t] , [\n" + "\t\ta lv2:OutputPort , atom:AtomPort ;\n" + "\t\tatom:bufferType atom:Sequence ;\n" + "\t\tatom:supports\n"; + + #if ! JucePlugin_IsMidiEffect + if (proc.producesMidi()) + #endif + os << "\t\t\tmidi:MidiEvent ,\n"; + + os << "\t\t\tpatch:Message ;\n" + "\t\tlv2:designation lv2:control ;\n" + "\t\tlv2:index " << indices.getPortIndexFor (PortKind::seqOutput) << " ;\n" + "\t\tlv2:symbol \"out\" ;\n" + "\t\tlv2:name \"Out\" ;\n" + "\t] , [\n" + "\t\ta lv2:OutputPort , lv2:ControlPort ;\n" + "\t\tlv2:designation lv2:latency ;\n" + "\t\tlv2:symbol \"latency\" ;\n" + "\t\tlv2:name \"Latency\" ;\n" + "\t\tlv2:index " << indices.getPortIndexFor (PortKind::latencyOutput) << " ;\n" + "\t\tlv2:portProperty lv2:reportsLatency , lv2:integer , lv2:connectionOptional , pprop:notOnGUI ;\n" + "\t\tunits:unit units:frame ;\n" + "\t] , [\n" + "\t\ta lv2:InputPort , lv2:ControlPort ;\n" + "\t\tlv2:designation lv2:freeWheeling ;\n" + "\t\tlv2:symbol \"freeWheeling\" ;\n" + "\t\tlv2:name \"Free Wheeling\" ;\n" + "\t\tlv2:default 0.0 ;\n" + "\t\tlv2:minimum 0.0 ;\n" + "\t\tlv2:maximum 1.0 ;\n" + "\t\tlv2:index " << indices.getPortIndexFor (PortKind::freeWheelingInput) << " ;\n" + "\t\tlv2:portProperty lv2:toggled , lv2:connectionOptional , pprop:notOnGUI ;\n" + "\t] , [\n" + "\t\ta lv2:InputPort , lv2:ControlPort ;\n" + "\t\tlv2:designation lv2:enabled ;\n" + "\t\tlv2:symbol \"enabled\" ;\n" + "\t\tlv2:name \"Enabled\" ;\n" + "\t\tlv2:default 1.0 ;\n" + "\t\tlv2:minimum 0.0 ;\n" + "\t\tlv2:maximum 1.0 ;\n" + "\t\tlv2:index " << indices.getPortIndexFor (PortKind::enabledInput) << " ;\n" + "\t\tlv2:portProperty lv2:toggled , lv2:connectionOptional , pprop:notOnGUI ;\n" + "\t] ;\n" + "\topts:supportedOption\n" + "\t\tbufs:maxBlockLength .\n"; + + return Result::ok(); + } + + static Result writeUiTtl (AudioProcessor& proc, const File& libraryPath) + { + if (! proc.hasEditor()) + return Result::ok(); + + auto os = openStream (libraryPath, "ui"); + + const auto editorInstance = rawToUniquePtr (proc.createEditor()); + const auto resizeFeatureString = editorInstance->isResizable() ? "ui:resize" : "ui:noUserResize"; + + os << "@prefix lv2: .\n" + "@prefix opts: .\n" + "@prefix param: .\n" + "@prefix ui: .\n" + "@prefix urid: .\n" + "\n" + "<" << JucePluginLV2UriUi << ">\n" + "\tlv2:extensionData\n" + #if JUCE_LINUX || JUCE_BSD + "\t\tui:idleInterface ,\n" + #endif + "\t\topts:interface ,\n" + "\t\t" << resizeFeatureString << " ;\n" + "\n" + "\tlv2:requiredFeature\n" + #if JUCE_LINUX || JUCE_BSD + "\t\tui:idleInterface ,\n" + #endif + "\t\turid:map ,\n" + "\t\tui:parent ,\n" + "\t\t ;\n" + "\n" + "\tlv2:optionalFeature\n" + "\t\t" << resizeFeatureString << " ,\n" + "\t\topts:interface ,\n" + "\t\topts:options .\n\n" + "\topts:supportedOption\n" + "\t\tui:scaleFactor ,\n" + "\t\tparam:sampleRate .\n"; + + return Result::ok(); + } + + JUCE_LEAK_DETECTOR (RecallFeature) +}; + +//============================================================================== +LV2_SYMBOL_EXPORT const LV2_Descriptor* lv2_descriptor (uint32_t index) +{ + PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_LV2; + + if (index != 0) + return nullptr; + + static const LV2_Descriptor descriptor + { + JucePlugin_LV2URI, // TODO some constexpr check that this is a valid URI in terms of RFC 3986 + [] (const LV2_Descriptor*, + double sampleRate, + const char* pathToBundle, + const LV2_Feature* const* features) -> LV2_Handle + { + const auto* mapFeature = findMatchingFeatureData (features, LV2_URID__map); + + if (mapFeature == nullptr) + { + // The host doesn't provide the 'urid map' feature + jassertfalse; + return nullptr; + } + + const auto boundedBlockLength = hasFeature (features, LV2_BUF_SIZE__boundedBlockLength); + + if (! boundedBlockLength) + { + // The host doesn't provide the 'bounded block length' feature + jassertfalse; + return nullptr; + } + + const auto* options = findMatchingFeatureData (features, LV2_OPTIONS__options); + + if (options == nullptr) + { + // The host doesn't provide the 'options' feature + jassertfalse; + return nullptr; + } + + const lv2_shared::NumericAtomParser parser { *mapFeature }; + const auto blockLengthUrid = mapFeature->map (mapFeature->handle, LV2_BUF_SIZE__maxBlockLength); + const auto blockSize = parser.parseNumericOption (findMatchingOption (options, blockLengthUrid)); + + if (! blockSize.successful) + { + // The host doesn't specify a maximum block size + jassertfalse; + return nullptr; + } + + return new LV2PluginInstance { sampleRate, blockSize.value, pathToBundle, *mapFeature }; + }, + [] (LV2_Handle instance, uint32_t port, void* data) + { + static_cast (instance)->connect (port, data); + }, + [] (LV2_Handle instance) { static_cast (instance)->activate(); }, + [] (LV2_Handle instance, uint32_t sampleCount) + { + static_cast (instance)->run (sampleCount); + }, + [] (LV2_Handle instance) { static_cast (instance)->deactivate(); }, + [] (LV2_Handle instance) + { + JUCE_AUTORELEASEPOOL + { + delete static_cast (instance); + } + }, + [] (const char* uri) -> const void* + { + const auto uriMatches = [&] (const LV2_Feature& f) { return std::strcmp (f.URI, uri) == 0; }; + + static RecallFeature recallFeature; + + static LV2_State_Interface stateInterface + { + [] (LV2_Handle instance, + LV2_State_Store_Function store, + LV2_State_Handle handle, + uint32_t flags, + const LV2_Feature* const* features) -> LV2_State_Status + { + return static_cast (instance)->store (store, handle, flags, features); + }, + [] (LV2_Handle instance, + LV2_State_Retrieve_Function retrieve, + LV2_State_Handle handle, + uint32_t flags, + const LV2_Feature* const* features) -> LV2_State_Status + { + return static_cast (instance)->retrieve (retrieve, handle, flags, features); + } + }; + + static const LV2_Feature features[] { { JUCE_TURTLE_RECALL_URI, &recallFeature }, + { LV2_STATE__interface, &stateInterface } }; + + const auto it = std::find_if (std::begin (features), std::end (features), uriMatches); + return it != std::end (features) ? it->data : nullptr; + } + }; + + return &descriptor; +} + +static lv2_shared::NumericAtomParser::ParseResult findScaleFactor (const LV2_URID_Map* symap, + const LV2_Options_Option* options) +{ + if (options == nullptr || symap == nullptr) + return {}; + + const lv2_shared::NumericAtomParser parser { *symap }; + const auto scaleFactorUrid = symap->map (symap->handle, LV2_UI__scaleFactor); + const auto* scaleFactorOption = findMatchingOption (options, scaleFactorUrid); + return parser.parseNumericOption (scaleFactorOption); +} + +class LV2UIInstance : private Component, + private ComponentListener +{ +public: + LV2UIInstance (const char*, + const char*, + LV2UI_Write_Function writeFunctionIn, + LV2UI_Controller controllerIn, + LV2UI_Widget* widget, + LV2PluginInstance* pluginIn, + LV2UI_Widget parentIn, + const LV2_URID_Map* symapIn, + const LV2UI_Resize* resizeFeatureIn, + lv2_shared::NumericAtomParser::ParseResult scaleFactorIn) + : writeFunction (writeFunctionIn), + controller (controllerIn), + plugin (pluginIn), + parent (parentIn), + symap (symapIn), + resizeFeature (resizeFeatureIn), + scaleFactor (scaleFactorIn), + editor (plugin->createEditor()) + { + jassert (plugin != nullptr); + jassert (parent != nullptr); + jassert (editor != nullptr); + + if (editor == nullptr) + return; + + const auto bounds = getSizeToContainChild(); + setSize (bounds.getWidth(), bounds.getHeight()); + + addAndMakeVisible (*editor); + + setBroughtToFrontOnMouseClick (true); + setOpaque (true); + setVisible (false); + removeFromDesktop(); + addToDesktop (0, parent); + editor->addComponentListener (this); + + *widget = getWindowHandle(); + + setVisible (true); + + editor->setScaleFactor (getScaleFactor()); + requestResize(); + } + + ~LV2UIInstance() override + { + plugin->editorBeingDeleted (editor.get()); + } + + // This is called by the host when a parameter changes. + // We don't care, our UI will listen to the processor directly. + void portEvent (uint32_t, uint32_t, uint32_t, const void*) {} + + // Called when the host requests a resize + int resize (int width, int height) + { + const ScopedValueSetter scope (hostRequestedResize, true); + setSize (width, height); + return 0; + } + + // Called by the host to give us an opportunity to process UI events + void idleCallback() + { + #if JUCE_LINUX || JUCE_BSD + messageThread->processPendingEvents(); + #endif + } + + void resized() override + { + const ScopedValueSetter scope (hostRequestedResize, true); + + if (editor != nullptr) + { + const auto localArea = editor->getLocalArea (this, getLocalBounds()); + editor->setBoundsConstrained ({ localArea.getWidth(), localArea.getHeight() }); + } + } + + void paint (Graphics& g) override { g.fillAll (Colours::black); } + + uint32_t getOptions (LV2_Options_Option* options) + { + const auto scaleFactorUrid = symap->map (symap->handle, LV2_UI__scaleFactor); + const auto floatUrid = symap->map (symap->handle, LV2_ATOM__Float);; + + for (auto* opt = options; opt->key != 0; ++opt) + { + if (opt->context != LV2_OPTIONS_INSTANCE || opt->subject != 0 || opt->key != scaleFactorUrid) + continue; + + if (scaleFactor.successful) + { + opt->type = floatUrid; + opt->size = sizeof (float); + opt->value = &scaleFactor.value; + } + } + + return LV2_OPTIONS_SUCCESS; + } + + uint32_t setOptions (const LV2_Options_Option* options) + { + const auto scaleFactorUrid = symap->map (symap->handle, LV2_UI__scaleFactor); + const auto floatUrid = symap->map (symap->handle, LV2_ATOM__Float);; + + for (auto* opt = options; opt->key != 0; ++opt) + { + if (opt->context != LV2_OPTIONS_INSTANCE + || opt->subject != 0 + || opt->key != scaleFactorUrid + || opt->type != floatUrid + || opt->size != sizeof (float)) + { + continue; + } + + scaleFactor.successful = true; + scaleFactor.value = *static_cast (opt->value); + updateScale(); + } + + return LV2_OPTIONS_SUCCESS; + } + +private: + void updateScale() + { + editor->setScaleFactor (getScaleFactor()); + requestResize(); + } + + Rectangle getSizeToContainChild() const + { + if (editor != nullptr) + return getLocalArea (editor.get(), editor->getLocalBounds()); + + return {}; + } + + float getScaleFactor() const noexcept + { + return scaleFactor.successful ? scaleFactor.value : 1.0f; + } + + void componentMovedOrResized (Component&, bool, bool wasResized) override + { + if (! hostRequestedResize && wasResized) + requestResize(); + } + + void write (uint32_t portIndex, uint32_t bufferSize, uint32_t portProtocol, const void* data) + { + writeFunction (controller, portIndex, bufferSize, portProtocol, data); + } + + void requestResize() + { + if (editor == nullptr) + return; + + const auto bounds = getSizeToContainChild(); + + if (resizeFeature == nullptr) + return; + + if (auto* fn = resizeFeature->ui_resize) + fn (resizeFeature->handle, bounds.getWidth(), bounds.getHeight()); + + setSize (bounds.getWidth(), bounds.getHeight()); + repaint(); + } + + #if JUCE_LINUX || JUCE_BSD + SharedResourcePointer messageThread; + #endif + + LV2UI_Write_Function writeFunction; + LV2UI_Controller controller; + LV2PluginInstance* plugin; + LV2UI_Widget parent; + const LV2_URID_Map* symap = nullptr; + const LV2UI_Resize* resizeFeature = nullptr; + lv2_shared::NumericAtomParser::ParseResult scaleFactor; + std::unique_ptr editor; + bool hostRequestedResize = false; + + JUCE_LEAK_DETECTOR (LV2UIInstance) +}; + +LV2_SYMBOL_EXPORT const LV2UI_Descriptor* lv2ui_descriptor (uint32_t index) +{ + if (index != 0) + return nullptr; + + static const LV2UI_Descriptor descriptor + { + JucePluginLV2UriUi.toRawUTF8(), // TODO some constexpr check that this is a valid URI in terms of RFC 3986 + [] (const LV2UI_Descriptor*, + const char* pluginUri, + const char* bundlePath, + LV2UI_Write_Function writeFunction, + LV2UI_Controller controller, + LV2UI_Widget* widget, + const LV2_Feature* const* features) -> LV2UI_Handle + { + #if JUCE_LINUX || JUCE_BSD + SharedResourcePointer messageThread; + #endif + + auto* plugin = findMatchingFeatureData (features, LV2_INSTANCE_ACCESS_URI); + + if (plugin == nullptr) + { + // No instance access + jassertfalse; + return nullptr; + } + + auto* parent = findMatchingFeatureData (features, LV2_UI__parent); + + if (parent == nullptr) + { + // No parent access + jassertfalse; + return nullptr; + } + + auto* resizeFeature = findMatchingFeatureData (features, LV2_UI__resize); + + const auto* symap = findMatchingFeatureData (features, LV2_URID__map); + const auto scaleFactor = findScaleFactor (symap, findMatchingFeatureData (features, LV2_OPTIONS__options)); + + return new LV2UIInstance { pluginUri, + bundlePath, + writeFunction, + controller, + widget, + plugin, + parent, + symap, + resizeFeature, + scaleFactor }; + }, + [] (LV2UI_Handle ui) + { + #if JUCE_LINUX || JUCE_BSD + SharedResourcePointer messageThread; + #endif + + JUCE_AUTORELEASEPOOL + { + delete static_cast (ui); + } + }, + [] (LV2UI_Handle ui, uint32_t portIndex, uint32_t bufferSize, uint32_t format, const void* buffer) + { + JUCE_ASSERT_MESSAGE_THREAD + static_cast (ui)->portEvent (portIndex, bufferSize, format, buffer); + }, + [] (const char* uri) -> const void* + { + const auto uriMatches = [&] (const LV2_Feature& f) { return std::strcmp (f.URI, uri) == 0; }; + + static LV2UI_Resize resize { nullptr, [] (LV2UI_Feature_Handle handle, int width, int height) -> int + { + JUCE_ASSERT_MESSAGE_THREAD + return static_cast (handle)->resize (width, height); + } }; + + static LV2UI_Idle_Interface idle { [] (LV2UI_Handle handle) + { + static_cast (handle)->idleCallback(); + return 0; + } }; + + static LV2_Options_Interface options + { + [] (LV2_Handle handle, LV2_Options_Option* optionsIn) + { + return static_cast (handle)->getOptions (optionsIn); + }, + [] (LV2_Handle handle, const LV2_Options_Option* optionsIn) + { + return static_cast (handle)->setOptions (optionsIn); + } + }; + + // We'll always define noUserResize and idle in the extension data array, but we'll + // only declare them in the ui.ttl if the UI is actually non-resizable, or requires + // idle callbacks. + // Well-behaved hosts should check the ttl before trying to search the + // extension-data array. + static const LV2_Feature features[] { { LV2_UI__resize, &resize }, + { LV2_UI__noUserResize, nullptr }, + { LV2_UI__idleInterface, &idle }, + { LV2_OPTIONS__interface, &options } }; + + const auto it = std::find_if (std::begin (features), std::end (features), uriMatches); + return it != std::end (features) ? it->data : nullptr; + } + }; + + return &descriptor; +} + +} +} + +#endif diff --git a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp index 8fc46bfc0b..61433739f2 100644 --- a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp +++ b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp @@ -184,35 +184,6 @@ namespace #endif -#if JUCE_LINUX || JUCE_BSD -class HostDrivenEventLoop -{ -public: - HostDrivenEventLoop() - { - messageThread->stop(); - MessageManager::getInstance()->setCurrentThreadAsMessageThread(); - } - - void processPendingEvents() - { - MessageManager::getInstance()->setCurrentThreadAsMessageThread(); - - for (;;) - if (! dispatchNextMessageOnSystemQueue (true)) - return; - } - - ~HostDrivenEventLoop() - { - messageThread->start(); - } - -private: - SharedResourcePointer messageThread; -}; -#endif - //============================================================================== // Ableton Live host specific commands struct AbletonLiveHostSpecific diff --git a/modules/juce_audio_plugin_client/juce_audio_plugin_client_LV2.cpp b/modules/juce_audio_plugin_client/juce_audio_plugin_client_LV2.cpp new file mode 100644 index 0000000000..f0e10d3f79 --- /dev/null +++ b/modules/juce_audio_plugin_client/juce_audio_plugin_client_LV2.cpp @@ -0,0 +1,19 @@ +/* + ============================================================================== + + This file is part of the JUCE 7 technical preview. + Copyright (c) 2022 - Raw Material Software Limited + + You may use this code under the terms of the GPL v3 + (see www.gnu.org/licenses). + + For the technical preview this file cannot be licensed commercially. + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +#include "LV2/juce_LV2_Client.cpp" diff --git a/modules/juce_audio_plugin_client/juce_audio_plugin_client_LV2.mm b/modules/juce_audio_plugin_client/juce_audio_plugin_client_LV2.mm new file mode 100644 index 0000000000..056191e1a8 --- /dev/null +++ b/modules/juce_audio_plugin_client/juce_audio_plugin_client_LV2.mm @@ -0,0 +1,19 @@ +/* + ============================================================================== + + This file is part of the JUCE 7 technical preview. + Copyright (c) 2022 - Raw Material Software Limited + + You may use this code under the terms of the GPL v3 + (see www.gnu.org/licenses). + + For the technical preview this file cannot be licensed commercially. + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +#include "juce_audio_plugin_client_LV2.cpp" diff --git a/modules/juce_audio_plugin_client/utility/juce_CheckSettingMacros.h b/modules/juce_audio_plugin_client/utility/juce_CheckSettingMacros.h index e3de81df6c..f42da132f4 100644 --- a/modules/juce_audio_plugin_client/utility/juce_CheckSettingMacros.h +++ b/modules/juce_audio_plugin_client/utility/juce_CheckSettingMacros.h @@ -67,10 +67,6 @@ #endif //============================================================================== -#if JucePlugin_Build_LV2 && ! defined (JucePlugin_LV2URI) - #error "You need to define the JucePlugin_LV2URI value!" -#endif - #if JucePlugin_Build_AAX && ! defined (JucePlugin_AAXIdentifier) #error "You need to define the JucePlugin_AAXIdentifier value!" #endif diff --git a/modules/juce_audio_plugin_client/utility/juce_LinuxMessageThread.h b/modules/juce_audio_plugin_client/utility/juce_LinuxMessageThread.h index 6818d52ca5..9292f5a498 100644 --- a/modules/juce_audio_plugin_client/utility/juce_LinuxMessageThread.h +++ b/modules/juce_audio_plugin_client/utility/juce_LinuxMessageThread.h @@ -92,6 +92,35 @@ private: JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MessageThread) }; +//============================================================================== +/** @internal */ +class HostDrivenEventLoop +{ +public: + HostDrivenEventLoop() + { + messageThread->stop(); + MessageManager::getInstance()->setCurrentThreadAsMessageThread(); + } + + void processPendingEvents() + { + MessageManager::getInstance()->setCurrentThreadAsMessageThread(); + + for (;;) + if (! dispatchNextMessageOnSystemQueue (true)) + return; + } + + ~HostDrivenEventLoop() + { + messageThread->start(); + } + +private: + SharedResourcePointer messageThread; +}; + } // namespace juce #endif