mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-21 01:24:21 +00:00
Introjucer: more AAX support and some clean-ups.
This commit is contained in:
parent
165bed1fbf
commit
9074f68da8
14 changed files with 86 additions and 23 deletions
|
|
@ -20,6 +20,7 @@ static const unsigned char temp_43731c40[] =
|
|||
"copyAU=`nm -g \"$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH\" | grep -i 'AudioUnit' | wc -l`\r\n"
|
||||
"copyVST=`nm -g \"$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH\" | grep -i 'VSTPlugin' | wc -l`\r\n"
|
||||
"copyRTAS=`nm -g \"$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH\" | grep -i 'CProcess' | wc -l`\r\n"
|
||||
"copyAAX=`nm -g \"$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH\" | grep -i 'GetEffectDescriptions' | wc -l`\r\n"
|
||||
"\r\n"
|
||||
"if [ $copyAU -gt 0 ]; then\r\n"
|
||||
" echo \"Copying to AudioUnit folder...\"\r\n"
|
||||
|
|
@ -53,6 +54,30 @@ static const unsigned char temp_43731c40[] =
|
|||
" fi\r\n"
|
||||
"\r\n"
|
||||
" cp -r \"$original\" \"$RTAS\"\r\n"
|
||||
"fi\r\n"
|
||||
"\r\n"
|
||||
"if [ $copyAAX -gt 0 ]; then\r\n"
|
||||
" echo \"Copying to AAX folder...\"\r\n"
|
||||
"\r\n"
|
||||
" if [ -d \"/Applications/ProTools_3PDev/Plug-Ins\" ]; then\r\n"
|
||||
" AAX1=\"/Applications/ProTools_3PDev/Plug-Ins/$PRODUCT_NAME.aaxplugin\"\r\n"
|
||||
"\r\n"
|
||||
" if [ -d \"$AAX1\" ]; then\r\n"
|
||||
" rm -r \"$AAX1\"\r\n"
|
||||
" fi\r\n"
|
||||
"\r\n"
|
||||
" cp -r \"$original\" \"$AAX1\"\r\n"
|
||||
" fi\r\n"
|
||||
"\r\n"
|
||||
" if [ -d \"/Library/Application Support/Avid/Audio/Plug-Ins\" ]; then\r\n"
|
||||
" AAX2=\"/Library/Application Support/Avid/Audio/Plug-Ins/$PRODUCT_NAME.aaxplugin\"\r\n"
|
||||
"\r\n"
|
||||
" if [ -d \"$AAX2\" ]; then\r\n"
|
||||
" rm -r \"$AAX2\"\r\n"
|
||||
" fi\r\n"
|
||||
"\r\n"
|
||||
" cp -r \"$original\" \"$AAX2\"\r\n"
|
||||
" fi\r\n"
|
||||
"fi\r\n";
|
||||
|
||||
const char* AudioPluginXCodeScript_txt = (const char*) temp_43731c40;
|
||||
|
|
@ -1137,7 +1162,7 @@ const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) throw
|
|||
switch (hash)
|
||||
{
|
||||
case 0x44be9398:
|
||||
case 0x2981a553: numBytes = 1449; return AudioPluginXCodeScript_txt;
|
||||
case 0x2981a553: numBytes = 2112; return AudioPluginXCodeScript_txt;
|
||||
case 0x950fd7dd:
|
||||
case 0xa6cfe0e2: numBytes = 14724; return brushed_aluminium_png;
|
||||
case 0xabd76fe2:
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
namespace BinaryData
|
||||
{
|
||||
extern const char* AudioPluginXCodeScript_txt;
|
||||
const int AudioPluginXCodeScript_txtSize = 1449;
|
||||
const int AudioPluginXCodeScript_txtSize = 2112;
|
||||
|
||||
extern const char* brushed_aluminium_png;
|
||||
const int brushed_aluminium_pngSize = 14724;
|
||||
|
|
|
|||
|
|
@ -231,7 +231,7 @@ namespace
|
|||
}
|
||||
|
||||
std::cout << "Project file: " << projectFile.getFullPathName() << std::endl
|
||||
<< "Name: " << proj.getProjectName().toString() << std::endl
|
||||
<< "Name: " << proj.getTitle() << std::endl
|
||||
<< "UID: " << proj.getProjectUID() << std::endl;
|
||||
|
||||
const int numModules = proj.getNumModules();
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ original=$CONFIGURATION_BUILD_DIR/$FULL_PRODUCT_NAME
|
|||
copyAU=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'AudioUnit' | wc -l`
|
||||
copyVST=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'VSTPlugin' | wc -l`
|
||||
copyRTAS=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'CProcess' | wc -l`
|
||||
copyAAX=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'GetEffectDescriptions' | wc -l`
|
||||
|
||||
if [ $copyAU -gt 0 ]; then
|
||||
echo "Copying to AudioUnit folder..."
|
||||
|
|
@ -42,3 +43,27 @@ if [ $copyRTAS -gt 0 ]; then
|
|||
|
||||
cp -r "$original" "$RTAS"
|
||||
fi
|
||||
|
||||
if [ $copyAAX -gt 0 ]; then
|
||||
echo "Copying to AAX folder..."
|
||||
|
||||
if [ -d "/Applications/ProTools_3PDev/Plug-Ins" ]; then
|
||||
AAX1="/Applications/ProTools_3PDev/Plug-Ins/$PRODUCT_NAME.aaxplugin"
|
||||
|
||||
if [ -d "$AAX1" ]; then
|
||||
rm -r "$AAX1"
|
||||
fi
|
||||
|
||||
cp -r "$original" "$AAX1"
|
||||
fi
|
||||
|
||||
if [ -d "/Library/Application Support/Avid/Audio/Plug-Ins" ]; then
|
||||
AAX2="/Library/Application Support/Avid/Audio/Plug-Ins/$PRODUCT_NAME.aaxplugin"
|
||||
|
||||
if [ -d "$AAX2" ]; then
|
||||
rm -r "$AAX2"
|
||||
fi
|
||||
|
||||
cp -r "$original" "$AAX2"
|
||||
fi
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ protected:
|
|||
File getProjectFile (const String& extension) const { return getTargetFolder().getChildFile (project.getProjectFilenameRoot()).withFileExtension (extension); }
|
||||
|
||||
Value getLibraryType() { return getSetting (Ids::libraryType); }
|
||||
String getLibraryString() const { return getSettingString (Ids::libraryType); }
|
||||
bool isLibraryDLL() const { return msvcIsDLL || (projectType.isLibrary() && (int) settings [Ids::libraryType] == 2); }
|
||||
|
||||
static String prependIfNotAbsolute (const String& file, const char* prefix)
|
||||
|
|
@ -89,7 +90,7 @@ protected:
|
|||
void updateOldSettings()
|
||||
{
|
||||
{
|
||||
const String oldStylePrebuildCommand (getSetting (Ids::prebuildCommand).toString());
|
||||
const String oldStylePrebuildCommand (getSettingString (Ids::prebuildCommand));
|
||||
settings.removeProperty (Ids::prebuildCommand, nullptr);
|
||||
|
||||
if (oldStylePrebuildCommand.isNotEmpty())
|
||||
|
|
@ -98,7 +99,7 @@ protected:
|
|||
}
|
||||
|
||||
{
|
||||
const String oldStyleLibName (getSetting ("libraryName_Debug").toString());
|
||||
const String oldStyleLibName (getSettingString ("libraryName_Debug"));
|
||||
settings.removeProperty ("libraryName_Debug", nullptr);
|
||||
|
||||
if (oldStyleLibName.isNotEmpty())
|
||||
|
|
@ -108,7 +109,7 @@ protected:
|
|||
}
|
||||
|
||||
{
|
||||
const String oldStyleLibName (getSetting ("libraryName_Release").toString());
|
||||
const String oldStyleLibName (getSettingString ("libraryName_Release"));
|
||||
settings.removeProperty ("libraryName_Release", nullptr);
|
||||
|
||||
if (oldStyleLibName.isNotEmpty())
|
||||
|
|
@ -451,9 +452,9 @@ protected:
|
|||
<< " BEGIN" << newLine;
|
||||
|
||||
writeRCValue (mo, "CompanyName", project.getCompanyName().toString());
|
||||
writeRCValue (mo, "FileDescription", project.getProjectName().toString());
|
||||
writeRCValue (mo, "FileDescription", project.getTitle());
|
||||
writeRCValue (mo, "FileVersion", version);
|
||||
writeRCValue (mo, "ProductName", project.getProjectName().toString());
|
||||
writeRCValue (mo, "ProductName", project.getTitle());
|
||||
writeRCValue (mo, "ProductVersion", version);
|
||||
|
||||
mo << " END" << newLine
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ ProjectExporter::ProjectExporter (Project& project_, const ValueTree& settings_)
|
|||
settings (settings_),
|
||||
project (project_),
|
||||
projectType (project_.getProjectType()),
|
||||
projectName (project_.getProjectName().toString()),
|
||||
projectName (project_.getTitle()),
|
||||
projectFolder (project_.getFile().getParentDirectory()),
|
||||
modulesGroup (nullptr)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -416,7 +416,7 @@ private:
|
|||
<< newLine
|
||||
<< "namespace ProjectInfo" << newLine
|
||||
<< "{" << newLine
|
||||
<< " const char* const projectName = " << CodeHelpers::addEscapeChars (project.getProjectName().toString()).quoted() << ";" << newLine
|
||||
<< " const char* const projectName = " << CodeHelpers::addEscapeChars (project.getTitle()).quoted() << ";" << newLine
|
||||
<< " const char* const versionString = " << CodeHelpers::addEscapeChars (project.getVersionString()).quoted() << ";" << newLine
|
||||
<< " const int versionNumber = " << project.getVersionAsHex() << ";" << newLine
|
||||
<< "}" << newLine
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@ namespace
|
|||
Value getPluginAUCocoaViewClassName (Project& project) { return project.getProjectValue ("pluginAUViewClass"); }
|
||||
Value getPluginAUMainType (Project& project) { return project.getProjectValue ("pluginAUMainType"); }
|
||||
Value getPluginRTASCategory (Project& project) { return project.getProjectValue ("pluginRTASCategory"); }
|
||||
Value getPluginAAXCategory (Project& project) { return project.getProjectValue ("pluginAAXCategory"); }
|
||||
|
||||
String getPluginRTASCategoryCode (Project& project)
|
||||
{
|
||||
|
|
@ -135,7 +136,7 @@ namespace
|
|||
flags.set ("JucePlugin_AAXManufacturerCode", "JucePlugin_ManufacturerCode");
|
||||
flags.set ("JucePlugin_AAXProductId", "JucePlugin_PluginCode");
|
||||
flags.set ("JucePlugin_AAXPluginId", "JucePlugin_PluginCode");
|
||||
flags.set ("JucePlugin_AAXCategory", "AAX_ePlugInCategory_None");
|
||||
flags.set ("JucePlugin_AAXCategory", getPluginAAXCategory (project).toString());
|
||||
|
||||
MemoryOutputStream mem;
|
||||
|
||||
|
|
|
|||
|
|
@ -78,9 +78,14 @@ void Project::setTitle (const String& newTitle)
|
|||
getMainGroup().getNameValue() = newTitle;
|
||||
}
|
||||
|
||||
String Project::getTitle() const
|
||||
{
|
||||
return projectRoot.getChildWithName (Tags::projectMainGroup) [Ids::name];
|
||||
}
|
||||
|
||||
String Project::getDocumentTitle()
|
||||
{
|
||||
return getProjectName().toString();
|
||||
return getTitle();
|
||||
}
|
||||
|
||||
void Project::updateProjectSettings()
|
||||
|
|
@ -337,7 +342,7 @@ const ProjectType& Project::getProjectType() const
|
|||
//==============================================================================
|
||||
void Project::createPropertyEditors (PropertyListBuilder& props)
|
||||
{
|
||||
props.add (new TextPropertyComponent (getProjectName(), "Project Name", 256, false),
|
||||
props.add (new TextPropertyComponent (getProjectNameValue(), "Project Name", 256, false),
|
||||
"The name of the project.");
|
||||
|
||||
props.add (new TextPropertyComponent (getVersionValue(), "Project Version", 16, false),
|
||||
|
|
|
|||
|
|
@ -55,7 +55,8 @@ public:
|
|||
|
||||
//==============================================================================
|
||||
ValueTree getProjectRoot() const { return projectRoot; }
|
||||
Value getProjectName() { return getMainGroup().getNameValue(); }
|
||||
String getTitle() const;
|
||||
Value getProjectNameValue() { return getMainGroup().getNameValue(); }
|
||||
String getProjectFilenameRoot() { return File::createLegalFileName (getDocumentTitle()); }
|
||||
String getProjectUID() const { return projectRoot [ComponentBuilder::idProperty]; }
|
||||
|
||||
|
|
@ -84,7 +85,7 @@ public:
|
|||
String getVersionAsHex() const;
|
||||
|
||||
Value getBundleIdentifier() { return getProjectValue (Ids::bundleIdentifier); }
|
||||
String getDefaultBundleIdentifier() { return "com.yourcompany." + CodeHelpers::makeValidIdentifier (getProjectName().toString(), false, true, false); }
|
||||
String getDefaultBundleIdentifier() { return "com.yourcompany." + CodeHelpers::makeValidIdentifier (getTitle(), false, true, false); }
|
||||
|
||||
Value getAAXIdentifier() { return getProjectValue (Ids::aaxIdentifier); }
|
||||
String getDefaultAAXIdentifier() { return getDefaultBundleIdentifier(); }
|
||||
|
|
|
|||
|
|
@ -898,7 +898,7 @@ struct ProjectSettingsTreeClasses
|
|||
|
||||
bool isRoot() const { return true; }
|
||||
String getRenamingName() const { return getDisplayName(); }
|
||||
String getDisplayName() const { return project.getProjectName().toString(); }
|
||||
String getDisplayName() const { return project.getTitle(); }
|
||||
void setName (const String&) {}
|
||||
bool isMissing() { return false; }
|
||||
const Drawable* getIcon() const { return project.getMainGroup().getIcon(); }
|
||||
|
|
|
|||
|
|
@ -173,13 +173,13 @@ public:
|
|||
|
||||
void setMissingProjectProperties (Project& project) const
|
||||
{
|
||||
const String sanitisedProjectName (CodeHelpers::makeValidIdentifier (project.getProjectName().toString(), false, true, false));
|
||||
const String sanitisedProjectName (CodeHelpers::makeValidIdentifier (project.getTitle(), false, true, false));
|
||||
|
||||
setValueIfVoid (shouldBuildVST (project), true);
|
||||
setValueIfVoid (shouldBuildAU (project), true);
|
||||
|
||||
setValueIfVoid (getPluginName (project), project.getProjectName().toString());
|
||||
setValueIfVoid (getPluginDesc (project), project.getProjectName().toString());
|
||||
setValueIfVoid (getPluginName (project), project.getTitle());
|
||||
setValueIfVoid (getPluginDesc (project), project.getTitle());
|
||||
setValueIfVoid (getPluginManufacturer (project), "yourcompany");
|
||||
setValueIfVoid (getPluginManufacturerCode (project), "Manu");
|
||||
setValueIfVoid (getPluginCode (project), "Plug");
|
||||
|
|
@ -195,6 +195,7 @@ public:
|
|||
setValueIfVoid (getPluginRTASCategory (project), String::empty);
|
||||
setValueIfVoid (project.getBundleIdentifier(), project.getDefaultBundleIdentifier());
|
||||
setValueIfVoid (project.getAAXIdentifier(), project.getDefaultAAXIdentifier());
|
||||
setValueIfVoid (getPluginAAXCategory (project), "AAX_ePlugInCategory_Dynamics");
|
||||
}
|
||||
|
||||
void createPropertyEditors (Project& project, PropertyListBuilder& props) const
|
||||
|
|
@ -205,8 +206,8 @@ public:
|
|||
"Whether the project should produce an AudioUnit plugin.");
|
||||
props.add (new BooleanPropertyComponent (shouldBuildRTAS (project), "Build RTAS", "Enabled"),
|
||||
"Whether the project should produce an RTAS plugin.");
|
||||
// props.add (new BooleanPropertyComponent (shouldBuildAAX (project), "Build AAX", "Enabled"),
|
||||
// "Whether the project should produce an AAX plugin.");
|
||||
props.add (new BooleanPropertyComponent (shouldBuildAAX (project), "Build AAX", "Enabled"),
|
||||
"Whether the project should produce an AAX plugin.");
|
||||
|
||||
props.add (new TextPropertyComponent (getPluginName (project), "Plugin Name", 128, false),
|
||||
"The name of your plugin (keep it short!)");
|
||||
|
|
@ -258,6 +259,9 @@ public:
|
|||
"ePlugInCategory_PitchShift, ePlugInCategory_Reverb, ePlugInCategory_Delay, "
|
||||
"ePlugInCategory_Modulation, ePlugInCategory_Harmonic, ePlugInCategory_NoiseReduction, "
|
||||
"ePlugInCategory_Dither, ePlugInCategory_SoundField");
|
||||
|
||||
props.add (new TextPropertyComponent (getPluginAAXCategory (project), "Plugin AAX Category", 64, false),
|
||||
"This is one of the RTAS categories from the AAX_EPlugInCategory enum");
|
||||
}
|
||||
|
||||
void prepareExporter (ProjectExporter& exporter) const
|
||||
|
|
@ -315,7 +319,7 @@ public:
|
|||
d->createNewChildElement ("array")
|
||||
->createNewChildElement ("string")->setText (exeName);
|
||||
d->createNewChildElement ("key")->setText ("WebPluginTypeDescription");
|
||||
d->createNewChildElement ("string")->setText (exporter.getProject().getProjectName().toString());
|
||||
d->createNewChildElement ("string")->setText (exporter.getProject().getTitle());
|
||||
|
||||
exporter.xcodeExtraPListEntries.add (mimeTypesKey);
|
||||
exporter.xcodeExtraPListEntries.add (mimeTypesEntry);
|
||||
|
|
|
|||
|
|
@ -79,6 +79,7 @@ namespace Ids
|
|||
DECLARE_ID (buildVST);
|
||||
DECLARE_ID (bundleIdentifier);
|
||||
DECLARE_ID (aaxIdentifier);
|
||||
DECLARE_ID (aaxCategory);
|
||||
DECLARE_ID (aaxFolder);
|
||||
DECLARE_ID (compile);
|
||||
DECLARE_ID (noWarnings);
|
||||
|
|
|
|||
|
|
@ -573,7 +573,7 @@ public:
|
|||
Graphics g (icon);
|
||||
g.fillAll (Colours::lightblue);
|
||||
g.setColour (Colours::black);
|
||||
g.setFont ((float) icon.getHeight(), Font::bold);
|
||||
g.setFont (Font ((float) icon.getHeight(), Font::bold));
|
||||
g.drawText ("j", 0, 0, icon.getWidth(), icon.getHeight(), Justification::centred, false);
|
||||
|
||||
setIconImage (icon);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue