Browse Source

First check-in of the "jucequake": a major re-organisation of the library to break it up into modules. For more details about this, see the website forum..

tags/2021-05-28
Julian Storer 13 years ago
parent
commit
b70e0a28d2
100 changed files with 14070 additions and 17026 deletions
  1. +40
    -30
      .gitignore
  2. +0
    -2056
      Builds/Linux/Makefile
  3. +0
    -2442
      Builds/MacOSX/Juce.xcodeproj/project.pbxproj
  4. +0
    -19
      Builds/VisualStudio2005/Juce.sln
  5. +0
    -1038
      Builds/VisualStudio2005/Juce.vcproj
  6. +0
    -19
      Builds/VisualStudio2008/Juce.sln
  7. +0
    -1038
      Builds/VisualStudio2008/Juce.vcproj
  8. +0
    -19
      Builds/VisualStudio2008_DLL/Juce.sln
  9. +0
    -1040
      Builds/VisualStudio2008_DLL/Juce.vcproj
  10. +0
    -18
      Builds/VisualStudio2010/Juce.sln
  11. +0
    -845
      Builds/VisualStudio2010/Juce.vcxproj
  12. +0
    -2446
      Builds/VisualStudio2010/Juce.vcxproj.filters
  13. +0
    -2446
      Builds/iOS/Juce.xcodeproj/project.pbxproj
  14. +0
    -1640
      Juce.jucer
  15. +28
    -361
      amalgamation/juce_amalgamated_template.cpp
  16. +0
    -1
      bin/ReadMe.txt
  17. +44
    -14
      extras/Introjucer/Builds/Linux/Makefile
  18. BIN
      extras/Introjucer/Builds/MacOSX/Icon.icns
  19. +1477
    -17
      extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj
  20. +3421
    -4
      extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj
  21. BIN
      extras/Introjucer/Builds/VisualStudio2005/icon.ico
  22. +3421
    -4
      extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj
  23. BIN
      extras/Introjucer/Builds/VisualStudio2008/icon.ico
  24. +1211
    -4
      extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj
  25. +2303
    -128
      extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters
  26. BIN
      extras/Introjucer/Builds/VisualStudio2010/icon.ico
  27. +22
    -9
      extras/Introjucer/Introjucer.jucer
  28. +21
    -25
      extras/Introjucer/JuceLibraryCode/AppConfig.h
  29. +3
    -3
      extras/Introjucer/JuceLibraryCode/BinaryData.cpp
  30. +3
    -3
      extras/Introjucer/JuceLibraryCode/BinaryData.h
  31. +16
    -3
      extras/Introjucer/JuceLibraryCode/JuceHeader.h
  32. +0
    -15
      extras/Introjucer/JuceLibraryCode/JuceLibraryCode1.cpp
  33. +0
    -15
      extras/Introjucer/JuceLibraryCode/JuceLibraryCode1.mm
  34. +0
    -15
      extras/Introjucer/JuceLibraryCode/JuceLibraryCode2.cpp
  35. +0
    -15
      extras/Introjucer/JuceLibraryCode/JuceLibraryCode2.mm
  36. +0
    -15
      extras/Introjucer/JuceLibraryCode/JuceLibraryCode3.cpp
  37. +0
    -15
      extras/Introjucer/JuceLibraryCode/JuceLibraryCode3.mm
  38. +0
    -15
      extras/Introjucer/JuceLibraryCode/JuceLibraryCode4.cpp
  39. +0
    -15
      extras/Introjucer/JuceLibraryCode/JuceLibraryCode4.mm
  40. +12
    -0
      extras/Introjucer/JuceLibraryCode/ReadMe.txt
  41. +14
    -0
      extras/Introjucer/JuceLibraryCode/juce_audio_basics_wrapper.cpp
  42. +14
    -0
      extras/Introjucer/JuceLibraryCode/juce_audio_basics_wrapper.mm
  43. +14
    -0
      extras/Introjucer/JuceLibraryCode/juce_core_wrapper.cpp
  44. +14
    -0
      extras/Introjucer/JuceLibraryCode/juce_core_wrapper.mm
  45. +14
    -0
      extras/Introjucer/JuceLibraryCode/juce_cryptography_wrapper.cpp
  46. +14
    -0
      extras/Introjucer/JuceLibraryCode/juce_cryptography_wrapper.mm
  47. +14
    -0
      extras/Introjucer/JuceLibraryCode/juce_data_structures_wrapper.cpp
  48. +14
    -0
      extras/Introjucer/JuceLibraryCode/juce_data_structures_wrapper.mm
  49. +14
    -0
      extras/Introjucer/JuceLibraryCode/juce_events_wrapper.cpp
  50. +14
    -0
      extras/Introjucer/JuceLibraryCode/juce_events_wrapper.mm
  51. +14
    -0
      extras/Introjucer/JuceLibraryCode/juce_graphics_wrapper.cpp
  52. +14
    -0
      extras/Introjucer/JuceLibraryCode/juce_graphics_wrapper.mm
  53. +14
    -0
      extras/Introjucer/JuceLibraryCode/juce_gui_basics_wrapper.cpp
  54. +14
    -0
      extras/Introjucer/JuceLibraryCode/juce_gui_basics_wrapper.mm
  55. +14
    -0
      extras/Introjucer/JuceLibraryCode/juce_gui_extra_wrapper.cpp
  56. +14
    -0
      extras/Introjucer/JuceLibraryCode/juce_gui_extra_wrapper.mm
  57. +4
    -4
      extras/Introjucer/Source/Application/jucer_Application.h
  58. +1
    -1
      extras/Introjucer/Source/Application/jucer_CommandIDs.h
  59. +4
    -4
      extras/Introjucer/Source/Application/jucer_CommonHeaders.h
  60. +1
    -1
      extras/Introjucer/Source/Application/jucer_DocumentEditorComponent.cpp
  61. +1
    -1
      extras/Introjucer/Source/Application/jucer_DocumentEditorComponent.h
  62. +1
    -1
      extras/Introjucer/Source/Application/jucer_FilePreviewComponent.cpp
  63. +4
    -4
      extras/Introjucer/Source/Application/jucer_FilePreviewComponent.h
  64. +2
    -2
      extras/Introjucer/Source/Application/jucer_JuceUpdater.cpp
  65. +4
    -4
      extras/Introjucer/Source/Application/jucer_JuceUpdater.h
  66. +1
    -1
      extras/Introjucer/Source/Application/jucer_Main.cpp
  67. +5
    -5
      extras/Introjucer/Source/Application/jucer_MainWindow.cpp
  68. +1
    -1
      extras/Introjucer/Source/Application/jucer_MainWindow.h
  69. +1
    -1
      extras/Introjucer/Source/Application/jucer_OpenDocumentManager.cpp
  70. +1
    -1
      extras/Introjucer/Source/Application/jucer_OpenDocumentManager.h
  71. +1
    -1
      extras/Introjucer/Source/BinaryData/jucer_AudioPluginEditorTemplate.cpp
  72. +1
    -1
      extras/Introjucer/Source/BinaryData/jucer_AudioPluginEditorTemplate.h
  73. +1
    -1
      extras/Introjucer/Source/BinaryData/jucer_MainTemplate.cpp
  74. +1
    -1
      extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.cpp
  75. +1
    -1
      extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.h
  76. +398
    -0
      extras/Introjucer/Source/Project/jucer_AudioPluginModule.h
  77. +1
    -1
      extras/Introjucer/Source/Project/jucer_GroupInformationComponent.cpp
  78. +1
    -1
      extras/Introjucer/Source/Project/jucer_GroupInformationComponent.h
  79. +354
    -0
      extras/Introjucer/Source/Project/jucer_JuceLibraryModule.h
  80. +157
    -0
      extras/Introjucer/Source/Project/jucer_Module.cpp
  81. +81
    -0
      extras/Introjucer/Source/Project/jucer_Module.h
  82. +3
    -3
      extras/Introjucer/Source/Project/jucer_NewFileWizard.cpp
  83. +1
    -1
      extras/Introjucer/Source/Project/jucer_NewFileWizard.h
  84. +13
    -18
      extras/Introjucer/Source/Project/jucer_NewProjectWizard.cpp
  85. +4
    -4
      extras/Introjucer/Source/Project/jucer_NewProjectWizard.h
  86. +145
    -68
      extras/Introjucer/Source/Project/jucer_Project.cpp
  87. +17
    -29
      extras/Introjucer/Source/Project/jucer_Project.h
  88. +1
    -1
      extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp
  89. +1
    -1
      extras/Introjucer/Source/Project/jucer_ProjectContentComponent.h
  90. +6
    -6
      extras/Introjucer/Source/Project/jucer_ProjectExport_Android.h
  91. +21
    -24
      extras/Introjucer/Source/Project/jucer_ProjectExport_MSVC.h
  92. +11
    -13
      extras/Introjucer/Source/Project/jucer_ProjectExport_Make.h
  93. +7
    -9
      extras/Introjucer/Source/Project/jucer_ProjectExport_XCode.h
  94. +34
    -13
      extras/Introjucer/Source/Project/jucer_ProjectExporter.cpp
  95. +6
    -3
      extras/Introjucer/Source/Project/jucer_ProjectExporter.h
  96. +338
    -38
      extras/Introjucer/Source/Project/jucer_ProjectInformationComponent.cpp
  97. +178
    -104
      extras/Introjucer/Source/Project/jucer_ProjectSaver.h
  98. +1
    -1
      extras/Introjucer/Source/Project/jucer_ProjectTreeViewBase.cpp
  99. +1
    -1
      extras/Introjucer/Source/Project/jucer_ProjectTreeViewBase.h
  100. +8
    -859
      extras/Introjucer/Source/Project/jucer_ProjectType.cpp

+ 40
- 30
.gitignore View File

@@ -18,41 +18,51 @@
.DS_Store
.svn
profile
extras/juce demo/Builds/MacOSX/build
extras/juce demo/Builds/Linux/build
extras/juce demo/Builds/VisualStudio2005/Debug
extras/juce demo/Builds/VisualStudio2005/Release
extras/juce demo/Builds/VisualStudio2008/Debug
extras/juce demo/Builds/VisualStudio2008/Release
extras/juce demo/Builds/iPhone/build
extras/audio plugins/demo/Builds/MacOSX/build
extras/audio plugins/demo/Builds/Linux/build
extras/audio plugins/demo/Builds/VisualStudio2005/Debug
extras/audio plugins/demo/Builds/VisualStudio2005/Release
extras/audio plugins/demo/Builds/VisualStudio2008/Debug
extras/audio plugins/demo/Builds/VisualStudio2008/Release
extras/JuceDemo/Builds/MacOSX/build
extras/JuceDemo/Builds/Linux/build
extras/JuceDemo/Builds/VisualStudio2005/Debug
extras/JuceDemo/Builds/VisualStudio2005/Release
extras/JuceDemo/Builds/VisualStudio2008/Debug
extras/JuceDemo/Builds/VisualStudio2008/Release
extras/JuceDemo/Builds/VisualStudio2010/Debug
extras/JuceDemo/Builds/VisualStudio2010/Release
extras/JuceDemo/Builds/Android/bin
extras/JuceDemo/Builds/Android/src/com
extras/JuceDemo/Builds/iPhone/build
extras/audio plugin demo/Builds/MacOSX/build
extras/audio plugin demo/Builds/Linux/build
extras/audio plugin demo/Builds/VisualStudio2005/Debug
extras/audio plugin demo/Builds/VisualStudio2005/Release
extras/audio plugin demo/Builds/VisualStudio2008/Debug
extras/audio plugin demo/Builds/VisualStudio2008/Release
extras/audio plugin host/Builds/MacOSX/build
extras/audio plugin host/Builds/Linux/build
extras/audio plugin host/Builds/VisualStudio2005/Debug
extras/audio plugin host/Builds/VisualStudio2005/Release
extras/audio plugin host/Builds/VisualStudio2008/Debug
extras/audio plugin host/Builds/VisualStudio2008/Release
extras/Jucer (experimental)/Builds/MacOSX/build
extras/Jucer (experimental)/Builds/Linux/build
extras/Jucer (experimental)/Builds/VisualStudio2005/Debug
extras/Jucer (experimental)/Builds/VisualStudio2005/Release
extras/Jucer (experimental)/Builds/VisualStudio2008/Debug
extras/Jucer (experimental)/Builds/VisualStudio2008/Release
extras/Jucer (experimental)/Builds/iPhone/build
extras/Introjucer/Builds/MacOSX/build
extras/Introjucer/Builds/Linux/build
extras/Introjucer/Builds/VisualStudio2005/Debug
extras/Introjucer/Builds/VisualStudio2005/Release
extras/Introjucer/Builds/VisualStudio2008/Debug
extras/Introjucer/Builds/VisualStudio2008/Release
extras/Introjucer/Builds/VisualStudio2010/Debug
extras/Introjucer/Builds/VisualStudio2010/Release
extras/the jucer/build/mac/build
extras/audio plugin host/build/mac/build
extras/binarybuilder/mac/build
extras/prebuilt/Jucer.app
extras/prebuilt/jucedemo.app
extras/prebuilt/PluginHost.app
bin/intermediate*
bin/lib*
bin/jucelib*
bin/JUCE*
Builds/VisualStudio2008_DLL/Debug
Builds/VisualStudio2008_DLL/Release
extras/binarybuilder/Builds/MacOSX/build
extras/binarybuilder/Builds/Linux/build
extras/binarybuilder/Builds/VisualStudio2005/Debug
extras/binarybuilder/Builds/VisualStudio2005/Release
extras/binarybuilder/Builds/VisualStudio2008/Debug
extras/binarybuilder/Builds/VisualStudio2008/Release
extras/binarybuilder/Builds/VisualStudio2010/Debug
extras/binarybuilder/Builds/VisualStudio2010/Release
extras/static library/Builds/MacOSX/build
extras/static library/Builds/VisualStudio2008/Debug
extras/static library/Builds/VisualStudio2008/Release
extras/static library/Builds/VisualStudio2010/Debug
extras/static library/Builds/VisualStudio2010/Release
extras/windows dll/Builds/VisualStudio2008/Debug
extras/windows dll/Builds/VisualStudio2008/Release

+ 0
- 2056
Builds/Linux/Makefile
File diff suppressed because it is too large
View File


+ 0
- 2442
Builds/MacOSX/Juce.xcodeproj/project.pbxproj
File diff suppressed because it is too large
View File


+ 0
- 19
Builds/VisualStudio2005/Juce.sln View File

@@ -1,19 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 8.00
# Visual C++ Express 2005
Project("{30DE6365-A0C4-171D-3ADD-E102A1BD1BB8}") = "Juce", "Juce.vcproj", "{2F2AF28C-CD42-F164-1AC5-90A9ACD39DD3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{2F2AF28C-CD42-F164-1AC5-90A9ACD39DD3}.Debug|Win32.ActiveCfg = Debug|Win32
{2F2AF28C-CD42-F164-1AC5-90A9ACD39DD3}.Debug|Win32.Build.0 = Debug|Win32
{2F2AF28C-CD42-F164-1AC5-90A9ACD39DD3}.Release|Win32.ActiveCfg = Release|Win32
{2F2AF28C-CD42-F164-1AC5-90A9ACD39DD3}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

+ 0
- 1038
Builds/VisualStudio2005/Juce.vcproj
File diff suppressed because it is too large
View File


+ 0
- 19
Builds/VisualStudio2008/Juce.sln View File

@@ -1,19 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual C++ Express 2008
Project("{30DE6365-A0C4-171D-3ADD-E102A1BD1BB8}") = "Juce", "Juce.vcproj", "{2F2AF28C-CD42-F164-1AC5-90A9ACD39DD3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{2F2AF28C-CD42-F164-1AC5-90A9ACD39DD3}.Debug|Win32.ActiveCfg = Debug|Win32
{2F2AF28C-CD42-F164-1AC5-90A9ACD39DD3}.Debug|Win32.Build.0 = Debug|Win32
{2F2AF28C-CD42-F164-1AC5-90A9ACD39DD3}.Release|Win32.ActiveCfg = Release|Win32
{2F2AF28C-CD42-F164-1AC5-90A9ACD39DD3}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

+ 0
- 1038
Builds/VisualStudio2008/Juce.vcproj
File diff suppressed because it is too large
View File


+ 0
- 19
Builds/VisualStudio2008_DLL/Juce.sln View File

@@ -1,19 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual C++ Express 2008
Project("{30DE6365-A0C4-171D-3ADD-E102A1BD1BB8}") = "Juce", "Juce.vcproj", "{2F2AF28C-CD42-F164-1AC5-90A9ACD39DD3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{2F2AF28C-CD42-F164-1AC5-90A9ACD39DD3}.Debug|Win32.ActiveCfg = Debug|Win32
{2F2AF28C-CD42-F164-1AC5-90A9ACD39DD3}.Debug|Win32.Build.0 = Debug|Win32
{2F2AF28C-CD42-F164-1AC5-90A9ACD39DD3}.Release|Win32.ActiveCfg = Release|Win32
{2F2AF28C-CD42-F164-1AC5-90A9ACD39DD3}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

+ 0
- 1040
Builds/VisualStudio2008_DLL/Juce.vcproj
File diff suppressed because it is too large
View File


+ 0
- 18
Builds/VisualStudio2010/Juce.sln View File

@@ -1,18 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 11.00
Project("{30DE6365-A0C4-171D-3ADD-E102A1BD1BB8}") = "Juce", "Juce.vcxproj", "{2F2AF28C-CD42-F164-1AC5-90A9ACD39DD3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{2F2AF28C-CD42-F164-1AC5-90A9ACD39DD3}.Debug|Win32.ActiveCfg = Debug|Win32
{2F2AF28C-CD42-F164-1AC5-90A9ACD39DD3}.Debug|Win32.Build.0 = Debug|Win32
{2F2AF28C-CD42-F164-1AC5-90A9ACD39DD3}.Release|Win32.ActiveCfg = Release|Win32
{2F2AF28C-CD42-F164-1AC5-90A9ACD39DD3}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

+ 0
- 845
Builds/VisualStudio2010/Juce.vcxproj View File

