1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-09 23:34:20 +00:00

VST3 Client: Enable manifest generation globally

This commit is contained in:
reuk 2023-05-16 21:02:22 +01:00
parent 77458fb4f9
commit c509a1821a
No known key found for this signature in database
GPG key ID: FCB43929F012EE5C
7 changed files with 28 additions and 60 deletions

View file

@ -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`,

View file

@ -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

View file

@ -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.");

View file

@ -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;

View file

@ -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;

View file

@ -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)
{

View file

@ -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 "