@@ -193,8 +193,6 @@ private: | |||||
"If you are building a legacy VST plug-in then this path should point to a VST2 SDK. " | "If you are building a legacy VST plug-in then this path should point to a VST2 SDK. " | ||||
"The VST2 SDK can be obtained from the vstsdk3610_11_06_2018_build_37 (or older) VST3 SDK or JUCE version 5.3.2. " | "The VST2 SDK can be obtained from the vstsdk3610_11_06_2018_build_37 (or older) VST3 SDK or JUCE version 5.3.2. " | ||||
"You also need a VST2 license from Steinberg to distribute VST2 plug-ins."); | "You also need a VST2 license from Steinberg to distribute VST2 plug-ins."); | ||||
builder.add (new FilePathPropertyComponent (vst3PathValue, "VST3 SDK", true, isThisOS), | |||||
"This path can be set to use a custom VST3 SDK instead of the one which is embedded in JUCE."); | |||||
if (getSelectedOS() != TargetOS::linux) | if (getSelectedOS() != TargetOS::linux) | ||||
{ | { | ||||
@@ -247,7 +245,6 @@ private: | |||||
juceModulePathValue = settings.getStoredPath (Ids::defaultJuceModulePath, os); | juceModulePathValue = settings.getStoredPath (Ids::defaultJuceModulePath, os); | ||||
userModulePathValue = settings.getStoredPath (Ids::defaultUserModulePath, os); | userModulePathValue = settings.getStoredPath (Ids::defaultUserModulePath, os); | ||||
vstPathValue = settings.getStoredPath (Ids::vstLegacyPath, os); | vstPathValue = settings.getStoredPath (Ids::vstLegacyPath, os); | ||||
vst3PathValue = settings.getStoredPath (Ids::vst3Path, os); | |||||
rtasPathValue = settings.getStoredPath (Ids::rtasPath, os); | rtasPathValue = settings.getStoredPath (Ids::rtasPath, os); | ||||
aaxPathValue = settings.getStoredPath (Ids::aaxPath, os); | aaxPathValue = settings.getStoredPath (Ids::aaxPath, os); | ||||
androidSDKPathValue = settings.getStoredPath (Ids::androidSDKPath, os); | androidSDKPathValue = settings.getStoredPath (Ids::androidSDKPath, os); | ||||
@@ -262,7 +259,6 @@ private: | |||||
juceModulePathValue .resetToDefault(); | juceModulePathValue .resetToDefault(); | ||||
userModulePathValue .resetToDefault(); | userModulePathValue .resetToDefault(); | ||||
vstPathValue .resetToDefault(); | vstPathValue .resetToDefault(); | ||||
vst3PathValue .resetToDefault(); | |||||
rtasPathValue .resetToDefault(); | rtasPathValue .resetToDefault(); | ||||
aaxPathValue .resetToDefault(); | aaxPathValue .resetToDefault(); | ||||
androidSDKPathValue .resetToDefault(); | androidSDKPathValue .resetToDefault(); | ||||
@@ -277,8 +273,7 @@ private: | |||||
Value selectedOSValue; | Value selectedOSValue; | ||||
ValueWithDefault jucePathValue, juceModulePathValue, userModulePathValue, | ValueWithDefault jucePathValue, juceModulePathValue, userModulePathValue, | ||||
vst3PathValue, vstPathValue, rtasPathValue, aaxPathValue, | |||||
androidSDKPathValue, androidNDKPathValue, | |||||
vstPathValue, rtasPathValue, aaxPathValue, androidSDKPathValue, androidNDKPathValue, | |||||
clionExePathValue, androidStudioExePathValue; | clionExePathValue, androidStudioExePathValue; | ||||
Viewport propertyViewport; | Viewport propertyViewport; | ||||
@@ -686,7 +686,7 @@ namespace | |||||
static bool isValidPathIdentifier (const String& id, const String& os) | static bool isValidPathIdentifier (const String& id, const String& os) | ||||
{ | { | ||||
return id == "vst3Path" || id == "vstLegacyPath" || (id == "aaxPath" && os != "linux") || (id == "rtasPath" && os != "linux") | |||||
return id == "vstLegacyPath" || (id == "aaxPath" && os != "linux") || (id == "rtasPath" && os != "linux") | |||||
|| id == "androidSDKPath" || id == "androidNDKPath" || id == "defaultJuceModulePath" || id == "defaultUserModulePath"; | || id == "androidSDKPath" || id == "androidNDKPath" || id == "defaultJuceModulePath" || id == "defaultUserModulePath"; | ||||
} | } | ||||
@@ -848,7 +848,7 @@ namespace | |||||
<< std::endl | << std::endl | ||||
<< " " << appName << " --set-global-search-path os identifier_to_set new_path" << std::endl | << " " << appName << " --set-global-search-path os identifier_to_set new_path" << std::endl | ||||
<< " Sets the global path for a specified os and identifier. The os should be either osx, windows or linux and the identifiers can be any of the following: " | << " Sets the global path for a specified os and identifier. The os should be either osx, windows or linux and the identifiers can be any of the following: " | ||||
<< "defaultJuceModulePath, defaultUserModulePath, vst3Path, vstLegacyPath, aaxPath (not valid on linux), rtasPath (not valid on linux), androidSDKPath or androidNDKPath. " << std::endl | |||||
<< "defaultJuceModulePath, defaultUserModulePath, vstLegacyPath, aaxPath (not valid on linux), rtasPath (not valid on linux), androidSDKPath or androidNDKPath. " << std::endl | |||||
<< std::endl | << std::endl | ||||
<< " " << appName << " --create-project-from-pip path/to/PIP path/to/output path/to/JUCE/modules (optional) path/to/user/modules (optional)" << std::endl | << " " << appName << " --create-project-from-pip path/to/PIP path/to/output path/to/JUCE/modules (optional) path/to/user/modules (optional)" << std::endl | ||||
<< " Generates a folder containing a JUCE project in the specified output path using the specified PIP file. Use the optional JUCE and user module paths to override " | << " Generates a folder containing a JUCE project in the specified output path using the specified PIP file. Use the optional JUCE and user module paths to override " | ||||
@@ -459,11 +459,6 @@ private: | |||||
&& (project.isConfigFlagEnabled ("JUCE_PLUGINHOST_VST3", false) | && (project.isConfigFlagEnabled ("JUCE_PLUGINHOST_VST3", false) | ||||
|| project.isConfigFlagEnabled ("JUCE_PLUGINHOST_VST", false)); | || project.isConfigFlagEnabled ("JUCE_PLUGINHOST_VST", false)); | ||||
auto customVst3Path = getAppSettings().getStoredPath (Ids::vst3Path, TargetOS::getThisOS()).get().toString(); | |||||
if (customVst3Path.isNotEmpty() && (project.isAudioPluginProject() || isVSTHost)) | |||||
paths.add (customVst3Path); | |||||
OwnedArray<LibraryModule> modules; | OwnedArray<LibraryModule> modules; | ||||
project.getEnabledModules().createRequiredModules (modules); | project.getEnabledModules().createRequiredModules (modules); | ||||
@@ -471,9 +466,8 @@ private: | |||||
{ | { | ||||
paths.addIfNotAlreadyThere (module->getFolder().getParentDirectory().getFullPathName()); | paths.addIfNotAlreadyThere (module->getFolder().getParentDirectory().getFullPathName()); | ||||
if (customVst3Path.isEmpty() && (project.isAudioPluginProject() || isVSTHost)) | |||||
if (module->getID() == "juce_audio_processors") | |||||
paths.addIfNotAlreadyThere (module->getFolder().getChildFile ("format_types").getChildFile ("VST3_SDK").getFullPathName()); | |||||
if (module->getID() == "juce_audio_processors" && (project.isAudioPluginProject() || isVSTHost)) | |||||
paths.addIfNotAlreadyThere (module->getFolder().getChildFile ("format_types").getChildFile ("VST3_SDK").getFullPathName()); | |||||
} | } | ||||
return convertSearchPathsToAbsolute (paths); | return convertSearchPathsToAbsolute (paths); | ||||
@@ -126,9 +126,6 @@ public: | |||||
vstLegacyPathValueWrapper.init ({ settings, Ids::vstLegacyFolder, nullptr }, | vstLegacyPathValueWrapper.init ({ settings, Ids::vstLegacyFolder, nullptr }, | ||||
getAppSettings().getStoredPath (Ids::vstLegacyPath, TargetOS::windows), TargetOS::windows); | getAppSettings().getStoredPath (Ids::vstLegacyPath, TargetOS::windows), TargetOS::windows); | ||||
vst3PathValueWrapper.init ({ settings, Ids::vst3Folder, nullptr }, | |||||
getAppSettings().getStoredPath (Ids::vst3Path, TargetOS::windows), TargetOS::windows); | |||||
aaxPathValueWrapper.init ({ settings, Ids::aaxFolder, nullptr }, | aaxPathValueWrapper.init ({ settings, Ids::aaxFolder, nullptr }, | ||||
getAppSettings().getStoredPath (Ids::aaxPath, TargetOS::windows), TargetOS::windows); | getAppSettings().getStoredPath (Ids::aaxPath, TargetOS::windows), TargetOS::windows); | ||||
@@ -646,9 +646,6 @@ public: | |||||
vstLegacyPathValueWrapper.init ({ settings, Ids::vstLegacyFolder, nullptr }, | vstLegacyPathValueWrapper.init ({ settings, Ids::vstLegacyFolder, nullptr }, | ||||
getAppSettings().getStoredPath (Ids::vstLegacyPath, TargetOS::osx), TargetOS::osx); | getAppSettings().getStoredPath (Ids::vstLegacyPath, TargetOS::osx), TargetOS::osx); | ||||
vst3PathValueWrapper.init ({ settings, Ids::vst3Folder, nullptr }, | |||||
getAppSettings().getStoredPath (Ids::vst3Path, TargetOS::osx), TargetOS::osx); | |||||
aaxPathValueWrapper.init ({ settings, Ids::aaxFolder, nullptr }, | aaxPathValueWrapper.init ({ settings, Ids::aaxFolder, nullptr }, | ||||
getAppSettings().getStoredPath (Ids::aaxPath, TargetOS::osx), TargetOS::osx); | getAppSettings().getStoredPath (Ids::aaxPath, TargetOS::osx), TargetOS::osx); | ||||
@@ -308,14 +308,6 @@ void ProjectExporter::createPropertyEditors (PropertyListBuilder& props) | |||||
"This can be an absolute path, or a path relative to the Projucer project file."); | "This can be an absolute path, or a path relative to the Projucer project file."); | ||||
} | } | ||||
if ((shouldBuildTargetType (build_tools::ProjectType::Target::VST3PlugIn) && project.shouldBuildVST3()) || (project.isVST3PluginHost() && supportsTargetType (build_tools::ProjectType::Target::VST3PlugIn))) | |||||
{ | |||||
props.add (new FilePathPropertyComponent (vst3PathValueWrapper.wrappedValue, "VST3 SDK Folder", true, | |||||
getTargetOSForExporter() == TargetOS::getThisOS(), "*", project.getProjectFolder()), | |||||
"If you're building a VST3 plug-in or host, you can use this field to override the global VST3 SDK path with a project-specific path. " | |||||
"This can be an absolute path, or a path relative to the Projucer project file."); | |||||
} | |||||
if (shouldBuildTargetType (build_tools::ProjectType::Target::AAXPlugIn) && project.shouldBuildAAX()) | if (shouldBuildTargetType (build_tools::ProjectType::Target::AAXPlugIn) && project.shouldBuildAAX()) | ||||
{ | { | ||||
props.add (new FilePathPropertyComponent (aaxPathValueWrapper.wrappedValue, "AAX SDK Folder", true, | props.add (new FilePathPropertyComponent (aaxPathValueWrapper.wrappedValue, "AAX SDK Folder", true, | ||||
@@ -404,7 +396,7 @@ void ProjectExporter::addVSTPathsIfPluginOrHost() | |||||
|| ((shouldBuildTargetType (build_tools::ProjectType::Target::VST3PlugIn) && project.shouldBuildVST3()) || project.isVST3PluginHost())) | || ((shouldBuildTargetType (build_tools::ProjectType::Target::VST3PlugIn) && project.shouldBuildVST3()) || project.isVST3PluginHost())) | ||||
{ | { | ||||
addLegacyVSTFolderToPathIfSpecified(); | addLegacyVSTFolderToPathIfSpecified(); | ||||
addVST3FolderToPath(); | |||||
addToExtraSearchPaths (getInternalVST3SDKPath(), 0); | |||||
} | } | ||||
} | } | ||||
@@ -431,16 +423,6 @@ build_tools::RelativePath ProjectExporter::getInternalVST3SDKPath() | |||||
.getChildFile ("VST3_SDK"); | .getChildFile ("VST3_SDK"); | ||||
} | } | ||||
void ProjectExporter::addVST3FolderToPath() | |||||
{ | |||||
auto vst3Folder = getVST3PathString(); | |||||
if (vst3Folder.isNotEmpty()) | |||||
addToExtraSearchPaths (build_tools::RelativePath (vst3Folder, build_tools::RelativePath::projectFolder), 0); | |||||
else | |||||
addToExtraSearchPaths (getInternalVST3SDKPath(), 0); | |||||
} | |||||
void ProjectExporter::addAAXFoldersToPath() | void ProjectExporter::addAAXFoldersToPath() | ||||
{ | { | ||||
auto aaxFolder = getAAXPathString(); | auto aaxFolder = getAAXPathString(); | ||||
@@ -147,7 +147,6 @@ public: | |||||
bool shouldUseGNUExtensions() const { return gnuExtensionsValue.get(); } | bool shouldUseGNUExtensions() const { return gnuExtensionsValue.get(); } | ||||
String getVSTLegacyPathString() const { return vstLegacyPathValueWrapper.wrappedValue.get(); } | String getVSTLegacyPathString() const { return vstLegacyPathValueWrapper.wrappedValue.get(); } | ||||
String getVST3PathString() const { return vst3PathValueWrapper.wrappedValue.get(); } | |||||
String getAAXPathString() const { return aaxPathValueWrapper.wrappedValue.get(); } | String getAAXPathString() const { return aaxPathValueWrapper.wrappedValue.get(); } | ||||
String getRTASPathString() const { return rtasPathValueWrapper.wrappedValue.get(); } | String getRTASPathString() const { return rtasPathValueWrapper.wrappedValue.get(); } | ||||
@@ -359,7 +358,7 @@ protected: | |||||
//============================================================================== | //============================================================================== | ||||
// Wraps a ValueWithDefault object that has a default which depends on a global value. | // Wraps a ValueWithDefault object that has a default which depends on a global value. | ||||
// Used for the VST3, RTAS and AAX project-specific path options. | |||||
// Used for the VST, RTAS and AAX project-specific path options. | |||||
struct ValueWithDefaultWrapper : public Value::Listener | struct ValueWithDefaultWrapper : public Value::Listener | ||||
{ | { | ||||
void init (const ValueWithDefault& vwd, ValueWithDefault global, TargetOS::OS targetOS) | void init (const ValueWithDefault& vwd, ValueWithDefault global, TargetOS::OS targetOS) | ||||
@@ -388,7 +387,7 @@ protected: | |||||
TargetOS::OS os; | TargetOS::OS os; | ||||
}; | }; | ||||
ValueWithDefaultWrapper vstLegacyPathValueWrapper, vst3PathValueWrapper, rtasPathValueWrapper, aaxPathValueWrapper; | |||||
ValueWithDefaultWrapper vstLegacyPathValueWrapper, rtasPathValueWrapper, aaxPathValueWrapper; | |||||
ValueWithDefault targetLocationValue, extraCompilerFlagsValue, extraLinkerFlagsValue, externalLibrariesValue, | ValueWithDefault targetLocationValue, extraCompilerFlagsValue, extraLinkerFlagsValue, externalLibrariesValue, | ||||
userNotesValue, gnuExtensionsValue, bigIconValue, smallIconValue, extraPPDefsValue; | userNotesValue, gnuExtensionsValue, bigIconValue, smallIconValue, extraPPDefsValue; | ||||
@@ -454,7 +453,6 @@ private: | |||||
void addCommonAudioPluginSettings(); | void addCommonAudioPluginSettings(); | ||||
void addLegacyVSTFolderToPathIfSpecified(); | void addLegacyVSTFolderToPathIfSpecified(); | ||||
build_tools::RelativePath getInternalVST3SDKPath(); | build_tools::RelativePath getInternalVST3SDKPath(); | ||||
void addVST3FolderToPath(); | |||||
void addAAXFoldersToPath(); | void addAAXFoldersToPath(); | ||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ProjectExporter) | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ProjectExporter) | ||||
@@ -272,10 +272,6 @@ static bool isGlobalPathValid (const File& relativeTo, const Identifier& key, co | |||||
{ | { | ||||
fileToCheckFor = "pluginterfaces/vst2.x/aeffect.h"; | fileToCheckFor = "pluginterfaces/vst2.x/aeffect.h"; | ||||
} | } | ||||
if (key == Ids::vst3Path) | |||||
{ | |||||
fileToCheckFor = "base/source/baseiids.cpp"; | |||||
} | |||||
else if (key == Ids::rtasPath) | else if (key == Ids::rtasPath) | ||||
{ | { | ||||
fileToCheckFor = "AlturaPorts/TDMPlugIns/PlugInLibrary/EffectClasses/CEffectProcessMIDI.cpp"; | fileToCheckFor = "AlturaPorts/TDMPlugIns/PlugInLibrary/EffectClasses/CEffectProcessMIDI.cpp"; | ||||
@@ -382,7 +378,7 @@ static String getFallbackPathForOS (const Identifier& key, DependencyPathOS os) | |||||
{ | { | ||||
return (os == TargetOS::windows ? "C:\\modules" : "~/modules"); | return (os == TargetOS::windows ? "C:\\modules" : "~/modules"); | ||||
} | } | ||||
else if (key == Ids::vstLegacyPath || key == Ids::vst3Path) | |||||
else if (key == Ids::vstLegacyPath) | |||||
{ | { | ||||
return {}; | return {}; | ||||
} | } | ||||
@@ -67,7 +67,6 @@ namespace Ids | |||||
DECLARE_ID (rtasFolder); | DECLARE_ID (rtasFolder); | ||||
DECLARE_ID (auFolder); | DECLARE_ID (auFolder); | ||||
DECLARE_ID (vstLegacyPath); | DECLARE_ID (vstLegacyPath); | ||||
DECLARE_ID (vst3Path); | |||||
DECLARE_ID (rtasPath); | DECLARE_ID (rtasPath); | ||||
DECLARE_ID (aaxPath); | DECLARE_ID (aaxPath); | ||||
DECLARE_ID (flags); | DECLARE_ID (flags); | ||||