@@ -1,845 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{2F2AF28C-CD42-F164-1AC5-90A9ACD39DD3}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/>
<ImportGroup Label="ExtensionSettings"/>
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')"
Label="LocalAppDataPlatform"/>
</ImportGroup>
<PropertyGroup Label="UserMacros"/>
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\..\..\bin\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\..\..\bin\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">jucelib_static_Win32_debug</TargetName>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\..\..\bin\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\..\..\bin\</IntDir>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">jucelib_static_Win32</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<HeaderFileName/>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_LIB;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2010_78A501D=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<AssemblerListingLocation>.\Debug\</AssemblerListingLocation>
<ObjectFileName>.\Debug\</ObjectFileName>
<ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Link>
<OutputFile>.\..\..\bin\jucelib_static_Win32_debug.lib</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<IgnoreSpecificDefaultLibraries>libcmt.lib; msvcrt.lib;;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>.\Debug\jucedebug.pdb</ProgramDatabaseFile>
<SubSystem>Windows</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
<Bscmake>
<SuppressStartupBanner>true</SuppressStartupBanner>
<OutputFile>.\Debug\jucedebug.bsc</OutputFile>
</Bscmake>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<HeaderFileName/>
</Midl>
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_LIB;WIN32;_WINDOWS;NDEBUG;JUCER_VS2010_78A501D=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<AssemblerListingLocation>.\Release\</AssemblerListingLocation>
<ObjectFileName>.\Release\</ObjectFileName>
<ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Link>
<OutputFile>.\..\..\bin\jucelib_static_Win32.lib</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>false</GenerateDebugInformation>
<ProgramDatabaseFile>.\Release\juce.pdb</ProgramDatabaseFile>
<SubSystem>Windows</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
</Link>
<Bscmake>
<SuppressStartupBanner>true</SuppressStartupBanner>
<OutputFile>.\Release\juce.bsc</OutputFile>
</Bscmake>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\src\application\juce_Application.cpp"/>
<ClCompile Include="..\..\src\application\juce_ApplicationCommandInfo.cpp"/>
<ClCompile Include="..\..\src\application\juce_ApplicationCommandManager.cpp"/>
<ClCompile Include="..\..\src\application\juce_ApplicationCommandTarget.cpp"/>
<ClCompile Include="..\..\src\application\juce_ApplicationProperties.cpp"/>
<ClCompile Include="..\..\src\audio\audio_file_formats\juce_AiffAudioFormat.cpp"/>
<ClCompile Include="..\..\src\audio\audio_file_formats\juce_AudioCDReader.cpp"/>
<ClCompile Include="..\..\src\audio\audio_file_formats\juce_AudioFormat.cpp"/>
<ClCompile Include="..\..\src\audio\audio_file_formats\juce_AudioFormatManager.cpp"/>
<ClCompile Include="..\..\src\audio\audio_file_formats\juce_AudioFormatReader.cpp"/>
<ClCompile Include="..\..\src\audio\audio_file_formats\juce_AudioFormatWriter.cpp"/>
<ClCompile Include="..\..\src\audio\audio_file_formats\juce_AudioSubsectionReader.cpp"/>
<ClCompile Include="..\..\src\audio\audio_file_formats\juce_AudioThumbnail.cpp"/>
<ClCompile Include="..\..\src\audio\audio_file_formats\juce_AudioThumbnailCache.cpp"/>
<ClCompile Include="..\..\src\audio\audio_file_formats\juce_CoreAudioFormat.cpp"/>
<ClCompile Include="..\..\src\audio\audio_file_formats\juce_FlacAudioFormat.cpp"/>
<ClCompile Include="..\..\src\audio\audio_file_formats\juce_OggVorbisAudioFormat.cpp"/>
<ClCompile Include="..\..\src\audio\audio_file_formats\juce_QuickTimeAudioFormat.cpp"/>
<ClCompile Include="..\..\src\audio\audio_file_formats\juce_WavAudioFormat.cpp"/>
<ClCompile Include="..\..\src\audio\audio_sources\juce_AudioFormatReaderSource.cpp"/>
<ClCompile Include="..\..\src\audio\audio_sources\juce_AudioSourcePlayer.cpp"/>
<ClCompile Include="..\..\src\audio\audio_sources\juce_AudioTransportSource.cpp"/>
<ClCompile Include="..\..\src\audio\audio_sources\juce_BufferingAudioSource.cpp"/>
<ClCompile Include="..\..\src\audio\audio_sources\juce_ChannelRemappingAudioSource.cpp"/>
<ClCompile Include="..\..\src\audio\audio_sources\juce_IIRFilterAudioSource.cpp"/>
<ClCompile Include="..\..\src\audio\audio_sources\juce_MixerAudioSource.cpp"/>
<ClCompile Include="..\..\src\audio\audio_sources\juce_ResamplingAudioSource.cpp"/>
<ClCompile Include="..\..\src\audio\audio_sources\juce_ReverbAudioSource.cpp"/>
<ClCompile Include="..\..\src\audio\audio_sources\juce_ToneGeneratorAudioSource.cpp"/>
<ClCompile Include="..\..\src\audio\devices\juce_AudioDeviceManager.cpp"/>
<ClCompile Include="..\..\src\audio\devices\juce_AudioIODevice.cpp"/>
<ClCompile Include="..\..\src\audio\devices\juce_AudioIODeviceType.cpp"/>
<ClCompile Include="..\..\src\audio\dsp\juce_AudioDataConverters.cpp"/>
<ClCompile Include="..\..\src\audio\dsp\juce_AudioSampleBuffer.cpp"/>
<ClCompile Include="..\..\src\audio\dsp\juce_IIRFilter.cpp"/>
<ClCompile Include="..\..\src\audio\midi\juce_MidiBuffer.cpp"/>
<ClCompile Include="..\..\src\audio\midi\juce_MidiFile.cpp"/>
<ClCompile Include="..\..\src\audio\midi\juce_MidiKeyboardState.cpp"/>
<ClCompile Include="..\..\src\audio\midi\juce_MidiMessage.cpp"/>
<ClCompile Include="..\..\src\audio\midi\juce_MidiMessageCollector.cpp"/>
<ClCompile Include="..\..\src\audio\midi\juce_MidiMessageSequence.cpp"/>
<ClCompile Include="..\..\src\audio\midi\juce_MidiOutput.cpp"/>
<ClCompile Include="..\..\src\audio\plugin_host\formats\juce_VSTPluginFormat.cpp"/>
<ClCompile Include="..\..\src\audio\plugin_host\juce_AudioPluginFormat.cpp"/>
<ClCompile Include="..\..\src\audio\plugin_host\juce_AudioPluginFormatManager.cpp"/>
<ClCompile Include="..\..\src\audio\plugin_host\juce_KnownPluginList.cpp"/>
<ClCompile Include="..\..\src\audio\plugin_host\juce_PluginDescription.cpp"/>
<ClCompile Include="..\..\src\audio\plugin_host\juce_PluginDirectoryScanner.cpp"/>
<ClCompile Include="..\..\src\audio\plugin_host\juce_PluginListComponent.cpp"/>
<ClCompile Include="..\..\src\audio\processors\juce_AudioProcessor.cpp"/>
<ClCompile Include="..\..\src\audio\processors\juce_AudioProcessorEditor.cpp"/>
<ClCompile Include="..\..\src\audio\processors\juce_AudioProcessorGraph.cpp"/>
<ClCompile Include="..\..\src\audio\processors\juce_AudioProcessorPlayer.cpp"/>
<ClCompile Include="..\..\src\audio\processors\juce_GenericAudioProcessorEditor.cpp"/>
<ClCompile Include="..\..\src\audio\synthesisers\juce_Sampler.cpp"/>
<ClCompile Include="..\..\src\audio\synthesisers\juce_Synthesiser.cpp"/>
<ClCompile Include="..\..\src\containers\juce_AbstractFifo.cpp"/>
<ClCompile Include="..\..\src\containers\juce_DynamicObject.cpp"/>
<ClCompile Include="..\..\src\containers\juce_NamedValueSet.cpp"/>
<ClCompile Include="..\..\src\containers\juce_PropertySet.cpp"/>
<ClCompile Include="..\..\src\containers\juce_Value.cpp"/>
<ClCompile Include="..\..\src\containers\juce_ValueTree.cpp"/>
<ClCompile Include="..\..\src\containers\juce_Variant.cpp"/>
<ClCompile Include="..\..\src\core\juce_FileLogger.cpp"/>
<ClCompile Include="..\..\src\core\juce_Logger.cpp"/>
<ClCompile Include="..\..\src\core\juce_PerformanceCounter.cpp"/>
<ClCompile Include="..\..\src\core\juce_RelativeTime.cpp"/>
<ClCompile Include="..\..\src\core\juce_Result.cpp"/>
<ClCompile Include="..\..\src\core\juce_SystemStats.cpp"/>
<ClCompile Include="..\..\src\core\juce_Time.cpp"/>
<ClCompile Include="..\..\src\core\juce_Uuid.cpp"/>
<ClCompile Include="..\..\src\cryptography\juce_BlowFish.cpp"/>
<ClCompile Include="..\..\src\cryptography\juce_MD5.cpp"/>
<ClCompile Include="..\..\src\cryptography\juce_Primes.cpp"/>
<ClCompile Include="..\..\src\cryptography\juce_RSAKey.cpp"/>
<ClCompile Include="..\..\src\cryptography\juce_SHA256.cpp"/>
<ClCompile Include="..\..\src\events\juce_ActionBroadcaster.cpp"/>
<ClCompile Include="..\..\src\events\juce_AsyncUpdater.cpp"/>
<ClCompile Include="..\..\src\events\juce_ChangeBroadcaster.cpp"/>
<ClCompile Include="..\..\src\events\juce_InterprocessConnection.cpp"/>
<ClCompile Include="..\..\src\events\juce_InterprocessConnectionServer.cpp"/>
<ClCompile Include="..\..\src\events\juce_Message.cpp"/>
<ClCompile Include="..\..\src\events\juce_MessageListener.cpp"/>
<ClCompile Include="..\..\src\events\juce_MessageManager.cpp"/>
<ClCompile Include="..\..\src\events\juce_MultiTimer.cpp"/>
<ClCompile Include="..\..\src\events\juce_Timer.cpp"/>
<ClCompile Include="..\..\src\gui\components\juce_Component.cpp"/>
<ClCompile Include="..\..\src\gui\components\juce_ComponentListener.cpp"/>
<ClCompile Include="..\..\src\gui\components\juce_Desktop.cpp"/>
<ClCompile Include="..\..\src\gui\components\juce_ModalComponentManager.cpp"/>
<ClCompile Include="..\..\src\gui\components\buttons\juce_ArrowButton.cpp"/>
<ClCompile Include="..\..\src\gui\components\buttons\juce_Button.cpp"/>
<ClCompile Include="..\..\src\gui\components\buttons\juce_DrawableButton.cpp"/>
<ClCompile Include="..\..\src\gui\components\buttons\juce_HyperlinkButton.cpp"/>
<ClCompile Include="..\..\src\gui\components\buttons\juce_ImageButton.cpp"/>
<ClCompile Include="..\..\src\gui\components\buttons\juce_ShapeButton.cpp"/>
<ClCompile Include="..\..\src\gui\components\buttons\juce_TextButton.cpp"/>
<ClCompile Include="..\..\src\gui\components\buttons\juce_ToggleButton.cpp"/>
<ClCompile Include="..\..\src\gui\components\buttons\juce_ToolbarButton.cpp"/>
<ClCompile Include="..\..\src\gui\components\code_editor\juce_CodeDocument.cpp"/>
<ClCompile Include="..\..\src\gui\components\code_editor\juce_CodeEditorComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\code_editor\juce_CPlusPlusCodeTokeniser.cpp"/>
<ClCompile Include="..\..\src\gui\components\controls\juce_ComboBox.cpp"/>
<ClCompile Include="..\..\src\gui\components\controls\juce_ImageComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\controls\juce_Label.cpp"/>
<ClCompile Include="..\..\src\gui\components\controls\juce_ListBox.cpp"/>
<ClCompile Include="..\..\src\gui\components\controls\juce_ProgressBar.cpp"/>
<ClCompile Include="..\..\src\gui\components\controls\juce_Slider.cpp"/>
<ClCompile Include="..\..\src\gui\components\controls\juce_TableHeaderComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\controls\juce_TableListBox.cpp"/>
<ClCompile Include="..\..\src\gui\components\controls\juce_TextEditor.cpp"/>
<ClCompile Include="..\..\src\gui\components\controls\juce_Toolbar.cpp"/>
<ClCompile Include="..\..\src\gui\components\controls\juce_ToolbarItemComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\controls\juce_ToolbarItemPalette.cpp"/>
<ClCompile Include="..\..\src\gui\components\controls\juce_TreeView.cpp"/>
<ClCompile Include="..\..\src\gui\components\filebrowser\juce_DirectoryContentsDisplayComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\filebrowser\juce_DirectoryContentsList.cpp"/>
<ClCompile Include="..\..\src\gui\components\filebrowser\juce_FileBrowserComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\filebrowser\juce_FileChooser.cpp"/>
<ClCompile Include="..\..\src\gui\components\filebrowser\juce_FileChooserDialogBox.cpp"/>
<ClCompile Include="..\..\src\gui\components\filebrowser\juce_FileFilter.cpp"/>
<ClCompile Include="..\..\src\gui\components\filebrowser\juce_FileListComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\filebrowser\juce_FilenameComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\filebrowser\juce_FileSearchPathListComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\filebrowser\juce_FileTreeComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\filebrowser\juce_ImagePreviewComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\filebrowser\juce_WildcardFileFilter.cpp"/>
<ClCompile Include="..\..\src\gui\components\keyboard\juce_CaretComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\keyboard\juce_KeyboardFocusTraverser.cpp"/>
<ClCompile Include="..\..\src\gui\components\keyboard\juce_KeyListener.cpp"/>
<ClCompile Include="..\..\src\gui\components\keyboard\juce_KeyMappingEditorComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\keyboard\juce_KeyPress.cpp"/>
<ClCompile Include="..\..\src\gui\components\keyboard\juce_KeyPressMappingSet.cpp"/>
<ClCompile Include="..\..\src\gui\components\keyboard\juce_ModifierKeys.cpp"/>
<ClCompile Include="..\..\src\gui\components\layout\juce_ComponentAnimator.cpp"/>
<ClCompile Include="..\..\src\gui\components\layout\juce_ComponentBoundsConstrainer.cpp"/>
<ClCompile Include="..\..\src\gui\components\layout\juce_ComponentBuilder.cpp"/>
<ClCompile Include="..\..\src\gui\components\layout\juce_ComponentMovementWatcher.cpp"/>
<ClCompile Include="..\..\src\gui\components\layout\juce_GroupComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\layout\juce_MultiDocumentPanel.cpp"/>
<ClCompile Include="..\..\src\gui\components\layout\juce_ResizableBorderComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\layout\juce_ResizableCornerComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\layout\juce_ResizableEdgeComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\layout\juce_ScrollBar.cpp"/>
<ClCompile Include="..\..\src\gui\components\layout\juce_StretchableLayoutManager.cpp"/>
<ClCompile Include="..\..\src\gui\components\layout\juce_StretchableLayoutResizerBar.cpp"/>
<ClCompile Include="..\..\src\gui\components\layout\juce_StretchableObjectResizer.cpp"/>
<ClCompile Include="..\..\src\gui\components\layout\juce_TabbedButtonBar.cpp"/>
<ClCompile Include="..\..\src\gui\components\layout\juce_TabbedComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\layout\juce_Viewport.cpp"/>
<ClCompile Include="..\..\src\gui\components\lookandfeel\juce_LookAndFeel.cpp"/>
<ClCompile Include="..\..\src\gui\components\lookandfeel\juce_OldSchoolLookAndFeel.cpp"/>
<ClCompile Include="..\..\src\gui\components\menus\juce_MenuBarComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\menus\juce_MenuBarModel.cpp"/>
<ClCompile Include="..\..\src\gui\components\menus\juce_PopupMenu.cpp"/>
<ClCompile Include="..\..\src\gui\components\mouse\juce_ComponentDragger.cpp"/>
<ClCompile Include="..\..\src\gui\components\mouse\juce_DragAndDropContainer.cpp"/>
<ClCompile Include="..\..\src\gui\components\mouse\juce_MouseCursor.cpp"/>
<ClCompile Include="..\..\src\gui\components\mouse\juce_MouseEvent.cpp"/>
<ClCompile Include="..\..\src\gui\components\mouse\juce_MouseInputSource.cpp"/>
<ClCompile Include="..\..\src\gui\components\mouse\juce_MouseListener.cpp"/>
<ClCompile Include="..\..\src\gui\components\positioning\juce_MarkerList.cpp"/>
<ClCompile Include="..\..\src\gui\components\positioning\juce_RelativeCoordinate.cpp"/>
<ClCompile Include="..\..\src\gui\components\positioning\juce_RelativeCoordinatePositioner.cpp"/>
<ClCompile Include="..\..\src\gui\components\positioning\juce_RelativeParallelogram.cpp"/>
<ClCompile Include="..\..\src\gui\components\positioning\juce_RelativePoint.cpp"/>
<ClCompile Include="..\..\src\gui\components\positioning\juce_RelativePointPath.cpp"/>
<ClCompile Include="..\..\src\gui\components\positioning\juce_RelativeRectangle.cpp"/>
<ClCompile Include="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\properties\juce_ButtonPropertyComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\properties\juce_ChoicePropertyComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\properties\juce_PropertyComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\properties\juce_PropertyPanel.cpp"/>
<ClCompile Include="..\..\src\gui\components\properties\juce_SliderPropertyComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\properties\juce_TextPropertyComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\special\juce_AudioDeviceSelectorComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\special\juce_BubbleComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\special\juce_BubbleMessageComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\special\juce_ColourSelector.cpp"/>
<ClCompile Include="..\..\src\gui\components\special\juce_DropShadower.cpp"/>
<ClCompile Include="..\..\src\gui\components\special\juce_MidiKeyboardComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\special\juce_OpenGLComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\special\juce_PreferencesPanel.cpp"/>
<ClCompile Include="..\..\src\gui\components\special\juce_SystemTrayIconComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\windows\juce_AlertWindow.cpp"/>
<ClCompile Include="..\..\src\gui\components\windows\juce_CallOutBox.cpp"/>
<ClCompile Include="..\..\src\gui\components\windows\juce_ComponentPeer.cpp"/>
<ClCompile Include="..\..\src\gui\components\windows\juce_DialogWindow.cpp"/>
<ClCompile Include="..\..\src\gui\components\windows\juce_DocumentWindow.cpp"/>
<ClCompile Include="..\..\src\gui\components\windows\juce_ResizableWindow.cpp"/>
<ClCompile Include="..\..\src\gui\components\windows\juce_SplashScreen.cpp"/>
<ClCompile Include="..\..\src\gui\components\windows\juce_ThreadWithProgressWindow.cpp"/>
<ClCompile Include="..\..\src\gui\components\windows\juce_TooltipWindow.cpp"/>
<ClCompile Include="..\..\src\gui\components\windows\juce_TopLevelWindow.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\colour\juce_Colour.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\colour\juce_ColourGradient.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\colour\juce_Colours.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\contexts\juce_EdgeTable.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\contexts\juce_FillType.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\contexts\juce_GraphicsContext.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\contexts\juce_Justification.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\contexts\juce_LowLevelGraphicsPostScriptRenderer.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\contexts\juce_LowLevelGraphicsSoftwareRenderer.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\contexts\juce_RectanglePlacement.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\drawables\juce_Drawable.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\drawables\juce_DrawableComposite.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\drawables\juce_DrawableImage.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\drawables\juce_DrawablePath.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\drawables\juce_DrawableRectangle.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\drawables\juce_DrawableShape.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\drawables\juce_DrawableText.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\drawables\juce_SVGParser.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\effects\juce_DropShadowEffect.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\effects\juce_GlowEffect.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\fonts\juce_CustomTypeface.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\fonts\juce_Font.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\fonts\juce_GlyphArrangement.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\fonts\juce_TextLayout.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\fonts\juce_Typeface.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\geometry\juce_AffineTransform.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\geometry\juce_Path.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\geometry\juce_PathIterator.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\geometry\juce_PathStrokeType.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\geometry\juce_RectangleList.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\imaging\image_file_formats\juce_GIFLoader.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\imaging\image_file_formats\juce_JPEGLoader.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\imaging\image_file_formats\juce_PNGLoader.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\imaging\juce_Image.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\imaging\juce_ImageCache.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\imaging\juce_ImageConvolutionKernel.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\imaging\juce_ImageFileFormat.cpp"/>
<ClCompile Include="..\..\src\io\files\juce_DirectoryIterator.cpp"/>
<ClCompile Include="..\..\src\io\files\juce_File.cpp"/>
<ClCompile Include="..\..\src\io\files\juce_FileInputStream.cpp"/>
<ClCompile Include="..\..\src\io\files\juce_FileOutputStream.cpp"/>
<ClCompile Include="..\..\src\io\files\juce_FileSearchPath.cpp"/>
<ClCompile Include="..\..\src\io\files\juce_NamedPipe.cpp"/>
<ClCompile Include="..\..\src\io\files\juce_TemporaryFile.cpp"/>
<ClCompile Include="..\..\src\io\files\juce_ZipFile.cpp"/>
<ClCompile Include="..\..\src\io\network\juce_MACAddress.cpp"/>
<ClCompile Include="..\..\src\io\network\juce_Socket.cpp"/>
<ClCompile Include="..\..\src\io\network\juce_URL.cpp"/>
<ClCompile Include="..\..\src\io\streams\juce_BufferedInputStream.cpp"/>
<ClCompile Include="..\..\src\io\streams\juce_FileInputSource.cpp"/>
<ClCompile Include="..\..\src\io\streams\juce_GZIPCompressorOutputStream.cpp"/>
<ClCompile Include="..\..\src\io\streams\juce_GZIPDecompressorInputStream.cpp"/>
<ClCompile Include="..\..\src\io\streams\juce_InputStream.cpp"/>
<ClCompile Include="..\..\src\io\streams\juce_MemoryInputStream.cpp"/>
<ClCompile Include="..\..\src\io\streams\juce_MemoryOutputStream.cpp"/>
<ClCompile Include="..\..\src\io\streams\juce_OutputStream.cpp"/>
<ClCompile Include="..\..\src\io\streams\juce_SubregionStream.cpp"/>
<ClCompile Include="..\..\src\maths\juce_BigInteger.cpp"/>
<ClCompile Include="..\..\src\maths\juce_Expression.cpp"/>
<ClCompile Include="..\..\src\maths\juce_Random.cpp"/>
<ClCompile Include="..\..\src\memory\juce_MemoryBlock.cpp"/>
<ClCompile Include="..\..\src\native\common\juce_posix_NamedPipe.cpp"/>
<ClCompile Include="..\..\src\native\linux\juce_linux_Audio.cpp"/>
<ClCompile Include="..\..\src\native\linux\juce_linux_AudioCDReader.cpp"/>
<ClCompile Include="..\..\src\native\linux\juce_linux_Clipboard.cpp"/>
<ClCompile Include="..\..\src\native\linux\juce_linux_FileChooser.cpp"/>
<ClCompile Include="..\..\src\native\linux\juce_linux_Files.cpp"/>
<ClCompile Include="..\..\src\native\linux\juce_linux_Fonts.cpp"/>
<ClCompile Include="..\..\src\native\linux\juce_linux_JackAudio.cpp"/>
<ClCompile Include="..\..\src\native\linux\juce_linux_Messaging.cpp"/>
<ClCompile Include="..\..\src\native\linux\juce_linux_Midi.cpp"/>
<ClCompile Include="..\..\src\native\linux\juce_linux_NativeCode.cpp"/>
<ClCompile Include="..\..\src\native\linux\juce_linux_Network.cpp"/>
<ClCompile Include="..\..\src\native\linux\juce_linux_OpenGLComponent.cpp"/>
<ClCompile Include="..\..\src\native\linux\juce_linux_SystemStats.cpp"/>
<ClCompile Include="..\..\src\native\linux\juce_linux_Threads.cpp"/>
<ClCompile Include="..\..\src\native\linux\juce_linux_WebBrowserComponent.cpp"/>
<ClCompile Include="..\..\src\native\linux\juce_linux_Windowing.cpp"/>
<ClCompile Include="..\..\src\native\mac\juce_ios_Audio.cpp"/>
<ClCompile Include="..\..\src\native\mac\juce_mac_CoreAudio.cpp"/>
<ClCompile Include="..\..\src\native\mac\juce_mac_CoreMidi.cpp"/>
<ClCompile Include="..\..\src\native\windows\juce_win32_ActiveXComponent.cpp"/>
<ClCompile Include="..\..\src\native\windows\juce_win32_ASIO.cpp"/>
<ClCompile Include="..\..\src\native\windows\juce_win32_AudioCDReader.cpp"/>
<ClCompile Include="..\..\src\native\windows\juce_win32_CameraDevice.cpp"/>
<ClCompile Include="..\..\src\native\windows\juce_win32_Direct2DGraphicsContext.cpp"/>
<ClCompile Include="..\..\src\native\windows\juce_win32_DirectShowComponent.cpp"/>
<ClCompile Include="..\..\src\native\windows\juce_win32_DirectSound.cpp"/>
<ClCompile Include="..\..\src\native\windows\juce_win32_FileChooser.cpp"/>
<ClCompile Include="..\..\src\native\windows\juce_win32_Files.cpp"/>
<ClCompile Include="..\..\src\native\windows\juce_win32_Fonts.cpp"/>
<ClCompile Include="..\..\src\native\windows\juce_win32_Messaging.cpp"/>
<ClCompile Include="..\..\src\native\windows\juce_win32_Midi.cpp"/>
<ClCompile Include="..\..\src\native\windows\juce_win32_NativeCode.cpp"/>
<ClCompile Include="..\..\src\native\windows\juce_win32_Network.cpp"/>
<ClCompile Include="..\..\src\native\windows\juce_win32_OpenGLComponent.cpp"/>
<ClCompile Include="..\..\src\native\windows\juce_win32_QuickTimeMovieComponent.cpp"/>
<ClCompile Include="..\..\src\native\windows\juce_win32_Registry.cpp"/>
<ClCompile Include="..\..\src\native\windows\juce_win32_SystemStats.cpp"/>
<ClCompile Include="..\..\src\native\windows\juce_win32_Threads.cpp"/>
<ClCompile Include="..\..\src\native\windows\juce_win32_WASAPI.cpp"/>
<ClCompile Include="..\..\src\native\windows\juce_win32_WebBrowserComponent.cpp"/>
<ClCompile Include="..\..\src\native\windows\juce_win32_Windowing.cpp"/>
<ClCompile Include="..\..\src\native\android\juce_android_Audio.cpp"/>
<ClCompile Include="..\..\src\native\android\juce_android_CameraDevice.cpp"/>
<ClCompile Include="..\..\src\native\android\juce_android_FileChooser.cpp"/>
<ClCompile Include="..\..\src\native\android\juce_android_Files.cpp"/>
<ClCompile Include="..\..\src\native\android\juce_android_Fonts.cpp"/>
<ClCompile Include="..\..\src\native\android\juce_android_GraphicsContext.cpp"/>
<ClCompile Include="..\..\src\native\android\juce_android_Messaging.cpp"/>
<ClCompile Include="..\..\src\native\android\juce_android_Midi.cpp"/>
<ClCompile Include="..\..\src\native\android\juce_android_Misc.cpp"/>
<ClCompile Include="..\..\src\native\android\juce_android_NativeCode.cpp"/>
<ClCompile Include="..\..\src\native\android\juce_android_Network.cpp"/>
<ClCompile Include="..\..\src\native\android\juce_android_OpenGLComponent.cpp"/>
<ClCompile Include="..\..\src\native\android\juce_android_SystemStats.cpp"/>
<ClCompile Include="..\..\src\native\android\juce_android_Threads.cpp"/>
<ClCompile Include="..\..\src\native\android\juce_android_WebBrowserComponent.cpp"/>
<ClCompile Include="..\..\src\native\android\juce_android_Windowing.cpp"/>
<ClCompile Include="..\..\src\text\juce_CharacterFunctions.cpp"/>
<ClCompile Include="..\..\src\text\juce_Identifier.cpp"/>
<ClCompile Include="..\..\src\text\juce_JSON.cpp"/>
<ClCompile Include="..\..\src\text\juce_LocalisedStrings.cpp"/>
<ClCompile Include="..\..\src\text\juce_String.cpp"/>
<ClCompile Include="..\..\src\text\juce_StringArray.cpp"/>
<ClCompile Include="..\..\src\text\juce_StringPairArray.cpp"/>
<ClCompile Include="..\..\src\text\juce_StringPool.cpp"/>
<ClCompile Include="..\..\src\text\juce_XmlDocument.cpp"/>
<ClCompile Include="..\..\src\text\juce_XmlElement.cpp"/>
<ClCompile Include="..\..\src\threads\juce_ReadWriteLock.cpp"/>
<ClCompile Include="..\..\src\threads\juce_Thread.cpp"/>
<ClCompile Include="..\..\src\threads\juce_ThreadPool.cpp"/>
<ClCompile Include="..\..\src\threads\juce_TimeSliceThread.cpp"/>
<ClCompile Include="..\..\src\utilities\juce_DeletedAtShutdown.cpp"/>
<ClCompile Include="..\..\src\utilities\juce_FileBasedDocument.cpp"/>
<ClCompile Include="..\..\src\utilities\juce_PropertiesFile.cpp"/>
<ClCompile Include="..\..\src\utilities\juce_RecentlyOpenedFilesList.cpp"/>
<ClCompile Include="..\..\src\utilities\juce_UndoManager.cpp"/>
<ClCompile Include="..\..\src\utilities\juce_UnitTest.cpp"/>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\application\juce_Application.h"/>
<ClInclude Include="..\..\src\application\juce_ApplicationCommandID.h"/>
<ClInclude Include="..\..\src\application\juce_ApplicationCommandInfo.h"/>
<ClInclude Include="..\..\src\application\juce_ApplicationCommandManager.h"/>
<ClInclude Include="..\..\src\application\juce_ApplicationCommandTarget.h"/>
<ClInclude Include="..\..\src\application\juce_ApplicationProperties.h"/>
<ClInclude Include="..\..\src\audio\audio_file_formats\juce_AiffAudioFormat.h"/>
<ClInclude Include="..\..\src\audio\audio_file_formats\juce_AudioCDBurner.h"/>
<ClInclude Include="..\..\src\audio\audio_file_formats\juce_AudioCDReader.h"/>
<ClInclude Include="..\..\src\audio\audio_file_formats\juce_AudioFormat.h"/>
<ClInclude Include="..\..\src\audio\audio_file_formats\juce_AudioFormatManager.h"/>
<ClInclude Include="..\..\src\audio\audio_file_formats\juce_AudioFormatReader.h"/>
<ClInclude Include="..\..\src\audio\audio_file_formats\juce_AudioFormatWriter.h"/>
<ClInclude Include="..\..\src\audio\audio_file_formats\juce_AudioSubsectionReader.h"/>
<ClInclude Include="..\..\src\audio\audio_file_formats\juce_AudioThumbnail.h"/>
<ClInclude Include="..\..\src\audio\audio_file_formats\juce_AudioThumbnailCache.h"/>
<ClInclude Include="..\..\src\audio\audio_file_formats\juce_CoreAudioFormat.h"/>
<ClInclude Include="..\..\src\audio\audio_file_formats\juce_FlacAudioFormat.h"/>
<ClInclude Include="..\..\src\audio\audio_file_formats\juce_OggVorbisAudioFormat.h"/>
<ClInclude Include="..\..\src\audio\audio_file_formats\juce_QuickTimeAudioFormat.h"/>
<ClInclude Include="..\..\src\audio\audio_file_formats\juce_WavAudioFormat.h"/>
<ClInclude Include="..\..\src\audio\audio_sources\juce_AudioFormatReaderSource.h"/>
<ClInclude Include="..\..\src\audio\audio_sources\juce_AudioSource.h"/>
<ClInclude Include="..\..\src\audio\audio_sources\juce_AudioSourcePlayer.h"/>
<ClInclude Include="..\..\src\audio\audio_sources\juce_AudioTransportSource.h"/>
<ClInclude Include="..\..\src\audio\audio_sources\juce_BufferingAudioSource.h"/>
<ClInclude Include="..\..\src\audio\audio_sources\juce_ChannelRemappingAudioSource.h"/>
<ClInclude Include="..\..\src\audio\audio_sources\juce_IIRFilterAudioSource.h"/>
<ClInclude Include="..\..\src\audio\audio_sources\juce_MixerAudioSource.h"/>
<ClInclude Include="..\..\src\audio\audio_sources\juce_PositionableAudioSource.h"/>
<ClInclude Include="..\..\src\audio\audio_sources\juce_ResamplingAudioSource.h"/>
<ClInclude Include="..\..\src\audio\audio_sources\juce_ReverbAudioSource.h"/>
<ClInclude Include="..\..\src\audio\audio_sources\juce_ToneGeneratorAudioSource.h"/>
<ClInclude Include="..\..\src\audio\devices\juce_AudioDeviceManager.h"/>
<ClInclude Include="..\..\src\audio\devices\juce_AudioIODevice.h"/>
<ClInclude Include="..\..\src\audio\devices\juce_AudioIODeviceType.h"/>
<ClInclude Include="..\..\src\audio\dsp\juce_AudioDataConverters.h"/>
<ClInclude Include="..\..\src\audio\dsp\juce_AudioSampleBuffer.h"/>
<ClInclude Include="..\..\src\audio\dsp\juce_Decibels.h"/>
<ClInclude Include="..\..\src\audio\dsp\juce_IIRFilter.h"/>
<ClInclude Include="..\..\src\audio\dsp\juce_Reverb.h"/>
<ClInclude Include="..\..\src\audio\midi\juce_MidiBuffer.h"/>
<ClInclude Include="..\..\src\audio\midi\juce_MidiFile.h"/>
<ClInclude Include="..\..\src\audio\midi\juce_MidiInput.h"/>
<ClInclude Include="..\..\src\audio\midi\juce_MidiKeyboardState.h"/>
<ClInclude Include="..\..\src\audio\midi\juce_MidiMessage.h"/>
<ClInclude Include="..\..\src\audio\midi\juce_MidiMessageCollector.h"/>
<ClInclude Include="..\..\src\audio\midi\juce_MidiMessageSequence.h"/>
<ClInclude Include="..\..\src\audio\midi\juce_MidiOutput.h"/>
<ClInclude Include="..\..\src\audio\plugin_client\RTAS\juce_RTAS_DigiCode_Header.h"/>
<ClInclude Include="..\..\src\audio\plugin_client\Standalone\juce_StandaloneFilterWindow.h"/>
<ClInclude Include="..\..\src\audio\plugin_client\juce_IncludeCharacteristics.h"/>
<ClInclude Include="..\..\src\audio\plugin_client\juce_PluginHeaders.h"/>
<ClInclude Include="..\..\src\audio\plugin_client\juce_PluginHostType.h"/>
<ClInclude Include="..\..\src\audio\plugin_host\formats\juce_AudioUnitPluginFormat.h"/>
<ClInclude Include="..\..\src\audio\plugin_host\formats\juce_DirectXPluginFormat.h"/>
<ClInclude Include="..\..\src\audio\plugin_host\formats\juce_LADSPAPluginFormat.h"/>
<ClInclude Include="..\..\src\audio\plugin_host\formats\juce_VSTMidiEventList.h"/>
<ClInclude Include="..\..\src\audio\plugin_host\formats\juce_VSTPluginFormat.h"/>
<ClInclude Include="..\..\src\audio\plugin_host\juce_AudioPluginFormat.h"/>
<ClInclude Include="..\..\src\audio\plugin_host\juce_AudioPluginFormatManager.h"/>
<ClInclude Include="..\..\src\audio\plugin_host\juce_AudioPluginInstance.h"/>
<ClInclude Include="..\..\src\audio\plugin_host\juce_KnownPluginList.h"/>
<ClInclude Include="..\..\src\audio\plugin_host\juce_PluginDescription.h"/>
<ClInclude Include="..\..\src\audio\plugin_host\juce_PluginDirectoryScanner.h"/>
<ClInclude Include="..\..\src\audio\plugin_host\juce_PluginListComponent.h"/>
<ClInclude Include="..\..\src\audio\processors\juce_AudioPlayHead.h"/>
<ClInclude Include="..\..\src\audio\processors\juce_AudioProcessor.h"/>
<ClInclude Include="..\..\src\audio\processors\juce_AudioProcessorEditor.h"/>
<ClInclude Include="..\..\src\audio\processors\juce_AudioProcessorGraph.h"/>
<ClInclude Include="..\..\src\audio\processors\juce_AudioProcessorListener.h"/>
<ClInclude Include="..\..\src\audio\processors\juce_AudioProcessorPlayer.h"/>
<ClInclude Include="..\..\src\audio\processors\juce_GenericAudioProcessorEditor.h"/>
<ClInclude Include="..\..\src\audio\synthesisers\juce_Sampler.h"/>
<ClInclude Include="..\..\src\audio\synthesisers\juce_Synthesiser.h"/>
<ClInclude Include="..\..\src\containers\juce_AbstractFifo.h"/>
<ClInclude Include="..\..\src\containers\juce_Array.h"/>
<ClInclude Include="..\..\src\containers\juce_ArrayAllocationBase.h"/>
<ClInclude Include="..\..\src\containers\juce_DynamicObject.h"/>
<ClInclude Include="..\..\src\containers\juce_ElementComparator.h"/>
<ClInclude Include="..\..\src\containers\juce_HashMap.h"/>
<ClInclude Include="..\..\src\containers\juce_LinkedListPointer.h"/>
<ClInclude Include="..\..\src\containers\juce_NamedValueSet.h"/>
<ClInclude Include="..\..\src\containers\juce_OwnedArray.h"/>
<ClInclude Include="..\..\src\containers\juce_PropertySet.h"/>
<ClInclude Include="..\..\src\containers\juce_ReferenceCountedArray.h"/>
<ClInclude Include="..\..\src\containers\juce_ScopedValueSetter.h"/>
<ClInclude Include="..\..\src\containers\juce_SortedSet.h"/>
<ClInclude Include="..\..\src\containers\juce_SparseSet.h"/>
<ClInclude Include="..\..\src\containers\juce_Value.h"/>
<ClInclude Include="..\..\src\containers\juce_ValueTree.h"/>
<ClInclude Include="..\..\src\containers\juce_Variant.h"/>
<ClInclude Include="..\..\src\core\juce_FileLogger.h"/>
<ClInclude Include="..\..\src\core\juce_Initialisation.h"/>
<ClInclude Include="..\..\src\core\juce_Logger.h"/>
<ClInclude Include="..\..\src\core\juce_PerformanceCounter.h"/>
<ClInclude Include="..\..\src\core\juce_PlatformDefs.h"/>
<ClInclude Include="..\..\src\core\juce_RelativeTime.h"/>
<ClInclude Include="..\..\src\core\juce_Result.h"/>
<ClInclude Include="..\..\src\core\juce_Singleton.h"/>
<ClInclude Include="..\..\src\core\juce_StandardHeader.h"/>
<ClInclude Include="..\..\src\core\juce_SystemStats.h"/>
<ClInclude Include="..\..\src\core\juce_TargetPlatform.h"/>
<ClInclude Include="..\..\src\core\juce_Time.h"/>
<ClInclude Include="..\..\src\core\juce_Uuid.h"/>
<ClInclude Include="..\..\src\cryptography\juce_BlowFish.h"/>
<ClInclude Include="..\..\src\cryptography\juce_MD5.h"/>
<ClInclude Include="..\..\src\cryptography\juce_Primes.h"/>
<ClInclude Include="..\..\src\cryptography\juce_RSAKey.h"/>
<ClInclude Include="..\..\src\cryptography\juce_SHA256.h"/>
<ClInclude Include="..\..\src\events\juce_ActionBroadcaster.h"/>
<ClInclude Include="..\..\src\events\juce_ActionListener.h"/>
<ClInclude Include="..\..\src\events\juce_AppleRemote.h"/>
<ClInclude Include="..\..\src\events\juce_AsyncUpdater.h"/>
<ClInclude Include="..\..\src\events\juce_CallbackMessage.h"/>
<ClInclude Include="..\..\src\events\juce_ChangeBroadcaster.h"/>
<ClInclude Include="..\..\src\events\juce_ChangeListener.h"/>
<ClInclude Include="..\..\src\events\juce_InterprocessConnection.h"/>
<ClInclude Include="..\..\src\events\juce_InterprocessConnectionServer.h"/>
<ClInclude Include="..\..\src\events\juce_ListenerList.h"/>
<ClInclude Include="..\..\src\events\juce_Message.h"/>
<ClInclude Include="..\..\src\events\juce_MessageListener.h"/>
<ClInclude Include="..\..\src\events\juce_MessageManager.h"/>
<ClInclude Include="..\..\src\events\juce_MultiTimer.h"/>
<ClInclude Include="..\..\src\events\juce_Timer.h"/>
<ClInclude Include="..\..\src\gui\components\juce_Component.h"/>
<ClInclude Include="..\..\src\gui\components\juce_ComponentListener.h"/>
<ClInclude Include="..\..\src\gui\components\juce_Desktop.h"/>
<ClInclude Include="..\..\src\gui\components\juce_ModalComponentManager.h"/>
<ClInclude Include="..\..\src\gui\components\buttons\juce_ArrowButton.h"/>
<ClInclude Include="..\..\src\gui\components\buttons\juce_Button.h"/>
<ClInclude Include="..\..\src\gui\components\buttons\juce_DrawableButton.h"/>
<ClInclude Include="..\..\src\gui\components\buttons\juce_HyperlinkButton.h"/>
<ClInclude Include="..\..\src\gui\components\buttons\juce_ImageButton.h"/>
<ClInclude Include="..\..\src\gui\components\buttons\juce_ShapeButton.h"/>
<ClInclude Include="..\..\src\gui\components\buttons\juce_TextButton.h"/>
<ClInclude Include="..\..\src\gui\components\buttons\juce_ToggleButton.h"/>
<ClInclude Include="..\..\src\gui\components\buttons\juce_ToolbarButton.h"/>
<ClInclude Include="..\..\src\gui\components\code_editor\juce_CodeDocument.h"/>
<ClInclude Include="..\..\src\gui\components\code_editor\juce_CodeEditorComponent.h"/>
<ClInclude Include="..\..\src\gui\components\code_editor\juce_CodeTokeniser.h"/>
<ClInclude Include="..\..\src\gui\components\code_editor\juce_CPlusPlusCodeTokeniser.h"/>
<ClInclude Include="..\..\src\gui\components\controls\juce_ComboBox.h"/>
<ClInclude Include="..\..\src\gui\components\controls\juce_ImageComponent.h"/>
<ClInclude Include="..\..\src\gui\components\controls\juce_Label.h"/>
<ClInclude Include="..\..\src\gui\components\controls\juce_ListBox.h"/>
<ClInclude Include="..\..\src\gui\components\controls\juce_ProgressBar.h"/>
<ClInclude Include="..\..\src\gui\components\controls\juce_Slider.h"/>
<ClInclude Include="..\..\src\gui\components\controls\juce_TableHeaderComponent.h"/>
<ClInclude Include="..\..\src\gui\components\controls\juce_TableListBox.h"/>
<ClInclude Include="..\..\src\gui\components\controls\juce_TextEditor.h"/>
<ClInclude Include="..\..\src\gui\components\controls\juce_Toolbar.h"/>
<ClInclude Include="..\..\src\gui\components\controls\juce_ToolbarItemComponent.h"/>
<ClInclude Include="..\..\src\gui\components\controls\juce_ToolbarItemFactory.h"/>
<ClInclude Include="..\..\src\gui\components\controls\juce_ToolbarItemPalette.h"/>
<ClInclude Include="..\..\src\gui\components\controls\juce_TreeView.h"/>
<ClInclude Include="..\..\src\gui\components\filebrowser\juce_DirectoryContentsDisplayComponent.h"/>
<ClInclude Include="..\..\src\gui\components\filebrowser\juce_DirectoryContentsList.h"/>
<ClInclude Include="..\..\src\gui\components\filebrowser\juce_FileBrowserComponent.h"/>
<ClInclude Include="..\..\src\gui\components\filebrowser\juce_FileBrowserListener.h"/>
<ClInclude Include="..\..\src\gui\components\filebrowser\juce_FileChooser.h"/>
<ClInclude Include="..\..\src\gui\components\filebrowser\juce_FileChooserDialogBox.h"/>
<ClInclude Include="..\..\src\gui\components\filebrowser\juce_FileFilter.h"/>
<ClInclude Include="..\..\src\gui\components\filebrowser\juce_FileListComponent.h"/>
<ClInclude Include="..\..\src\gui\components\filebrowser\juce_FilenameComponent.h"/>
<ClInclude Include="..\..\src\gui\components\filebrowser\juce_FilePreviewComponent.h"/>
<ClInclude Include="..\..\src\gui\components\filebrowser\juce_FileSearchPathListComponent.h"/>
<ClInclude Include="..\..\src\gui\components\filebrowser\juce_FileTreeComponent.h"/>
<ClInclude Include="..\..\src\gui\components\filebrowser\juce_ImagePreviewComponent.h"/>
<ClInclude Include="..\..\src\gui\components\filebrowser\juce_WildcardFileFilter.h"/>
<ClInclude Include="..\..\src\gui\components\keyboard\juce_CaretComponent.h"/>
<ClInclude Include="..\..\src\gui\components\keyboard\juce_KeyboardFocusTraverser.h"/>
<ClInclude Include="..\..\src\gui\components\keyboard\juce_KeyListener.h"/>
<ClInclude Include="..\..\src\gui\components\keyboard\juce_KeyMappingEditorComponent.h"/>
<ClInclude Include="..\..\src\gui\components\keyboard\juce_KeyPress.h"/>
<ClInclude Include="..\..\src\gui\components\keyboard\juce_KeyPressMappingSet.h"/>
<ClInclude Include="..\..\src\gui\components\keyboard\juce_ModifierKeys.h"/>
<ClInclude Include="..\..\src\gui\components\keyboard\juce_TextEditorKeyMapper.h"/>
<ClInclude Include="..\..\src\gui\components\keyboard\juce_TextInputTarget.h"/>
<ClInclude Include="..\..\src\gui\components\layout\juce_ComponentAnimator.h"/>
<ClInclude Include="..\..\src\gui\components\layout\juce_ComponentBoundsConstrainer.h"/>
<ClInclude Include="..\..\src\gui\components\layout\juce_ComponentBuilder.h"/>
<ClInclude Include="..\..\src\gui\components\layout\juce_ComponentMovementWatcher.h"/>
<ClInclude Include="..\..\src\gui\components\layout\juce_GroupComponent.h"/>
<ClInclude Include="..\..\src\gui\components\layout\juce_MultiDocumentPanel.h"/>
<ClInclude Include="..\..\src\gui\components\layout\juce_ResizableBorderComponent.h"/>
<ClInclude Include="..\..\src\gui\components\layout\juce_ResizableCornerComponent.h"/>
<ClInclude Include="..\..\src\gui\components\layout\juce_ResizableEdgeComponent.h"/>
<ClInclude Include="..\..\src\gui\components\layout\juce_ScrollBar.h"/>
<ClInclude Include="..\..\src\gui\components\layout\juce_StretchableLayoutManager.h"/>
<ClInclude Include="..\..\src\gui\components\layout\juce_StretchableLayoutResizerBar.h"/>
<ClInclude Include="..\..\src\gui\components\layout\juce_StretchableObjectResizer.h"/>
<ClInclude Include="..\..\src\gui\components\layout\juce_TabbedButtonBar.h"/>
<ClInclude Include="..\..\src\gui\components\layout\juce_TabbedComponent.h"/>
<ClInclude Include="..\..\src\gui\components\layout\juce_Viewport.h"/>
<ClInclude Include="..\..\src\gui\components\lookandfeel\juce_LookAndFeel.h"/>
<ClInclude Include="..\..\src\gui\components\lookandfeel\juce_OldSchoolLookAndFeel.h"/>
<ClInclude Include="..\..\src\gui\components\menus\juce_MenuBarComponent.h"/>
<ClInclude Include="..\..\src\gui\components\menus\juce_MenuBarModel.h"/>
<ClInclude Include="..\..\src\gui\components\menus\juce_PopupMenu.h"/>
<ClInclude Include="..\..\src\gui\components\mouse\juce_ComponentDragger.h"/>
<ClInclude Include="..\..\src\gui\components\mouse\juce_DragAndDropContainer.h"/>
<ClInclude Include="..\..\src\gui\components\mouse\juce_DragAndDropTarget.h"/>
<ClInclude Include="..\..\src\gui\components\mouse\juce_FileDragAndDropTarget.h"/>
<ClInclude Include="..\..\src\gui\components\mouse\juce_LassoComponent.h"/>
<ClInclude Include="..\..\src\gui\components\mouse\juce_MouseCursor.h"/>
<ClInclude Include="..\..\src\gui\components\mouse\juce_MouseEvent.h"/>
<ClInclude Include="..\..\src\gui\components\mouse\juce_MouseInputSource.h"/>
<ClInclude Include="..\..\src\gui\components\mouse\juce_MouseListener.h"/>
<ClInclude Include="..\..\src\gui\components\mouse\juce_TooltipClient.h"/>
<ClInclude Include="..\..\src\gui\components\positioning\juce_MarkerList.h"/>
<ClInclude Include="..\..\src\gui\components\positioning\juce_RelativeCoordinate.h"/>
<ClInclude Include="..\..\src\gui\components\positioning\juce_RelativeCoordinatePositioner.h"/>
<ClInclude Include="..\..\src\gui\components\positioning\juce_RelativeParallelogram.h"/>
<ClInclude Include="..\..\src\gui\components\positioning\juce_RelativePoint.h"/>
<ClInclude Include="..\..\src\gui\components\positioning\juce_RelativePointPath.h"/>
<ClInclude Include="..\..\src\gui\components\positioning\juce_RelativeRectangle.h"/>
<ClInclude Include="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.h"/>
<ClInclude Include="..\..\src\gui\components\properties\juce_ButtonPropertyComponent.h"/>
<ClInclude Include="..\..\src\gui\components\properties\juce_ChoicePropertyComponent.h"/>
<ClInclude Include="..\..\src\gui\components\properties\juce_PropertyComponent.h"/>
<ClInclude Include="..\..\src\gui\components\properties\juce_PropertyPanel.h"/>
<ClInclude Include="..\..\src\gui\components\properties\juce_SliderPropertyComponent.h"/>
<ClInclude Include="..\..\src\gui\components\properties\juce_TextPropertyComponent.h"/>
<ClInclude Include="..\..\src\gui\components\special\juce_ActiveXControlComponent.h"/>
<ClInclude Include="..\..\src\gui\components\special\juce_AudioDeviceSelectorComponent.h"/>
<ClInclude Include="..\..\src\gui\components\special\juce_BubbleComponent.h"/>
<ClInclude Include="..\..\src\gui\components\special\juce_BubbleMessageComponent.h"/>
<ClInclude Include="..\..\src\gui\components\special\juce_ColourSelector.h"/>
<ClInclude Include="..\..\src\gui\components\special\juce_DirectShowComponent.h"/>
<ClInclude Include="..\..\src\gui\components\special\juce_DropShadower.h"/>
<ClInclude Include="..\..\src\gui\components\special\juce_MidiKeyboardComponent.h"/>
<ClInclude Include="..\..\src\gui\components\special\juce_NSViewComponent.h"/>
<ClInclude Include="..\..\src\gui\components\special\juce_OpenGLComponent.h"/>
<ClInclude Include="..\..\src\gui\components\special\juce_PreferencesPanel.h"/>
<ClInclude Include="..\..\src\gui\components\special\juce_QuickTimeMovieComponent.h"/>
<ClInclude Include="..\..\src\gui\components\special\juce_ScopedXLock.h"/>
<ClInclude Include="..\..\src\gui\components\special\juce_SystemTrayIconComponent.h"/>
<ClInclude Include="..\..\src\gui\components\special\juce_WebBrowserComponent.h"/>
<ClInclude Include="..\..\src\gui\components\windows\juce_AlertWindow.h"/>
<ClInclude Include="..\..\src\gui\components\windows\juce_CallOutBox.h"/>
<ClInclude Include="..\..\src\gui\components\windows\juce_ComponentPeer.h"/>
<ClInclude Include="..\..\src\gui\components\windows\juce_DialogWindow.h"/>
<ClInclude Include="..\..\src\gui\components\windows\juce_DocumentWindow.h"/>
<ClInclude Include="..\..\src\gui\components\windows\juce_NativeMessageBox.h"/>
<ClInclude Include="..\..\src\gui\components\windows\juce_ResizableWindow.h"/>
<ClInclude Include="..\..\src\gui\components\windows\juce_SplashScreen.h"/>
<ClInclude Include="..\..\src\gui\components\windows\juce_ThreadWithProgressWindow.h"/>
<ClInclude Include="..\..\src\gui\components\windows\juce_TooltipWindow.h"/>
<ClInclude Include="..\..\src\gui\components\windows\juce_TopLevelWindow.h"/>
<ClInclude Include="..\..\src\gui\graphics\colour\juce_Colour.h"/>
<ClInclude Include="..\..\src\gui\graphics\colour\juce_ColourGradient.h"/>
<ClInclude Include="..\..\src\gui\graphics\colour\juce_Colours.h"/>
<ClInclude Include="..\..\src\gui\graphics\colour\juce_PixelFormats.h"/>
<ClInclude Include="..\..\src\gui\graphics\contexts\juce_EdgeTable.h"/>
<ClInclude Include="..\..\src\gui\graphics\contexts\juce_FillType.h"/>
<ClInclude Include="..\..\src\gui\graphics\contexts\juce_GraphicsContext.h"/>
<ClInclude Include="..\..\src\gui\graphics\contexts\juce_Justification.h"/>
<ClInclude Include="..\..\src\gui\graphics\contexts\juce_LowLevelGraphicsContext.h"/>
<ClInclude Include="..\..\src\gui\graphics\contexts\juce_LowLevelGraphicsPostScriptRenderer.h"/>
<ClInclude Include="..\..\src\gui\graphics\contexts\juce_LowLevelGraphicsSoftwareRenderer.h"/>
<ClInclude Include="..\..\src\gui\graphics\contexts\juce_RectanglePlacement.h"/>
<ClInclude Include="..\..\src\gui\graphics\drawables\juce_Drawable.h"/>
<ClInclude Include="..\..\src\gui\graphics\drawables\juce_DrawableComposite.h"/>
<ClInclude Include="..\..\src\gui\graphics\drawables\juce_DrawableImage.h"/>
<ClInclude Include="..\..\src\gui\graphics\drawables\juce_DrawablePath.h"/>
<ClInclude Include="..\..\src\gui\graphics\drawables\juce_DrawableRectangle.h"/>
<ClInclude Include="..\..\src\gui\graphics\drawables\juce_DrawableShape.h"/>
<ClInclude Include="..\..\src\gui\graphics\drawables\juce_DrawableText.h"/>
<ClInclude Include="..\..\src\gui\graphics\effects\juce_DropShadowEffect.h"/>
<ClInclude Include="..\..\src\gui\graphics\effects\juce_GlowEffect.h"/>
<ClInclude Include="..\..\src\gui\graphics\effects\juce_ImageEffectFilter.h"/>
<ClInclude Include="..\..\src\gui\graphics\fonts\juce_CustomTypeface.h"/>
<ClInclude Include="..\..\src\gui\graphics\fonts\juce_Font.h"/>
<ClInclude Include="..\..\src\gui\graphics\fonts\juce_GlyphArrangement.h"/>
<ClInclude Include="..\..\src\gui\graphics\fonts\juce_TextLayout.h"/>
<ClInclude Include="..\..\src\gui\graphics\fonts\juce_Typeface.h"/>
<ClInclude Include="..\..\src\gui\graphics\geometry\juce_AffineTransform.h"/>
<ClInclude Include="..\..\src\gui\graphics\geometry\juce_BorderSize.h"/>
<ClInclude Include="..\..\src\gui\graphics\geometry\juce_Line.h"/>
<ClInclude Include="..\..\src\gui\graphics\geometry\juce_Path.h"/>
<ClInclude Include="..\..\src\gui\graphics\geometry\juce_PathIterator.h"/>
<ClInclude Include="..\..\src\gui\graphics\geometry\juce_PathStrokeType.h"/>
<ClInclude Include="..\..\src\gui\graphics\geometry\juce_Point.h"/>
<ClInclude Include="..\..\src\gui\graphics\geometry\juce_Rectangle.h"/>
<ClInclude Include="..\..\src\gui\graphics\geometry\juce_RectangleList.h"/>
<ClInclude Include="..\..\src\gui\graphics\imaging\juce_CameraDevice.h"/>
<ClInclude Include="..\..\src\gui\graphics\imaging\juce_Image.h"/>
<ClInclude Include="..\..\src\gui\graphics\imaging\juce_ImageCache.h"/>
<ClInclude Include="..\..\src\gui\graphics\imaging\juce_ImageConvolutionKernel.h"/>
<ClInclude Include="..\..\src\gui\graphics\imaging\juce_ImageFileFormat.h"/>
<ClInclude Include="..\..\src\io\files\juce_DirectoryIterator.h"/>
<ClInclude Include="..\..\src\io\files\juce_File.h"/>
<ClInclude Include="..\..\src\io\files\juce_FileInputStream.h"/>
<ClInclude Include="..\..\src\io\files\juce_FileOutputStream.h"/>
<ClInclude Include="..\..\src\io\files\juce_FileSearchPath.h"/>
<ClInclude Include="..\..\src\io\files\juce_MemoryMappedFile.h"/>
<ClInclude Include="..\..\src\io\files\juce_NamedPipe.h"/>
<ClInclude Include="..\..\src\io\files\juce_TemporaryFile.h"/>
<ClInclude Include="..\..\src\io\files\juce_ZipFile.h"/>
<ClInclude Include="..\..\src\io\network\juce_MACAddress.h"/>
<ClInclude Include="..\..\src\io\network\juce_Socket.h"/>
<ClInclude Include="..\..\src\io\network\juce_URL.h"/>
<ClInclude Include="..\..\src\io\streams\juce_BufferedInputStream.h"/>
<ClInclude Include="..\..\src\io\streams\juce_FileInputSource.h"/>
<ClInclude Include="..\..\src\io\streams\juce_GZIPCompressorOutputStream.h"/>
<ClInclude Include="..\..\src\io\streams\juce_GZIPDecompressorInputStream.h"/>
<ClInclude Include="..\..\src\io\streams\juce_InputSource.h"/>
<ClInclude Include="..\..\src\io\streams\juce_InputStream.h"/>
<ClInclude Include="..\..\src\io\streams\juce_MemoryInputStream.h"/>
<ClInclude Include="..\..\src\io\streams\juce_MemoryOutputStream.h"/>
<ClInclude Include="..\..\src\io\streams\juce_OutputStream.h"/>
<ClInclude Include="..\..\src\io\streams\juce_SubregionStream.h"/>
<ClInclude Include="..\..\src\maths\juce_BigInteger.h"/>
<ClInclude Include="..\..\src\maths\juce_Expression.h"/>
<ClInclude Include="..\..\src\maths\juce_MathsFunctions.h"/>
<ClInclude Include="..\..\src\maths\juce_Random.h"/>
<ClInclude Include="..\..\src\maths\juce_Range.h"/>
<ClInclude Include="..\..\src\memory\juce_Atomic.h"/>
<ClInclude Include="..\..\src\memory\juce_ByteOrder.h"/>
<ClInclude Include="..\..\src\memory\juce_HeapBlock.h"/>
<ClInclude Include="..\..\src\memory\juce_LeakedObjectDetector.h"/>
<ClInclude Include="..\..\src\memory\juce_Memory.h"/>
<ClInclude Include="..\..\src\memory\juce_MemoryBlock.h"/>
<ClInclude Include="..\..\src\memory\juce_OptionalScopedPointer.h"/>
<ClInclude Include="..\..\src\memory\juce_ReferenceCountedObject.h"/>
<ClInclude Include="..\..\src\memory\juce_ScopedPointer.h"/>
<ClInclude Include="..\..\src\memory\juce_WeakReference.h"/>
<ClInclude Include="..\..\src\native\common\juce_MidiDataConcatenator.h"/>
<ClInclude Include="..\..\src\native\common\juce_posix_SharedCode.h"/>
<ClInclude Include="..\..\src\native\linux\juce_linux_NativeIncludes.h"/>
<ClInclude Include="..\..\src\native\mac\juce_mac_CarbonViewWrapperComponent.h"/>
<ClInclude Include="..\..\src\native\mac\juce_mac_NativeIncludes.h"/>
<ClInclude Include="..\..\src\native\mac\juce_mac_ObjCSuffix.h"/>
<ClInclude Include="..\..\src\native\mac\juce_osx_MessageQueue.h"/>
<ClInclude Include="..\..\src\native\mac\juce_osx_ObjCHelpers.h"/>
<ClInclude Include="..\..\src\native\windows\juce_win32_AutoLinkLibraries.h"/>
<ClInclude Include="..\..\src\native\windows\juce_win32_ComSmartPtr.h"/>
<ClInclude Include="..\..\src\native\windows\juce_win32_HiddenMessageWindow.h"/>
<ClInclude Include="..\..\src\native\windows\juce_win32_NativeIncludes.h"/>
<ClInclude Include="..\..\src\native\android\juce_android_JNIHelpers.h"/>
<ClInclude Include="..\..\src\native\android\juce_android_NativeIncludes.h"/>
<ClInclude Include="..\..\src\text\juce_CharacterFunctions.h"/>
<ClInclude Include="..\..\src\text\juce_CharPointer_ASCII.h"/>
<ClInclude Include="..\..\src\text\juce_CharPointer_UTF16.h"/>
<ClInclude Include="..\..\src\text\juce_CharPointer_UTF32.h"/>
<ClInclude Include="..\..\src\text\juce_CharPointer_UTF8.h"/>
<ClInclude Include="..\..\src\text\juce_Identifier.h"/>
<ClInclude Include="..\..\src\text\juce_JSON.h"/>
<ClInclude Include="..\..\src\text\juce_LocalisedStrings.h"/>
<ClInclude Include="..\..\src\text\juce_NewLine.h"/>
<ClInclude Include="..\..\src\text\juce_String.h"/>
<ClInclude Include="..\..\src\text\juce_StringArray.h"/>
<ClInclude Include="..\..\src\text\juce_StringPairArray.h"/>
<ClInclude Include="..\..\src\text\juce_StringPool.h"/>
<ClInclude Include="..\..\src\text\juce_XmlDocument.h"/>
<ClInclude Include="..\..\src\text\juce_XmlElement.h"/>
<ClInclude Include="..\..\src\threads\juce_CriticalSection.h"/>
<ClInclude Include="..\..\src\threads\juce_DynamicLibrary.h"/>
<ClInclude Include="..\..\src\threads\juce_InterProcessLock.h"/>
<ClInclude Include="..\..\src\threads\juce_Process.h"/>
<ClInclude Include="..\..\src\threads\juce_ReadWriteLock.h"/>
<ClInclude Include="..\..\src\threads\juce_ScopedLock.h"/>
<ClInclude Include="..\..\src\threads\juce_ScopedReadLock.h"/>
<ClInclude Include="..\..\src\threads\juce_ScopedWriteLock.h"/>
<ClInclude Include="..\..\src\threads\juce_SpinLock.h"/>
<ClInclude Include="..\..\src\threads\juce_Thread.h"/>
<ClInclude Include="..\..\src\threads\juce_ThreadPool.h"/>
<ClInclude Include="..\..\src\threads\juce_TimeSliceThread.h"/>
<ClInclude Include="..\..\src\threads\juce_WaitableEvent.h"/>
<ClInclude Include="..\..\src\utilities\juce_DeletedAtShutdown.h"/>
<ClInclude Include="..\..\src\utilities\juce_FileBasedDocument.h"/>
<ClInclude Include="..\..\src\utilities\juce_PropertiesFile.h"/>
<ClInclude Include="..\..\src\utilities\juce_RecentlyOpenedFilesList.h"/>
<ClInclude Include="..\..\src\utilities\juce_SelectedItemSet.h"/>
<ClInclude Include="..\..\src\utilities\juce_SystemClipboard.h"/>
<ClInclude Include="..\..\src\utilities\juce_UndoableAction.h"/>
<ClInclude Include="..\..\src\utilities\juce_UndoManager.h"/>
<ClInclude Include="..\..\src\utilities\juce_UnitTest.h"/>
<ClInclude Include="..\..\src\utilities\juce_WindowsRegistry.h"/>
<ClInclude Include="..\..\juce.h"/>
<ClInclude Include="..\..\juce_Config.h"/>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/>
<ImportGroup Label="ExtensionTargets"/>
</Project>

