diff --git a/docs/CMake API.md b/docs/CMake API.md index b94e95da16..6586d77832 100644 --- a/docs/CMake API.md +++ b/docs/CMake API.md @@ -527,17 +527,6 @@ attributes directly to these creation functions, rather than adding them later. `Pitch Shift`, `Restoration`, `Reverb`, `Sampler`, `Spatial`, `Stereo`, `Surround`, `Synth`, `Tools`, `Up-Downmix` -`VST3_MANIFEST_ENABLED` -- May be either TRUE or FALSE. Defaults to FALSE. Set this to TRUE if you want a moduleinfo.json - file to be generated as part of the VST3 build. This may improve startup/scanning time for hosts - that understand the contents of this file. This setting is disabled by default because the - moduleinfo.json path can cause problems during code signing on macOS. Bundles containing a - moduleinfo.json may be rejected by code signing verification at any point in the future without - notice per https://developer.apple.com/library/archive/technotes/tn2206. If you enable this - setting, be aware that the code signature for the moduleinfo.json will be stored in its extended - file attributes. Therefore, you will need to ensure that these attributes are not changed or - removed when distributing the VST3. - `AU_MAIN_TYPE` - Should be one of: `kAudioUnitType_Effect`, `kAudioUnitType_FormatConverter`, `kAudioUnitType_Generator`, `kAudioUnitType_MIDIProcessor`, `kAudioUnitType_Mixer`, diff --git a/extras/Build/CMake/JUCEUtils.cmake b/extras/Build/CMake/JUCEUtils.cmake index cec4130bb7..d920e6278a 100644 --- a/extras/Build/CMake/JUCEUtils.cmake +++ b/extras/Build/CMake/JUCEUtils.cmake @@ -1019,23 +1019,21 @@ function(_juce_set_plugin_target_properties shared_code_target kind) LIBRARY_OUTPUT_DIRECTORY "${output_path}/Contents/${JUCE_TARGET_ARCHITECTURE}-linux") endif() - if("${manifest_enabled}") - # Add a target for the helper tool - _juce_add_vst3_manifest_helper_target() + # Add a target for the helper tool + _juce_add_vst3_manifest_helper_target() - get_target_property(target_version_string ${shared_code_target} JUCE_VERSION) + get_target_property(target_version_string ${shared_code_target} JUCE_VERSION) - # Use the helper tool to write out the moduleinfo.json - add_custom_command(TARGET ${target_name} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E remove -f "${output_path}/Contents/moduleinfo.json" - COMMAND ${CMAKE_COMMAND} -E make_directory "${output_path}/Contents/Resources" - COMMAND juce_vst3_helper - -create - -version "${target_version_string}" - -path "${output_path}" - -output "${output_path}/Contents/Resources/moduleinfo.json" - VERBATIM) - endif() + # Use the helper tool to write out the moduleinfo.json + add_custom_command(TARGET ${target_name} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E remove -f "${output_path}/Contents/moduleinfo.json" + COMMAND ${CMAKE_COMMAND} -E make_directory "${output_path}/Contents/Resources" + COMMAND juce_vst3_helper + -create + -version "${target_version_string}" + -path "${output_path}" + -output "${output_path}/Contents/Resources/moduleinfo.json" + VERBATIM) _juce_set_copy_properties(${shared_code_target} ${target_name} "${output_path}" JUCE_VST3_COPY_DIR) elseif(kind STREQUAL "VST") @@ -1503,8 +1501,6 @@ function(_juce_set_fallback_properties target) _juce_set_property_if_not_set(${target} VST_NUM_MIDI_INS 16) _juce_set_property_if_not_set(${target} VST_NUM_MIDI_OUTS 16) - _juce_set_property_if_not_set(${target} VST3_MANIFEST_ENABLED FALSE) - _juce_set_property_if_not_set(${target} AU_SANDBOX_SAFE FALSE) _juce_set_property_if_not_set(${target} SUPPRESS_AU_PLIST_RESOURCE_USAGE FALSE) @@ -1792,7 +1788,6 @@ function(_juce_initialise_target target) IS_ARA_EFFECT ARA_FACTORY_ID ARA_DOCUMENT_ARCHIVE_ID - VST3_MANIFEST_ENABLED VST_COPY_DIR VST3_COPY_DIR diff --git a/extras/Projucer/Source/Project/jucer_Project.cpp b/extras/Projucer/Source/Project/jucer_Project.cpp index 3e39ebf290..50fee7615b 100644 --- a/extras/Projucer/Source/Project/jucer_Project.cpp +++ b/extras/Projucer/Source/Project/jucer_Project.cpp @@ -369,8 +369,6 @@ void Project::initialiseAudioPluginValues() pluginVSTNumMidiOutputsValue.referTo (projectRoot, Ids::pluginVSTNumMidiOutputs, getUndoManager(), 16); pluginLV2URIValue.referTo (projectRoot, Ids::lv2Uri, getUndoManager(), getDefaultLV2URI()); - - vst3ManifestEnabledValue.referTo (projectRoot, Ids::vst3ManifestEnabled, getUndoManager(), false); } void Project::updateOldStyleConfigList() @@ -1265,7 +1263,7 @@ bool Project::shouldBuildTargetType (build_tools::ProjectType::Target::Type targ case Target::VST3PlugIn: return shouldBuildVST3(); case Target::VST3Helper: - return shouldBuildVST3() && isVst3ManifestEnabled(); + return shouldBuildVST3(); case Target::AAXPlugIn: return shouldBuildAAX(); case Target::AudioUnitPlugIn: @@ -1541,14 +1539,6 @@ void Project::createAudioPluginPropertyEditors (PropertyListBuilder& props) "If neither of these are selected, the appropriate one will be automatically added based on the \"Plugin is a synth\" option."); } - props.add (new ChoicePropertyComponent (vst3ManifestEnabledValue, "Plugin VST3 moduleinfo.json Enabled"), - "Check this box if you want a moduleinfo.json file to be generated as part of the VST3 build. " - "This may improve startup/scanning time for hosts that understand the contents of this file. " - "This setting is disabled by default because the moduleinfo.json path can cause problems during code signing on macOS. " - "Bundles containing a moduleinfo.json may be rejected by code signing verification at any point in the future without notice per https://developer.apple.com/library/archive/technotes/tn2206." - "If you enable this setting, be aware that the code signature for the moduleinfo.json will be stored in its extended file attributes. " - "Therefore, you will need to ensure that these attributes are not changed or removed when distributing the VST3."); - props.add (new MultiChoicePropertyComponent (pluginAAXCategoryValue, "Plugin AAX Category", getAllAAXCategoryStrings(), getAllAAXCategoryVars()), "AAX category."); diff --git a/extras/Projucer/Source/Project/jucer_Project.h b/extras/Projucer/Source/Project/jucer_Project.h index 01dbad8476..a3038ec9ec 100644 --- a/extras/Projucer/Source/Project/jucer_Project.h +++ b/extras/Projucer/Source/Project/jucer_Project.h @@ -292,8 +292,6 @@ public: bool isPluginAAXBypassDisabled() const { return checkMultiChoiceVar (pluginCharacteristicsValue, Ids::pluginAAXDisableBypass); } bool isPluginAAXMultiMonoDisabled() const { return checkMultiChoiceVar (pluginCharacteristicsValue, Ids::pluginAAXDisableMultiMono); } - bool isVst3ManifestEnabled() const { return vst3ManifestEnabledValue.get(); } - void disableStandaloneForARAPlugIn(); static StringArray getAllAUMainTypeStrings() noexcept; @@ -586,7 +584,7 @@ private: pluginCodeValue, pluginChannelConfigsValue, pluginCharacteristicsValue, pluginAUExportPrefixValue, pluginAAXIdentifierValue, pluginAUMainTypeValue, pluginAUSandboxSafeValue, pluginVSTCategoryValue, pluginVST3CategoryValue, pluginAAXCategoryValue, pluginEnableARA, pluginARAAnalyzableContentValue, pluginARAFactoryIDValue, pluginARAArchiveIDValue, pluginARACompatibleArchiveIDsValue, pluginARATransformFlagsValue, - pluginVSTNumMidiInputsValue, pluginVSTNumMidiOutputsValue, pluginLV2URIValue, vst3ManifestEnabledValue; + pluginVSTNumMidiInputsValue, pluginVSTNumMidiOutputsValue, pluginLV2URIValue; //============================================================================== std::unique_ptr enabledModulesList; diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h index c107e3c388..95dd52fe6c 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h @@ -1774,7 +1774,7 @@ protected: if (target->type == MSVCTargetBase::LV2PlugIn && lv2HelperGuid.isNotEmpty()) out << "\t\t" << lv2HelperGuid << " = " << lv2HelperGuid << newLine; - if (target->type == MSVCTargetBase::VST3PlugIn && vst3HelperGuid.isNotEmpty() && project.isVst3ManifestEnabled()) + if (target->type == MSVCTargetBase::VST3PlugIn && vst3HelperGuid.isNotEmpty()) out << "\t\t" << vst3HelperGuid << " = " << vst3HelperGuid << newLine; out << "\tEndProjectSection" << newLine; diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h index 3c1ea3f674..ed27c875be 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h @@ -356,7 +356,7 @@ public: if (type == LV2PlugIn) out << " $(JUCE_OUTDIR)/$(JUCE_TARGET_LV2_MANIFEST_HELPER)"; - else if (type == VST3PlugIn && owner.project.isVst3ManifestEnabled()) + else if (type == VST3PlugIn) out << " $(JUCE_OUTDIR)/$(JUCE_TARGET_VST3_MANIFEST_HELPER)"; out << newLine; @@ -408,18 +408,14 @@ public: if (type == VST3PlugIn) { - if (owner.project.isVst3ManifestEnabled()) - { - out << "\t-$(V_AT)mkdir -p $(JUCE_OUTDIR)/$(JUCE_VST3DIR)/Contents/Resources" << newLine - << "\t-$(V_AT)rm -f $(JUCE_OUTDIR)/$(JUCE_VST3DIR)/Contents/moduleinfo.json" << newLine - << "\t$(V_AT) $(JUCE_OUTDIR)/$(JUCE_TARGET_VST3_MANIFEST_HELPER) " - "-create " - "-version " << owner.project.getVersionString().quoted() << " " - "-path \"$(JUCE_OUTDIR)/$(JUCE_VST3DIR)\" " - "-output \"$(JUCE_OUTDIR)/$(JUCE_VST3DIR)/Contents/Resources/moduleinfo.json\"" << newLine; - } - - out << "\t-$(V_AT)[ ! \"$(JUCE_VST3DESTDIR)\" ] || (mkdir -p $(JUCE_VST3DESTDIR) && cp -R $(JUCE_COPYCMD_VST3))" << newLine; + out << "\t-$(V_AT)mkdir -p $(JUCE_OUTDIR)/$(JUCE_VST3DIR)/Contents/Resources" << newLine + << "\t-$(V_AT)rm -f $(JUCE_OUTDIR)/$(JUCE_VST3DIR)/Contents/moduleinfo.json" << newLine + << "\t$(V_AT) $(JUCE_OUTDIR)/$(JUCE_TARGET_VST3_MANIFEST_HELPER) " + "-create " + "-version " << owner.project.getVersionString().quoted() << " " + "-path \"$(JUCE_OUTDIR)/$(JUCE_VST3DIR)\" " + "-output \"$(JUCE_OUTDIR)/$(JUCE_VST3DIR)/Contents/Resources/moduleinfo.json\"" << newLine + << "\t-$(V_AT)[ ! \"$(JUCE_VST3DESTDIR)\" ] || (mkdir -p $(JUCE_VST3DESTDIR) && cp -R $(JUCE_COPYCMD_VST3))" << newLine; } else if (type == VSTPlugIn) { diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h index 66f334948a..2296aa3f19 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h @@ -1291,7 +1291,7 @@ public: dependencyIDs.add (helperTarget->addDependencyFor (*this)); } - if (type == VST3PlugIn && owner.project.isVst3ManifestEnabled()) + if (type == VST3PlugIn) { if (auto* helperTarget = owner.getTargetOfType (VST3Helper)) dependencyIDs.add (helperTarget->addDependencyFor (*this)); @@ -2125,7 +2125,7 @@ private: if (target->type == XcodeTarget::LV2Helper && project.getEnabledModules().isModuleEnabled ("juce_audio_plugin_client")) { - const auto path = rebaseFromProjectFolderToBuildTarget (getLV2HelperProgramSource ()); + const auto path = rebaseFromProjectFolderToBuildTarget (getLV2HelperProgramSource()); addFile (FileOptions().withRelativePath ({ expandPath (path.toUnixStyle()), path.getRoot() }) .withSkipPCHEnabled (true) .withCompilationEnabled (true) @@ -2364,7 +2364,7 @@ private: } } } - else if (target->type == XcodeTarget::VST3PlugIn && project.isVst3ManifestEnabled()) + else if (target->type == XcodeTarget::VST3PlugIn) { script << "\"$CONFIGURATION_BUILD_DIR/" << Project::getVST3FileWriterName() << "\" " "-create "