From fdc9831e600f16a86ea7daa240cb2d7ae5df5d0f Mon Sep 17 00:00:00 2001 From: ed Date: Fri, 31 Jan 2020 15:27:26 +0000 Subject: [PATCH] Projucer: Only add plug-in properties to plug-in projects --- .../jucer_CompileEngineClient.cpp | 6 ++--- .../Projucer/Source/Project/jucer_Module.cpp | 2 +- .../Projucer/Source/Project/jucer_Project.cpp | 2 +- .../Projucer/Source/Project/jucer_Project.h | 24 +++++++++---------- .../jucer_ProjectExport_Android.h | 2 +- .../ProjectSaving/jucer_ProjectExport_CLion.h | 2 +- .../jucer_ProjectExport_CodeBlocks.h | 12 +++++----- .../ProjectSaving/jucer_ProjectExport_MSVC.h | 7 +++--- .../ProjectSaving/jucer_ProjectExport_Make.h | 6 ++--- .../ProjectSaving/jucer_ProjectExport_Xcode.h | 24 ++++++++++--------- .../Source/ProjectSaving/jucer_ProjectSaver.h | 4 ++-- 11 files changed, 46 insertions(+), 45 deletions(-) diff --git a/extras/Projucer/Source/LiveBuildEngine/jucer_CompileEngineClient.cpp b/extras/Projucer/Source/LiveBuildEngine/jucer_CompileEngineClient.cpp index 0334228ffb..5c96871bac 100644 --- a/extras/Projucer/Source/LiveBuildEngine/jucer_CompileEngineClient.cpp +++ b/extras/Projucer/Source/LiveBuildEngine/jucer_CompileEngineClient.cpp @@ -380,7 +380,7 @@ private: auto isVSTHost = project.getEnabledModules().isModuleEnabled ("juce_audio_processors") && (project.isConfigFlagEnabled ("JUCE_PLUGINHOST_VST3") || project.isConfigFlagEnabled ("JUCE_PLUGINHOST_VST")); - auto isPluginProject = proj.getProjectType().isAudioPlugin(); + auto isPluginProject = proj.isAudioPluginProject(); OwnedArray modules; proj.getEnabledModules().createRequiredModules (modules); @@ -471,7 +471,7 @@ private: auto customVst3Path = getAppSettings().getStoredPath (Ids::vst3Path, TargetOS::getThisOS()).get().toString(); - if (customVst3Path.isNotEmpty() && (project.getProjectType().isAudioPlugin() || isVSTHost)) + if (customVst3Path.isNotEmpty() && (project.isAudioPluginProject() || isVSTHost)) paths.add (customVst3Path); OwnedArray modules; @@ -481,7 +481,7 @@ private: { paths.addIfNotAlreadyThere (module->getFolder().getParentDirectory().getFullPathName()); - if (customVst3Path.isEmpty() && (project.getProjectType().isAudioPlugin() || isVSTHost)) + if (customVst3Path.isEmpty() && (project.isAudioPluginProject() || isVSTHost)) if (module->getID() == "juce_audio_processors") paths.addIfNotAlreadyThere (module->getFolder().getChildFile ("format_types").getChildFile ("VST3_SDK").getFullPathName()); } diff --git a/extras/Projucer/Source/Project/jucer_Module.cpp b/extras/Projucer/Source/Project/jucer_Module.cpp index a2b33e542c..a81d322ce3 100644 --- a/extras/Projucer/Source/Project/jucer_Module.cpp +++ b/extras/Projucer/Source/Project/jucer_Module.cpp @@ -571,7 +571,7 @@ bool EnabledModuleList::isModuleEnabled (const String& moduleID) const bool EnabledModuleList::isAudioPluginModuleMissing() const { - return project.getProjectType().isAudioPlugin() + return project.isAudioPluginProject() && ! isModuleEnabled ("juce_audio_plugin_client"); } diff --git a/extras/Projucer/Source/Project/jucer_Project.cpp b/extras/Projucer/Source/Project/jucer_Project.cpp index 9c8d1a43d2..9d760505d3 100644 --- a/extras/Projucer/Source/Project/jucer_Project.cpp +++ b/extras/Projucer/Source/Project/jucer_Project.cpp @@ -1006,7 +1006,7 @@ void Project::createPropertyEditors (PropertyListBuilder& props) props.add (new TextPropertyComponent (bundleIdentifierValue, "Bundle Identifier", 256, false), "A unique identifier for this product, mainly for use in OSX/iOS builds. It should be something like 'com.yourcompanyname.yourproductname'"); - if (getProjectType().isAudioPlugin()) + if (isAudioPluginProject()) createAudioPluginPropertyEditors (props); { diff --git a/extras/Projucer/Source/Project/jucer_Project.h b/extras/Projucer/Source/Project/jucer_Project.h index 533e7e474c..80711e8ba4 100644 --- a/extras/Projucer/Source/Project/jucer_Project.h +++ b/extras/Projucer/Source/Project/jucer_Project.h @@ -147,7 +147,6 @@ public: String getVSTNumMIDIInputsString() const { return pluginVSTNumMidiInputsValue.get(); } String getVSTNumMIDIOutputsString() const { return pluginVSTNumMidiOutputsValue.get(); } - //============================================================================== static bool checkMultiChoiceVar (const ValueWithDefault& valueToCheck, Identifier idToCheck) noexcept { if (! valueToCheck.get().isArray()) @@ -161,18 +160,18 @@ public: return false; } - //============================================================================== - bool shouldBuildVST() const { return checkMultiChoiceVar (pluginFormatsValue, Ids::buildVST); } - bool shouldBuildVST3() const { return checkMultiChoiceVar (pluginFormatsValue, Ids::buildVST3); } - bool shouldBuildAU() const { return checkMultiChoiceVar (pluginFormatsValue, Ids::buildAU); } - bool shouldBuildAUv3() const { return checkMultiChoiceVar (pluginFormatsValue, Ids::buildAUv3); } - bool shouldBuildRTAS() const { return checkMultiChoiceVar (pluginFormatsValue, Ids::buildRTAS); } - bool shouldBuildAAX() const { return checkMultiChoiceVar (pluginFormatsValue, Ids::buildAAX); } - bool shouldBuildStandalonePlugin() const { return checkMultiChoiceVar (pluginFormatsValue, Ids::buildStandalone); } - bool shouldBuildUnityPlugin() const { return checkMultiChoiceVar (pluginFormatsValue, Ids::buildUnity); } - bool shouldEnableIAA() const { return checkMultiChoiceVar (pluginFormatsValue, Ids::enableIAA); } + bool isAudioPluginProject() const { return getProjectType().isAudioPlugin(); } + + bool shouldBuildVST() const { return isAudioPluginProject() && checkMultiChoiceVar (pluginFormatsValue, Ids::buildVST); } + bool shouldBuildVST3() const { return isAudioPluginProject() && checkMultiChoiceVar (pluginFormatsValue, Ids::buildVST3); } + bool shouldBuildAU() const { return isAudioPluginProject() && checkMultiChoiceVar (pluginFormatsValue, Ids::buildAU); } + bool shouldBuildAUv3() const { return isAudioPluginProject() && checkMultiChoiceVar (pluginFormatsValue, Ids::buildAUv3); } + bool shouldBuildRTAS() const { return isAudioPluginProject() && checkMultiChoiceVar (pluginFormatsValue, Ids::buildRTAS); } + 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 shouldEnableIAA() const { return isAudioPluginProject() && checkMultiChoiceVar (pluginFormatsValue, Ids::enableIAA); } - //============================================================================== bool isPluginSynth() const { return checkMultiChoiceVar (pluginCharacteristicsValue, Ids::pluginIsSynth); } bool pluginWantsMidiInput() const { return checkMultiChoiceVar (pluginCharacteristicsValue, Ids::pluginWantsMidiIn); } bool pluginProducesMidiOutput() const { return checkMultiChoiceVar (pluginCharacteristicsValue, Ids::pluginProducesMidiOut); } @@ -183,7 +182,6 @@ public: bool isPluginAAXBypassDisabled() const { return checkMultiChoiceVar (pluginCharacteristicsValue, Ids::pluginAAXDisableBypass); } bool isPluginAAXMultiMonoDisabled() const { return checkMultiChoiceVar (pluginCharacteristicsValue, Ids::pluginAAXDisableMultiMono); } - //============================================================================== static StringArray getAllAUMainTypeStrings() noexcept; static Array getAllAUMainTypeVars() noexcept; Array getDefaultAUMainTypes() const noexcept; diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h index aaa4988bfd..bed3870db8 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h @@ -1350,7 +1350,7 @@ private: mo << " \"" << file.toUnixStyle() << "\"" << newLine; if ((! projectItem.shouldBeCompiled()) || (! shouldFileBeCompiledByDefault (f)) - || (getProject().getProjectType().isAudioPlugin() + || (getProject().isAudioPluginProject() && targetType != ProjectType::Target::SharedCodeTarget && targetType != ProjectType::Target::StandalonePlugIn)) { diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CLion.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CLion.h index 0384e55ffa..df743afd4d 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CLion.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CLion.h @@ -304,7 +304,7 @@ private: template void getFileInfoList (Target& target, Exporter& exporter, const Project::Item& projectItem, std::vector>& fileInfoList) const { - auto targetType = (getProject().getProjectType().isAudioPlugin() ? target.type : Target::Type::SharedCodeTarget); + auto targetType = (getProject().isAudioPluginProject() ? target.type : Target::Type::SharedCodeTarget); if (projectItem.isGroup()) { diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CodeBlocks.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CodeBlocks.h index 722b566abe..c43928e6e4 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CodeBlocks.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CodeBlocks.h @@ -432,7 +432,7 @@ private: if (config.exporter.isLinux()) { - if (target.isDynamicLibrary() || getProject().getProjectType().isAudioPlugin()) + if (target.isDynamicLibrary() || getProject().isAudioPluginProject()) flags.add ("-fPIC"); auto packages = getPackages(); @@ -495,7 +495,7 @@ private: { auto librarySearchPaths = config.getLibrarySearchPaths(); - if (getProject().getProjectType().isAudioPlugin() && target.type != ProjectType::Target::SharedCodeTarget) + if (getProject().isAudioPluginProject() && target.type != ProjectType::Target::SharedCodeTarget) librarySearchPaths.add (RelativePath (getSharedCodePath (config), RelativePath::buildTargetFolder).getParentDirectory().toUnixStyle().quoted()); return librarySearchPaths; @@ -601,7 +601,7 @@ private: xml.createNewChildElement ("Option")->setAttribute ("type", getTypeIndex (target.type)); xml.createNewChildElement ("Option")->setAttribute ("compiler", "gcc"); - if (getProject().getProjectType().isAudioPlugin() && target.type != ProjectType::Target::SharedCodeTarget) + if (getProject().isAudioPluginProject() && target.type != ProjectType::Target::SharedCodeTarget) xml.createNewChildElement ("Option")->setAttribute ("external_deps", getSharedCodePath (config)); { @@ -635,7 +635,7 @@ private: { auto* linker = xml.createNewChildElement ("Linker"); - if (getProject().getProjectType().isAudioPlugin() && target.type != ProjectType::Target::SharedCodeTarget) + if (getProject().isAudioPluginProject() && target.type != ProjectType::Target::SharedCodeTarget) setAddOption (*linker, "option", getSharedCodePath (config).quoted()); for (auto& flag : getLinkerFlags (config, target)) @@ -747,7 +747,7 @@ private: // the single target CodeBlocksTarget& getMainTarget() const { - if (getProject().getProjectType().isAudioPlugin()) + if (getProject().isAudioPluginProject()) return getTargetWithType (ProjectType::Target::SharedCodeTarget); for (auto* target : targets) @@ -761,7 +761,7 @@ private: CodeBlocksTarget& getTargetForProjectItem (const Project::Item& projectItem) const { - if (getProject().getProjectType().isAudioPlugin()) + if (getProject().isAudioPluginProject()) { if (! projectItem.shouldBeCompiled()) return getTargetWithType (ProjectType::Target::SharedCodeTarget); diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h index fb09cae068..bf46cb1f20 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h @@ -196,7 +196,8 @@ public: void createConfigProperties (PropertyListBuilder& props) override { - addVisualStudioPluginInstallPathProperties (props); + if (project.isAudioPluginProject()) + addVisualStudioPluginInstallPathProperties (props); props.add (new ChoicePropertyComponent (architectureTypeValue, "Architecture", { get32BitArchName(), get64BitArchName() }, @@ -741,7 +742,7 @@ public: //============================================================================== void addFilesToCompile (const Project::Item& projectItem, XmlElement& cpps, XmlElement& headers, XmlElement& otherFiles) const { - auto targetType = (getOwner().getProject().getProjectType().isAudioPlugin() ? type : SharedCodeTarget); + auto targetType = (getOwner().getProject().isAudioPluginProject() ? type : SharedCodeTarget); if (projectItem.isGroup()) { @@ -823,7 +824,7 @@ public: bool addFilesToFilter (const Project::Item& projectItem, const String& path, XmlElement& cpps, XmlElement& headers, XmlElement& otherFiles, XmlElement& groups) const { - auto targetType = (getOwner().getProject().getProjectType().isAudioPlugin() ? type : SharedCodeTarget); + auto targetType = (getOwner().getProject().isAudioPluginProject() ? type : SharedCodeTarget); if (projectItem.isGroup()) { diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h index 88fd4f1ed5..02e4b223ab 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h @@ -718,7 +718,7 @@ private: } else { - if (! getProject().getProjectType().isAudioPlugin()) + if (! getProject().isAudioPluginProject()) out << "all : " << target->getBuildProduct() << newLine << newLine; target->writeTargetLine (out, packages); @@ -903,7 +903,7 @@ private: { Array> targetFiles; - auto targetType = (p.getProjectType().isAudioPlugin() ? target->type : MakefileTarget::SharedCodeTarget); + auto targetType = (p.isAudioPluginProject() ? target->type : MakefileTarget::SharedCodeTarget); for (auto& f : files) if (p.getTargetTypeFromFilePath (f.first, true) == targetType) @@ -955,7 +955,7 @@ private: phonyTargetLine << ".PHONY: clean all strip"; - if (! getProject().getProjectType().isAudioPlugin()) + if (! getProject().isAudioPluginProject()) return phonyTargetLine.toString(); for (auto target : targets) diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h index a9107659c8..f8dd2dff7f 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h @@ -275,7 +275,7 @@ public: "This way you can specify them for OS X and iOS separately, and modify the content of the resource folders " "without re-saving the Projucer project."); - if (getProject().getProjectType().isAudioPlugin()) + if (getProject().isAudioPluginProject()) props.add (new ChoicePropertyComponent (duplicateAppExResourcesFolderValue, "Add Duplicate Resources Folder to App Extension"), "Disable this to prevent the Projucer from creating a duplicate resources folder for AUv3 app extensions."); @@ -674,7 +674,9 @@ protected: //============================================================================== void createConfigProperties (PropertyListBuilder& props) override { - addXcodePluginInstallPathProperties (props); + if (project.isAudioPluginProject()) + addXcodePluginInstallPathProperties (props); + addRecommendedLLVMCompilerWarningsProperty (props); addGCCOptimisationProperty (props); @@ -1024,7 +1026,7 @@ public: { Array result; - auto targetType = (owner.getProject().getProjectType().isAudioPlugin() ? type : SharedCodeTarget); + auto targetType = (owner.getProject().isAudioPluginProject() ? type : SharedCodeTarget); if (projectItem.isGroup()) { @@ -1195,7 +1197,7 @@ public: || (owner.isiOS() && owner.isiCloudPermissionsEnabled())) return true; - if (owner.project.getProjectType().isAudioPlugin() + if (owner.project.isAudioPluginProject() && ((owner.isOSX() && type == Target::AudioUnitv3PlugIn) || (owner.isiOS() && type == Target::StandalonePlugIn && owner.getProject().shouldEnableIAA()))) return true; @@ -1512,7 +1514,7 @@ public: librarySearchPaths.add (owner.getSearchPathForStaticLibrary (lib)); } - if (owner.project.getProjectType().isAudioPlugin()) + if (owner.project.isAudioPluginProject()) { if (owner.getTargetOfType (Target::SharedCodeTarget) != nullptr) { @@ -2233,7 +2235,7 @@ private: auto sourceFiles = target->sourceIDs; if (target->type == XcodeTarget::SharedCodeTarget - || (! project.getProjectType().isAudioPlugin())) + || (! project.isAudioPluginProject())) sourceFiles.addArray (sourceIDs); target->addBuildPhase ("PBXSourcesBuildPhase", sourceFiles); @@ -2244,11 +2246,11 @@ private: target->addShellScriptBuildPhase ("Post-build script", getPostBuildScript()); - if (project.getProjectType().isAudioPlugin() && project.shouldBuildAUv3() + if (project.isAudioPluginProject() && project.shouldBuildAUv3() && project.shouldBuildStandalonePlugin() && target->type == XcodeTarget::StandalonePlugIn) embedAppExtension(); - if (project.getProjectType().isAudioPlugin() && project.shouldBuildUnityPlugin() + if (project.isAudioPluginProject() && project.shouldBuildUnityPlugin() && target->type == XcodeTarget::UnityPlugIn) embedUnityScript(); @@ -2355,7 +2357,7 @@ private: { StringArray dependencies; - if (project.getProjectType().isAudioPlugin()) + if (project.isAudioPluginProject()) { if (target.type == XcodeTarget::StandalonePlugIn) // depends on AUv3 and shared code { @@ -3114,7 +3116,7 @@ private: { StringPairArray entitlements; - if (project.getProjectType().isAudioPlugin()) + if (project.isAudioPluginProject()) { if (isiOS() && project.shouldEnableIAA()) entitlements.set ("inter-app-audio", ""); @@ -3144,7 +3146,7 @@ private: for (auto& option : getHardenedRuntimeOptions()) entitlements.set (option, ""); - if (isAppSandboxEnabled() || (project.getProjectType().isAudioPlugin() && target.type == XcodeTarget::AudioUnitv3PlugIn)) + if (isAppSandboxEnabled() || (project.isAudioPluginProject() && target.type == XcodeTarget::AudioUnitv3PlugIn)) { entitlements.set ("com.apple.security.app-sandbox", ""); diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectSaver.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectSaver.h index 748cf563ab..ec3ae4a0ec 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectSaver.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectSaver.h @@ -95,7 +95,7 @@ public: auto projectRootHash = project.getProjectRoot().toXmlString().hashCode(); - if (project.getProjectType().isAudioPlugin()) + if (project.isAudioPluginProject()) { writePluginCharacteristicsFile(); @@ -157,7 +157,7 @@ public: if (errors.size() == 0) { - if (project.getProjectType().isAudioPlugin()) + if (project.isAudioPluginProject()) writePluginCharacteristicsFile(); writeAppConfigFile (modules, loadUserContentFromAppConfig());