+ 0
- 2446
Builds/VisualStudio2010/Juce.vcxproj.filters
File diff suppressed because it is too large
View File


+ 0
- 2446
Builds/iOS/Juce.xcodeproj/project.pbxproj
File diff suppressed because it is too large
View File


+ 0
- 1640
Juce.jucer
File diff suppressed because it is too large
View File


+ 28
- 361
amalgamation/juce_amalgamated_template.cpp View File

@@ -24,12 +24,15 @@
*/
/*
This monolithic file contains the entire Juce source tree!
To build an app which uses Juce, all you need to do is to add this
file to your project, and include juce.h in your own cpp files.
PLEASE NOTE! This file is just here to help transition old code to the newer
modularised layout - but it will be removed at some point in the future, so
you should update your projects to use the newer design as soon as possible.
*/
#ifdef _MSC_VER
#pragma message ("The amalgamated files are now deprecated - please include juce modules directly, or preferably let the introjucer handle the inclusion of source code in your project.")
#else
#warning "The amalgamated files are now deprecated - please include juce modules directly, or preferably let the introjucer handle the inclusion of source code in your project."
#endif
#ifdef __JUCE_JUCEHEADER__
/* When you add the amalgamated cpp file to your project, you mustn't include it in
@@ -38,9 +41,6 @@
#error
#endif
#include "../src/core/juce_TargetPlatform.h" // FORCE_AMALGAMATOR_INCLUDE
#include "../juce_Config.h" // FORCE_AMALGAMATOR_INCLUDE
#ifndef JUCE_BUILD_CORE
#define JUCE_BUILD_CORE 1
#endif
@@ -57,368 +57,35 @@
#if JUCE_ONLY_BUILD_CORE_LIBRARY
#undef JUCE_BUILD_MISC
#undef JUCE_BUILD_GUI
#undef JUCE_BUILD_NATIVE
#endif
#ifndef JUCE_NAMESPACE
#define JUCE_NAMESPACE juce
#endif
//==============================================================================
#if JUCE_BUILD_NATIVE || JUCE_BUILD_CORE || (JUCE_BUILD_MISC && (JUCE_PLUGINHOST_VST || JUCE_PLUGINHOST_AU))
#if JUCE_WINDOWS
#include "../src/native/windows/juce_win32_NativeIncludes.h"
#elif JUCE_LINUX
#include "../src/native/linux/juce_linux_NativeIncludes.h"
#elif JUCE_MAC || JUCE_IOS
#include "../src/native/mac/juce_mac_NativeIncludes.h"
#elif JUCE_ANDROID
#include "../src/native/android/juce_android_NativeIncludes.h"
#else
#error "Unknown platform!"
#endif
#endif
//==============================================================================
#define DONT_SET_USING_JUCE_NAMESPACE 1
#undef max
#undef min
#define NO_DUMMY_DECL
#define JUCE_AMALGAMATED_TEMPLATE 1
#if JUCE_BUILD_NATIVE
#include "../juce_amalgamated.h" // FORCE_AMALGAMATOR_INCLUDE
#endif
#if (defined(_MSC_VER) && (_MSC_VER <= 1200))
#pragma warning (disable: 4309 4305)
#endif
#if JUCE_MAC && JUCE_32BIT && JUCE_SUPPORT_CARBON && JUCE_BUILD_NATIVE && ! JUCE_ONLY_BUILD_CORE_LIBRARY
BEGIN_JUCE_NAMESPACE
#include "../src/native/mac/juce_mac_CarbonViewWrapperComponent.h"
END_JUCE_NAMESPACE
#endif
#define JUCE_AMALGAMATED_INCLUDE 1
//==============================================================================
#if JUCE_BUILD_CORE
#include "../src/core/juce_FileLogger.cpp"
#include "../src/core/juce_Logger.cpp"
#include "../src/maths/juce_Random.cpp"
#include "../src/core/juce_RelativeTime.cpp"
#include "../src/core/juce_SystemStats.cpp"
#include "../src/core/juce_Result.cpp"
#include "../src/core/juce_Time.cpp"
#include "../src/containers/juce_AbstractFifo.cpp"
#include "../src/maths/juce_BigInteger.cpp"
#include "../src/memory/juce_MemoryBlock.cpp"
#include "../src/containers/juce_PropertySet.cpp"
#include "../src/text/juce_Identifier.cpp"
#include "../src/containers/juce_Variant.cpp"
#include "../src/containers/juce_NamedValueSet.cpp"
#include "../src/containers/juce_DynamicObject.cpp"
#include "../src/maths/juce_Expression.cpp"
#include "../src/cryptography/juce_BlowFish.cpp"
#include "../src/cryptography/juce_MD5.cpp"
#include "../src/cryptography/juce_SHA256.cpp"
#include "../src/cryptography/juce_Primes.cpp"
#include "../src/cryptography/juce_RSAKey.cpp"
#include "../src/io/streams/juce_InputStream.cpp"
#include "../src/io/streams/juce_OutputStream.cpp"
#include "../src/io/files/juce_DirectoryIterator.cpp"
#include "../src/io/files/juce_File.cpp"
#include "../src/io/files/juce_FileInputStream.cpp"
#include "../src/io/files/juce_FileOutputStream.cpp"
#include "../src/io/files/juce_FileSearchPath.cpp"
#include "../src/io/files/juce_NamedPipe.cpp"
#include "../src/io/files/juce_TemporaryFile.cpp"
#include "../src/io/network/juce_Socket.cpp"
#include "../src/io/network/juce_URL.cpp"
#include "../src/io/network/juce_MACAddress.cpp"
#include "../src/io/streams/juce_BufferedInputStream.cpp"
#include "../src/io/streams/juce_FileInputSource.cpp"
#include "../src/io/streams/juce_MemoryInputStream.cpp"
#include "../src/io/streams/juce_MemoryOutputStream.cpp"
#include "../src/io/streams/juce_SubregionStream.cpp"
#include "../src/core/juce_PerformanceCounter.cpp"
#include "../src/core/juce_Uuid.cpp"
#include "../src/io/files/juce_ZipFile.cpp"
#include "../src/text/juce_CharacterFunctions.cpp"
#include "../src/text/juce_LocalisedStrings.cpp"
#include "../src/text/juce_String.cpp"
#include "../src/text/juce_StringArray.cpp"
#include "../src/text/juce_StringPairArray.cpp"
#include "../src/text/juce_StringPool.cpp"
#include "../src/text/juce_XmlDocument.cpp"
#include "../src/text/juce_XmlElement.cpp"
#include "../src/text/juce_JSON.cpp"
#include "../src/threads/juce_ReadWriteLock.cpp"
#include "../src/threads/juce_Thread.cpp"
#include "../src/threads/juce_ThreadPool.cpp"
#include "../src/threads/juce_TimeSliceThread.cpp"
#include "../modules/juce_core/juce_core.cpp"
#endif
#if JUCE_BUILD_MISC
#include "../src/containers/juce_ValueTree.cpp"
#include "../src/containers/juce_Value.cpp"
#include "../src/application/juce_Application.cpp"
#include "../src/application/juce_ApplicationCommandInfo.cpp"
#include "../src/application/juce_ApplicationCommandManager.cpp"
#include "../src/application/juce_ApplicationCommandTarget.cpp"
#include "../src/application/juce_ApplicationProperties.cpp"
#include "../src/utilities/juce_PropertiesFile.cpp"
#include "../src/utilities/juce_FileBasedDocument.cpp"
#include "../src/utilities/juce_RecentlyOpenedFilesList.cpp"
#include "../src/utilities/juce_UndoManager.cpp"
#include "../src/utilities/juce_UnitTest.cpp"
#include "../src/utilities/juce_DeletedAtShutdown.cpp"
#include "../src/audio/audio_file_formats/juce_AiffAudioFormat.cpp"
#include "../src/audio/audio_file_formats/juce_AudioFormat.cpp"
#include "../src/audio/audio_file_formats/juce_AudioFormatReader.cpp"
#include "../src/audio/audio_file_formats/juce_AudioFormatWriter.cpp"
#include "../src/audio/audio_file_formats/juce_AudioFormatManager.cpp"
#include "../src/audio/audio_file_formats/juce_AudioSubsectionReader.cpp"
#include "../src/audio/audio_file_formats/juce_AudioThumbnail.cpp"
#include "../src/audio/audio_file_formats/juce_AudioThumbnailCache.cpp"
#include "../src/audio/audio_file_formats/juce_QuickTimeAudioFormat.cpp"
#include "../src/audio/audio_file_formats/juce_WavAudioFormat.cpp"
#include "../src/audio/audio_file_formats/juce_AudioCDReader.cpp"
#include "../src/audio/audio_sources/juce_AudioFormatReaderSource.cpp"
#include "../src/audio/audio_sources/juce_AudioSourcePlayer.cpp"
#include "../src/audio/audio_sources/juce_AudioTransportSource.cpp"
#include "../src/audio/audio_sources/juce_BufferingAudioSource.cpp"
#include "../src/audio/audio_sources/juce_ChannelRemappingAudioSource.cpp"
#include "../src/audio/audio_sources/juce_IIRFilterAudioSource.cpp"
#include "../src/audio/audio_sources/juce_ReverbAudioSource.cpp"
#include "../src/audio/audio_sources/juce_MixerAudioSource.cpp"
#include "../src/audio/audio_sources/juce_ResamplingAudioSource.cpp"
#include "../src/audio/audio_sources/juce_ToneGeneratorAudioSource.cpp"
#include "../src/audio/devices/juce_AudioDeviceManager.cpp"
#include "../src/audio/devices/juce_AudioIODevice.cpp"
#include "../src/audio/devices/juce_AudioIODeviceType.cpp"
#include "../src/audio/dsp/juce_AudioDataConverters.cpp"
#include "../src/audio/dsp/juce_AudioSampleBuffer.cpp"
#include "../src/audio/dsp/juce_IIRFilter.cpp"
#include "../src/audio/midi/juce_MidiOutput.cpp"
#include "../src/audio/midi/juce_MidiBuffer.cpp"
#include "../src/audio/midi/juce_MidiFile.cpp"
#include "../src/audio/midi/juce_MidiKeyboardState.cpp"
#include "../src/audio/midi/juce_MidiMessage.cpp"
#include "../src/audio/midi/juce_MidiMessageCollector.cpp"
#include "../src/audio/midi/juce_MidiMessageSequence.cpp"
#include "../src/audio/plugin_host/juce_AudioPluginFormat.cpp"
#include "../src/audio/plugin_host/juce_AudioPluginFormatManager.cpp"
#include "../src/audio/plugin_host/juce_KnownPluginList.cpp"
#include "../src/audio/plugin_host/juce_PluginDescription.cpp"
#include "../src/audio/plugin_host/juce_PluginDirectoryScanner.cpp"
#include "../src/audio/plugin_host/juce_PluginListComponent.cpp"
#include "../src/audio/plugin_host/formats/juce_AudioUnitPluginFormat.mm"
#include "../src/audio/plugin_host/formats/juce_VSTPluginFormat.mm"
#include "../src/audio/processors/juce_AudioProcessor.cpp"
#include "../src/audio/processors/juce_AudioProcessorEditor.cpp"
#include "../src/audio/processors/juce_AudioProcessorGraph.cpp"
#include "../src/audio/processors/juce_AudioProcessorPlayer.cpp"
#include "../src/audio/processors/juce_GenericAudioProcessorEditor.cpp"
#include "../src/audio/synthesisers/juce_Sampler.cpp"
#include "../src/audio/synthesisers/juce_Synthesiser.cpp"
#include "../src/events/juce_ActionBroadcaster.cpp"
#include "../src/events/juce_AsyncUpdater.cpp"
#include "../src/events/juce_ChangeBroadcaster.cpp"
#include "../src/events/juce_InterprocessConnection.cpp"
#include "../src/events/juce_InterprocessConnectionServer.cpp"
#include "../src/events/juce_Message.cpp"
#include "../src/events/juce_MessageListener.cpp"
#include "../src/events/juce_MessageManager.cpp"
#include "../src/events/juce_MultiTimer.cpp"
#include "../src/events/juce_Timer.cpp"
#include "../modules/juce_cryptography/juce_cryptography.cpp"
#include "../modules/juce_data_structures/juce_data_structures.cpp"
#include "../modules/juce_events/juce_events.cpp"
#include "../modules/juce_graphics/juce_graphics.cpp"
#endif
#if JUCE_BUILD_GUI
#include "../src/gui/components/juce_Component.cpp"
#include "../src/gui/components/juce_ComponentListener.cpp"
#include "../src/gui/components/juce_Desktop.cpp"
#include "../src/gui/components/juce_ModalComponentManager.cpp"
#include "../src/gui/components/buttons/juce_ArrowButton.cpp"
#include "../src/gui/components/buttons/juce_Button.cpp"
#include "../src/gui/components/buttons/juce_DrawableButton.cpp"
#include "../src/gui/components/buttons/juce_HyperlinkButton.cpp"
#include "../src/gui/components/buttons/juce_ImageButton.cpp"
#include "../src/gui/components/buttons/juce_ShapeButton.cpp"
#include "../src/gui/components/buttons/juce_TextButton.cpp"
#include "../src/gui/components/buttons/juce_ToggleButton.cpp"
#include "../src/gui/components/buttons/juce_ToolbarButton.cpp"
#include "../src/gui/components/code_editor/juce_CodeDocument.cpp"
#include "../src/gui/components/code_editor/juce_CodeEditorComponent.cpp"
#include "../src/gui/components/code_editor/juce_CPlusPlusCodeTokeniser.cpp"
#include "../src/gui/components/controls/juce_ComboBox.cpp"
#include "../src/gui/components/controls/juce_ImageComponent.cpp"
#include "../src/gui/components/controls/juce_Label.cpp"
#include "../src/gui/components/controls/juce_ListBox.cpp"
#include "../src/gui/components/controls/juce_ProgressBar.cpp"
#include "../src/gui/components/controls/juce_Slider.cpp"
#include "../src/gui/components/controls/juce_TableHeaderComponent.cpp"
#include "../src/gui/components/controls/juce_TableListBox.cpp"
#include "../src/gui/components/controls/juce_TextEditor.cpp"
#include "../src/gui/components/controls/juce_Toolbar.cpp"
#include "../src/gui/components/controls/juce_ToolbarItemComponent.cpp"
#include "../src/gui/components/controls/juce_ToolbarItemPalette.cpp"
#include "../src/gui/components/controls/juce_TreeView.cpp"
#include "../src/gui/components/filebrowser/juce_DirectoryContentsDisplayComponent.cpp"
#include "../src/gui/components/filebrowser/juce_DirectoryContentsList.cpp"
#include "../src/gui/components/filebrowser/juce_FileBrowserComponent.cpp"
#include "../src/gui/components/filebrowser/juce_FileChooser.cpp"
#include "../src/gui/components/filebrowser/juce_FileChooserDialogBox.cpp"
#include "../src/gui/components/filebrowser/juce_FileFilter.cpp"
#include "../src/gui/components/filebrowser/juce_FileListComponent.cpp"
#include "../src/gui/components/filebrowser/juce_FilenameComponent.cpp"
#include "../src/gui/components/filebrowser/juce_FileSearchPathListComponent.cpp"
#include "../src/gui/components/filebrowser/juce_FileTreeComponent.cpp"
#include "../src/gui/components/filebrowser/juce_ImagePreviewComponent.cpp"
#include "../src/gui/components/filebrowser/juce_WildcardFileFilter.cpp"
#include "../src/gui/components/keyboard/juce_KeyboardFocusTraverser.cpp"
#include "../src/gui/components/keyboard/juce_KeyListener.cpp"
#include "../src/gui/components/keyboard/juce_KeyMappingEditorComponent.cpp"
#include "../src/gui/components/keyboard/juce_KeyPress.cpp"
#include "../src/gui/components/keyboard/juce_KeyPressMappingSet.cpp"
#include "../src/gui/components/keyboard/juce_ModifierKeys.cpp"
#include "../src/gui/components/keyboard/juce_CaretComponent.cpp"
#include "../src/gui/components/layout/juce_ComponentAnimator.cpp"
#include "../src/gui/components/layout/juce_ComponentBuilder.cpp"
#include "../src/gui/components/layout/juce_ComponentBoundsConstrainer.cpp"
#include "../src/gui/components/layout/juce_ComponentMovementWatcher.cpp"
#include "../src/gui/components/layout/juce_GroupComponent.cpp"
#include "../src/gui/components/layout/juce_MultiDocumentPanel.cpp"
#include "../src/gui/components/layout/juce_ResizableBorderComponent.cpp"
#include "../src/gui/components/layout/juce_ResizableCornerComponent.cpp"
#include "../src/gui/components/layout/juce_ResizableEdgeComponent.cpp"
#include "../src/gui/components/layout/juce_ScrollBar.cpp"
#include "../src/gui/components/layout/juce_StretchableLayoutManager.cpp"
#include "../src/gui/components/layout/juce_StretchableLayoutResizerBar.cpp"
#include "../src/gui/components/layout/juce_StretchableObjectResizer.cpp"
#include "../src/gui/components/layout/juce_TabbedButtonBar.cpp"
#include "../src/gui/components/layout/juce_TabbedComponent.cpp"
#include "../src/gui/components/layout/juce_Viewport.cpp"
#include "../src/gui/components/lookandfeel/juce_LookAndFeel.cpp"
#include "../src/gui/components/lookandfeel/juce_OldSchoolLookAndFeel.cpp"
#include "../src/gui/components/menus/juce_MenuBarComponent.cpp"
#include "../src/gui/components/menus/juce_MenuBarModel.cpp"
#include "../src/gui/components/menus/juce_PopupMenu.cpp"
#include "../src/gui/components/mouse/juce_ComponentDragger.cpp"
#include "../src/gui/components/mouse/juce_DragAndDropContainer.cpp"
#include "../src/gui/components/mouse/juce_MouseCursor.cpp"
#include "../src/gui/components/mouse/juce_MouseEvent.cpp"
#include "../src/gui/components/mouse/juce_MouseInputSource.cpp"
#include "../src/gui/components/mouse/juce_MouseListener.cpp"
#include "../src/gui/components/properties/juce_BooleanPropertyComponent.cpp"
#include "../src/gui/components/properties/juce_ButtonPropertyComponent.cpp"
#include "../src/gui/components/properties/juce_ChoicePropertyComponent.cpp"
#include "../src/gui/components/properties/juce_PropertyComponent.cpp"
#include "../src/gui/components/properties/juce_PropertyPanel.cpp"
#include "../src/gui/components/properties/juce_SliderPropertyComponent.cpp"
#include "../src/gui/components/properties/juce_TextPropertyComponent.cpp"
#include "../src/gui/components/special/juce_AudioDeviceSelectorComponent.cpp"
#include "../src/gui/components/special/juce_BubbleComponent.cpp"
#include "../src/gui/components/special/juce_BubbleMessageComponent.cpp"
#include "../src/gui/components/special/juce_ColourSelector.cpp"
#include "../src/gui/components/special/juce_DropShadower.cpp"
#include "../src/gui/components/special/juce_MidiKeyboardComponent.cpp"
#include "../src/gui/components/special/juce_OpenGLComponent.cpp"
#include "../src/gui/components/special/juce_PreferencesPanel.cpp"
#include "../src/gui/components/special/juce_SystemTrayIconComponent.cpp"
#include "../src/gui/components/windows/juce_AlertWindow.cpp"
#include "../src/gui/components/windows/juce_CallOutBox.cpp"
#include "../src/gui/components/windows/juce_ComponentPeer.cpp"
#include "../src/gui/components/windows/juce_DialogWindow.cpp"
#include "../src/gui/components/windows/juce_DocumentWindow.cpp"
#include "../src/gui/components/windows/juce_ResizableWindow.cpp"
#include "../src/gui/components/windows/juce_SplashScreen.cpp"
#include "../src/gui/components/windows/juce_ThreadWithProgressWindow.cpp"
#include "../src/gui/components/windows/juce_TooltipWindow.cpp"
#include "../src/gui/components/windows/juce_TopLevelWindow.cpp"
#include "../src/gui/components/positioning/juce_MarkerList.cpp"
#include "../src/gui/components/positioning/juce_RelativeCoordinate.cpp"
#include "../src/gui/components/positioning/juce_RelativePoint.cpp"
#include "../src/gui/components/positioning/juce_RelativeRectangle.cpp"
#include "../src/gui/components/positioning/juce_RelativePointPath.cpp"
#include "../src/gui/components/positioning/juce_RelativeParallelogram.cpp"
#include "../src/gui/components/positioning/juce_RelativeCoordinatePositioner.cpp"
#endif
#if JUCE_BUILD_MISC // (put these in misc to balance the file sizes and avoid problems in iphone build)
#include "../src/gui/graphics/colour/juce_Colour.cpp"
#include "../src/gui/graphics/colour/juce_ColourGradient.cpp"
#include "../src/gui/graphics/colour/juce_Colours.cpp"
#include "../src/gui/graphics/contexts/juce_EdgeTable.cpp"
#include "../src/gui/graphics/contexts/juce_FillType.cpp"
#include "../src/gui/graphics/contexts/juce_GraphicsContext.cpp"
#include "../src/gui/graphics/contexts/juce_Justification.cpp"
#include "../src/gui/graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp"
#include "../src/gui/graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp"
#include "../src/gui/graphics/contexts/juce_RectanglePlacement.cpp"
#include "../src/gui/graphics/drawables/juce_Drawable.cpp"
#include "../src/gui/graphics/drawables/juce_DrawableShape.cpp"
#include "../src/gui/graphics/drawables/juce_DrawableComposite.cpp"
#include "../src/gui/graphics/drawables/juce_DrawableImage.cpp"
#include "../src/gui/graphics/drawables/juce_DrawablePath.cpp"
#include "../src/gui/graphics/drawables/juce_DrawableRectangle.cpp"
#include "../src/gui/graphics/drawables/juce_DrawableText.cpp"
#include "../src/gui/graphics/drawables/juce_SVGParser.cpp"
#include "../src/gui/graphics/effects/juce_DropShadowEffect.cpp"
#include "../src/gui/graphics/effects/juce_GlowEffect.cpp"
#include "../src/gui/graphics/fonts/juce_Font.cpp"
#include "../src/gui/graphics/fonts/juce_GlyphArrangement.cpp"
#include "../src/gui/graphics/fonts/juce_TextLayout.cpp"
#include "../src/gui/graphics/fonts/juce_Typeface.cpp"
#include "../src/gui/graphics/fonts/juce_CustomTypeface.cpp"
#include "../src/gui/graphics/geometry/juce_AffineTransform.cpp"
#include "../src/gui/graphics/geometry/juce_Path.cpp"
#include "../src/gui/graphics/geometry/juce_PathIterator.cpp"
#include "../src/gui/graphics/geometry/juce_PathStrokeType.cpp"
#include "../src/gui/graphics/geometry/juce_RectangleList.cpp"
#include "../src/gui/graphics/imaging/juce_Image.cpp"
#include "../src/gui/graphics/imaging/juce_ImageCache.cpp"
#include "../src/gui/graphics/imaging/juce_ImageConvolutionKernel.cpp"
#include "../src/gui/graphics/imaging/juce_ImageFileFormat.cpp"
#include "../src/gui/graphics/imaging/image_file_formats/juce_GIFLoader.cpp"
#endif
//==============================================================================
// some files include lots of library code, so leave them to the end to avoid cluttering
// up the build for the clean files.
#if JUCE_BUILD_CORE
#include "../src/io/streams/juce_GZIPCompressorOutputStream.cpp"
#include "../src/io/streams/juce_GZIPDecompressorInputStream.cpp"
#endif
#if JUCE_BUILD_NATIVE && ! JUCE_ONLY_BUILD_CORE_LIBRARY
#include "../src/audio/audio_file_formats/juce_CoreAudioFormat.cpp"
#include "../src/audio/audio_file_formats/juce_FlacAudioFormat.cpp"
#include "../src/audio/audio_file_formats/juce_OggVorbisAudioFormat.cpp"
#endif
#if JUCE_BUILD_CORE && ! JUCE_ONLY_BUILD_CORE_LIBRARY // do these in the core section to help balance the sizes
#include "../src/gui/graphics/imaging/image_file_formats/juce_JPEGLoader.cpp"
#include "../src/gui/graphics/imaging/image_file_formats/juce_PNGLoader.cpp"
#endif
//==============================================================================
#if JUCE_BUILD_NATIVE
// Non-public headers that are needed by more than one platform must be included
// before the platform-specific sections..
BEGIN_JUCE_NAMESPACE
#if ! JUCE_ONLY_BUILD_CORE_LIBRARY
#include "../src/native/common/juce_MidiDataConcatenator.h"
#endif
END_JUCE_NAMESPACE
#if JUCE_WINDOWS
#include "../src/native/windows/juce_win32_NativeCode.cpp"
#elif JUCE_LINUX
#include "../src/native/linux/juce_linux_NativeCode.cpp"
#elif JUCE_MAC || JUCE_IOS
#include "../src/native/mac/juce_mac_NativeCode.mm"
#elif JUCE_ANDROID
#include "../src/native/android/juce_android_NativeCode.cpp"
#include "../modules/juce_video/juce_video.cpp"
#if JUCE_OPENGL
#include "../modules/juce_opengl/juce_opengl.cpp"
#endif
#include "../modules/juce_audio_basics/juce_audio_basics.cpp"
#include "../modules/juce_audio_formats/juce_audio_formats.cpp"
#include "../modules/juce_audio_processors/juce_audio_processors.cpp"
#include "../modules/juce_audio_devices/juce_audio_devices.cpp"
#endif
#if JUCE_BUILD_GUI
#include "../modules/juce_gui_basics/juce_gui_basics.cpp"
#include "../modules/juce_gui_extra/juce_gui_extra.cpp"
#include "../modules/juce_gui_audio/juce_gui_audio.cpp"
#endif

+ 0
- 1
bin/ReadMe.txt View File

@@ -1 +0,0 @@
This folder is where the compiled libs and intermediate files get stored...

+ 44
- 14
extras/Introjucer/Builds/Linux/Makefile View File

@@ -1,5 +1,5 @@
# Automatically generated makefile, created by the Jucer
# Don't edit this file! Your changes will be overwritten when you re-save the Jucer project!
# Automatically generated makefile, created by the Introjucer
# Don't edit this file! Your changes will be overwritten when you re-save the Introjucer project!
ifndef CONFIG
CONFIG=Debug
@@ -51,6 +51,7 @@ OBJECTS := \
$(OBJDIR)/jucer_OpenDocumentManager_4c72d210.o \
$(OBJDIR)/jucer_SourceCodeEditor_461f5487.o \
$(OBJDIR)/jucer_GroupInformationComponent_631ccf01.o \
$(OBJDIR)/jucer_Module_3f7666a5.o \
$(OBJDIR)/jucer_NewFileWizard_b8a19ef8.o \
$(OBJDIR)/jucer_NewProjectWizard_7a15bf5d.o \
$(OBJDIR)/jucer_Project_c131864a.o \
@@ -67,10 +68,14 @@ OBJECTS := \
$(OBJDIR)/jucer_MiscUtilities_25b68c82.o \
$(OBJDIR)/jucer_StoredSettings_26078d2c.o \
$(OBJDIR)/BinaryData_ce4232d4.o \
$(OBJDIR)/JuceLibraryCode1_682c927f.o \
$(OBJDIR)/JuceLibraryCode2_683aaa00.o \
$(OBJDIR)/JuceLibraryCode3_6848c181.o \
$(OBJDIR)/JuceLibraryCode4_6856d902.o \
$(OBJDIR)/juce_audio_basics_wrapper_e4aa31f5.o \
$(OBJDIR)/juce_core_wrapper_b07ed786.o \
$(OBJDIR)/juce_cryptography_wrapper_8b556353.o \
$(OBJDIR)/juce_data_structures_wrapper_4f7fd480.o \
$(OBJDIR)/juce_events_wrapper_a8dc8280.o \
$(OBJDIR)/juce_graphics_wrapper_a0e77172.o \
$(OBJDIR)/juce_gui_basics_wrapper_e00f2ff0.o \
$(OBJDIR)/juce_gui_extra_wrapper_b6e18277.o \
.PHONY: clean
@@ -127,6 +132,11 @@ $(OBJDIR)/jucer_GroupInformationComponent_631ccf01.o: ../../Source/Project/jucer
@echo "Compiling jucer_GroupInformationComponent.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/jucer_Module_3f7666a5.o: ../../Source/Project/jucer_Module.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling jucer_Module.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/jucer_NewFileWizard_b8a19ef8.o: ../../Source/Project/jucer_NewFileWizard.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling jucer_NewFileWizard.cpp"
@@ -207,24 +217,44 @@ $(OBJDIR)/BinaryData_ce4232d4.o: ../../JuceLibraryCode/BinaryData.cpp
@echo "Compiling BinaryData.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/JuceLibraryCode1_682c927f.o: ../../JuceLibraryCode/JuceLibraryCode1.cpp
$(OBJDIR)/juce_audio_basics_wrapper_e4aa31f5.o: ../../JuceLibraryCode/juce_audio_basics_wrapper.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling juce_audio_basics_wrapper.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/juce_core_wrapper_b07ed786.o: ../../JuceLibraryCode/juce_core_wrapper.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling juce_core_wrapper.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/juce_cryptography_wrapper_8b556353.o: ../../JuceLibraryCode/juce_cryptography_wrapper.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling juce_cryptography_wrapper.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/juce_data_structures_wrapper_4f7fd480.o: ../../JuceLibraryCode/juce_data_structures_wrapper.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling juce_data_structures_wrapper.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/juce_events_wrapper_a8dc8280.o: ../../JuceLibraryCode/juce_events_wrapper.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling JuceLibraryCode1.cpp"
@echo "Compiling juce_events_wrapper.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/JuceLibraryCode2_683aaa00.o: ../../JuceLibraryCode/JuceLibraryCode2.cpp
$(OBJDIR)/juce_graphics_wrapper_a0e77172.o: ../../JuceLibraryCode/juce_graphics_wrapper.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling JuceLibraryCode2.cpp"
@echo "Compiling juce_graphics_wrapper.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/JuceLibraryCode3_6848c181.o: ../../JuceLibraryCode/JuceLibraryCode3.cpp
$(OBJDIR)/juce_gui_basics_wrapper_e00f2ff0.o: ../../JuceLibraryCode/juce_gui_basics_wrapper.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling JuceLibraryCode3.cpp"
@echo "Compiling juce_gui_basics_wrapper.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/JuceLibraryCode4_6856d902.o: ../../JuceLibraryCode/JuceLibraryCode4.cpp
$(OBJDIR)/juce_gui_extra_wrapper_b6e18277.o: ../../JuceLibraryCode/juce_gui_extra_wrapper.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling JuceLibraryCode4.cpp"
@echo "Compiling juce_gui_extra_wrapper.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
-include $(OBJECTS:%.o=%.d)

BIN
extras/Introjucer/Builds/MacOSX/Icon.icns View File


+ 1477
- 17
extras/Introjucer/Builds/MacOSX/The Introjucer.xcodeproj/project.pbxproj
File diff suppressed because it is too large
View File


+ 3421
- 4
extras/Introjucer/Builds/VisualStudio2005/The Introjucer.vcproj
File diff suppressed because it is too large
View File


BIN
extras/Introjucer/Builds/VisualStudio2005/icon.ico View File

Before After

+ 3421
- 4
extras/Introjucer/Builds/VisualStudio2008/The Introjucer.vcproj
File diff suppressed because it is too large
View File


BIN
extras/Introjucer/Builds/VisualStudio2008/icon.ico View File

Before After

+ 1211
- 4
extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj
File diff suppressed because it is too large
View File


+ 2303
- 128
extras/Introjucer/Builds/VisualStudio2010/The Introjucer.vcxproj.filters
File diff suppressed because it is too large
View File


BIN
extras/Introjucer/Builds/VisualStudio2010/icon.ico View File

Before After

+ 22
- 9
extras/Introjucer/Introjucer.jucer View File

@@ -68,10 +68,17 @@
file="Source/Code Editor/jucer_SourceCodeEditor.h"/>
</GROUP>
<GROUP id="vGFZIJg" name="Project">
<FILE id="a9a1b" name="jucer_AudioPluginModule.h" compile="0" resource="0"
file="Source/Project/jucer_AudioPluginModule.h"/>
<FILE id="Wx7kXq7" name="jucer_GroupInformationComponent.cpp" compile="1"
resource="0" file="Source/Project/jucer_GroupInformationComponent.cpp"/>
<FILE id="sQjHbVN" name="jucer_GroupInformationComponent.h" compile="0"
resource="0" file="Source/Project/jucer_GroupInformationComponent.h"/>
<FILE id="HXGcY" name="jucer_JuceLibraryModule.h" compile="0" resource="0"
file="Source/Project/jucer_JuceLibraryModule.h"/>
<FILE id="MJkOAX" name="jucer_Module.cpp" compile="1" resource="0"
file="Source/Project/jucer_Module.cpp"/>
<FILE id="VZmQQ6" name="jucer_Module.h" compile="0" resource="0" file="Source/Project/jucer_Module.h"/>
<FILE id="Vf0IGtm" name="jucer_NewFileWizard.cpp" compile="1" resource="0"
file="Source/Project/jucer_NewFileWizard.cpp"/>
<FILE id="VRwC9Js" name="jucer_NewFileWizard.h" compile="0" resource="0"
@@ -183,13 +190,19 @@
</MAINGROUP>
<JUCEOPTIONS JUCE_ASIO="disabled" JUCE_WASAPI="disabled" JUCE_DIRECTSOUND="disabled"
JUCE_ALSA="disabled" JUCE_QUICKTIME="disabled" JUCE_OPENGL="disabled"
JUCE_USE_FLAC="disabled" JUCE_USE_OGGBVORBIS="2" JUCE_USE_CDBURNER="disabled"
JUCE_USE_CDREADER="disabled" JUCE_USE_CAMERA="disabled" JUCE_PLUGINHOST_VST="disabled"
JUCE_PLUGINHOST_AU="disabled" JUCE_USE_OGGVORBIS="disabled" JUCE_FORCE_DEBUG="default"
JUCE_LOG_ASSERTIONS="default" JUCE_ENABLE_REPAINT_DEBUGGING="default"
JUCE_USE_XINERAMA="default" JUCE_USE_XSHM="default" JUCE_ONLY_BUILD_CORE_LIBRARY="default"
JUCE_WEB_BROWSER="default" JUCE_SUPPORT_CARBON="default" JUCE_CHECK_MEMORY_LEAKS="default"
JUCE_CATCH_UNHANDLED_EXCEPTIONS="default" JUCE_STRINGS_ARE_UNICODE="default"
JUCE_USE_XRENDER="default" JUCE_USE_XCURSOR="default" JUCE_DIRECT2D="default"
JUCE_DIRECTSHOW="default" JUCE_MEDIAFOUNDATION="default"/>
JUCE_USE_FLAC="disabled" JUCE_USE_CDBURNER="disabled" JUCE_USE_CDREADER="disabled"
JUCE_USE_CAMERA="disabled" JUCE_PLUGINHOST_VST="disabled" JUCE_PLUGINHOST_AU="disabled"
JUCE_USE_OGGVORBIS="disabled" JUCE_USE_COREIMAGE_LOADER="disabled"/>
<MODULES>
<MODULE id="juce_core" showAllCode="1"/>
<MODULE id="juce_events" showAllCode="1"/>
<MODULE id="juce_graphics" showAllCode="1"/>
<MODULE id="juce_gui" showAllCode="1"/>
<MODULE id="juce_data_structures" showAllCode="1"/>
<MODULE id="juce_cryptography" showAllCode="1"/>
<MODULE id="juce_audio" showAllCode="1"/>
<MODULE id="juce_gui_basics" showAllCode="1"/>
<MODULE id="juce_gui_extra" showAllCode="1"/>
<MODULE id="juce_audio_basics" showAllCode="1"/>
</MODULES>
</JUCERPROJECT>

+ 21
- 25
extras/Introjucer/JuceLibraryCode/AppConfig.h View File

@@ -3,39 +3,35 @@
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
If you want to change any of these values, use the Introjucer to do so, rather than
editing this file directly!
If you want to change any of these values, use the Introjucer to do so,
rather than editing this file directly!
Any commented-out settings will fall back to using the default values that
they are given in juce_Config.h
Any commented-out settings will assume their default values.
*/
//==============================================================================
// juce_core flags:
//#define JUCE_FORCE_DEBUG
//#define JUCE_LOG_ASSERTIONS
#define JUCE_ASIO 0
#define JUCE_WASAPI 0
#define JUCE_DIRECTSOUND 0
//#define JUCE_DIRECTSHOW
//#define JUCE_MEDIAFOUNDATION
#define JUCE_ALSA 0
#define JUCE_QUICKTIME 0
#define JUCE_OPENGL 0
//#define JUCE_DIRECT2D
#define JUCE_USE_FLAC 0
#define JUCE_USE_OGGVORBIS 0
#define JUCE_USE_CDBURNER 0
#define JUCE_USE_CDREADER 0
#define JUCE_USE_CAMERA 0
//#define JUCE_CHECK_MEMORY_LEAKS
//#define JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
//==============================================================================
// juce_graphics flags:
#define JUCE_USE_COREIMAGE_LOADER 0
//==============================================================================
// juce_gui_basics flags:
//#define JUCE_ENABLE_REPAINT_DEBUGGING
//#define JUCE_USE_XINERAMA
//#define JUCE_USE_XSHM
//#define JUCE_USE_XRENDER
//#define JUCE_USE_XCURSOR
#define JUCE_PLUGINHOST_VST 0
#define JUCE_PLUGINHOST_AU 0
//#define JUCE_ONLY_BUILD_CORE_LIBRARY
//==============================================================================
// juce_gui_extra flags:
//#define JUCE_WEB_BROWSER
//#define JUCE_SUPPORT_CARBON
//#define JUCE_CHECK_MEMORY_LEAKS
//#define JUCE_CATCH_UNHANDLED_EXCEPTIONS

