| @@ -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`, | |||
| @@ -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 | |||
| @@ -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."); | |||
| @@ -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> enabledModulesList; | |||
| @@ -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; | |||
| @@ -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) | |||
| { | |||
| @@ -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 " | |||