+ 3
- 3
extras/Introjucer/JuceLibraryCode/BinaryData.cpp View File

@@ -304,7 +304,7 @@ static const unsigned char temp_6eda5614[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
" This file was auto-generated by the Jucer!\r\n"
" This file was auto-generated by the Introjucer!\r\n"
"\r\n"
" It contains the basic startup code for a Juce application.\r\n"
"\r\n"
@@ -344,7 +344,7 @@ static const unsigned char temp_67353d19[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
" This file was auto-generated by the Jucer!\r\n"
" This file was auto-generated by the Introjucer!\r\n"
"\r\n"
" It contains the basic startup code for a Juce application.\r\n"
"\r\n"
@@ -667,7 +667,7 @@ static const unsigned char temp_292512d9[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
" This file was auto-generated by the Jucer!\r\n"
" This file was auto-generated by the Introjucer!\r\n"
"\r\n"
" It contains the basic startup code for a Juce application.\r\n"
"\r\n"


+ 3
- 3
extras/Introjucer/JuceLibraryCode/BinaryData.h View File

@@ -14,10 +14,10 @@ namespace BinaryData
const int brushed_aluminium_pngSize = 14724;
extern const char* jucer_AudioPluginEditorTemplate_cpp;
const int jucer_AudioPluginEditorTemplate_cppSize = 1003;
const int jucer_AudioPluginEditorTemplate_cppSize = 1008;
extern const char* jucer_AudioPluginEditorTemplate_h;
const int jucer_AudioPluginEditorTemplate_hSize = 794;
const int jucer_AudioPluginEditorTemplate_hSize = 799;
extern const char* jucer_AudioPluginFilterTemplate_cpp;
const int jucer_AudioPluginFilterTemplate_cppSize = 4468;
@@ -29,7 +29,7 @@ namespace BinaryData
const int jucer_MainConsoleAppTemplate_cppSize = 483;
extern const char* jucer_MainTemplate_cpp;
const int jucer_MainTemplate_cppSize = 1820;
const int jucer_MainTemplate_cppSize = 1825;
extern const char* jucer_NewCppFileTemplate_cpp;
const int jucer_NewCppFileTemplate_cppSize = 232;


+ 16
- 3
extras/Introjucer/JuceLibraryCode/JuceHeader.h View File

@@ -4,8 +4,8 @@
project - if you alter its contents, your changes may be overwritten!
This is the header file that your files should include in order to get all the
Juce library headers. You should NOT include juce.h or juce_amalgamated.h directly in
your own source files, because that wouldn't pick up the correct Juce configuration
JUCE library headers. You should avoid including the JUCE headers directly in
your own source files, because that wouldn't pick up the correct configuration
options for your app.
*/
@@ -14,9 +14,22 @@
#define __APPHEADERFILE_M70QFTRRK__
#include "AppConfig.h"
#include "../../../juce_amalgamated.h"
#include "../../../modules/juce_audio_basics/juce_audio_basics.h"
#include "../../../modules/juce_core/juce_core.h"
#include "../../../modules/juce_cryptography/juce_cryptography.h"
#include "../../../modules/juce_data_structures/juce_data_structures.h"
#include "../../../modules/juce_events/juce_events.h"
#include "../../../modules/juce_graphics/juce_graphics.h"
#include "../../../modules/juce_gui_basics/juce_gui_basics.h"
#include "../../../modules/juce_gui_extra/juce_gui_extra.h"
#include "BinaryData.h"
#if ! DONT_SET_USING_JUCE_NAMESPACE
// If your code uses a lot of JUCE classes, then this will obviously save you
// a lot of typing, but can be disabled by setting DONT_SET_USING_JUCE_NAMESPACE.
using namespace JUCE_NAMESPACE;
#endif
namespace ProjectInfo
{
const char* const projectName = "The Introjucer";


+ 0
- 15
extras/Introjucer/JuceLibraryCode/JuceLibraryCode1.cpp View File

@@ -1,15 +0,0 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This file pulls in all the Juce source code, and builds it using the settings
defined in AppConfig.h.
If you want to change the method by which Juce is linked into your app, use the
Jucer to change it, rather than trying to edit this file directly.
*/
#include "AppConfig.h"
#include "../../../amalgamation/juce_amalgamated1.cpp"

+ 0
- 15
extras/Introjucer/JuceLibraryCode/JuceLibraryCode1.mm View File

@@ -1,15 +0,0 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This file pulls in all the Juce source code, and builds it using the settings
defined in AppConfig.h.
If you want to change the method by which Juce is linked into your app, use the
Jucer to change it, rather than trying to edit this file directly.
*/
#include "AppConfig.h"
#include "../../../amalgamation/juce_amalgamated1.cpp"

+ 0
- 15
extras/Introjucer/JuceLibraryCode/JuceLibraryCode2.cpp View File

@@ -1,15 +0,0 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This file pulls in all the Juce source code, and builds it using the settings
defined in AppConfig.h.
If you want to change the method by which Juce is linked into your app, use the
Jucer to change it, rather than trying to edit this file directly.
*/
#include "AppConfig.h"
#include "../../../amalgamation/juce_amalgamated2.cpp"

+ 0
- 15
extras/Introjucer/JuceLibraryCode/JuceLibraryCode2.mm View File

@@ -1,15 +0,0 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This file pulls in all the Juce source code, and builds it using the settings
defined in AppConfig.h.
If you want to change the method by which Juce is linked into your app, use the
Jucer to change it, rather than trying to edit this file directly.
*/
#include "AppConfig.h"
#include "../../../amalgamation/juce_amalgamated2.cpp"

+ 0
- 15
extras/Introjucer/JuceLibraryCode/JuceLibraryCode3.cpp View File

@@ -1,15 +0,0 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This file pulls in all the Juce source code, and builds it using the settings
defined in AppConfig.h.
If you want to change the method by which Juce is linked into your app, use the
Jucer to change it, rather than trying to edit this file directly.
*/
#include "AppConfig.h"
#include "../../../amalgamation/juce_amalgamated3.cpp"

+ 0
- 15
extras/Introjucer/JuceLibraryCode/JuceLibraryCode3.mm View File

@@ -1,15 +0,0 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This file pulls in all the Juce source code, and builds it using the settings
defined in AppConfig.h.
If you want to change the method by which Juce is linked into your app, use the
Jucer to change it, rather than trying to edit this file directly.
*/
#include "AppConfig.h"
#include "../../../amalgamation/juce_amalgamated3.cpp"

+ 0
- 15
extras/Introjucer/JuceLibraryCode/JuceLibraryCode4.cpp View File

@@ -1,15 +0,0 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This file pulls in all the Juce source code, and builds it using the settings
defined in AppConfig.h.
If you want to change the method by which Juce is linked into your app, use the
Jucer to change it, rather than trying to edit this file directly.
*/
#include "AppConfig.h"
#include "../../../amalgamation/juce_amalgamated4.cpp"

+ 0
- 15
extras/Introjucer/JuceLibraryCode/JuceLibraryCode4.mm View File

@@ -1,15 +0,0 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This file pulls in all the Juce source code, and builds it using the settings
defined in AppConfig.h.
If you want to change the method by which Juce is linked into your app, use the
Jucer to change it, rather than trying to edit this file directly.
*/
#include "AppConfig.h"
#include "../../../amalgamation/juce_amalgamated4.cpp"

+ 12
- 0
extras/Introjucer/JuceLibraryCode/ReadMe.txt View File

@@ -0,0 +1,12 @@
Important Note!!
================
The purpose of this folder is to contain files that are auto-generated by the Introjucer,
and ALL files in this folder will be mercilessly DELETED and completely re-written whenever
the Introjucer saves your project.
Therefore, it's a bad idea to make any manual changes to the files in here, or to
put any of your own files in here if you don't want to lose them. (Of course you may choose
to add the folder's contents to your version-control system so that you can re-merge your own
modifications after the Introjucer has saved its changes).

+ 14
- 0
extras/Introjucer/JuceLibraryCode/juce_audio_basics_wrapper.cpp View File

@@ -0,0 +1,14 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This file pulls in a module's source code, and builds it using the settings
defined in AppConfig.h.
*/
#define JUCE_WRAPPED_FILE 1
#include "AppConfig.h"
#include "../../../modules/juce_audio_basics/juce_audio_basics.cpp"

+ 14
- 0
extras/Introjucer/JuceLibraryCode/juce_audio_basics_wrapper.mm View File

@@ -0,0 +1,14 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This file pulls in a module's source code, and builds it using the settings
defined in AppConfig.h.
*/
#define JUCE_WRAPPED_FILE 1
#include "AppConfig.h"
#include "../../../modules/juce_audio_basics/juce_audio_basics.cpp"

+ 14
- 0
extras/Introjucer/JuceLibraryCode/juce_core_wrapper.cpp View File

@@ -0,0 +1,14 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This file pulls in a module's source code, and builds it using the settings
defined in AppConfig.h.
*/
#define JUCE_WRAPPED_FILE 1
#include "AppConfig.h"
#include "../../../modules/juce_core/juce_core.cpp"

+ 14
- 0
extras/Introjucer/JuceLibraryCode/juce_core_wrapper.mm View File

@@ -0,0 +1,14 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This file pulls in a module's source code, and builds it using the settings
defined in AppConfig.h.
*/
#define JUCE_WRAPPED_FILE 1
#include "AppConfig.h"
#include "../../../modules/juce_core/juce_core.cpp"

+ 14
- 0
extras/Introjucer/JuceLibraryCode/juce_cryptography_wrapper.cpp View File

@@ -0,0 +1,14 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This file pulls in a module's source code, and builds it using the settings
defined in AppConfig.h.
*/
#define JUCE_WRAPPED_FILE 1
#include "AppConfig.h"
#include "../../../modules/juce_cryptography/juce_cryptography.cpp"

+ 14
- 0
extras/Introjucer/JuceLibraryCode/juce_cryptography_wrapper.mm View File

@@ -0,0 +1,14 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This file pulls in a module's source code, and builds it using the settings
defined in AppConfig.h.
*/
#define JUCE_WRAPPED_FILE 1
#include "AppConfig.h"
#include "../../../modules/juce_cryptography/juce_cryptography.cpp"

+ 14
- 0
extras/Introjucer/JuceLibraryCode/juce_data_structures_wrapper.cpp View File

@@ -0,0 +1,14 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This file pulls in a module's source code, and builds it using the settings
defined in AppConfig.h.
*/
#define JUCE_WRAPPED_FILE 1
#include "AppConfig.h"
#include "../../../modules/juce_data_structures/juce_data_structures.cpp"

+ 14
- 0
extras/Introjucer/JuceLibraryCode/juce_data_structures_wrapper.mm View File

@@ -0,0 +1,14 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This file pulls in a module's source code, and builds it using the settings
defined in AppConfig.h.
*/
#define JUCE_WRAPPED_FILE 1
#include "AppConfig.h"
#include "../../../modules/juce_data_structures/juce_data_structures.cpp"

+ 14
- 0
extras/Introjucer/JuceLibraryCode/juce_events_wrapper.cpp View File

@@ -0,0 +1,14 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This file pulls in a module's source code, and builds it using the settings
defined in AppConfig.h.
*/
#define JUCE_WRAPPED_FILE 1
#include "AppConfig.h"
#include "../../../modules/juce_events/juce_events.cpp"

+ 14
- 0
extras/Introjucer/JuceLibraryCode/juce_events_wrapper.mm View File

@@ -0,0 +1,14 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This file pulls in a module's source code, and builds it using the settings
defined in AppConfig.h.
*/
#define JUCE_WRAPPED_FILE 1
#include "AppConfig.h"
#include "../../../modules/juce_events/juce_events.cpp"

+ 14
- 0
extras/Introjucer/JuceLibraryCode/juce_graphics_wrapper.cpp View File

@@ -0,0 +1,14 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This file pulls in a module's source code, and builds it using the settings
defined in AppConfig.h.
*/
#define JUCE_WRAPPED_FILE 1
#include "AppConfig.h"
#include "../../../modules/juce_graphics/juce_graphics.cpp"

+ 14
- 0
extras/Introjucer/JuceLibraryCode/juce_graphics_wrapper.mm View File

@@ -0,0 +1,14 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This file pulls in a module's source code, and builds it using the settings
defined in AppConfig.h.
*/
#define JUCE_WRAPPED_FILE 1
#include "AppConfig.h"
#include "../../../modules/juce_graphics/juce_graphics.cpp"

+ 14
- 0
extras/Introjucer/JuceLibraryCode/juce_gui_basics_wrapper.cpp View File

@@ -0,0 +1,14 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This file pulls in a module's source code, and builds it using the settings
defined in AppConfig.h.
*/
#define JUCE_WRAPPED_FILE 1
#include "AppConfig.h"
#include "../../../modules/juce_gui_basics/juce_gui_basics.cpp"

+ 14
- 0
extras/Introjucer/JuceLibraryCode/juce_gui_basics_wrapper.mm View File

@@ -0,0 +1,14 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This file pulls in a module's source code, and builds it using the settings
defined in AppConfig.h.
*/
#define JUCE_WRAPPED_FILE 1
#include "AppConfig.h"
#include "../../../modules/juce_gui_basics/juce_gui_basics.cpp"

+ 14
- 0
extras/Introjucer/JuceLibraryCode/juce_gui_extra_wrapper.cpp View File

@@ -0,0 +1,14 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This file pulls in a module's source code, and builds it using the settings
defined in AppConfig.h.
*/
#define JUCE_WRAPPED_FILE 1
#include "AppConfig.h"
#include "../../../modules/juce_gui_extra/juce_gui_extra.cpp"

+ 14
- 0
extras/Introjucer/JuceLibraryCode/juce_gui_extra_wrapper.mm View File

@@ -0,0 +1,14 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This file pulls in a module's source code, and builds it using the settings
defined in AppConfig.h.
*/
#define JUCE_WRAPPED_FILE 1
#include "AppConfig.h"
#include "../../../modules/juce_gui_extra/juce_gui_extra.cpp"

+ 4
- 4
extras/Introjucer/Source/Application/jucer_Application.h View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
@@ -23,8 +23,8 @@
==============================================================================
*/
#ifndef __JUCER_APPLICATION_H_6595C2A8__
#define __JUCER_APPLICATION_H_6595C2A8__
#ifndef __JUCER_APPLICATION_JUCEHEADER__
#define __JUCER_APPLICATION_JUCEHEADER__
#include "../jucer_Headers.h"
#include "jucer_MainWindow.h"
@@ -504,4 +504,4 @@ private:
};
#endif // __JUCER_APPLICATION_H_6595C2A8__
#endif // __JUCER_APPLICATION_JUCEHEADER__

+ 1
- 1
extras/Introjucer/Source/Application/jucer_CommandIDs.h View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------


+ 4
- 4
extras/Introjucer/Source/Application/jucer_CommonHeaders.h View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
@@ -23,8 +23,8 @@
==============================================================================
*/
#ifndef __JUCER_COMMONINCLUDES_H__
#define __JUCER_COMMONINCLUDES_H__
#ifndef __JUCER_COMMONHEADERS_JUCEHEADER__
#define __JUCER_COMMONHEADERS_JUCEHEADER__
#include "../Utility/jucer_StoredSettings.h"
@@ -48,4 +48,4 @@ const char* const sourceFileExtensions = "cpp;mm;m;c;cc;cxx";
const char* const headerFileExtensions = "h;hpp;hxx";
const char* const sourceOrHeaderFileExtensions = "cpp;mm;m;c;cc;cxx;h;hpp;hxx";
#endif
#endif // __JUCER_COMMONHEADERS_JUCEHEADER__

+ 1
- 1
extras/Introjucer/Source/Application/jucer_DocumentEditorComponent.cpp View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------


+ 1
- 1
extras/Introjucer/Source/Application/jucer_DocumentEditorComponent.h View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------


+ 1
- 1
extras/Introjucer/Source/Application/jucer_FilePreviewComponent.cpp View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------


+ 4
- 4
extras/Introjucer/Source/Application/jucer_FilePreviewComponent.h View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
@@ -23,8 +23,8 @@
==============================================================================
*/
#ifndef __JUCER_ITEMPREVIEWCOMPONENT_JUCEHEADER__
#define __JUCER_ITEMPREVIEWCOMPONENT_JUCEHEADER__
#ifndef __JUCER_FILEPREVIEWCOMPONENT_JUCEHEADER__
#define __JUCER_FILEPREVIEWCOMPONENT_JUCEHEADER__
//==============================================================================
@@ -49,4 +49,4 @@ private:
};
#endif // __JUCER_ITEMPREVIEWCOMPONENT_JUCEHEADER__
#endif // __JUCER_FILEPREVIEWCOMPONENT_JUCEHEADER__

+ 2
- 2
extras/Introjucer/Source/Application/jucer_JuceUpdater.cpp View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
@@ -139,7 +139,7 @@ void JuceUpdater::buttonClicked (Button*)
if (! xml->hasTagName ("JUCEVERSIONS"))
{
AlertWindow::showMessageBox (AlertWindow::WarningIcon, "Update Problems...",
"This version of the Jucer may be too old to receive automatic updates!\n\n"
"This version of the Introjucer may be too old to receive automatic updates!\n\n"
"Please visit www.rawmaterialsoftware.com and get the latest version manually!");
return;
}


+ 4
- 4
extras/Introjucer/Source/Application/jucer_JuceUpdater.h View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
@@ -23,8 +23,8 @@
==============================================================================
*/
#ifndef __JUCER_JUCEUPDATER_H_81537815__
#define __JUCER_JUCEUPDATER_H_81537815__
#ifndef __JUCER_JUCEUPDATER_JUCEHEADER__
#define __JUCER_JUCEUPDATER_JUCEHEADER__
//==============================================================================
@@ -74,4 +74,4 @@ private:
};
#endif // __JUCER_JUCEUPDATER_H_81537815__
#endif // __JUCER_JUCEUPDATER_JUCEHEADER__

+ 1
- 1
extras/Introjucer/Source/Application/jucer_Main.cpp View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------


+ 5
- 5
extras/Introjucer/Source/Application/jucer_MainWindow.cpp View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
@@ -56,12 +56,12 @@ MainWindow::MainWindow()
{
commandManager->registerAllCommandsForTarget (this);
// use a temporary one of these to harvest its commands..
ProjectContentComponent pcc;
commandManager->registerAllCommandsForTarget (&pcc);
// use some temporary objects to harvest their commands..
DocumentEditorComponent dec (nullptr);
commandManager->registerAllCommandsForTarget (&dec);
ProjectContentComponent pcc;
commandManager->registerAllCommandsForTarget (&pcc);
}
commandManager->getKeyMappings()->resetToDefaultMappings();


+ 1
- 1
extras/Introjucer/Source/Application/jucer_MainWindow.h View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------


+ 1
- 1
extras/Introjucer/Source/Application/jucer_OpenDocumentManager.cpp View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------


+ 1
- 1
extras/Introjucer/Source/Application/jucer_OpenDocumentManager.h View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------


+ 1
- 1
extras/Introjucer/Source/BinaryData/jucer_AudioPluginEditorTemplate.cpp View File

@@ -1,7 +1,7 @@
/*
==============================================================================
This file was auto-generated by the Jucer!
This file was auto-generated by the Introjucer!
It contains the basic startup code for a Juce application.


+ 1
- 1
extras/Introjucer/Source/BinaryData/jucer_AudioPluginEditorTemplate.h View File

@@ -1,7 +1,7 @@
/*
==============================================================================
This file was auto-generated by the Jucer!
This file was auto-generated by the Introjucer!
It contains the basic startup code for a Juce application.


+ 1
- 1
extras/Introjucer/Source/BinaryData/jucer_MainTemplate.cpp View File

@@ -1,7 +1,7 @@
/*
==============================================================================
This file was auto-generated by the Jucer!
This file was auto-generated by the Introjucer!
It contains the basic startup code for a Juce application.


+ 1
- 1
extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.cpp View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------


+ 1
- 1
extras/Introjucer/Source/Code Editor/jucer_SourceCodeEditor.h View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------


+ 398
- 0
extras/Introjucer/Source/Project/jucer_AudioPluginModule.h View File

@@ -0,0 +1,398 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
#ifndef __JUCER_AUDIOPLUGINMODULE_JUCEHEADER__
#define __JUCER_AUDIOPLUGINMODULE_JUCEHEADER__
//==============================================================================
namespace
{
Value shouldBuildVST (const Project& project) { return project.getProjectValue ("buildVST"); }
Value shouldBuildRTAS (const Project& project) { return project.getProjectValue ("buildRTAS"); }
Value shouldBuildAU (const Project& project) { return project.getProjectValue ("buildAU"); }
Value getPluginName (const Project& project) { return project.getProjectValue ("pluginName"); }
Value getPluginDesc (const Project& project) { return project.getProjectValue ("pluginDesc"); }
Value getPluginManufacturer (const Project& project) { return project.getProjectValue ("pluginManufacturer"); }
Value getPluginManufacturerCode (const Project& project) { return project.getProjectValue ("pluginManufacturerCode"); }
Value getPluginCode (const Project& project) { return project.getProjectValue ("pluginCode"); }
Value getPluginChannelConfigs (const Project& project) { return project.getProjectValue ("pluginChannelConfigs"); }
Value getPluginIsSynth (const Project& project) { return project.getProjectValue ("pluginIsSynth"); }
Value getPluginWantsMidiInput (const Project& project) { return project.getProjectValue ("pluginWantsMidiIn"); }
Value getPluginProducesMidiOut (const Project& project) { return project.getProjectValue ("pluginProducesMidiOut"); }
Value getPluginSilenceInProducesSilenceOut (const Project& project) { return project.getProjectValue ("pluginSilenceInIsSilenceOut"); }
Value getPluginTailLengthSeconds (const Project& project) { return project.getProjectValue ("pluginTailLength"); }
Value getPluginEditorNeedsKeyFocus (const Project& project) { return project.getProjectValue ("pluginEditorRequiresKeys"); }
Value getPluginAUExportPrefix (const Project& project) { return project.getProjectValue ("pluginAUExportPrefix"); }
Value getPluginAUCocoaViewClassName (const Project& project) { return project.getProjectValue ("pluginAUViewClass"); }
Value getPluginRTASCategory (const Project& project) { return project.getProjectValue ("pluginRTASCategory"); }
int countMaxPluginChannels (const String& configString, bool isInput)
{
StringArray configs;
configs.addTokens (configString, ", {}", String::empty);
configs.trim();
configs.removeEmptyStrings();
jassert ((configs.size() & 1) == 0); // looks like a syntax error in the configs?
int maxVal = 0;
for (int i = (isInput ? 0 : 1); i < configs.size(); i += 2)
maxVal = jmax (maxVal, configs[i].getIntValue());
return maxVal;
}
void writePluginCharacteristicsFile (ProjectSaver& projectSaver)
{
Project& project = projectSaver.getProject();
MemoryOutputStream mem;
mem << "//==============================================================================" << newLine
<< "// Audio plugin settings.." << newLine
<< newLine
<< "#define JucePlugin_Build_VST " << ((bool) shouldBuildVST (project).getValue() ? 1 : 0) << newLine
<< "#define JucePlugin_Build_AU " << ((bool) shouldBuildAU (project).getValue() ? 1 : 0) << newLine
<< "#define JucePlugin_Build_RTAS " << ((bool) shouldBuildRTAS (project).getValue() ? 1 : 0) << newLine
<< newLine
<< "#define JucePlugin_Name " << getPluginName (project).toString().quoted() << newLine
<< "#define JucePlugin_Desc " << getPluginDesc (project).toString().quoted() << newLine
<< "#define JucePlugin_Manufacturer " << getPluginManufacturer (project).toString().quoted() << newLine
<< "#define JucePlugin_ManufacturerCode '" << getPluginManufacturerCode (project).toString().trim().substring (0, 4) << "'" << newLine
<< "#define JucePlugin_PluginCode '" << getPluginCode (project).toString().trim().substring (0, 4) << "'" << newLine
<< "#define JucePlugin_MaxNumInputChannels " << countMaxPluginChannels (getPluginChannelConfigs (project).toString(), true) << newLine
<< "#define JucePlugin_MaxNumOutputChannels " << countMaxPluginChannels (getPluginChannelConfigs (project).toString(), false) << newLine
<< "#define JucePlugin_PreferredChannelConfigurations " << getPluginChannelConfigs (project).toString() << newLine
<< "#define JucePlugin_IsSynth " << ((bool) getPluginIsSynth (project).getValue() ? 1 : 0) << newLine
<< "#define JucePlugin_WantsMidiInput " << ((bool) getPluginWantsMidiInput (project).getValue() ? 1 : 0) << newLine
<< "#define JucePlugin_ProducesMidiOutput " << ((bool) getPluginProducesMidiOut (project).getValue() ? 1 : 0) << newLine
<< "#define JucePlugin_SilenceInProducesSilenceOut " << ((bool) getPluginSilenceInProducesSilenceOut (project).getValue() ? 1 : 0) << newLine
<< "#define JucePlugin_TailLengthSeconds " << (double) getPluginTailLengthSeconds (project).getValue() << newLine
<< "#define JucePlugin_EditorRequiresKeyboardFocus " << ((bool) getPluginEditorNeedsKeyFocus (project).getValue() ? 1 : 0) << newLine
<< "#define JucePlugin_VersionCode " << project.getVersionAsHex() << newLine
<< "#define JucePlugin_VersionString " << project.getVersion().toString().quoted() << newLine
<< "#define JucePlugin_VSTUniqueID JucePlugin_PluginCode" << newLine
<< "#define JucePlugin_VSTCategory " << ((bool) getPluginIsSynth (project).getValue() ? "kPlugCategSynth" : "kPlugCategEffect") << newLine
<< "#define JucePlugin_AUMainType " << ((bool) getPluginIsSynth (project).getValue() ? "kAudioUnitType_MusicDevice" : "kAudioUnitType_Effect") << newLine
<< "#define JucePlugin_AUSubType JucePlugin_PluginCode" << newLine
<< "#define JucePlugin_AUExportPrefix " << getPluginAUExportPrefix (project).toString() << newLine
<< "#define JucePlugin_AUExportPrefixQuoted " << getPluginAUExportPrefix (project).toString().quoted() << newLine
<< "#define JucePlugin_AUManufacturerCode JucePlugin_ManufacturerCode" << newLine
<< "#define JucePlugin_CFBundleIdentifier " << project.getBundleIdentifier().toString() << newLine
<< "#define JucePlugin_AUCocoaViewClassName " << getPluginAUCocoaViewClassName (project).toString() << newLine
<< "#define JucePlugin_RTASCategory " << ((bool) getPluginIsSynth (project).getValue() ? "ePlugInCategory_SWGenerators" : "ePlugInCategory_None") << newLine
<< "#define JucePlugin_RTASManufacturerCode JucePlugin_ManufacturerCode" << newLine
<< "#define JucePlugin_RTASProductId JucePlugin_PluginCode" << newLine
<< newLine;
projectSaver.setExtraAppConfigFileContent (mem.toString());
}
}
//==============================================================================
namespace VSTHelpers
{
static Value getVSTFolder (const ProjectExporter& exporter) { return exporter.getSetting (Ids::vstFolder); }
static void addVSTFolderToPath (const ProjectExporter& exporter, StringArray& searchPaths)
{
const String vstFolder (getVSTFolder (exporter).toString());
if (vstFolder.isNotEmpty())
{
RelativePath path (exporter.rebaseFromProjectFolderToBuildTarget (RelativePath (vstFolder, RelativePath::projectFolder)));
if (exporter.isVisualStudio())
searchPaths.add (path.toWindowsStyle());
else if (exporter.isLinux() || exporter.isXcode())
searchPaths.insert (0, path.toUnixStyle());
}
}
static void createVSTPathEditor (const ProjectExporter& exporter, Array <PropertyComponent*>& props)
{
props.add (new TextPropertyComponent (getVSTFolder (exporter), "VST Folder", 1024, false));
props.getLast()->setTooltip ("If you're building a VST, this must be the folder containing the VST SDK. This should be an absolute path.");
}
static void fixMissingVSTValues (const ProjectExporter& exporter)
{
if (getVSTFolder(exporter).toString().isEmpty())
getVSTFolder(exporter) = (exporter.isVisualStudio() ? "c:\\SDKs\\vstsdk2.4"
: "~/SDKs/vstsdk2.4");
}
static void prepareExporter (ProjectExporter& exporter, ProjectSaver& projectSaver)
{
fixMissingVSTValues (exporter);
writePluginCharacteristicsFile (projectSaver);
exporter.makefileTargetSuffix = ".so";
Project::Item group (Project::Item::createGroup (const_cast<ProjectExporter&> (exporter).getProject(),
"Juce VST Wrapper", "__jucevstfiles"));
RelativePath juceWrapperFolder (exporter.getProject().getGeneratedCodeFolder(),
exporter.getTargetFolder(), RelativePath::buildTargetFolder);
addVSTFolderToPath (exporter, exporter.extraSearchPaths);
if (exporter.isVisualStudio())
exporter.extraSearchPaths.add (juceWrapperFolder.toWindowsStyle());
else if (exporter.isLinux())
exporter.extraSearchPaths.add (juceWrapperFolder.toUnixStyle());
}
static void createPropertyEditors (const ProjectExporter& exporter, Array <PropertyComponent*>& props)
{
fixMissingVSTValues (exporter);
createVSTPathEditor (exporter, props);
}
}
//==============================================================================
namespace RTASHelpers
{
static Value getRTASFolder (const ProjectExporter& exporter) { return exporter.getSetting (Ids::rtasFolder); }
static void fixMissingRTASValues (const ProjectExporter& exporter)
{
if (getRTASFolder (exporter).toString().isEmpty())
{
if (exporter.isVisualStudio())
getRTASFolder (exporter) = "c:\\SDKs\\PT_80_SDK";
else
getRTASFolder (exporter) = "~/SDKs/PT_80_SDK";
}
}
static void addExtraSearchPaths (ProjectExporter& exporter)
{
RelativePath rtasFolder (getRTASFolder (exporter).toString(), RelativePath::projectFolder);
if (exporter.isVisualStudio())
{
RelativePath juceWrapperFolder (exporter.getProject().getGeneratedCodeFolder(),
exporter.getTargetFolder(), RelativePath::buildTargetFolder);
exporter.extraSearchPaths.add (juceWrapperFolder.toWindowsStyle());
const char* p[] = { "AlturaPorts/TDMPlugins/PluginLibrary/EffectClasses",
"AlturaPorts/TDMPlugins/PluginLibrary/ProcessClasses",
"AlturaPorts/TDMPlugins/PluginLibrary/ProcessClasses/Interfaces",
"AlturaPorts/TDMPlugins/PluginLibrary/Utilities",
"AlturaPorts/TDMPlugins/PluginLibrary/RTASP_Adapt",
"AlturaPorts/TDMPlugins/PluginLibrary/CoreClasses",
"AlturaPorts/TDMPlugins/PluginLibrary/Controls",
"AlturaPorts/TDMPlugins/PluginLibrary/Meters",
"AlturaPorts/TDMPlugins/PluginLibrary/ViewClasses",
"AlturaPorts/TDMPlugins/PluginLibrary/DSPClasses",
"AlturaPorts/TDMPlugins/PluginLibrary/Interfaces",
"AlturaPorts/TDMPlugins/common",
"AlturaPorts/TDMPlugins/common/Platform",
"AlturaPorts/TDMPlugins/SignalProcessing/Public",
"AlturaPorts/TDMPlugIns/DSPManager/Interfaces",
"AlturaPorts/SADriver/Interfaces",
"AlturaPorts/DigiPublic/Interfaces",
"AlturaPorts/Fic/Interfaces/DAEClient",
"AlturaPorts/NewFileLibs/Cmn",
"AlturaPorts/NewFileLibs/DOA",
"AlturaPorts/AlturaSource/PPC_H",
"AlturaPorts/AlturaSource/AppSupport",
"AvidCode/AVX2sdk/AVX/avx2/avx2sdk/inc",
"xplat/AVX/avx2/avx2sdk/inc" };
for (int i = 0; i < numElementsInArray (p); ++i)
exporter.extraSearchPaths.add (exporter.rebaseFromProjectFolderToBuildTarget (rtasFolder.getChildFile (p[i])).toWindowsStyle());
}
else if (exporter.isXcode())
{
exporter.extraSearchPaths.add ("/Developer/Headers/FlatCarbon");
const char* p[] = { "AlturaPorts/TDMPlugIns/PlugInLibrary/Controls",
"AlturaPorts/TDMPlugIns/PlugInLibrary/CoreClasses",
"AlturaPorts/TDMPlugIns/PlugInLibrary/DSPClasses",
"AlturaPorts/TDMPlugIns/PlugInLibrary/EffectClasses",
"AlturaPorts/TDMPlugIns/PlugInLibrary/MacBuild",
"AlturaPorts/TDMPlugIns/PlugInLibrary/Meters",
"AlturaPorts/TDMPlugIns/PlugInLibrary/ProcessClasses",
"AlturaPorts/TDMPlugIns/PlugInLibrary/ProcessClasses/Interfaces",
"AlturaPorts/TDMPlugIns/PlugInLibrary/RTASP_Adapt",
"AlturaPorts/TDMPlugIns/PlugInLibrary/Utilities",
"AlturaPorts/TDMPlugIns/PlugInLibrary/ViewClasses",
"AlturaPorts/TDMPlugIns/DSPManager/**",
"AlturaPorts/TDMPlugIns/SupplementalPlugInLib/Encryption",
"AlturaPorts/TDMPlugIns/SupplementalPlugInLib/GraphicsExtensions",
"AlturaPorts/TDMPlugIns/common/**",
"AlturaPorts/TDMPlugIns/common/PI_LibInterface",
"AlturaPorts/TDMPlugIns/PACEProtection/**",
"AlturaPorts/TDMPlugIns/SignalProcessing/**",
"AlturaPorts/OMS/Headers",
"AlturaPorts/Fic/Interfaces/**",
"AlturaPorts/Fic/Source/SignalNets",
"AlturaPorts/DSIPublicInterface/PublicHeaders",
"DAEWin/Include",
"AlturaPorts/DigiPublic/Interfaces",
"AlturaPorts/DigiPublic",
"AlturaPorts/NewFileLibs/DOA",
"AlturaPorts/NewFileLibs/Cmn",
"xplat/AVX/avx2/avx2sdk/inc",
"xplat/AVX/avx2/avx2sdk/utils" };
for (int i = 0; i < numElementsInArray (p); ++i)
exporter.extraSearchPaths.add (exporter.rebaseFromProjectFolderToBuildTarget (rtasFolder.getChildFile (p[i])).toUnixStyle());
}
}
static void prepareExporter (ProjectExporter& exporter, ProjectSaver& projectSaver, const File& moduleFolder)
{
fixMissingRTASValues (exporter);
exporter.xcodeCanUseDwarf = false;
exporter.msvcTargetSuffix = ".dpm";
exporter.msvcNeedsDLLRuntimeLib = true;
RelativePath rtasFolder (getRTASFolder (exporter).toString(), RelativePath::projectFolder);
exporter.msvcExtraPreprocessorDefs.set ("JucePlugin_WinBag_path", CodeHelpers::addEscapeChars (rtasFolder.getChildFile ("WinBag")
.toWindowsStyle().quoted()));
String msvcPathToRTASFolder (exporter.getJucePathFromTargetFolder()
.getChildFile ("modules/juce_audio_plugin_client/RTAS")
.toWindowsStyle() + "\\");
exporter.msvcExtraLinkerOptions = "/FORCE:multiple";
exporter.msvcDelayLoadedDLLs = "DAE.dll; DigiExt.dll; DSI.dll; PluginLib.dll; DSPManager.dll";
exporter.msvcModuleDefinitionFile = msvcPathToRTASFolder + "juce_RTAS_WinExports.def";
exporter.msvcPostBuildOutputs = "\"$(TargetPath)\".rsr";
exporter.msvcPostBuildCommand = "copy /Y \"" + msvcPathToRTASFolder + "juce_RTAS_WinResources.rsr"
+ "\" \"$(TargetPath)\".rsr";
exporter.xcodeExtraLibrariesDebug.add (rtasFolder.getChildFile ("MacBag/Libs/Debug/libPluginLibrary.a"));
exporter.xcodeExtraLibrariesRelease.add (rtasFolder.getChildFile ("MacBag/Libs/Release/libPluginLibrary.a"));
writePluginCharacteristicsFile (projectSaver);
addExtraSearchPaths (exporter);
}
static void createPropertyEditors (const ProjectExporter& exporter, Array <PropertyComponent*>& props)
{
if (exporter.isXcode() || exporter.isVisualStudio())
{
fixMissingRTASValues (exporter);
props.add (new TextPropertyComponent (getRTASFolder (exporter), "RTAS Folder", 1024, false));
props.getLast()->setTooltip ("If you're building an RTAS, this must be the folder containing the RTAS SDK. This should be an absolute path.");
}
}
}
//==============================================================================
namespace AUHelpers
{
static void prepareExporter (ProjectExporter& exporter, ProjectSaver& projectSaver)
{
writePluginCharacteristicsFile (projectSaver);
if (exporter.isXcode())
{
exporter.extraSearchPaths.add ("$(DEVELOPER_DIR)/Extras/CoreAudio/PublicUtility");
exporter.extraSearchPaths.add ("$(DEVELOPER_DIR)/Extras/CoreAudio/AudioUnits/AUPublic/Utility");
exporter.xcodeFrameworks.addTokens ("AudioUnit CoreAudioKit", false);
Project::Item subGroup (projectSaver.getGeneratedCodeGroup().addNewSubGroup ("Juce AU Wrapper", -1));
subGroup.setID ("__juceappleaufiles");
{
#define JUCE_AU_PUBLICUTILITY "${DEVELOPER_DIR}/Extras/CoreAudio/PublicUtility/"
#define JUCE_AU_PUBLIC "${DEVELOPER_DIR}/Extras/CoreAudio/AudioUnits/AUPublic/"
const char* appleAUFiles[] = { JUCE_AU_PUBLICUTILITY "CADebugMacros.h",
JUCE_AU_PUBLICUTILITY "CAAUParameter.cpp",
JUCE_AU_PUBLICUTILITY "CAAUParameter.h",
JUCE_AU_PUBLICUTILITY "CAAudioChannelLayout.cpp",
JUCE_AU_PUBLICUTILITY "CAAudioChannelLayout.h",
JUCE_AU_PUBLICUTILITY "CAMutex.cpp",
JUCE_AU_PUBLICUTILITY "CAMutex.h",
JUCE_AU_PUBLICUTILITY "CAStreamBasicDescription.cpp",
JUCE_AU_PUBLICUTILITY "CAStreamBasicDescription.h",
JUCE_AU_PUBLICUTILITY "CAVectorUnitTypes.h",
JUCE_AU_PUBLICUTILITY "CAVectorUnit.cpp",
JUCE_AU_PUBLICUTILITY "CAVectorUnit.h",
JUCE_AU_PUBLIC "AUViewBase/AUViewLocalizedStringKeys.h",
JUCE_AU_PUBLIC "AUCarbonViewBase/AUCarbonViewDispatch.cpp",
JUCE_AU_PUBLIC "AUCarbonViewBase/AUCarbonViewControl.cpp",
JUCE_AU_PUBLIC "AUCarbonViewBase/AUCarbonViewControl.h",
JUCE_AU_PUBLIC "AUCarbonViewBase/CarbonEventHandler.cpp",
JUCE_AU_PUBLIC "AUCarbonViewBase/CarbonEventHandler.h",
JUCE_AU_PUBLIC "AUCarbonViewBase/AUCarbonViewBase.cpp",
JUCE_AU_PUBLIC "AUCarbonViewBase/AUCarbonViewBase.h",
JUCE_AU_PUBLIC "AUBase/AUBase.cpp",
JUCE_AU_PUBLIC "AUBase/AUBase.h",
JUCE_AU_PUBLIC "AUBase/AUDispatch.cpp",
JUCE_AU_PUBLIC "AUBase/AUDispatch.h",
JUCE_AU_PUBLIC "AUBase/AUInputElement.cpp",
JUCE_AU_PUBLIC "AUBase/AUInputElement.h",
JUCE_AU_PUBLIC "AUBase/AUOutputElement.cpp",
JUCE_AU_PUBLIC "AUBase/AUOutputElement.h",
JUCE_AU_PUBLIC "AUBase/AUResources.r",
JUCE_AU_PUBLIC "AUBase/AUScopeElement.cpp",
JUCE_AU_PUBLIC "AUBase/AUScopeElement.h",
JUCE_AU_PUBLIC "AUBase/ComponentBase.cpp",
JUCE_AU_PUBLIC "AUBase/ComponentBase.h",
JUCE_AU_PUBLIC "OtherBases/AUMIDIBase.cpp",
JUCE_AU_PUBLIC "OtherBases/AUMIDIBase.h",
JUCE_AU_PUBLIC "OtherBases/AUMIDIEffectBase.cpp",
JUCE_AU_PUBLIC "OtherBases/AUMIDIEffectBase.h",
JUCE_AU_PUBLIC "OtherBases/AUOutputBase.cpp",
JUCE_AU_PUBLIC "OtherBases/AUOutputBase.h",
JUCE_AU_PUBLIC "OtherBases/MusicDeviceBase.cpp",
JUCE_AU_PUBLIC "OtherBases/MusicDeviceBase.h",
JUCE_AU_PUBLIC "OtherBases/AUEffectBase.cpp",
JUCE_AU_PUBLIC "OtherBases/AUEffectBase.h",
JUCE_AU_PUBLIC "Utility/AUBuffer.cpp",
JUCE_AU_PUBLIC "Utility/AUBuffer.h",
JUCE_AU_PUBLIC "Utility/AUDebugDispatcher.cpp",
JUCE_AU_PUBLIC "Utility/AUDebugDispatcher.h",
JUCE_AU_PUBLIC "Utility/AUInputFormatConverter.h",
JUCE_AU_PUBLIC "Utility/AUSilentTimeout.h",
JUCE_AU_PUBLIC "Utility/AUTimestampGenerator.h", 0 };
for (const char** f = appleAUFiles; *f != 0; ++f)
{
const RelativePath file (*f, RelativePath::projectFolder);
subGroup.addRelativeFile (file, -1, file.hasFileExtension ("cpp;mm"));
subGroup.getChild (subGroup.getNumChildren() - 1).getShouldInhibitWarningsValue() = true;
}
}
}
}
}
#endif // __JUCER_AUDIOPLUGINMODULE_JUCEHEADER__

+ 1
- 1
extras/Introjucer/Source/Project/jucer_GroupInformationComponent.cpp View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------


+ 1
- 1
extras/Introjucer/Source/Project/jucer_GroupInformationComponent.h View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------


+ 354
- 0
extras/Introjucer/Source/Project/jucer_JuceLibraryModule.h View File

@@ -0,0 +1,354 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
#ifndef __JUCER_JUCELIBRARYMODULE_JUCEHEADER__
#define __JUCER_JUCELIBRARYMODULE_JUCEHEADER__
//==============================================================================
class JuceLibraryModule : public LibraryModule
{
public:
JuceLibraryModule (const File& file)
: moduleInfo (JSON::parse (file)),
moduleFile (file),
moduleFolder (file.getParentDirectory())
{
jassert (isValid());
}
String getID() const { return moduleInfo ["id"].toString(); };
bool isValid() const { return getID().isNotEmpty(); }
void writeIncludes (Project& project, OutputStream& out)
{
File header (getInclude());
StringArray paths, guards;
createMultipleIncludes (project, getPathToModuleFile (header),
paths, guards);
ProjectSaver::writeGuardedInclude (out, paths, guards);
}
void prepareExporter (ProjectExporter& exporter, ProjectSaver& projectSaver) const
{
Project& project = exporter.getProject();
{
Array<File> compiled;
findAndAddCompiledCode (exporter, projectSaver, compiled);
if (project.shouldShowAllModuleFilesInProject (getID()).getValue())
addIncludedCode (exporter, compiled);
}
if (isVSTPluginHost (project))
VSTHelpers::addVSTFolderToPath (exporter, exporter.extraSearchPaths);
if (isAUPluginHost (project))
exporter.xcodeFrameworks.addTokens ("AudioUnit CoreAudioKit", false);
if (isPluginClient())
{
if (shouldBuildVST (project).getValue()) VSTHelpers::prepareExporter (exporter, projectSaver);
if (shouldBuildRTAS (project).getValue()) RTASHelpers::prepareExporter (exporter, projectSaver, moduleFolder);
if (shouldBuildAU (project).getValue()) AUHelpers::prepareExporter (exporter, projectSaver);
}
}
void createPropertyEditors (const ProjectExporter& exporter, Array <PropertyComponent*>& props) const
{
if (isVSTPluginHost (exporter.getProject()))
VSTHelpers::createVSTPathEditor (exporter, props);
if (isPluginClient())
{
if (shouldBuildVST (exporter.getProject()).getValue()) VSTHelpers::createPropertyEditors (exporter, props);
if (shouldBuildRTAS (exporter.getProject()).getValue()) RTASHelpers::createPropertyEditors (exporter, props);
}
}
void getConfigFlags (Project& project, OwnedArray<Project::ConfigFlag>& flags) const
{
const File header (getInclude());
jassert (header.exists());
StringArray lines;
header.readLines (lines);
for (int i = 0; i < lines.size(); ++i)
{
String line (lines[i].trim());
if (line.startsWith ("/**") && line.containsIgnoreCase ("Config:"))
{
ScopedPointer <Project::ConfigFlag> config (new Project::ConfigFlag());
config->sourceModuleID = getID();
config->symbol = line.fromFirstOccurrenceOf (":", false, false).trim();
if (config->symbol.length() > 2)
{
++i;
while (! (lines[i].contains ("*/") || lines[i].contains ("@see")))
{
if (lines[i].trim().isNotEmpty())
config->description = config->description.trim() + " " + lines[i].trim();
++i;
}
config->description = config->description.upToFirstOccurrenceOf ("*/", false, false);
config->value.referTo (project.getConfigFlag (config->symbol));
flags.add (config.release());
}
}
}
}
var moduleInfo;
File moduleFile, moduleFolder;
private:
File getInclude() const
{
return moduleFolder.getChildFile (moduleInfo ["include"]);
}
String getPathToModuleFile (const File& file) const
{
return file.getRelativePathFrom (moduleFolder.getParentDirectory().getParentDirectory());
}
static bool fileTargetMatches (ProjectExporter& exporter, const String& target)
{
if (target == "xcode" && ! exporter.isXcode())
return false;
if (target == "msvc" && ! exporter.isVisualStudio())
return false;
return true;
}
struct FileSorter
{
static int compareElements (const File& f1, const File& f2)
{
return f1.getFileName().compareIgnoreCase (f2.getFileName());
}
};
void findWildcardMatches (const String& wildcardPath, Array<File>& result) const
{
String path (wildcardPath.upToLastOccurrenceOf ("/", false, false));
String wildCard (wildcardPath.fromLastOccurrenceOf ("/", false, false));
DirectoryIterator iter (moduleFolder.getChildFile (path), false, wildCard);
Array<File> tempList;
while (iter.next())
tempList.add (iter.getFile());
FileSorter sorter;
tempList.sort (sorter);
result.addArray (tempList);
}
void getAllSourceFiles (Array<File>& result) const
{
const var filesArray (moduleInfo ["browse"]);
const Array<var>* const files = filesArray.getArray();
for (int i = 0; i < files->size(); ++i)
findWildcardMatches (files->getReference(i), result);
}
void addFileWithGroups (Project::Item group, const File& file, const String& path) const
{
const int slash = path.indexOfChar ('/');
if (slash >= 0)
{
const String topLevelGroup (path.substring (0, slash));
const String remainingPath (path.substring (slash + 1));
addFileWithGroups (group.getOrCreateSubGroup (topLevelGroup), file, remainingPath);
}
else
{
if (! group.findItemForFile (file).isValid())
group.addFile (file, -1, false);
}
}
Project::Item addCompiledFile (const File& compiledFile, ProjectExporter& exporter, ProjectSaver& projectSaver) const
{
if (compiledFile.hasFileExtension ("cpp;cc;cxx;mm;m"))
{
MemoryOutputStream mem;
writeSourceWrapper (mem, exporter.getProject(),
getPathToModuleFile (compiledFile));
String wrapperName (compiledFile.getFileNameWithoutExtension());
wrapperName << "_wrapper" << (exporter.usesMMFiles() ? ".mm" : ".cpp");
return projectSaver.saveGeneratedFile (wrapperName, mem);
}
return projectSaver.addFileToGeneratedGroup (compiledFile);
}
void findAndAddCompiledCode (ProjectExporter& exporter, ProjectSaver& projectSaver, Array<File>& result) const
{
const var compileArray (moduleInfo ["compile"]); // careful to keep this alive while the array is in use!
const Array<var>* const files = compileArray.getArray();
if (files != nullptr)
{
for (int i = 0; i < files->size(); ++i)
{
const var& file = files->getReference(i);
const String filename (file ["file"].toString());
if (filename.isNotEmpty()
&& fileTargetMatches (exporter, file ["target"].toString()))
{
const File compiledFile (moduleFolder.getChildFile (filename));
result.add (compiledFile);
Project::Item item (addCompiledFile (compiledFile, exporter, projectSaver));
if (file ["warnings"].toString().equalsIgnoreCase ("disabled"))
item.getShouldInhibitWarningsValue() = true;
if (file ["stdcall"])
item.getShouldUseStdCallValue() = true;
}
}
}
}
void addIncludedCode (ProjectExporter& exporter, const Array<File>& compiled) const
{
Array<File> files;
getAllSourceFiles (files);
Project::Item sourceGroup (Project::Item::createGroup (exporter.getProject(), getID(), "__mainsourcegroup" + getID()));
int i;
for (i = 0; i < files.size(); ++i)
addFileWithGroups (sourceGroup, files.getReference(i),
files.getReference(i).getRelativePathFrom (moduleFolder));
sourceGroup.addFile (moduleFile, -1, false);
sourceGroup.addFile (getInclude(), -1, false);
for (i = 0; i < compiled.size(); ++i)
addFileWithGroups (sourceGroup, compiled.getReference(i),
compiled.getReference(i).getRelativePathFrom (moduleFolder));
exporter.getModulesGroup().getNode().addChild (sourceGroup.getNode().createCopy(), -1, nullptr);
}
static void writeSourceWrapper (OutputStream& out, Project& project, const String& pathFromJuceFolder)
{
const String appConfigFileName (project.getAppConfigFilename());
ProjectSaver::writeAutoGenWarningComment (out);
out << " This file pulls in a module's source code, and builds it using the settings" << newLine
<< " defined in " << appConfigFileName << "." << newLine
<< newLine
<< "*/"
<< newLine
<< newLine
<< "#define JUCE_WRAPPED_FILE 1" << newLine
<< newLine
<< CodeHelpers::createIncludeStatement (appConfigFileName) << newLine;
writeInclude (project, out, pathFromJuceFolder);
}
static void createMultipleIncludes (Project& project, const String& pathFromLibraryFolder,
StringArray& paths, StringArray& guards)
{
for (int i = project.getNumExporters(); --i >= 0;)
{
ScopedPointer <ProjectExporter> exporter (project.createExporter (i));
if (exporter != nullptr)
{
paths.add (exporter->getIncludePathForFileInJuceFolder (pathFromLibraryFolder, project.getAppIncludeFile()));
guards.add ("defined (" + exporter->getExporterIdentifierMacro() + ")");
}
}
}
static void writeInclude (Project& project, OutputStream& out, const String& pathFromJuceFolder)
{
StringArray paths, guards;
createMultipleIncludes (project, pathFromJuceFolder, paths, guards);
StringArray uniquePaths (paths);
uniquePaths.removeDuplicates (false);
if (uniquePaths.size() == 1)
{
out << "#include " << paths[0] << newLine;
}
else
{
int i = paths.size();
for (; --i >= 0;)
{
for (int j = i; --j >= 0;)
{
if (paths[i] == paths[j] && guards[i] == guards[j])
{
paths.remove (i);
guards.remove (i);
}
}
}
for (i = 0; i < paths.size(); ++i)
{
out << (i == 0 ? "#if " : "#elif ") << guards[i] << newLine
<< " #include " << paths[i] << newLine;
}
out << "#endif" << newLine;
}
}
bool isPluginClient() const { return getID() == "juce_audio_plugin_client"; }
bool isAUPluginHost (const Project& project) const { return getID() == "juce_audio_processors" && project.isConfigFlagEnabled ("JUCE_PLUGINHOST_AU"); }
bool isVSTPluginHost (const Project& project) const { return getID() == "juce_audio_processors" && project.isConfigFlagEnabled ("JUCE_PLUGINHOST_VST"); }
};
#endif // __JUCER_JUCELIBRARYMODULE_JUCEHEADER__

+ 157
- 0
extras/Introjucer/Source/Project/jucer_Module.cpp View File

@@ -0,0 +1,157 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
#include "jucer_Module.h"
#include "jucer_ProjectType.h"
#include "jucer_ProjectExporter.h"
#include "jucer_ProjectSaver.h"
#include "jucer_AudioPluginModule.h"
#include "jucer_JuceLibraryModule.h"
//==============================================================================
ModuleList::ModuleList()
{
rescan();
}
ModuleList& ModuleList::getInstance()
{
static ModuleList list;
return list;
}
struct ModuleSorter
{
static int compareElements (const ModuleList::Module* m1, const ModuleList::Module* m2)
{
return m1->uid.compareIgnoreCase (m2->uid);
}
};
void ModuleList::rescan()
{
modules.clear();
moduleFolder = StoredSettings::getInstance()->getLastKnownJuceFolder().getChildFile ("modules");
DirectoryIterator iter (moduleFolder, false, "*", File::findDirectories);
while (iter.next())
{
const File moduleDef (iter.getFile().getChildFile ("juce_module_info"));
if (moduleDef.exists())
{
ScopedPointer<JuceLibraryModule> m (new JuceLibraryModule (moduleDef));
jassert (m->isValid());
if (m->isValid())
{
Module* info = new Module();
modules.add (info);
info->uid = m->getID();
info->name = m->moduleInfo ["name"];
info->description = m->moduleInfo ["description"];
info->file = moduleDef;
}
}
}
ModuleSorter sorter;
modules.sort (sorter);
}
LibraryModule* ModuleList::Module::create() const
{
return new JuceLibraryModule (file);
}
LibraryModule* ModuleList::loadModule (const String& uid) const
{
const Module* const m = findModuleInfo (uid);
return m != nullptr ? m->create() : nullptr;
}
const ModuleList::Module* ModuleList::findModuleInfo (const String& uid) const
{
for (int i = modules.size(); --i >= 0;)
if (modules.getUnchecked(i)->uid == uid)
return modules.getUnchecked(i);
return nullptr;
}
void ModuleList::getDependencies (const String& moduleID, StringArray& dependencies) const
{
ScopedPointer<LibraryModule> lib (loadModule (moduleID));
JuceLibraryModule* m = dynamic_cast<JuceLibraryModule*> (static_cast <LibraryModule*> (lib));
if (m != nullptr)
{
const var depsArray (m->moduleInfo ["dependencies"]);
const Array<var>* const deps = depsArray.getArray();
for (int i = 0; i < deps->size(); ++i)
{
const var& d = deps->getReference(i);
String uid (d ["id"].toString());
String version (d ["version"].toString());
if (! dependencies.contains (uid, true))
{
dependencies.add (uid);
getDependencies (uid, dependencies);
}
}
}
}
void ModuleList::createDependencies (const String& moduleID, OwnedArray<LibraryModule>& modules) const
{
ScopedPointer<LibraryModule> lib (loadModule (moduleID));
JuceLibraryModule* m = dynamic_cast<JuceLibraryModule*> (static_cast <LibraryModule*> (lib));
if (m != nullptr)
{
var depsArray (m->moduleInfo ["dependencies"]);
const Array<var>* const deps = depsArray.getArray();
for (int i = 0; i < deps->size(); ++i)
{
const var& d = deps->getReference(i);
String uid (d ["id"].toString());
String version (d ["version"].toString());
//xxx to do - also need to find version conflicts
jassertfalse
}
}
}

+ 81
- 0
extras/Introjucer/Source/Project/jucer_Module.h View File

@@ -0,0 +1,81 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
#ifndef __JUCER_MODULE_JUCEHEADER__
#define __JUCER_MODULE_JUCEHEADER__
#include "../jucer_Headers.h"
#include "jucer_Project.h"
class ProjectExporter;
class ProjectSaver;
//==============================================================================
class LibraryModule
{
public:
LibraryModule() {}
virtual ~LibraryModule() {}
virtual String getID() const = 0;
virtual void prepareExporter (ProjectExporter&, ProjectSaver&) const = 0;
virtual void writeIncludes (Project&, OutputStream& out) = 0;
virtual void createPropertyEditors (const ProjectExporter&, Array <PropertyComponent*>&) const = 0;
virtual void getConfigFlags (Project&, OwnedArray<Project::ConfigFlag>&) const = 0;
};
//==============================================================================
class ModuleList
{
public:
ModuleList();
static ModuleList& getInstance();
//==============================================================================
void rescan();
LibraryModule* loadModule (const String& uid) const;
void getDependencies (const String& moduleID, StringArray& dependencies) const;
void createDependencies (const String& moduleID, OwnedArray<LibraryModule>& modules) const;
//==============================================================================
struct Module
{
LibraryModule* create() const;
String uid, name, description;
File file;
};
const Module* findModuleInfo (const String& uid) const;
OwnedArray<Module> modules;
private:
File moduleFolder;
};
#endif // __JUCER_MODULE_JUCEHEADER__

+ 3
- 3
extras/Introjucer/Source/Project/jucer_NewFileWizard.cpp View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
@@ -64,7 +64,7 @@ public:
{
if (fillInNewCppFileTemplate (newFile, parent, "jucer_NewCppFileTemplate_cpp"))
{
parent.addFile (newFile, 0);
parent.addFile (newFile, 0, true);
return true;
}
@@ -93,7 +93,7 @@ public:
{
if (fillInNewCppFileTemplate (newFile, parent, "jucer_NewCppFileTemplate_h"))
{
parent.addFile (newFile, 0);
parent.addFile (newFile, 0, true);
return true;
}


+ 1
- 1
extras/Introjucer/Source/Project/jucer_NewFileWizard.h View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------


+ 13
- 18
extras/Introjucer/Source/Project/jucer_NewProjectWizard.cpp View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
@@ -101,8 +101,8 @@ public:
if (! FileHelpers::overwriteFileWithNewDataIfDifferent (mainWindowCpp, windowCpp))
failedFiles.add (mainWindowCpp.getFullPathName());
sourceGroup.addFile (mainWindowCpp, -1);
sourceGroup.addFile (mainWindowH, -1);
sourceGroup.addFile (mainWindowCpp, -1, true);
sourceGroup.addFile (mainWindowH, -1, false);
}
if (createMainCpp)
@@ -122,7 +122,7 @@ public:
if (! FileHelpers::overwriteFileWithNewDataIfDifferent (mainCppFile, mainCpp))
failedFiles.add (mainCppFile.getFullPathName());
sourceGroup.addFile (mainCppFile, -1);
sourceGroup.addFile (mainCppFile, -1, true);
}
return true;
@@ -187,7 +187,7 @@ public:
if (! FileHelpers::overwriteFileWithNewDataIfDifferent (mainCppFile, mainCpp))
failedFiles.add (mainCppFile.getFullPathName());
sourceGroup.addFile (mainCppFile, -1);
sourceGroup.addFile (mainCppFile, -1, true);
}
return true;
@@ -230,6 +230,7 @@ public:
File editorHFile = editorCppFile.withFileExtension (".h");
project.getProjectTypeValue() = ProjectType::getAudioPluginTypeName();
project.addModule ("juce_audio_plugin_client");
Project::Item sourceGroup (project.getMainGroup().addNewSubGroup ("Source", 0));
project.getConfigFlag ("JUCE_QUICKTIME") = Project::configFlagDisabled; // disabled because it interferes with RTAS build on PC
@@ -238,7 +239,6 @@ public:
project.getConfiguration(i).getTargetBinaryName() = File::createLegalFileName (appTitle);
String appHeaders (CodeHelpers::createIncludeStatement (project.getAppIncludeFile(), filterCppFile));
appHeaders << newLine << CodeHelpers::createIncludeStatement (project.getPluginCharacteristicsFile(), filterCppFile);
String filterCpp = project.getFileTemplate ("jucer_AudioPluginFilterTemplate_cpp")
.replace ("FILTERHEADERS", CodeHelpers::createIncludeStatement (filterHFile, filterCppFile)
@@ -275,10 +275,10 @@ public:
if (! FileHelpers::overwriteFileWithNewDataIfDifferent (editorHFile, editorH))
failedFiles.add (editorHFile.getFullPathName());
sourceGroup.addFile (filterCppFile, -1);
sourceGroup.addFile (filterHFile, -1);
sourceGroup.addFile (editorCppFile, -1);
sourceGroup.addFile (editorHFile, -1);
sourceGroup.addFile (filterCppFile, -1, true);
sourceGroup.addFile (filterHFile, -1, false);
sourceGroup.addFile (editorCppFile, -1, true);
sourceGroup.addFile (editorHFile, -1, false);
return true;
}
@@ -311,13 +311,8 @@ public:
//==============================================================================
//==============================================================================
NewProjectWizard::NewProjectWizard()
{
}
NewProjectWizard::~NewProjectWizard()
{
}
NewProjectWizard::NewProjectWizard() {}
NewProjectWizard::~NewProjectWizard() {}
StringArray NewProjectWizard::getWizards()
{
@@ -415,7 +410,7 @@ Project* NewProjectWizard::runWizard (Component* ownerWindow_)
projectFile = targetFolder.getChildFile (File::createLegalFileName (appTitle))
.withFileExtension (Project::projectFileExtension);
ScopedPointer <Project> project (new Project (projectFile));
ScopedPointer<Project> project (new Project (projectFile));
if (failedFiles.size() == 0)
{


+ 4
- 4
extras/Introjucer/Source/Project/jucer_NewProjectWizard.h View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
@@ -23,8 +23,8 @@
==============================================================================
*/
#ifndef __JUCER_PROJECTWIZARD_JUCEHEADER__
#define __JUCER_PROJECTWIZARD_JUCEHEADER__
#ifndef __JUCER_NEWPROJECTWIZARD_JUCEHEADER__
#define __JUCER_NEWPROJECTWIZARD_JUCEHEADER__
#include "../jucer_Headers.h"
#include "jucer_Project.h"
@@ -65,4 +65,4 @@ protected:
};
#endif // __JUCER_PROJECTWIZARD_JUCEHEADER__
#endif // __JUCER_NEWPROJECTWIZARD_JUCEHEADER__

+ 145
- 68
extras/Introjucer/Source/Project/jucer_Project.cpp View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
@@ -42,6 +42,8 @@ namespace Tags
const Identifier configuration ("CONFIGURATION");
const Identifier exporters ("EXPORTFORMATS");
const Identifier configGroup ("JUCEOPTIONS");
const Identifier modulesGroup ("MODULES");
const Identifier module ("MODULE");
}
const char* Project::projectFileExtension = ".jucer";
@@ -111,11 +113,6 @@ void Project::setMissingDefaultValues()
if (! projectRoot.hasProperty (Ids::version))
getVersion() = "1.0.0";
if (! projectRoot.hasProperty (Ids::juceLinkage))
getJuceLinkageModeValue() = useAmalgamatedJuceViaMultipleTemplates;
const String juceFolderPath (getRelativePathForFile (StoredSettings::getInstance()->getLastKnownJuceFolder()));
// Create configs group
if (! projectRoot.getChildWithName (Tags::configurations).isValid())
{
@@ -130,6 +127,28 @@ void Project::setMissingDefaultValues()
if (! projectRoot.hasProperty (Ids::bundleIdentifier))
setBundleIdentifierToDefault();
if (! projectRoot.getChildWithName (Tags::modulesGroup).isValid())
{
addModule ("juce_core");
if (! isConfigFlagEnabled ("JUCE_ONLY_BUILD_CORE_LIBRARY"))
{
addModule ("juce_events");
addModule ("juce_graphics");
addModule ("juce_data_structures");
addModule ("juce_gui_basics");
addModule ("juce_gui_extra");
addModule ("juce_gui_audio");
addModule ("juce_cryptography");
addModule ("juce_video");
addModule ("juce_opengl");
addModule ("juce_audio_basics");
addModule ("juce_audio_devices");
addModule ("juce_audio_formats");
addModule ("juce_audio_processors");
}
}
}
//==============================================================================
@@ -157,15 +176,19 @@ const String Project::loadDocument (const File& file)
const String Project::saveDocument (const File& file)
{
updateProjectSettings();
sanitiseConfigFlags();
{
// (getting these forces the values to be sanitised)
OwnedArray <Project::ConfigFlag> flags;
getAllConfigFlags (flags);
}
ScopedPointer <ProjectExporter> exp (ProjectExporter::createPlatformDefaultExporter (*this));
if (exp != nullptr)
{
File f (resolveFilename (exp->getJuceFolder().toString()));
if (FileHelpers::isJuceFolder (getLocalJuceFolder()))
StoredSettings::getInstance()->setLastKnownJuceFolder (getLocalJuceFolder().getFullPathName());
if (FileHelpers::isJuceFolder (f))
StoredSettings::getInstance()->setLastKnownJuceFolder (f.getFullPathName());
}
}
StoredSettings::getInstance()->recentFiles.addFile (file);
@@ -192,9 +215,6 @@ void Project::valueTreePropertyChanged (ValueTree& tree, const Identifier& prope
if (property == Ids::projectType)
setMissingDefaultValues();
if (getProjectType().isLibrary())
getJuceLinkageModeValue() = notLinkedToJuce;
changed();
}
@@ -271,27 +291,6 @@ const ProjectType& Project::getProjectType() const
return *type;
}
const char* const Project::notLinkedToJuce = "none";
const char* const Project::useLinkedJuce = "static";
const char* const Project::useAmalgamatedJuce = "amalg_big";
const char* const Project::useAmalgamatedJuceViaSingleTemplate = "amalg_template";
const char* const Project::useAmalgamatedJuceViaMultipleTemplates = "amalg_multi";
File Project::getLocalJuceFolder()
{
ScopedPointer <ProjectExporter> exp (ProjectExporter::createPlatformDefaultExporter (*this));
if (exp != nullptr)
{
File f (resolveFilename (exp->getJuceFolder().toString()));
if (FileHelpers::isJuceFolder (f))
return f;
}
return StoredSettings::getInstance()->getLastKnownJuceFolder();
}
//==============================================================================
void Project::createPropertyEditors (Array <PropertyComponent*>& props)
{
@@ -316,11 +315,6 @@ void Project::createPropertyEditors (Array <PropertyComponent*>& props)
props.add (new ChoicePropertyComponent (getProjectTypeValue(), "Project Type", projectTypeNames, projectTypeCodes));
}
const char* linkageTypes[] = { "Not linked to Juce", "Linked to Juce Static Library", "Include Juce Amalgamated Files", "Include Juce Source Code Directly (In a single file)", "Include Juce Source Code Directly (Split across several files)", 0 };
const char* linkageTypeValues[] = { notLinkedToJuce, useLinkedJuce, useAmalgamatedJuce, useAmalgamatedJuceViaSingleTemplate, useAmalgamatedJuceViaMultipleTemplates, 0 };
props.add (new ChoicePropertyComponent (getJuceLinkageModeValue(), "Juce Linkage Method", StringArray (linkageTypes), Array<var> (linkageTypeValues)));
props.getLast()->setTooltip ("The method by which your project will be linked to Juce.");
props.add (new TextPropertyComponent (getBundleIdentifier(), "Bundle Identifier", 256, false));
props.getLast()->setTooltip ("A unique identifier for this product, mainly for use in Mac builds. It should be something like 'com.yourcompanyname.yourproductname'");
@@ -451,9 +445,10 @@ void Project::Item::setID (const String& newID) { node.setProperty (Ids::id_,
String Project::Item::getImageFileID() const { return "id:" + getID(); }
Project::Item Project::Item::createGroup (Project& project, const String& name)
Project::Item Project::Item::createGroup (Project& project, const String& name, const String& uid)
{
Item group (project, ValueTree (Tags::group));
group.setID (uid);
group.initialiseNodeValues();
group.getName() = name;
return group;
@@ -651,22 +646,56 @@ struct ItemSorter
}
};
void Project::Item::sortAlphabetically()
struct ItemSorterWithGroupsAtStart
{
static int compareElements (const ValueTree& first, const ValueTree& second)
{
const bool firstIsGroup = first.hasType (Tags::group);
const bool secondIsGroup = second.hasType (Tags::group);
if (firstIsGroup == secondIsGroup)
return first [Ids::name].toString().compareIgnoreCase (second [Ids::name].toString());
else
return firstIsGroup ? -1 : 1;
}
};
void Project::Item::sortAlphabetically (bool keepGroupsAtStart)
{
if (keepGroupsAtStart)
{
ItemSorterWithGroupsAtStart sorter;
node.sort (sorter, getUndoManager(), true);
}
else
{
ItemSorter sorter;
node.sort (sorter, getUndoManager(), true);
}
}
Project::Item Project::Item::getOrCreateSubGroup (const String& name)
{
ItemSorter sorter;
node.sort (sorter, getUndoManager(), true);
for (int i = node.getNumChildren(); --i >= 0;)
{
const ValueTree child (node.getChild (i));
if (child.getProperty (Ids::name) == name && child.hasType (Tags::group))
return Item (getProject(), child);
}
return addNewSubGroup (name, -1);
}
Project::Item Project::Item::addNewSubGroup (const String& name, int insertIndex)
{
Item group (createGroup (getProject(), name));
Item group (createGroup (getProject(), name, createGUID (getID() + name + String (getNumChildren()))));
jassert (canContain (group));
addChild (group, insertIndex);
return group;
}
bool Project::Item::addFile (const File& file, int insertIndex)
bool Project::Item::addFile (const File& file, int insertIndex, const bool shouldCompile)
{
if (file == File::nonexistent || file.isHidden() || file.getFileName().startsWithChar ('.'))
return false;
@@ -679,10 +708,10 @@ bool Project::Item::addFile (const File& file, int insertIndex)
while (iter.next())
{
if (! getProject().getMainGroup().findItemForFile (iter.getFile()).isValid())
group.addFile (iter.getFile(), -1);
group.addFile (iter.getFile(), -1, shouldCompile);
}
group.sortAlphabetically();
group.sortAlphabetically (false);
}
else if (file.existsAsFile())
{
@@ -691,7 +720,7 @@ bool Project::Item::addFile (const File& file, int insertIndex)
Item item (getProject(), ValueTree (Tags::file));
item.initialiseNodeValues();
item.getName() = file.getFileName();
item.getShouldCompileValue() = file.hasFileExtension ("cpp;mm;c;m;cc;cxx");
item.getShouldCompileValue() = shouldCompile && file.hasFileExtension ("cpp;mm;c;m;cc;cxx;r");
item.getShouldAddToResourceValue() = getProject().shouldBeAddedToBinaryResourcesByDefault (file);
if (canContain (item))
@@ -750,19 +779,6 @@ ValueTree Project::getConfigNode()
return projectRoot.getOrCreateChildWithName (Tags::configGroup, nullptr);
}
void Project::getAllConfigFlags (OwnedArray <ConfigFlag>& flags)
{
OwnedArray<LibraryModule> modules;
getProjectType().createRequiredModules (*this, modules);
int i;
for (i = 0; i < modules.size(); ++i)
modules.getUnchecked(i)->getConfigFlags (*this, flags);
for (i = 0; i < flags.size(); ++i)
flags.getUnchecked(i)->value.referTo (getConfigFlag (flags.getUnchecked(i)->symbol));
}
const char* const Project::configFlagDefault = "default";
const char* const Project::configFlagEnabled = "enabled";
const char* const Project::configFlagDisabled = "disabled";
@@ -783,6 +799,65 @@ bool Project::isConfigFlagEnabled (const String& name) const
return projectRoot.getChildWithName (Tags::configGroup).getProperty (name) == configFlagEnabled;
}
void Project::sanitiseConfigFlags()
{
ValueTree configNode (getConfigNode());
for (int i = configNode.getNumProperties(); --i >= 0;)
{
const var value (configNode [configNode.getPropertyName(i)]);
if (value != configFlagEnabled && value != configFlagDisabled)
configNode.removeProperty (configNode.getPropertyName(i), getUndoManagerFor (configNode));
}
}
//==============================================================================
ValueTree Project::getModulesNode()
{
return projectRoot.getOrCreateChildWithName (Tags::modulesGroup, nullptr);
}
bool Project::isModuleEnabled (const String& moduleID) const
{
ValueTree modules (projectRoot.getChildWithName (Tags::modulesGroup));
for (int i = 0; i < modules.getNumChildren(); ++i)
if (modules.getChild(i) [Ids::id_] == moduleID)
return true;
return false;
}
Value Project::shouldShowAllModuleFilesInProject (const String& moduleID)
{
return getModulesNode().getChildWithProperty (Ids::id_, moduleID)
.getPropertyAsValue (Ids::showAllCode, getUndoManagerFor (getModulesNode()));
}
void Project::addModule (const String& moduleID)
{
if (! isModuleEnabled (moduleID))
{
ValueTree module (Tags::module);
module.setProperty (Ids::id_, moduleID, nullptr);
ValueTree modules (getModulesNode());
modules.addChild (module, -1, getUndoManagerFor (modules));
shouldShowAllModuleFilesInProject (moduleID) = true;
}
}
void Project::removeModule (const String& moduleID)
{
ValueTree modules (getModulesNode());
for (int i = 0; i < modules.getNumChildren(); ++i)
if (modules.getChild(i) [Ids::id_] == moduleID)
modules.removeChild (i, getUndoManagerFor (modules));
}
//==============================================================================
ValueTree Project::getConfigurations() const
{
@@ -1001,9 +1076,9 @@ ProjectExporter* Project::createExporter (int index)
return ProjectExporter::createExporter (*this, getExporters().getChild (index));
}
void Project::addNewExporter (int exporterIndex)
void Project::addNewExporter (const String& exporterName)
{
ScopedPointer<ProjectExporter> exp (ProjectExporter::createNewExporter (*this, exporterIndex));
ScopedPointer<ProjectExporter> exp (ProjectExporter::createNewExporter (*this, exporterName));
ValueTree exporters (getExporters());
exporters.addChild (exp->getSettings(), -1, getUndoManagerFor (exporters));
@@ -1020,8 +1095,10 @@ void Project::createDefaultExporters()
ValueTree exporters (getExporters());
exporters.removeAllChildren (getUndoManagerFor (exporters));
for (int i = 0; i < ProjectExporter::getNumExporters(); ++i)
addNewExporter (i);
const StringArray exporterNames (ProjectExporter::getDefaultExporters());
for (int i = 0; i < exporterNames.size(); ++i)
addNewExporter (exporterNames[i]);
}
//==============================================================================
@@ -1062,7 +1139,7 @@ void Project::resaveJucerFile (const File& file)
return;
}
std::cout << "The Jucer - Re-saving file: " << file.getFullPathName() << std::endl;
std::cout << "The Introjucer - Re-saving file: " << file.getFullPathName() << std::endl;
String error (newDoc.saveDocument (file));
if (error.isNotEmpty())


+ 17
- 29
extras/Introjucer/Source/Project/jucer_Project.h View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
@@ -76,25 +76,9 @@ public:
Value getVersion() const { return getProjectValue ("version"); }
String getVersionAsHex() const;
Value getBundleIdentifier() const { return getProjectValue ("bundleIdentifier"); }
Value getBundleIdentifier() const { return getProjectValue (Ids::bundleIdentifier); }
void setBundleIdentifierToDefault() { getBundleIdentifier() = "com.yourcompany." + CodeHelpers::makeValidIdentifier (getProjectName().toString(), false, true, false); }
//==============================================================================
// linkage modes..
static const char* const notLinkedToJuce;
static const char* const useLinkedJuce;
static const char* const useAmalgamatedJuce;
static const char* const useAmalgamatedJuceViaSingleTemplate;
static const char* const useAmalgamatedJuceViaMultipleTemplates;
Value getJuceLinkageModeValue() const { return getProjectValue ("juceLinkage"); }
String getJuceLinkageMode() const { return getJuceLinkageModeValue().toString(); }
bool isUsingWrapperFiles() const { return isUsingFullyAmalgamatedFile() || isUsingSingleTemplateFile() || isUsingMultipleTemplateFiles(); }
bool isUsingFullyAmalgamatedFile() const { return getJuceLinkageMode() == useAmalgamatedJuce; }
bool isUsingSingleTemplateFile() const { return getJuceLinkageMode() == useAmalgamatedJuceViaSingleTemplate; }
bool isUsingMultipleTemplateFiles() const { return getJuceLinkageMode() == useAmalgamatedJuceViaMultipleTemplates; }
//==============================================================================
Value getProjectValue (const Identifier& name) const { return projectRoot.getPropertyAsValue (name, getUndoManagerFor (projectRoot)); }
@@ -109,8 +93,6 @@ public:
//==============================================================================
File getAppIncludeFile() const { return getGeneratedCodeFolder().getChildFile (getJuceSourceHFilename()); }
File getGeneratedCodeFolder() const { return getFile().getSiblingFile ("JuceLibraryCode"); }
File getPluginCharacteristicsFile() const { return getGeneratedCodeFolder().getChildFile (getPluginCharacteristicsFilename()); }
File getLocalJuceFolder();
//==============================================================================
String getAmalgamatedHeaderFileName() const { return "juce_amalgamated.h"; }
@@ -121,8 +103,6 @@ public:
String getJuceSourceFilenameRoot() const { return "JuceLibraryCode"; }
int getNumSeparateAmalgamatedFiles() const { return 4; }
String getJuceSourceHFilename() const { return "JuceHeader.h"; }
String getJuceCodeGroupName() const { return "Juce Library Code"; }
String getPluginCharacteristicsFilename() const { return "JucePluginCharacteristics.h"; }
//==============================================================================
class Item
@@ -134,7 +114,7 @@ public:
Item& operator= (const Item& other);
~Item();
static Item createGroup (Project& project, const String& name);
static Item createGroup (Project& project, const String& name, const String& uid);
void initialiseNodeValues();
//==============================================================================
@@ -179,11 +159,12 @@ public:
Item getChild (int index) const { return Item (getProject(), node.getChild (index)); }
Item addNewSubGroup (const String& name, int insertIndex);
Item getOrCreateSubGroup (const String& name);
void addChild (const Item& newChild, int insertIndex);
bool addFile (const File& file, int insertIndex);
bool addFile (const File& file, int insertIndex, bool shouldCompile);
bool addRelativeFile (const RelativePath& file, int insertIndex, bool shouldCompile);
void removeItemFromProject();
void sortAlphabetically();
void sortAlphabetically (bool keepGroupsAtStart);
Item findItemForFile (const File& file) const;
Item getParent() const;
@@ -266,25 +247,30 @@ public:
ValueTree getExporters();
int getNumExporters();
ProjectExporter* createExporter (int index);
void addNewExporter (int exporterIndex);
void addNewExporter (const String& exporterName);
void deleteExporter (int index);
void createDefaultExporters();
//==============================================================================
struct ConfigFlag
{
String symbol, description;
String symbol, description, sourceModuleID;
Value value; // 1 = true, 2 = false, anything else = use default
};
void getAllConfigFlags (OwnedArray <ConfigFlag>& flags);
static const char* const configFlagDefault;
static const char* const configFlagEnabled;
static const char* const configFlagDisabled;
Value getConfigFlag (const String& name);
bool isConfigFlagEnabled (const String& name) const;
//==============================================================================
bool isModuleEnabled (const String& moduleID) const;
Value shouldShowAllModuleFilesInProject (const String& moduleID);
void addModule (const String& moduleID);
void removeModule (const String& moduleID);
//==============================================================================
String getFileTemplate (const String& templateName);
@@ -310,10 +296,12 @@ private:
DrawableImage mainProjectIcon;
void updateProjectSettings();
void sanitiseConfigFlags();
void setMissingDefaultValues();
ValueTree getConfigurations() const;
void createDefaultConfigs();
ValueTree getConfigNode();
ValueTree getModulesNode();
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Project);
};


+ 1
- 1
extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------


+ 1
- 1
extras/Introjucer/Source/Project/jucer_ProjectContentComponent.h View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------


+ 6
- 6
extras/Introjucer/Source/Project/jucer_ProjectExport_Android.h View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
@@ -196,8 +196,8 @@ private:
{
MemoryOutputStream mo;
mo << "# Automatically generated makefile, created by the Jucer" << newLine
<< "# Don't edit this file! Your changes will be overwritten when you re-save the Jucer project!" << newLine
mo << "# Automatically generated makefile, created by the Introjucer" << newLine
<< "# Don't edit this file! Your changes will be overwritten when you re-save the Introjucer project!" << newLine
<< newLine
<< "APP_STL := gnustl_static" << newLine
<< "APP_CPPFLAGS += -fsigned-char -fexceptions -frtti" << newLine;
@@ -220,8 +220,8 @@ private:
void writeAndroidMk (OutputStream& out, const Array<RelativePath>& files)
{
out << "# Automatically generated makefile, created by the Jucer" << newLine
<< "# Don't edit this file! Your changes will be overwritten when you re-save the Jucer project!" << newLine
out << "# Automatically generated makefile, created by the Introjucer" << newLine
<< "# Don't edit this file! Your changes will be overwritten when you re-save the Introjucer project!" << newLine
<< newLine
<< "LOCAL_PATH := $(call my-dir)" << newLine
<< newLine
@@ -364,7 +364,7 @@ private:
{
MemoryOutputStream mo;
mo << "# This file is used to override default values used by the Ant build system." << newLine
<< "# It is automatically generated by the Jucer - DO NOT EDIT IT or your changes will be lost!." << newLine
<< "# It is automatically generated by the Introjucer - DO NOT EDIT IT or your changes will be lost!." << newLine
<< newLine
<< "sdk.dir=" << escapeSpaces (replacePreprocessorDefs (getAllPreprocessorDefs(), getSDKPath().toString())) << newLine
<< "ndk.dir=" << escapeSpaces (replacePreprocessorDefs (getAllPreprocessorDefs(), getNDKPath().toString())) << newLine


+ 21
- 24
extras/Introjucer/Source/Project/jucer_ProjectExport_MSVC.h View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
@@ -77,7 +77,7 @@ protected:
File getProjectFile (const String& extension) const { return getTargetFolder().getChildFile (project.getProjectFilenameRoot()).withFileExtension (extension); }
Value getLibraryType() const { return getSetting (Ids::libraryType); }
bool isLibraryDLL() const { return projectType.isLibrary() && getLibraryType() == 2; }
bool isLibraryDLL() const { return msvcIsDLL || (projectType.isLibrary() && getLibraryType() == 2); }
//==============================================================================
String getIntermediatesPath (const Project::BuildConfiguration& config) const
@@ -131,11 +131,8 @@ protected:
StringArray getHeaderSearchPaths (const Project::BuildConfiguration& config) const
{
StringArray searchPaths (config.getHeaderSearchPaths());
for (int i = 0; i < libraryModules.size(); ++i)
libraryModules.getUnchecked(i)->addExtraSearchPaths (*this, searchPaths);
StringArray searchPaths (extraSearchPaths);
searchPaths.addArray (config.getHeaderSearchPaths());
searchPaths.removeDuplicates (false);
return searchPaths;
}
@@ -376,8 +373,8 @@ public:
if (group.getID() == ProjectSaver::getGeneratedGroupID())
{
group.addFile (iconFile, -1);
group.addFile (rcFile, -1);
group.addFile (iconFile, -1, true);
group.addFile (rcFile, -1, true);
group.findItemForFile (iconFile).getShouldAddToResourceValue() = false;
group.findItemForFile (rcFile).getShouldAddToResourceValue() = false;
@@ -508,7 +505,7 @@ protected:
xml.setAttribute ("Name", createConfigName (config));
xml.setAttribute ("OutputDirectory", FileHelpers::windowsStylePath (binariesPath));
xml.setAttribute ("IntermediateDirectory", FileHelpers::windowsStylePath (intermediatesPath));
xml.setAttribute ("ConfigurationType", (msvcIsDLL || isLibraryDLL()) ? "2" : (projectType.isLibrary() ? "4" : "1"));
xml.setAttribute ("ConfigurationType", isLibraryDLL() ? "2" : (projectType.isLibrary() ? "4" : "1"));
xml.setAttribute ("UseOfMFC", "0");
xml.setAttribute ("ATLMinimizesCRunTimeLibraryUsage", "false");
xml.setAttribute ("CharacterSet", "2");
@@ -593,8 +590,8 @@ protected:
linker->setAttribute ("OutputFile", FileHelpers::windowsStylePath (binariesPath + "/" + outputFileName));
linker->setAttribute ("SuppressStartupBanner", "true");
if (project.getJuceLinkageMode() == Project::useLinkedJuce)
linker->setAttribute ("AdditionalLibraryDirectories", getJucePathFromTargetFolder().getChildFile ("bin").toWindowsStyle());
//if (project.getJuceLinkageMode() == Project::useLinkedJuce)
// linker->setAttribute ("AdditionalLibraryDirectories", getJucePathFromTargetFolder().getChildFile ("bin").toWindowsStyle());
linker->setAttribute ("IgnoreDefaultLibraryNames", isDebug ? "libcmt.lib, msvcrt.lib" : "");
linker->setAttribute ("GenerateDebugInformation", isDebug ? "true" : "false");
@@ -778,7 +775,7 @@ private:
String targetType, targetCode;
if (msvcIsDLL) { targetType = "\"Win32 (x86) Dynamic-Link Library\""; targetCode = "0x0102"; }
if (isLibraryDLL()) { targetType = "\"Win32 (x86) Dynamic-Link Library\""; targetCode = "0x0102"; }
else if (projectType.isLibrary()) { targetType = "\"Win32 (x86) Static Library\""; targetCode = "0x0104"; }
else if (projectType.isCommandLineApp()) { targetType = "\"Win32 (x86) Console Application\""; targetCode = "0x0103"; }
else { targetType = "\"Win32 (x86) Application\""; targetCode = "0x0101"; }
@@ -876,8 +873,8 @@ private:
<< "kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib "
<< (isDebug ? " /debug" : "")
<< " /nologo /machine:I386 /out:\"" << targetBinary << "\" "
<< (msvcIsDLL ? "/dll" : (msvcIsWindowsSubsystem ? "/subsystem:windows "
: "/subsystem:console "))
<< (isLibraryDLL() ? "/dll" : (msvcIsWindowsSubsystem ? "/subsystem:windows "
: "/subsystem:console "))
<< replacePreprocessorTokens (config, getExtraLinkerFlags().toString()).trim() << newLine;
}
}
@@ -943,7 +940,7 @@ private:
{
out << "Microsoft Developer Studio Workspace File, Format Version 6.00 " << newLine;
if (! project.isUsingWrapperFiles())
/*if (! project.isUsingWrapperFiles())
{
out << "Project: \"JUCE\"= ..\\JUCE.dsp - Package Owner=<4>" << newLine
<< "Package=<5>" << newLine
@@ -952,7 +949,7 @@ private:
<< "Package=<4>" << newLine
<< "{{{" << newLine
<< "}}}" << newLine;
}
}*/
out << "Project: \"" << projectName << "\" = .\\" << getDSPFile().getFileName() << " - Package Owner=<4>" << newLine
<< "Package=<5>" << newLine
@@ -961,12 +958,12 @@ private:
<< "Package=<4>" << newLine
<< "{{{" << newLine;
if (! project.isUsingWrapperFiles())
/*if (! project.isUsingWrapperFiles())
{
out << " Begin Project Dependency" << newLine
<< " Project_Dep_Name JUCE" << newLine
<< " End Project Dependency" << newLine;
}
}*/
out << "}}}" << newLine
<< "Global:" << newLine
@@ -1271,7 +1268,7 @@ protected:
String getProjectType() const
{
if (projectType.isGUIApplication() || projectType.isCommandLineApp()) return "Application";
else if (msvcIsDLL) return "DynamicLibrary";
else if (isLibraryDLL()) return "DynamicLibrary";
else if (projectType.isLibrary()) return "StaticLibrary";
jassertfalse;
@@ -1321,8 +1318,8 @@ protected:
{
const RelativePath path (projectItem.getFile(), getTargetFolder(), RelativePath::buildTargetFolder);
if (path.hasFileExtension (headerFileExtensions) || (path.hasFileExtension ("cpp;cc;c;cxx") && projectItem.shouldBeCompiled()))
addFileToCompile (path, cpps, headers, false, useStdCall);
if (path.hasFileExtension (headerFileExtensions) || (path.hasFileExtension ("cpp;cc;c;cxx")))
addFileToCompile (path, cpps, headers, ! projectItem.shouldBeCompiled(), useStdCall);
}
}
}
@@ -1400,14 +1397,14 @@ protected:
XmlElement* iconGroup = filterXml.createNewChildElement ("ItemGroup");
XmlElement* e = iconGroup->createNewChildElement ("None");
e->setAttribute ("Include", ".\\" + iconFile.getFileName());
e->createNewChildElement ("Filter")->addTextElement (project.getJuceCodeGroupName());
e->createNewChildElement ("Filter")->addTextElement (ProjectSaver::getJuceCodeGroupName());
}
{
XmlElement* rcGroup = filterXml.createNewChildElement ("ItemGroup");
XmlElement* e = rcGroup->createNewChildElement ("ResourceCompile");
e->setAttribute ("Include", ".\\" + rcFile.getFileName());
e->createNewChildElement ("Filter")->addTextElement (project.getJuceCodeGroupName());
e->createNewChildElement ("Filter")->addTextElement (ProjectSaver::getJuceCodeGroupName());
}
}
}


+ 11
- 13
extras/Introjucer/Source/Project/jucer_ProjectExport_Make.h View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
@@ -129,15 +129,16 @@ private:
void writeHeaderPathFlags (OutputStream& out, const Project::BuildConfiguration& config)
{
StringArray headerPaths (config.getHeaderSearchPaths());
headerPaths.insert (0, "/usr/include/freetype2");
headerPaths.insert (0, "/usr/include");
StringArray searchPaths (extraSearchPaths);
searchPaths.addArray (config.getHeaderSearchPaths());
for (int i = 0; i < libraryModules.size(); ++i)
libraryModules.getUnchecked(i)->addExtraSearchPaths (*this, headerPaths);
searchPaths.insert (0, "/usr/include/freetype2");
searchPaths.insert (0, "/usr/include");
for (int i = 0; i < headerPaths.size(); ++i)
out << " -I " << FileHelpers::unixStylePath (replacePreprocessorTokens (config, headerPaths[i])).quoted();
searchPaths.removeDuplicates (false);
for (int i = 0; i < searchPaths.size(); ++i)
out << " -I " << FileHelpers::unixStylePath (replacePreprocessorTokens (config, searchPaths[i])).quoted();
}
void writeCppFlags (OutputStream& out, const Project::BuildConfiguration& config)
@@ -167,9 +168,6 @@ private:
const char* defaultLibs[] = { "freetype", "pthread", "rt", "X11", "GL", "GLU", "Xinerama", "asound", 0 };
StringArray libs (defaultLibs);
if (project.getJuceLinkageMode() == Project::useLinkedJuce)
libs.add ("juce");
for (int i = 0; i < libs.size(); ++i)
out << " -l" << libs[i];
@@ -247,8 +245,8 @@ private:
void writeMakefile (OutputStream& out, const Array<RelativePath>& files)
{
out << "# Automatically generated makefile, created by the Jucer" << newLine
<< "# Don't edit this file! Your changes will be overwritten when you re-save the Jucer project!" << newLine
out << "# Automatically generated makefile, created by the Introjucer" << newLine
<< "# Don't edit this file! Your changes will be overwritten when you re-save the Introjucer project!" << newLine
<< newLine;
out << "ifndef CONFIG" << newLine


+ 7
- 9
extras/Introjucer/Source/Project/jucer_ProjectExport_XCode.h View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
@@ -399,11 +399,9 @@ private:
StringArray getHeaderSearchPaths (const Project::BuildConfiguration& config)
{
StringArray searchPaths (config.getHeaderSearchPaths());
for (int i = 0; i < libraryModules.size(); ++i)
libraryModules.getUnchecked(i)->addExtraSearchPaths (*this, searchPaths);
StringArray searchPaths (extraSearchPaths);
searchPaths.addArray (config.getHeaderSearchPaths());
searchPaths.removeDuplicates (false);
return searchPaths;
}
@@ -431,12 +429,12 @@ private:
for (int i = 0; i < extraLibs.size(); ++i)
getLinkerFlagsForStaticLibrary (extraLibs.getReference(i), flags, librarySearchPaths);
if (project.getJuceLinkageMode() == Project::useLinkedJuce)
/*if (project.getJuceLinkageMode() == Project::useLinkedJuce)
{
RelativePath juceLib (getJucePathFromTargetFolder().getChildFile (config.isDebug().getValue() ? "bin/libjucedebug.a"
: "bin/libjuce.a"));
getLinkerFlagsForStaticLibrary (juceLib, flags, librarySearchPaths);
}
}*/
flags.add (replacePreprocessorTokens (config, getExtraLinkerFlags().toString()));
flags.removeEmptyStrings (true);
@@ -456,7 +454,7 @@ private:
s.add ("WARNING_CFLAGS = -Wreorder");
s.add ("GCC_MODEL_TUNING = G5");
if (projectType.isLibrary() || project.getJuceLinkageMode() == Project::useLinkedJuce)
if (projectType.isLibrary() /*|| project.getJuceLinkageMode() == Project::useLinkedJuce*/)
{
s.add ("GCC_INLINES_ARE_PRIVATE_EXTERN = NO");
s.add ("GCC_SYMBOLS_PRIVATE_EXTERN = NO");


+ 34
- 13
extras/Introjucer/Source/Project/jucer_ProjectExporter.cpp View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
@@ -50,6 +50,16 @@ StringArray ProjectExporter::getExporterNames()
return s;
}
StringArray ProjectExporter::getDefaultExporters()
{
StringArray s;
s.add (XCodeProjectExporter::getNameMac());
s.add (MSVCProjectExporterVC2008::getName());
s.add (MSVCProjectExporterVC2010::getName());
s.add (MakefileProjectExporter::getNameLinux());
return s;
}
ProjectExporter* ProjectExporter::createNewExporter (Project& project, const int index)
{
ProjectExporter* exp = nullptr;
@@ -75,10 +85,14 @@ ProjectExporter* ProjectExporter::createNewExporter (Project& project, const int
else
exp->getJuceFolder() = juceFolder.getFullPathName();
exp->createLibraryModules();
return exp;
}
ProjectExporter* ProjectExporter::createNewExporter (Project& project, const String& name)
{
return createNewExporter (project, getExporterNames().indexOf (name));
}
ProjectExporter* ProjectExporter::createExporter (Project& project, const ValueTree& settings)
{
ProjectExporter* exp = MSVCProjectExporterVC6::createForSettings (project, settings);
@@ -90,7 +104,6 @@ ProjectExporter* ProjectExporter::createExporter (Project& project, const ValueT
if (exp == nullptr) exp = AndroidProjectExporter::createForSettings (project, settings);
jassert (exp != nullptr);
exp->createLibraryModules();
return exp;
}
@@ -128,7 +141,8 @@ ProjectExporter::ProjectExporter (Project& project_, const ValueTree& settings_)
projectType (project_.getProjectType()),
projectName (project_.getProjectName().toString()),
projectFolder (project_.getFile().getParentDirectory()),
settings (settings_)
settings (settings_),
modulesGroup (nullptr)
{
for (int i = 0; i < jmax (1, project.getNumConfigurations()); ++i)
configs.add (project.getConfiguration (i));
@@ -140,12 +154,6 @@ ProjectExporter::~ProjectExporter()
{
}
void ProjectExporter::createLibraryModules()
{
libraryModules.clear();
project.getProjectType().createRequiredModules (project, libraryModules);
}
File ProjectExporter::getTargetFolder() const
{
return project.resolveFilename (getTargetLocation().toString());
@@ -198,11 +206,13 @@ void ProjectExporter::createPropertyEditors (Array <PropertyComponent*>& props)
props.add (new TextPropertyComponent (getTargetLocation(), "Target Project Folder", 1024, false));
props.getLast()->setTooltip ("The location of the folder in which the " + name + " project will be created. This path can be absolute, but it's much more sensible to make it relative to the jucer project directory.");
props.add (new TextPropertyComponent (getJuceFolder(), "Juce Location", 1024, false));
props.add (new TextPropertyComponent (getJuceFolder(), "Local JUCE folder", 1024, false));
props.getLast()->setTooltip ("The location of the Juce library folder that the " + name + " project will use to when compiling. This can be an absolute path, or relative to the jucer project folder, but it must be valid on the filesystem of the machine you use to actually do the compiling.");
for (int i = 0; i < libraryModules.size(); ++i)
libraryModules.getUnchecked(i)->createPropertyEditors (*this, props);
OwnedArray<LibraryModule> modules;
project.getProjectType().createRequiredModules (project, ModuleList::getInstance(), modules);
for (int i = 0; i < modules.size(); ++i)
modules.getUnchecked(i)->createPropertyEditors (*this, props);
props.add (new TextPropertyComponent (getExporterPreprocessorDefs(), "Extra Preprocessor Definitions", 32768, false));
props.getLast()->setTooltip ("Extra preprocessor definitions. Use the form \"NAME1=value NAME2=value\", using whitespace or commas to separate the items - to include a space or comma in a definition, precede it with a backslash.");
@@ -269,3 +279,14 @@ Image ProjectExporter::getBestIconForSize (int size, bool returnNullIfNothingBig
RectanglePlacement::centred | RectanglePlacement::onlyReduceInSize, false);
return newIm;
}
Project::Item& ProjectExporter::getModulesGroup()
{
if (modulesGroup == nullptr)
{
groups.add (Project::Item::createGroup (project, "Juce Modules", "__modulesgroup__"));
modulesGroup = &(groups.getReference (groups.size() - 1));
}
return *modulesGroup;
}

+ 6
- 3
extras/Introjucer/Source/Project/jucer_ProjectExporter.h View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
@@ -44,9 +44,11 @@ public:
static int getNumExporters();
static StringArray getExporterNames();
static ProjectExporter* createNewExporter (Project& project, const int index);
static ProjectExporter* createNewExporter (Project& project, const String& name);
static ProjectExporter* createExporter (Project& project, const ValueTree& settings);
static ProjectExporter* createPlatformDefaultExporter (Project& project);
static StringArray getDefaultExporters();
//=============================================================================
// return 0 if this can't be opened in the current OS, or a higher value, where higher numbers are more preferable.
@@ -118,7 +120,7 @@ public:
//==============================================================================
Array<Project::Item> groups;
OwnedArray<LibraryModule> libraryModules;
Project::Item& getModulesGroup();
//==============================================================================
String xcodePackageType, xcodeBundleSignature, xcodeBundleExtension;
@@ -140,7 +142,7 @@ public:
String msvcPostBuildCommand, msvcPostBuildOutputs;
//==============================================================================
void createLibraryModules();
StringArray extraSearchPaths;
protected:
//==============================================================================
@@ -151,6 +153,7 @@ protected:
const File projectFolder;
Array<Project::BuildConfiguration> configs;
ValueTree settings;
Project::Item* modulesGroup;
static String getDefaultBuildsRootFolder() { return "Builds/"; }


+ 338
- 38
extras/Introjucer/Source/Project/jucer_ProjectInformationComponent.cpp View File

@@ -24,32 +24,133 @@
//[MiscUserDefs] You can add your own user definitions and misc code here...
class PropertiesWithHelpComponent : public PropertyPanelWithTooltips
//==============================================================================
class PanelBase : public PropertyPanelWithTooltips
{
public:
PropertiesWithHelpComponent (Project& project_, int tabIndex_)
: project (project_), tabIndex (tabIndex_)
PanelBase (Project& project_) : project (project_) {}
virtual void rebuildProperties (Array <PropertyComponent*>& props) = 0;
void visibilityChanged()
{
if (isVisible())
refreshAll();
}
void rebuildProperties()
void refreshAll()
{
getPanel().clear();
Array <PropertyComponent*> props;
rebuildProperties (props);
getPanel().addProperties (props);
}
if (tabIndex == 0)
{
// The main project tab...
project.createPropertyEditors (props);
}
else if (tabIndex == 1)
protected:
Project& project;
};
//==============================================================================
class ProjectTab : public PanelBase
{
public:
ProjectTab (Project& project_) : PanelBase (project_) {}
void rebuildProperties (Array <PropertyComponent*>& props)
{
project.createPropertyEditors (props);
}
};
//==============================================================================
class ConfigTab : public PanelBase
{
public:
ConfigTab (Project& project_, int configIndex_)
: PanelBase (project_), configIndex (configIndex_)
{
}
void rebuildProperties (Array <PropertyComponent*>& props)
{
project.getConfiguration (configIndex).createPropertyEditors (props);
}
private:
int configIndex;
};
//==============================================================================
class ExportTab : public PanelBase
{
public:
ExportTab (Project& project_, int exporterIndex_)
: PanelBase (project_), exporterIndex (exporterIndex_)
{
}
void rebuildProperties (Array <PropertyComponent*>& props)
{
ScopedPointer <ProjectExporter> exp (project.createExporter (exporterIndex));
if (exp != nullptr)
exp->createPropertyEditors (props);
for (int i = props.size(); --i >= 0;)
props.getUnchecked(i)->setPreferredHeight (22);
}
private:
int exporterIndex;
};
//==============================================================================
static StringArray getExtraDependenciesNeeded (Project& project, const ModuleList::Module& m)
{
StringArray dependencies, extraDepsNeeded;
ModuleList::getInstance().getDependencies (m.uid, dependencies);
for (int i = 0; i < dependencies.size(); ++i)
if ((! project.isModuleEnabled (dependencies[i])) && dependencies[i] != m.uid)
extraDepsNeeded.add (dependencies[i]);
return extraDepsNeeded;
}
//==============================================================================
class ModuleSettingsPanel : public PanelBase
{
public:
ModuleSettingsPanel (Project& project_, const String& moduleID_)
: PanelBase (project_), moduleID (moduleID_)
{
setBounds ("parent.width / 2 + 1, 3, parent.width - 3, parent.height - 3");
}
void rebuildProperties (Array <PropertyComponent*>& props)
{
ScopedPointer<LibraryModule> module (ModuleList::getInstance().loadModule (moduleID));
if (module != nullptr)
{
// The Juce options tab...
OwnedArray <Project::ConfigFlag> flags;
project.getAllConfigFlags (flags);
props.add (new ModuleInfoComponent (project, moduleID));
if (project.isModuleEnabled (moduleID))
{
const ModuleList::Module* m = ModuleList::getInstance().findModuleInfo (moduleID);
if (m != nullptr && getExtraDependenciesNeeded (project, *m).size() > 0)
props.add (new MissingDependenciesComponent (project, moduleID));
}
props.add (new BooleanPropertyComponent (project.shouldShowAllModuleFilesInProject (moduleID),
"Show All Code", "Add entire module tree to target projects"));
props.getLast()->setTooltip ("If this is enabled, then the entire source tree from this module will be shown inside your project, "
"making it easy to browse/edit the module's classes. If disabled, then only the minimum number of files "
"required to compile it will appear inside your project.");
StringArray possibleValues;
possibleValues.add ("(Use default from juce_Config.h)");
possibleValues.add ("(Use Default)");
possibleValues.add ("Enabled");
possibleValues.add ("Disabled");
@@ -58,6 +159,9 @@ public:
mappings.add (Project::configFlagEnabled);
mappings.add (Project::configFlagDisabled);
OwnedArray <Project::ConfigFlag> flags;
module->getConfigFlags (project, flags);
for (int i = 0; i < flags.size(); ++i)
{
ChoicePropertyComponent* c = new ChoicePropertyComponent (flags[i]->value, flags[i]->symbol, possibleValues, mappings);
@@ -66,36 +170,236 @@ public:
props.add (c);
}
}
else if (tabIndex < 2 + project.getNumConfigurations())
setEnabled (project.isModuleEnabled (moduleID));
}
private:
String moduleID;
//==============================================================================
class ModuleInfoComponent : public PropertyComponent
{
public:
ModuleInfoComponent (Project& project_, const String& moduleID_)
: PropertyComponent ("Module", 100),
project (project_), moduleID (moduleID_)
{
// A config tab..
project.getConfiguration (tabIndex - 2).createPropertyEditors (props);
}
else
void refresh() {}
void paint (Graphics& g)
{
// An export tab..
ScopedPointer <ProjectExporter> exp (project.createExporter (tabIndex - (2 + project.getNumConfigurations())));
g.setColour (Colours::white.withAlpha (0.4f));
g.fillRect (0, 0, getWidth(), getHeight() - 1);
if (exp != nullptr)
exp->createPropertyEditors (props);
const ModuleList::Module* module = ModuleList::getInstance().findModuleInfo (moduleID);
for (int i = props.size(); --i >= 0;)
props.getUnchecked(i)->setPreferredHeight (22);
if (module != nullptr)
{
String text;
text << module->name << newLine << newLine
<< module->description;
GlyphArrangement ga;
ga.addJustifiedText (Font (13.0f), text, 4.0f, 16.0f, getWidth() - 8.0f, Justification::topLeft);
g.setColour (Colours::black);
ga.draw (g);
}
}
getPanel().addProperties (props);
private:
Project& project;
String moduleID;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ModuleInfoComponent);
};
//==============================================================================
class MissingDependenciesComponent : public PropertyComponent,
public Button::Listener
{
public:
MissingDependenciesComponent (Project& project_, const String& moduleID_)
: PropertyComponent ("Dependencies", 100),
project (project_), moduleID (moduleID_),
fixButton ("Enable Required Modules")
{
const ModuleList::Module* module = ModuleList::getInstance().findModuleInfo (moduleID);
if (module != nullptr)
missingDependencies = getExtraDependenciesNeeded (project, *module);
addAndMakeVisible (&fixButton);
fixButton.setColour (TextButton::buttonColourId, Colours::red);
fixButton.setColour (TextButton::textColourOffId, Colours::white);
fixButton.setBounds ("right - 160, parent.height - 26, parent.width - 8, top + 22");
fixButton.addListener (this);
}
void refresh() {}
void paint (Graphics& g)
{
g.setColour (Colours::white.withAlpha (0.4f));
g.fillRect (0, 0, getWidth(), getHeight() - 1);
String text ("This module requires the following dependencies:\n");
text << missingDependencies.joinIntoString (", ");
GlyphArrangement ga;
ga.addJustifiedText (Font (13.0f), text, 4.0f, 16.0f, getWidth() - 8.0f, Justification::topLeft);
g.setColour (Colours::red);
ga.draw (g);
}
void buttonClicked (Button*);
private:
Project& project;
String moduleID;
StringArray missingDependencies;
TextButton fixButton;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MissingDependenciesComponent);
};
};
//==============================================================================
class ModulesPanel : public Component,
public ListBoxModel
{
public:
ModulesPanel (Project& project_)
: project (project_)
{
modulesList.setModel (this);
modulesList.setColour (ListBox::backgroundColourId, Colours::white.withAlpha (0.4f));
addAndMakeVisible (&modulesList);
modulesList.setBounds ("4, 3, parent.width / 2 - 4, parent.height - 3");
}
void visibilityChanged()
int getNumRows()
{
if (isVisible())
rebuildProperties();
return ModuleList::getInstance().modules.size();
}
void paintListBoxItem (int rowNumber, Graphics& g, int width, int height, bool rowIsSelected)
{
if (rowIsSelected)
g.fillAll (findColour (TextEditor::highlightColourId));
const ModuleList::Module* const m = ModuleList::getInstance().modules [rowNumber];
if (m != nullptr)
{
const float tickSize = height * 0.7f;
getLookAndFeel().drawTickBox (g, *this, (height - tickSize) / 2, (height - tickSize) / 2, tickSize, tickSize,
project.isModuleEnabled (m->uid), true, false, false);
if (project.isModuleEnabled (m->uid) && getExtraDependenciesNeeded (project, *m).size() > 0)
g.setColour (Colours::red);
else
g.setColour (Colours::black);
g.setFont (height * 0.7f, Font::bold);
g.drawFittedText (m->uid, height, 0, 200, height, Justification::centredLeft, 1);
g.setFont (height * 0.55f, Font::italic);
g.drawText (m->name, height + 200, 0, width - height - 200, height, Justification::centredLeft, true);
}
}
void flipRow (int row)
{
const ModuleList::Module* const m = ModuleList::getInstance().modules [row];
if (m != nullptr)
{
if (project.isModuleEnabled (m->uid))
{
project.removeModule (m->uid);
}
else
{
const StringArray extraDepsNeeded (getExtraDependenciesNeeded (project, *m));
/* if (extraDepsNeeded.size() > 0)
{
if (AlertWindow::showOkCancelBox (AlertWindow::NoIcon,
"Module Dependencies",
"The '" + m->uid + "' module requires the following dependencies:\n"
+ extraDepsNeeded.joinIntoString (", ") + "\n\nDo you want to add all these to your project?"))
{
project.addModule (m->uid);
for (int i = extraDepsNeeded.size(); --i >= 0;)
project.addModule (extraDepsNeeded[i]);
}
}
else*/
{
project.addModule (m->uid);
}
}
}
refresh();
}
void listBoxItemClicked (int row, const MouseEvent& e)
{
if (e.x < modulesList.getRowHeight())
flipRow (row);
}
void listBoxItemDoubleClicked (int row, const MouseEvent& e)
{
flipRow (row);
}
void returnKeyPressed (int row)
{
flipRow (row);
}
void selectedRowsChanged (int lastRowSelected)
{
const ModuleList::Module* const m = ModuleList::getInstance().modules [lastRowSelected];
settings = nullptr;
if (m != nullptr)
addAndMakeVisible (settings = new ModuleSettingsPanel (project, m->uid));
}
void refresh()
{
modulesList.repaint();
if (settings != nullptr)
settings->refreshAll();
}
private:
Project& project;
int tabIndex;
ListBox modulesList;
ScopedPointer<ModuleSettingsPanel> settings;
};
void ModuleSettingsPanel::MissingDependenciesComponent::buttonClicked (Button*)
{
for (int i = missingDependencies.size(); --i >= 0;)
project.addModule (missingDependencies[i]);
ModulesPanel* mp = findParentComponentOfClass ((ModulesPanel*) 0);
if (mp != nullptr)
mp->refresh();
}
//[/MiscUserDefs]
//==============================================================================
@@ -222,17 +526,13 @@ void ProjectInformationComponent::rebuildConfigTabs()
{
configTabBox.clearTabs();
int index = 0;
PropertiesWithHelpComponent* panel = new PropertiesWithHelpComponent (project, index++);
configTabBox.addTab ("Project Settings", Colours::lightslategrey, panel, true, -1);
panel = new PropertiesWithHelpComponent (project, index++);
configTabBox.addTab ("Juce Flags", Colours::lightblue, panel, true, -1);
configTabBox.addTab ("Project Settings", Colours::lightslategrey, new ProjectTab (project), true, -1);
configTabBox.addTab ("Modules", Colours::lightblue, new ModulesPanel (project), true, -1);
int i;
for (i = 0; i < project.getNumConfigurations(); ++i)
{
panel = new PropertiesWithHelpComponent (project, index++);
Component* panel = new ConfigTab (project, i);
Project::BuildConfiguration config (project.getConfiguration (i));
configTabBox.addTab (config.getName().toString(), Colour::greyLevel (0.65f), panel, true, -1);
}
@@ -243,7 +543,7 @@ void ProjectInformationComponent::rebuildConfigTabs()
if (exp != nullptr)
{
panel = new PropertiesWithHelpComponent (project, index++);
Component* panel = new ExportTab (project, i);
configTabBox.addTab (exp->getName(), Colours::lightsteelblue, panel, true, -1);
}
}
@@ -330,7 +630,7 @@ void ProjectInformationComponent::showExporterMenu()
if (r >= 20000)
project.deleteExporter (r - 20000);
else if (r >= 10000)
project.addNewExporter (r - 10000);
project.addNewExporter (exporters [r - 10000]);
}
void ProjectInformationComponent::changeListenerCallback (ChangeBroadcaster*)


+ 178
- 104
extras/Introjucer/Source/Project/jucer_ProjectSaver.h View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
@@ -34,10 +34,21 @@ class ProjectSaver
{
public:
ProjectSaver (Project& project_, const File& projectFile_)
: project (project_), projectFile (projectFile_),
generatedFilesGroup (Project::Item::createGroup (project, project.getJuceCodeGroupName()))
: project (project_),
projectFile (projectFile_),
generatedCodeFolder (project.getGeneratedCodeFolder()),
generatedFilesGroup (Project::Item::createGroup (project, getJuceCodeGroupName(), "__generatedcode__"))
{
generatedFilesGroup.setID (getGeneratedGroupID());
if (generatedCodeFolder.exists())
{
Array<File> subFiles;
generatedCodeFolder.findChildFiles (subFiles, File::findFilesAndDirectories, false);
for (int i = subFiles.size(); --i >= 0;)
subFiles.getReference(i).deleteRecursively();
}
}
Project& getProject() noexcept { return project; }
@@ -63,31 +74,50 @@ public:
if (errors.size() == 0)
writeProjects();
if (errors.size() == 0)
writeAppConfigFile(); // (this is repeated in case the projects added anything to it)
if (generatedCodeFolder.exists() && errors.size() == 0)
writeReadmeFile();
if (errors.size() > 0)
project.setFile (oldFile);
return errors[0];
}
bool saveGeneratedFile (const String& filePath, const MemoryOutputStream& newData)
Project::Item saveGeneratedFile (const String& filePath, const MemoryOutputStream& newData)
{
if (! project.getGeneratedCodeFolder().createDirectory())
if (! generatedCodeFolder.createDirectory())
{
errors.add ("Couldn't create folder: " + project.getGeneratedCodeFolder().getFullPathName());
return false;
errors.add ("Couldn't create folder: " + generatedCodeFolder.getFullPathName());
return Project::Item (project, ValueTree::invalid);
}
const File file (project.getGeneratedCodeFolder().getChildFile (filePath));
const File file (generatedCodeFolder.getChildFile (filePath));
if (replaceFileIfDifferent (file, newData))
{
if (! generatedFilesGroup.findItemForFile (file).isValid())
generatedFilesGroup.addFile (file, -1);
return addFileToGeneratedGroup (file);
return true;
return Project::Item (project, ValueTree::invalid);
}
Project::Item addFileToGeneratedGroup (const File& file)
{
Project::Item item (generatedFilesGroup.findItemForFile (file));
if (! item.isValid())
{
generatedFilesGroup.addFile (file, -1, true);
item = generatedFilesGroup.findItemForFile (file);
}
return false;
return item;
}
void setExtraAppConfigFileContent (const String& content)
{
extraAppConfigContent = content;
}
static void writeAutoGenWarningComment (OutputStream& out)
@@ -98,12 +128,50 @@ public:
<< newLine;
}
static void writeGuardedInclude (OutputStream& out, StringArray paths, StringArray guards)
{
StringArray uniquePaths (paths);
uniquePaths.removeDuplicates (false);
if (uniquePaths.size() == 1)
{
out << "#include " << paths[0] << newLine;
}
else
{
int i = paths.size();
for (; --i >= 0;)
{
for (int j = i; --j >= 0;)
{
if (paths[i] == paths[j] && guards[i] == guards[j])
{
paths.remove (i);
guards.remove (i);
}
}
}
for (i = 0; i < paths.size(); ++i)
{
out << (i == 0 ? "#if " : "#elif ") << guards[i] << newLine
<< " #include " << paths[i] << newLine;
}
out << "#endif" << newLine;
}
}
static const char* getGeneratedGroupID() noexcept { return "__jucelibfiles"; }
Project::Item& getGeneratedCodeGroup() { return generatedFilesGroup; }
static String getJuceCodeGroupName() { return "Juce Library Code"; }
private:
Project& project;
const File projectFile;
const File projectFile, generatedCodeFolder;
Project::Item generatedFilesGroup;
String extraAppConfigContent;
StringArray errors;
File appConfigFile, binaryDataCpp;
@@ -138,59 +206,69 @@ private:
bool writeAppConfig (OutputStream& out)
{
writeAutoGenWarningComment (out);
out << " If you want to change any of these values, use the Introjucer to do so, rather than" << newLine
<< " editing this file directly!" << newLine
out << " If you want to change any of these values, use the Introjucer to do so," << newLine
<< " rather than editing this file directly!" << newLine
<< newLine
<< " Any commented-out settings will fall back to using the default values that" << newLine
<< " they are given in juce_Config.h" << newLine
<< " Any commented-out settings will assume their default values." << newLine
<< newLine
<< "*/" << newLine << newLine;
bool notActive = project.getJuceLinkageMode() == Project::useLinkedJuce
|| project.getJuceLinkageMode() == Project::notLinkedToJuce;
if (notActive)
out << "/* NOTE: These configs aren't available when you're linking to the juce library statically!" << newLine
<< " If you need to set a configuration that differs from the default, you'll need" << newLine
<< " to include the amalgamated Juce files." << newLine << newLine;
OwnedArray <Project::ConfigFlag> flags;
project.getAllConfigFlags (flags);
OwnedArray<LibraryModule> modules;
project.getProjectType().createRequiredModules (project, ModuleList::getInstance(), modules);
bool anyFlags = false;
for (int i = 0; i < flags.size(); ++i)
for (int j = 0; j < modules.size(); ++j)
{
const Project::ConfigFlag* const f = flags[i];
const String value (f->value.toString());
LibraryModule* const m = modules.getUnchecked(j);
OwnedArray <Project::ConfigFlag> flags;
m->getConfigFlags (project, flags);
if (value != Project::configFlagEnabled && value != Project::configFlagDisabled)
out << "//#define ";
else
out << "#define ";
if (flags.size() > 0)
{
anyFlags = true;
out << "//==============================================================================" << newLine
<< "// " << m->getID() << " flags:" << newLine
<< newLine;
for (int i = 0; i < flags.size(); ++i)
{
flags.getUnchecked(i)->value.referTo (project.getConfigFlag (flags.getUnchecked(i)->symbol));
out << f->symbol;
const Project::ConfigFlag* const f = flags[i];
const String value (project.getConfigFlag (f->symbol).toString());
if (value == Project::configFlagEnabled)
out << " 1";
else if (value == Project::configFlagDisabled)
out << " 0";
if (value == Project::configFlagEnabled)
out << "#define " << f->symbol << " 1";
else if (value == Project::configFlagDisabled)
out << "#define " << f->symbol << " 0";
else
out << "//#define " << f->symbol;
out << newLine;
out << newLine;
}
if (j < modules.size() - 1)
out << newLine;
}
}
if (notActive)
out << newLine << "*/" << newLine;
if (extraAppConfigContent.isNotEmpty())
{
out << newLine << extraAppConfigContent.trimEnd() << newLine;
return true;
}
return flags.size() > 0;
return anyFlags;
}
void writeAppConfigFile()
{
appConfigFile = project.getGeneratedCodeFolder().getChildFile (project.getAppConfigFilename());
appConfigFile = generatedCodeFolder.getChildFile (project.getAppConfigFilename());
MemoryOutputStream mem;
if (writeAppConfig (mem))
saveGeneratedFile (project.getAppConfigFilename(), mem);
else
appConfigFile.deleteFile();
}
void writeAppHeader (OutputStream& out)
@@ -198,8 +276,8 @@ private:
writeAutoGenWarningComment (out);
out << " This is the header file that your files should include in order to get all the" << newLine
<< " Juce library headers. You should NOT include juce.h or juce_amalgamated.h directly in" << newLine
<< " your own source files, because that wouldn't pick up the correct Juce configuration" << newLine
<< " JUCE library headers. You should avoid including the JUCE headers directly in" << newLine
<< " your own source files, because that wouldn't pick up the correct configuration" << newLine
<< " options for your app." << newLine
<< newLine
<< "*/" << newLine << newLine;
@@ -213,49 +291,22 @@ private:
{
OwnedArray<LibraryModule> modules;
project.getProjectType().createRequiredModules (project, modules);
StringArray paths, guards;
project.getProjectType().createRequiredModules (project, ModuleList::getInstance(), modules);
for (int i = 0; i < modules.size(); ++i)
modules.getUnchecked(i)->getHeaderFiles (project, paths, guards);
StringArray uniquePaths (paths);
uniquePaths.removeDuplicates (false);
if (uniquePaths.size() == 1)
{
out << "#include " << paths[0] << newLine;
}
else
{
int i = paths.size();
for (; --i >= 0;)
{
for (int j = i; --j >= 0;)
{
if (paths[i] == paths[j] && guards[i] == guards[j])
{
paths.remove (i);
guards.remove (i);
}
}
}
for (i = 0; i < paths.size(); ++i)
{
out << (i == 0 ? "#if " : "#elif ") << guards[i] << newLine
<< " #include " << paths[i] << newLine;
}
out << "#endif" << newLine;
}
modules.getUnchecked(i)->writeIncludes (project, out);
}
if (binaryDataCpp.exists())
out << CodeHelpers::createIncludeStatement (binaryDataCpp.withFileExtension (".h"), appConfigFile) << newLine;
out << newLine
<< "#if ! DONT_SET_USING_JUCE_NAMESPACE" << newLine
<< " // If your code uses a lot of JUCE classes, then this will obviously save you" << newLine
<< " // a lot of typing, but can be disabled by setting DONT_SET_USING_JUCE_NAMESPACE." << newLine
<< " using namespace JUCE_NAMESPACE;" << newLine
<< "#endif" << newLine
<< newLine
<< "namespace ProjectInfo" << newLine
<< "{" << newLine
<< " const char* const projectName = " << CodeHelpers::addEscapeChars (project.getProjectName().toString()).quoted() << ";" << newLine
@@ -268,22 +319,14 @@ private:
void writeAppHeader()
{
if (project.getJuceLinkageMode() != Project::notLinkedToJuce
|| ! project.getProjectType().isLibrary())
{
MemoryOutputStream mem;
writeAppHeader (mem);
saveGeneratedFile (project.getJuceSourceHFilename(), mem);
}
else
{
project.getAppIncludeFile().deleteFile();
}
MemoryOutputStream mem;
writeAppHeader (mem);
saveGeneratedFile (project.getJuceSourceHFilename(), mem);
}
void writeBinaryDataFiles()
{
binaryDataCpp = project.getGeneratedCodeFolder().getChildFile ("BinaryData.cpp");
binaryDataCpp = generatedCodeFolder.getChildFile ("BinaryData.cpp");
ResourceFile resourceFile (project);
@@ -293,8 +336,8 @@ private:
if (resourceFile.write (binaryDataCpp))
{
generatedFilesGroup.addFile (binaryDataCpp, -1);
generatedFilesGroup.addFile (binaryDataCpp.withFileExtension (".h"), -1);
generatedFilesGroup.addFile (binaryDataCpp, -1, true);
generatedFilesGroup.addFile (binaryDataCpp.withFileExtension (".h"), -1, false);
}
else
{
@@ -308,8 +351,41 @@ private:
}
}
void writeReadmeFile()
{
MemoryOutputStream out;
out << newLine
<< " Important Note!!" << newLine
<< " ================" << newLine
<< newLine
<< "The purpose of this folder is to contain files that are auto-generated by the Introjucer," << newLine
<< "and ALL files in this folder will be mercilessly DELETED and completely re-written whenever" << newLine
<< "the Introjucer saves your project." << newLine
<< newLine
<< "Therefore, it's a bad idea to make any manual changes to the files in here, or to" << newLine
<< "put any of your own files in here if you don't want to lose them. (Of course you may choose" << newLine
<< "to add the folder's contents to your version-control system so that you can re-merge your own" << newLine
<< "modifications after the Introjucer has saved its changes)." << newLine;
replaceFileIfDifferent (generatedCodeFolder.getChildFile ("ReadMe.txt"), out);
}
static void sortGroupRecursively (Project::Item group)
{
group.sortAlphabetically (true);
for (int i = group.getNumChildren(); --i >= 0;)
sortGroupRecursively (group.getChild(i));
}
void writeProjects()
{
// keep a copy of the basic generated files group, as each exporter may modify it.
const ValueTree originalGeneratedGroup (generatedFilesGroup.getNode().createCopy());
OwnedArray<LibraryModule> modules;
project.getProjectType().createRequiredModules (project, ModuleList::getInstance(), modules);
for (int i = project.getNumExporters(); --i >= 0;)
{
ScopedPointer <ProjectExporter> exporter (project.createExporter (i));
@@ -317,13 +393,13 @@ private:
if (exporter->getTargetFolder().createDirectory())
{
generatedFilesGroup.getNode() = originalGeneratedGroup.createCopy();
project.getProjectType().prepareExporter (*exporter);
// start with a copy of the basic files, as each exporter may modify it.
const ValueTree generatedGroupCopy (generatedFilesGroup.getNode().createCopy());
for (int j = 0; j < modules.size(); ++j)
modules.getUnchecked(j)->prepareExporter (*exporter, *this);
for (int j = 0; j < exporter->libraryModules.size(); ++j)
exporter->libraryModules.getUnchecked(j)->prepareExporter (*exporter, *this);
sortGroupRecursively (generatedFilesGroup);
exporter->groups.add (generatedFilesGroup);
@@ -335,8 +411,6 @@ private:
{
errors.add (error.message);
}
generatedFilesGroup.getNode() = generatedGroupCopy;
}
else
{
@@ -360,4 +434,4 @@ private:
};
#endif
#endif // __JUCER_PROJECTSAVER_JUCEHEADER__

+ 1
- 1
extras/Introjucer/Source/Project/jucer_ProjectTreeViewBase.cpp View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------


+ 1
- 1
extras/Introjucer/Source/Project/jucer_ProjectTreeViewBase.h View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------


+ 8
- 859
extras/Introjucer/Source/Project/jucer_ProjectType.cpp View File

@@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
@@ -26,832 +26,9 @@
#include "jucer_ProjectType.h"
#include "jucer_ProjectExporter.h"
#include "jucer_ProjectSaver.h"
//==============================================================================
class JuceModule
{
public:
JuceModule (const File& file)
: moduleInfo (JSON::parse (file)),
moduleFolder (file.getParentDirectory())
{
}
static StringArray findAllModuleIDs()
{
StringArray ids;
DirectoryIterator iter (getModulesFolder(), false, "*", File::findDirectories);
while (iter.next())
{
const File moduleDef (iter.getFile().getChildFile ("juce_module.txt"));
if (moduleDef.exists())
{
ScopedPointer<JuceModule> m (new JuceModule (moduleDef));
jassert (m->isValid());
if (m->isValid())
ids.add (m->getID());
}
}
return ids;
}
static JuceModule* createModuleForID (const String& moduleID)
{
DirectoryIterator iter (getModulesFolder(), false, "*", File::findDirectories);
while (iter.next())
{
const File moduleDef (iter.getFile().getChildFile ("juce_module.txt"));
if (moduleDef.exists())
{
ScopedPointer<JuceModule> m (new JuceModule (moduleDef));
if (m->getID() == moduleID)
return m.release();
}
}
return nullptr;
}
String getID() const { return moduleInfo ["id"]; }
bool isValid() const { return getID().isNotEmpty(); }
File getInclude() const
{
return getFileFromPath (moduleInfo ["include"]);
}
Array<File> getCompiledFiles() const
{
Array<File> result;
const Array<var>* const files = moduleInfo ["compile"].getArray();
if (files != nullptr)
{
for (int i = 0; i < files->size(); ++i)
{
const var& file = files->getReference(i);
String filename (file ["file"].toString());
if (filename.isNotEmpty())
result.add (getFileFromPath (filename));
}
}
return result;
}
File getFileFromPath (const String& path) const
{
return moduleFolder.getChildFile (path);
}
void getDependencies (OwnedArray<JuceModule>& dependencies) const
{
const Array<var>* const deps = moduleInfo ["dependencies"].getArray();
if (deps != nullptr)
{
for (int i = 0; i < deps->size(); ++i)
{
const String requiredID (deps->getUnchecked(i) ["id"].toString());
if (requiredID.isNotEmpty()
&& ! containsModule (dependencies, requiredID))
{
JuceModule* const m = createModuleForID (requiredID);
if (m != nullptr)
dependencies.add (m);
}
}
}
}
var moduleInfo;
File moduleFolder;
private:
static bool containsModule (const OwnedArray<JuceModule>& modules, const String& requiredID)
{
for (int i = modules.size(); --i >= 0;)
if (modules.getUnchecked(i)->getID() == requiredID)
return true;
return false;
}
static File getModulesFolder()
{
return File ("/Volumes/CODE/code/juce2/modules");
//return StoredSettings::getInstance()->getLastKnownJuceFolder().getChildFile ("modules");
}
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (JuceModule);
};
#include "jucer_AudioPluginModule.h"
//==============================================================================
LibraryModule::LibraryModule()
{
}
//==============================================================================
namespace
{
Value getVSTFolder (const ProjectExporter& exporter) { return exporter.getSetting (Ids::vstFolder); }
void addVSTFolderToPath (const ProjectExporter& exporter, StringArray& searchPaths)
{
const String vstFolder (getVSTFolder (exporter).toString());
if (vstFolder.isNotEmpty())
{
RelativePath path (exporter.rebaseFromProjectFolderToBuildTarget (RelativePath (vstFolder, RelativePath::projectFolder)));
if (exporter.isVisualStudio())
searchPaths.add (path.toWindowsStyle());
else if (exporter.isLinux() || exporter.isXcode())
searchPaths.insert (0, path.toUnixStyle());
}
}
void createVSTPathEditor (const ProjectExporter& exporter, Array <PropertyComponent*>& props)
{
props.add (new TextPropertyComponent (getVSTFolder (exporter), "VST Folder", 1024, false));
props.getLast()->setTooltip ("If you're building a VST, this must be the folder containing the VST SDK. This should be an absolute path.");
}
static int countMaxPluginChannels (const String& configString, bool isInput)
{
StringArray configs;
configs.addTokens (configString, ", {}", String::empty);
configs.trim();
configs.removeEmptyStrings();
jassert ((configs.size() & 1) == 0); // looks like a syntax error in the configs?
int maxVal = 0;
for (int i = (isInput ? 0 : 1); i < configs.size(); i += 2)
maxVal = jmax (maxVal, configs[i].getIntValue());
return maxVal;
}
Value shouldBuildVST (const Project& project) { return project.getProjectValue ("buildVST"); }
Value shouldBuildRTAS (const Project& project) { return project.getProjectValue ("buildRTAS"); }
Value shouldBuildAU (const Project& project) { return project.getProjectValue ("buildAU"); }
Value getPluginName (const Project& project) { return project.getProjectValue ("pluginName"); }
Value getPluginDesc (const Project& project) { return project.getProjectValue ("pluginDesc"); }
Value getPluginManufacturer (const Project& project) { return project.getProjectValue ("pluginManufacturer"); }
Value getPluginManufacturerCode (const Project& project) { return project.getProjectValue ("pluginManufacturerCode"); }
Value getPluginCode (const Project& project) { return project.getProjectValue ("pluginCode"); }
Value getPluginChannelConfigs (const Project& project) { return project.getProjectValue ("pluginChannelConfigs"); }
Value getPluginIsSynth (const Project& project) { return project.getProjectValue ("pluginIsSynth"); }
Value getPluginWantsMidiInput (const Project& project) { return project.getProjectValue ("pluginWantsMidiIn"); }
Value getPluginProducesMidiOut (const Project& project) { return project.getProjectValue ("pluginProducesMidiOut"); }
Value getPluginSilenceInProducesSilenceOut (const Project& project) { return project.getProjectValue ("pluginSilenceInIsSilenceOut"); }
Value getPluginTailLengthSeconds (const Project& project) { return project.getProjectValue ("pluginTailLength"); }
Value getPluginEditorNeedsKeyFocus (const Project& project) { return project.getProjectValue ("pluginEditorRequiresKeys"); }
Value getPluginAUExportPrefix (const Project& project) { return project.getProjectValue ("pluginAUExportPrefix"); }
Value getPluginAUCocoaViewClassName (const Project& project) { return project.getProjectValue ("pluginAUViewClass"); }
Value getPluginRTASCategory (const Project& project) { return project.getProjectValue ("pluginRTASCategory"); }
void writePluginCharacteristics (Project& project, OutputStream& out)
{
String headerGuard ("__PLUGINCHARACTERISTICS_" + project.getProjectUID().toUpperCase() + "__");
ProjectSaver::writeAutoGenWarningComment (out);
out << " This header file contains configuration options for the plug-in. If you need to change any of" << newLine
<< " these, it'd be wise to do so using the Jucer, rather than editing this file directly..." << newLine
<< newLine
<< "*/" << newLine
<< newLine
<< "#ifndef " << headerGuard << newLine
<< "#define " << headerGuard << newLine
<< newLine
<< "#define JucePlugin_Build_VST " << ((bool) shouldBuildVST (project).getValue() ? 1 : 0) << " // (If you change this value, you'll also need to re-export the projects using the Jucer)" << newLine
<< "#define JucePlugin_Build_AU " << ((bool) shouldBuildAU (project).getValue() ? 1 : 0) << " // (If you change this value, you'll also need to re-export the projects using the Jucer)" << newLine
<< "#define JucePlugin_Build_RTAS " << ((bool) shouldBuildRTAS (project).getValue() ? 1 : 0) << " // (If you change this value, you'll also need to re-export the projects using the Jucer)" << newLine
<< newLine
<< "#define JucePlugin_Name " << getPluginName (project).toString().quoted() << newLine
<< "#define JucePlugin_Desc " << getPluginDesc (project).toString().quoted() << newLine
<< "#define JucePlugin_Manufacturer " << getPluginManufacturer (project).toString().quoted() << newLine
<< "#define JucePlugin_ManufacturerCode '" << getPluginManufacturerCode (project).toString().trim().substring (0, 4) << "'" << newLine
<< "#define JucePlugin_PluginCode '" << getPluginCode (project).toString().trim().substring (0, 4) << "'" << newLine
<< "#define JucePlugin_MaxNumInputChannels " << countMaxPluginChannels (getPluginChannelConfigs (project).toString(), true) << newLine
<< "#define JucePlugin_MaxNumOutputChannels " << countMaxPluginChannels (getPluginChannelConfigs (project).toString(), false) << newLine
<< "#define JucePlugin_PreferredChannelConfigurations " << getPluginChannelConfigs (project).toString() << newLine
<< "#define JucePlugin_IsSynth " << ((bool) getPluginIsSynth (project).getValue() ? 1 : 0) << newLine
<< "#define JucePlugin_WantsMidiInput " << ((bool) getPluginWantsMidiInput (project).getValue() ? 1 : 0) << newLine
<< "#define JucePlugin_ProducesMidiOutput " << ((bool) getPluginProducesMidiOut (project).getValue() ? 1 : 0) << newLine
<< "#define JucePlugin_SilenceInProducesSilenceOut " << ((bool) getPluginSilenceInProducesSilenceOut (project).getValue() ? 1 : 0) << newLine
<< "#define JucePlugin_TailLengthSeconds " << (double) getPluginTailLengthSeconds (project).getValue() << newLine
<< "#define JucePlugin_EditorRequiresKeyboardFocus " << ((bool) getPluginEditorNeedsKeyFocus (project).getValue() ? 1 : 0) << newLine
<< "#define JucePlugin_VersionCode " << project.getVersionAsHex() << newLine
<< "#define JucePlugin_VersionString " << project.getVersion().toString().quoted() << newLine
<< "#define JucePlugin_VSTUniqueID JucePlugin_PluginCode" << newLine
<< "#define JucePlugin_VSTCategory " << ((bool) getPluginIsSynth (project).getValue() ? "kPlugCategSynth" : "kPlugCategEffect") << newLine
<< "#define JucePlugin_AUMainType " << ((bool) getPluginIsSynth (project).getValue() ? "kAudioUnitType_MusicDevice" : "kAudioUnitType_Effect") << newLine
<< "#define JucePlugin_AUSubType JucePlugin_PluginCode" << newLine
<< "#define JucePlugin_AUExportPrefix " << getPluginAUExportPrefix (project).toString() << newLine
<< "#define JucePlugin_AUExportPrefixQuoted " << getPluginAUExportPrefix (project).toString().quoted() << newLine
<< "#define JucePlugin_AUManufacturerCode JucePlugin_ManufacturerCode" << newLine
<< "#define JucePlugin_CFBundleIdentifier " << project.getBundleIdentifier().toString() << newLine
<< "#define JucePlugin_AUCocoaViewClassName " << getPluginAUCocoaViewClassName (project).toString() << newLine
<< "#define JucePlugin_RTASCategory " << ((bool) getPluginIsSynth (project).getValue() ? "ePlugInCategory_SWGenerators" : "ePlugInCategory_None") << newLine
<< "#define JucePlugin_RTASManufacturerCode JucePlugin_ManufacturerCode" << newLine
<< "#define JucePlugin_RTASProductId JucePlugin_PluginCode" << newLine;
out << "#define JUCE_USE_VSTSDK_2_4 1" << newLine
<< newLine
<< "#endif // " << headerGuard << newLine;
}
void writePluginCharacteristicsFile (ProjectSaver& projectSaver)
{
MemoryOutputStream mem;
writePluginCharacteristics (projectSaver.getProject(), mem);
projectSaver.saveGeneratedFile (projectSaver.getProject().getPluginCharacteristicsFilename(), mem);
}
}
//==============================================================================
class JuceLibraryModule : public LibraryModule
{
public:
JuceLibraryModule() {}
void getHeaderFiles (Project& project, StringArray& includePaths, StringArray& headerGuards)
{
if (project.getJuceLinkageMode() != Project::notLinkedToJuce)
{
if (project.isUsingSingleTemplateFile()
|| project.isUsingMultipleTemplateFiles()
|| project.isUsingFullyAmalgamatedFile())
createMultipleIncludes (project, "juce_amalgamated.h", includePaths, headerGuards);
else
createMultipleIncludes (project, "juce.h", includePaths, headerGuards);
}
}
void prepareExporter (ProjectExporter& exporter, ProjectSaver& projectSaver) const
{
const Project& project = exporter.getProject();
const String linkageMode (project.getJuceLinkageMode());
int numJuceSourceFiles = 0;
if (linkageMode == Project::useAmalgamatedJuce
|| linkageMode == Project::useAmalgamatedJuceViaSingleTemplate)
{
numJuceSourceFiles = 1;
}
else if (linkageMode == Project::useAmalgamatedJuceViaMultipleTemplates)
{
numJuceSourceFiles = project.getNumSeparateAmalgamatedFiles();
}
else
{
jassert (linkageMode == Project::notLinkedToJuce
|| linkageMode == Project::useLinkedJuce);
}
for (int i = 0; i <= project.getNumSeparateAmalgamatedFiles(); ++i)
{
String sourceWrapper (project.getJuceSourceFilenameRoot());
if (i != 0)
sourceWrapper << i;
sourceWrapper << (exporter.usesMMFiles() ? ".mm" : ".cpp");
if (numJuceSourceFiles > 0
&& ((i == 0 && numJuceSourceFiles == 1) || (i != 0 && numJuceSourceFiles > 1)))
{
MemoryOutputStream mem;
writeSourceWrapper (mem, const_cast<Project&> (project), i);
projectSaver.saveGeneratedFile (sourceWrapper, mem);
}
else
{
project.getGeneratedCodeFolder().getChildFile (sourceWrapper).deleteFile();
}
}
if (project.isConfigFlagEnabled ("JUCE_PLUGINHOST_AU"))
exporter.xcodeFrameworks.addTokens ("AudioUnit CoreAudioKit", false);
}
void addExtraSearchPaths (const ProjectExporter& exporter, StringArray& paths) const
{
if (exporter.getProject().isConfigFlagEnabled ("JUCE_PLUGINHOST_VST"))
addVSTFolderToPath (exporter, paths);
}
void createPropertyEditors (const ProjectExporter& exporter, Array <PropertyComponent*>& props) const
{
if (exporter.getProject().isConfigFlagEnabled ("JUCE_PLUGINHOST_VST"))
createVSTPathEditor (exporter, props);
}
void getConfigFlags (Project& project, OwnedArray<Project::ConfigFlag>& flags) const
{
if (project.getJuceLinkageMode() == Project::notLinkedToJuce)
return;
StringArray lines;
project.getLocalJuceFolder().getChildFile ("juce_Config.h").readLines (lines);
for (int i = 0; i < lines.size(); ++i)
{
String line (lines[i].trim());
if (line.startsWith ("/** ") && line.containsChar (':'))
{
ScopedPointer <Project::ConfigFlag> config (new Project::ConfigFlag());
config->symbol = line.substring (4).upToFirstOccurrenceOf (":", false, false).trim();
if (config->symbol.length() > 4)
{
config->description = line.fromFirstOccurrenceOf (":", false, false).trimStart();
++i;
while (! (lines[i].contains ("*/") || lines[i].contains ("@see")))
{
if (lines[i].trim().isNotEmpty())
config->description = config->description.trim() + " " + lines[i].trim();
++i;
}
config->description = config->description.upToFirstOccurrenceOf ("*/", false, false);
flags.add (config.release());
}
}
}
}
private:
static void writeSourceWrapper (OutputStream& out, Project& project, int fileNumber)
{
const String appConfigFileName (project.getAppConfigFilename());
ProjectSaver::writeAutoGenWarningComment (out);
out << " This file pulls in all the Juce source code, and builds it using the settings" << newLine
<< " defined in " << appConfigFileName << "." << newLine
<< newLine
<< " If you want to change the method by which Juce is linked into your app, use the" << newLine
<< " Jucer to change it, rather than trying to edit this file directly." << newLine
<< newLine
<< "*/"
<< newLine
<< newLine
<< CodeHelpers::createIncludeStatement (appConfigFileName) << newLine;
if (fileNumber == 0)
writeInclude (project, out, project.isUsingFullyAmalgamatedFile() ? "juce_amalgamated.cpp"
: "amalgamation/juce_amalgamated_template.cpp");
else
writeInclude (project, out, "amalgamation/juce_amalgamated" + String (fileNumber) + ".cpp");
}
static void createMultipleIncludes (Project& project, const String& pathFromLibraryFolder,
StringArray& paths, StringArray& guards)
{
for (int i = project.getNumExporters(); --i >= 0;)
{
ScopedPointer <ProjectExporter> exporter (project.createExporter (i));
if (exporter != nullptr)
{
paths.add (exporter->getIncludePathForFileInJuceFolder (pathFromLibraryFolder, project.getAppIncludeFile()));
guards.add ("defined (" + exporter->getExporterIdentifierMacro() + ")");
}
}
}
static void writeInclude (Project& project, OutputStream& out, const String& pathFromJuceFolder)
{
StringArray paths, guards;
createMultipleIncludes (project, pathFromJuceFolder, paths, guards);
StringArray uniquePaths (paths);
uniquePaths.removeDuplicates (false);
if (uniquePaths.size() == 1)
{
out << "#include " << paths[0] << newLine;
}
else
{
int i = paths.size();
for (; --i >= 0;)
{
for (int j = i; --j >= 0;)
{
if (paths[i] == paths[j] && guards[i] == guards[j])
{
paths.remove (i);
guards.remove (i);
}
}
}
for (i = 0; i < paths.size(); ++i)
{
out << (i == 0 ? "#if " : "#elif ") << guards[i] << newLine
<< " #include " << paths[i] << newLine;
}
out << "#endif" << newLine;
}
}
};
//==============================================================================
#define JUCE_PLUGINS_ROOT "src/audio/plugin_client/"
#define JUCE_PLUGINS_PATH_VST JUCE_PLUGINS_ROOT "VST/"
#define JUCE_PLUGINS_PATH_RTAS JUCE_PLUGINS_ROOT "RTAS/"
#define JUCE_PLUGINS_PATH_AU JUCE_PLUGINS_ROOT "AU/"
//==============================================================================
class VSTLibraryModule : public LibraryModule
{
public:
VSTLibraryModule() {}
void getHeaderFiles (Project& project, StringArray& includePaths, StringArray& headerGuards)
{
}
void prepareExporter (ProjectExporter& exporter, ProjectSaver& projectSaver) const
{
fixMissingValues (exporter);
writePluginCharacteristicsFile (projectSaver);
exporter.makefileTargetSuffix = ".so";
Project::Item group (Project::Item::createGroup (const_cast<ProjectExporter&> (exporter).getProject(), "Juce VST Wrapper"));
group.setID ("__jucevstfiles");
const char* osxFiles[] = { JUCE_PLUGINS_PATH_VST "juce_VST_Wrapper.cpp",
JUCE_PLUGINS_PATH_VST "juce_VST_Wrapper.mm", 0 };
const char* winFiles[] = { JUCE_PLUGINS_PATH_VST "juce_VST_Wrapper.cpp", 0};
for (const char** f = (exporter.isXcode() ? osxFiles : winFiles); *f != 0; ++f)
group.addRelativeFile (exporter.getJucePathFromProjectFolder().getChildFile (*f), -1, true);
exporter.groups.add (group);
}
void addExtraSearchPaths (const ProjectExporter& exporter, StringArray& paths) const
{
RelativePath juceWrapperFolder (exporter.getProject().getGeneratedCodeFolder(),
exporter.getTargetFolder(), RelativePath::buildTargetFolder);
addVSTFolderToPath (exporter, paths);
if (exporter.isVisualStudio())
paths.add (juceWrapperFolder.toWindowsStyle());
else if (exporter.isLinux())
paths.add (juceWrapperFolder.toUnixStyle());
}
void createPropertyEditors (const ProjectExporter& exporter, Array <PropertyComponent*>& props) const
{
fixMissingValues (exporter);
createVSTPathEditor (exporter, props);
}
void getConfigFlags (Project& project, OwnedArray<Project::ConfigFlag>& flags) const
{
}
static void fixMissingValues (const ProjectExporter& exporter)
{
if (getVSTFolder (exporter).toString().isEmpty())
{
if (exporter.isVisualStudio())
getVSTFolder (exporter) = "c:\\SDKs\\vstsdk2.4";
else
getVSTFolder (exporter) = "~/SDKs/vstsdk2.4";
}
}
};
//==============================================================================
class RTASLibraryModule : public LibraryModule
{
public:
RTASLibraryModule() {}
void getHeaderFiles (Project& project, StringArray& includePaths, StringArray& headerGuards)
{
}
void prepareExporter (ProjectExporter& exporter, ProjectSaver& projectSaver) const
{
fixMissingValues (exporter);
exporter.xcodeCanUseDwarf = false;
exporter.msvcTargetSuffix = ".dpm";
exporter.msvcNeedsDLLRuntimeLib = true;
RelativePath rtasFolder (getRTASFolder (exporter).toString(), RelativePath::projectFolder);
exporter.msvcExtraPreprocessorDefs.set ("JucePlugin_WinBag_path", CodeHelpers::addEscapeChars (rtasFolder.getChildFile ("WinBag")
.toWindowsStyle().quoted()));
exporter.msvcExtraLinkerOptions = "/FORCE:multiple";
exporter.msvcDelayLoadedDLLs = "DAE.dll; DigiExt.dll; DSI.dll; PluginLib.dll; DSPManager.dll";
exporter.msvcModuleDefinitionFile = exporter.getJucePathFromTargetFolder()
.getChildFile (JUCE_PLUGINS_PATH_RTAS "juce_RTAS_WinExports.def")
.toWindowsStyle();
exporter.msvcPostBuildOutputs = "\"$(TargetPath)\".rsr";
exporter.msvcPostBuildCommand = "copy /Y \"" + exporter.getJucePathFromTargetFolder()
.getChildFile (JUCE_PLUGINS_PATH_RTAS "juce_RTAS_WinResources.rsr")
.toWindowsStyle()
+ "\" \"$(TargetPath)\".rsr";
exporter.xcodeExtraLibrariesDebug.add (rtasFolder.getChildFile ("MacBag/Libs/Debug/libPluginLibrary.a"));
exporter.xcodeExtraLibrariesRelease.add (rtasFolder.getChildFile ("MacBag/Libs/Release/libPluginLibrary.a"));
writePluginCharacteristicsFile (projectSaver);
if (exporter.isXcode() || exporter.isVisualStudio())
{
Project::Item group (Project::Item::createGroup (const_cast<ProjectExporter&> (exporter).getProject(), "Juce RTAS Wrapper"));
group.setID ("__jucertasfiles");
const char* osxFiles[] = { JUCE_PLUGINS_PATH_RTAS "juce_RTAS_DigiCode1.cpp",
JUCE_PLUGINS_PATH_RTAS "juce_RTAS_DigiCode2.cpp",
JUCE_PLUGINS_PATH_RTAS "juce_RTAS_DigiCode3.cpp",
JUCE_PLUGINS_PATH_RTAS "juce_RTAS_DigiCode_Header.h",
JUCE_PLUGINS_PATH_RTAS "juce_RTAS_MacResources.r",
JUCE_PLUGINS_PATH_RTAS "juce_RTAS_MacUtilities.mm",
JUCE_PLUGINS_PATH_RTAS "juce_RTAS_Wrapper.cpp", 0 };
const char* winFiles[] = { JUCE_PLUGINS_PATH_RTAS "juce_RTAS_DigiCode1.cpp",
JUCE_PLUGINS_PATH_RTAS "juce_RTAS_DigiCode2.cpp",
JUCE_PLUGINS_PATH_RTAS "juce_RTAS_DigiCode3.cpp",
JUCE_PLUGINS_PATH_RTAS "juce_RTAS_DigiCode_Header.h",
JUCE_PLUGINS_PATH_RTAS "juce_RTAS_WinUtilities.cpp",
JUCE_PLUGINS_PATH_RTAS "juce_RTAS_Wrapper.cpp" , 0};
for (const char** f = (exporter.isXcode() ? osxFiles : winFiles); *f != 0; ++f)
{
const RelativePath file (exporter.getJucePathFromProjectFolder().getChildFile (*f));
group.addRelativeFile (file, -1, file.hasFileExtension ("cpp;mm;r"));
const Project::Item& last = group.getChild (group.getNumChildren() - 1);
last.getShouldInhibitWarningsValue() = true;
last.getShouldUseStdCallValue() = true;
}
exporter.groups.add (group);
}
}
void addExtraSearchPaths (const ProjectExporter& exporter, StringArray& paths) const
{
RelativePath rtasFolder (getRTASFolder (exporter).toString(), RelativePath::projectFolder);
if (exporter.isVisualStudio())
{
RelativePath juceWrapperFolder (exporter.getProject().getGeneratedCodeFolder(),
exporter.getTargetFolder(), RelativePath::buildTargetFolder);
paths.add (juceWrapperFolder.toWindowsStyle());
const char* p[] = { "AlturaPorts/TDMPlugins/PluginLibrary/EffectClasses",
"AlturaPorts/TDMPlugins/PluginLibrary/ProcessClasses",
"AlturaPorts/TDMPlugins/PluginLibrary/ProcessClasses/Interfaces",
"AlturaPorts/TDMPlugins/PluginLibrary/Utilities",
"AlturaPorts/TDMPlugins/PluginLibrary/RTASP_Adapt",
"AlturaPorts/TDMPlugins/PluginLibrary/CoreClasses",
"AlturaPorts/TDMPlugins/PluginLibrary/Controls",
"AlturaPorts/TDMPlugins/PluginLibrary/Meters",
"AlturaPorts/TDMPlugins/PluginLibrary/ViewClasses",
"AlturaPorts/TDMPlugins/PluginLibrary/DSPClasses",
"AlturaPorts/TDMPlugins/PluginLibrary/Interfaces",
"AlturaPorts/TDMPlugins/common",
"AlturaPorts/TDMPlugins/common/Platform",
"AlturaPorts/TDMPlugins/SignalProcessing/Public",
"AlturaPorts/TDMPlugIns/DSPManager/Interfaces",
"AlturaPorts/SADriver/Interfaces",
"AlturaPorts/DigiPublic/Interfaces",
"AlturaPorts/Fic/Interfaces/DAEClient",
"AlturaPorts/NewFileLibs/Cmn",
"AlturaPorts/NewFileLibs/DOA",
"AlturaPorts/AlturaSource/PPC_H",
"AlturaPorts/AlturaSource/AppSupport",
"AvidCode/AVX2sdk/AVX/avx2/avx2sdk/inc",
"xplat/AVX/avx2/avx2sdk/inc" };
for (int i = 0; i < numElementsInArray (p); ++i)
paths.add (exporter.rebaseFromProjectFolderToBuildTarget (rtasFolder.getChildFile (p[i])).toWindowsStyle());
}
else if (exporter.isXcode())
{
paths.add ("/Developer/Headers/FlatCarbon");
const char* p[] = { "AlturaPorts/TDMPlugIns/PlugInLibrary/Controls",
"AlturaPorts/TDMPlugIns/PlugInLibrary/CoreClasses",
"AlturaPorts/TDMPlugIns/PlugInLibrary/DSPClasses",
"AlturaPorts/TDMPlugIns/PlugInLibrary/EffectClasses",
"AlturaPorts/TDMPlugIns/PlugInLibrary/MacBuild",
"AlturaPorts/TDMPlugIns/PlugInLibrary/Meters",
"AlturaPorts/TDMPlugIns/PlugInLibrary/ProcessClasses",
"AlturaPorts/TDMPlugIns/PlugInLibrary/ProcessClasses/Interfaces",
"AlturaPorts/TDMPlugIns/PlugInLibrary/RTASP_Adapt",
"AlturaPorts/TDMPlugIns/PlugInLibrary/Utilities",
"AlturaPorts/TDMPlugIns/PlugInLibrary/ViewClasses",
"AlturaPorts/TDMPlugIns/DSPManager/**",
"AlturaPorts/TDMPlugIns/SupplementalPlugInLib/Encryption",
"AlturaPorts/TDMPlugIns/SupplementalPlugInLib/GraphicsExtensions",
"AlturaPorts/TDMPlugIns/common",
"AlturaPorts/TDMPlugIns/common/PI_LibInterface",
"AlturaPorts/TDMPlugIns/PACEProtection/**",
"AlturaPorts/TDMPlugIns/SignalProcessing/**",
"AlturaPorts/OMS/Headers",
"AlturaPorts/Fic/Interfaces/**",
"AlturaPorts/Fic/Source/SignalNets",
"AlturaPorts/DSIPublicInterface/PublicHeaders",
"DAEWin/Include",
"AlturaPorts/DigiPublic/Interfaces",
"AlturaPorts/DigiPublic",
"AlturaPorts/NewFileLibs/DOA",
"AlturaPorts/NewFileLibs/Cmn",
"xplat/AVX/avx2/avx2sdk/inc",
"xplat/AVX/avx2/avx2sdk/utils" };
for (int i = 0; i < numElementsInArray (p); ++i)
paths.add (exporter.rebaseFromProjectFolderToBuildTarget (rtasFolder.getChildFile (p[i])).toUnixStyle());
}
}
void createPropertyEditors (const ProjectExporter& exporter, Array <PropertyComponent*>& props) const
{
if (exporter.isXcode() || exporter.isVisualStudio())
{
fixMissingValues (exporter);
props.add (new TextPropertyComponent (getRTASFolder (exporter), "RTAS Folder", 1024, false));
props.getLast()->setTooltip ("If you're building an RTAS, this must be the folder containing the RTAS SDK. This should be an absolute path.");
}
}
void getConfigFlags (Project& project, OwnedArray<Project::ConfigFlag>& flags) const
{
}
static void fixMissingValues (const ProjectExporter& exporter)
{
if (getRTASFolder (exporter).toString().isEmpty())
{
if (exporter.isVisualStudio())
getRTASFolder (exporter) = "c:\\SDKs\\PT_80_SDK";
else
getRTASFolder (exporter) = "~/SDKs/PT_80_SDK";
}
}
static Value getRTASFolder (const ProjectExporter& exporter) { return exporter.getSetting (Ids::rtasFolder); }
};
//==============================================================================
class AULibraryModule : public LibraryModule
{
public:
AULibraryModule() {}
void getHeaderFiles (Project& project, StringArray& includePaths, StringArray& headerGuards)
{
}
void prepareExporter (ProjectExporter& exporter, ProjectSaver& projectSaver) const
{
writePluginCharacteristicsFile (projectSaver);
if (exporter.isXcode())
{
exporter.xcodeFrameworks.addTokens ("AudioUnit CoreAudioKit", false);
Project::Item group (Project::Item::createGroup (const_cast<ProjectExporter&> (exporter).getProject(), "Juce AU Wrapper"));
group.setID ("__juceaufiles");
{
const char* files[] = { JUCE_PLUGINS_PATH_AU "juce_AU_Resources.r",
JUCE_PLUGINS_PATH_AU "juce_AU_Wrapper.mm", 0 };
for (const char** f = files; *f != 0; ++f)
group.addRelativeFile (exporter.getJucePathFromProjectFolder().getChildFile (*f), -1, true);
}
Project::Item subGroup (group.addNewSubGroup ("Apple AU Files", -1));
subGroup.setID ("__juceappleaufiles");
{
#define JUCE_AU_PUBLICUTILITY "${DEVELOPER_DIR}/Extras/CoreAudio/PublicUtility/"
#define JUCE_AU_PUBLIC "${DEVELOPER_DIR}/Extras/CoreAudio/AudioUnits/AUPublic/"
const char* appleAUFiles[] = { JUCE_AU_PUBLICUTILITY "CADebugMacros.h",
JUCE_AU_PUBLICUTILITY "CAAUParameter.cpp",
JUCE_AU_PUBLICUTILITY "CAAUParameter.h",
JUCE_AU_PUBLICUTILITY "CAAudioChannelLayout.cpp",
JUCE_AU_PUBLICUTILITY "CAAudioChannelLayout.h",
JUCE_AU_PUBLICUTILITY "CAMutex.cpp",
JUCE_AU_PUBLICUTILITY "CAMutex.h",
JUCE_AU_PUBLICUTILITY "CAStreamBasicDescription.cpp",
JUCE_AU_PUBLICUTILITY "CAStreamBasicDescription.h",
JUCE_AU_PUBLICUTILITY "CAVectorUnitTypes.h",
JUCE_AU_PUBLICUTILITY "CAVectorUnit.cpp",
JUCE_AU_PUBLICUTILITY "CAVectorUnit.h",
JUCE_AU_PUBLIC "AUViewBase/AUViewLocalizedStringKeys.h",
JUCE_AU_PUBLIC "AUCarbonViewBase/AUCarbonViewDispatch.cpp",
JUCE_AU_PUBLIC "AUCarbonViewBase/AUCarbonViewControl.cpp",
JUCE_AU_PUBLIC "AUCarbonViewBase/AUCarbonViewControl.h",
JUCE_AU_PUBLIC "AUCarbonViewBase/CarbonEventHandler.cpp",
JUCE_AU_PUBLIC "AUCarbonViewBase/CarbonEventHandler.h",
JUCE_AU_PUBLIC "AUCarbonViewBase/AUCarbonViewBase.cpp",
JUCE_AU_PUBLIC "AUCarbonViewBase/AUCarbonViewBase.h",
JUCE_AU_PUBLIC "AUBase/AUBase.cpp",
JUCE_AU_PUBLIC "AUBase/AUBase.h",
JUCE_AU_PUBLIC "AUBase/AUDispatch.cpp",
JUCE_AU_PUBLIC "AUBase/AUDispatch.h",
JUCE_AU_PUBLIC "AUBase/AUInputElement.cpp",
JUCE_AU_PUBLIC "AUBase/AUInputElement.h",
JUCE_AU_PUBLIC "AUBase/AUOutputElement.cpp",
JUCE_AU_PUBLIC "AUBase/AUOutputElement.h",
JUCE_AU_PUBLIC "AUBase/AUResources.r",
JUCE_AU_PUBLIC "AUBase/AUScopeElement.cpp",
JUCE_AU_PUBLIC "AUBase/AUScopeElement.h",
JUCE_AU_PUBLIC "AUBase/ComponentBase.cpp",
JUCE_AU_PUBLIC "AUBase/ComponentBase.h",
JUCE_AU_PUBLIC "OtherBases/AUMIDIBase.cpp",
JUCE_AU_PUBLIC "OtherBases/AUMIDIBase.h",
JUCE_AU_PUBLIC "OtherBases/AUMIDIEffectBase.cpp",
JUCE_AU_PUBLIC "OtherBases/AUMIDIEffectBase.h",
JUCE_AU_PUBLIC "OtherBases/AUOutputBase.cpp",
JUCE_AU_PUBLIC "OtherBases/AUOutputBase.h",
JUCE_AU_PUBLIC "OtherBases/MusicDeviceBase.cpp",
JUCE_AU_PUBLIC "OtherBases/MusicDeviceBase.h",
JUCE_AU_PUBLIC "OtherBases/AUEffectBase.cpp",
JUCE_AU_PUBLIC "OtherBases/AUEffectBase.h",
JUCE_AU_PUBLIC "Utility/AUBuffer.cpp",
JUCE_AU_PUBLIC "Utility/AUBuffer.h",
JUCE_AU_PUBLIC "Utility/AUDebugDispatcher.cpp",
JUCE_AU_PUBLIC "Utility/AUDebugDispatcher.h",
JUCE_AU_PUBLIC "Utility/AUInputFormatConverter.h",
JUCE_AU_PUBLIC "Utility/AUSilentTimeout.h",
JUCE_AU_PUBLIC "Utility/AUTimestampGenerator.h", 0 };
for (const char** f = appleAUFiles; *f != 0; ++f)
{
const RelativePath file (*f, RelativePath::projectFolder);
subGroup.addRelativeFile (file, -1, file.hasFileExtension ("cpp;mm"));
subGroup.getChild (subGroup.getNumChildren() - 1).getShouldInhibitWarningsValue() = true;
}
}
exporter.groups.add (group);
}
}
void addExtraSearchPaths (const ProjectExporter& exporter, StringArray& paths) const
{
if (exporter.isXcode())
{
paths.add ("$(DEVELOPER_DIR)/Extras/CoreAudio/PublicUtility");
paths.add ("$(DEVELOPER_DIR)/Extras/CoreAudio/AudioUnits/AUPublic/Utility");
}
}
void createPropertyEditors (const ProjectExporter& exporter, Array <PropertyComponent*>& props) const
{
}
void getConfigFlags (Project& project, OwnedArray<Project::ConfigFlag>& flags) const
{
}
};
//==============================================================================
//==============================================================================
ProjectType::ProjectType (const String& type_, const String& desc_)
: type (type_), desc (desc_)
@@ -861,8 +38,6 @@ ProjectType::ProjectType (const String& type_, const String& desc_)
ProjectType::~ProjectType()
{
JuceModule::findAllModuleIDs();
getAllTypes().removeValue (this);
}
@@ -884,9 +59,11 @@ const ProjectType* ProjectType::findType (const String& typeCode)
return nullptr;
}
void ProjectType::createRequiredModules (Project& project, OwnedArray<LibraryModule>& modules) const
void ProjectType::createRequiredModules (Project& project, const ModuleList& availableModules, OwnedArray<LibraryModule>& modules) const
{
modules.add (new JuceLibraryModule());
for (int i = 0; i < availableModules.modules.size(); ++i)
if (project.isModuleEnabled (availableModules.modules.getUnchecked(i)->uid))
modules.add (availableModules.modules.getUnchecked(i)->create());
}
//==============================================================================
@@ -919,11 +96,6 @@ public:
exporter.msvcIsWindowsSubsystem = true;
exporter.msvcTargetSuffix = ".exe";
}
void createRequiredModules (Project& project, OwnedArray<LibraryModule>& modules) const
{
ProjectType::createRequiredModules (project, modules);
}
};
//==============================================================================
@@ -955,11 +127,6 @@ public:
exporter.msvcTargetSuffix = ".exe";
exporter.msvcExtraPreprocessorDefs.set ("_CONSOLE", "");
}
void createRequiredModules (Project& project, OwnedArray<LibraryModule>& modules) const
{
ProjectType::createRequiredModules (project, modules);
}
};
//==============================================================================
@@ -988,13 +155,9 @@ public:
exporter.makefileTargetSuffix = ".so";
exporter.msvcTargetSuffix = ".lib";
exporter.msvcExtraPreprocessorDefs.set ("_LIB", "");
}
exporter.msvcTargetSuffix = exporter.getSetting (Ids::libraryType) == 2 ? ".dll" : ".lib";
void createRequiredModules (Project& project, OwnedArray<LibraryModule>& modules) const
{
ProjectType::createRequiredModules (project, modules);
exporter.msvcExtraPreprocessorDefs.set ("_LIB", "");
}
};
@@ -1116,15 +279,6 @@ public:
exporter.makefileIsDLL = true;
}
void createRequiredModules (Project& project, OwnedArray<LibraryModule>& modules) const
{
ProjectType::createRequiredModules (project, modules);
if (shouldBuildVST (project).getValue()) modules.add (new VSTLibraryModule());
if (shouldBuildRTAS (project).getValue()) modules.add (new RTASLibraryModule());
if (shouldBuildAU (project).getValue()) modules.add (new AULibraryModule());
}
};
//==============================================================================
@@ -1150,11 +304,6 @@ public:
exporter.makefileIsDLL = true;
}
void createRequiredModules (Project& project, OwnedArray<LibraryModule>& modules) const
{
ProjectType::createRequiredModules (project, modules);
}
};
//==============================================================================


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save