@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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> |
@@ -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 |
@@ -1 +0,0 @@ | |||
This folder is where the compiled libs and intermediate files get stored... |
@@ -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) |
@@ -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> |
@@ -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 |
@@ -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" | |||
@@ -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; | |||
@@ -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"; | |||
@@ -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" |
@@ -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" |
@@ -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" |
@@ -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" |
@@ -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" |
@@ -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" |
@@ -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" |
@@ -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,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). |
@@ -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" |
@@ -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" |
@@ -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" |
@@ -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" |
@@ -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" |
@@ -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" |
@@ -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" |
@@ -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" |
@@ -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" |
@@ -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" |
@@ -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" |
@@ -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" |
@@ -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" |
@@ -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" |
@@ -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" |
@@ -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" |
@@ -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__ |
@@ -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. | |||
------------------------------------------------------------------------------ | |||
@@ -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__ |
@@ -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. | |||
------------------------------------------------------------------------------ | |||
@@ -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. | |||
------------------------------------------------------------------------------ | |||
@@ -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. | |||
------------------------------------------------------------------------------ | |||
@@ -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,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; | |||
} | |||
@@ -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__ |
@@ -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. | |||
------------------------------------------------------------------------------ | |||
@@ -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(); | |||
@@ -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. | |||
------------------------------------------------------------------------------ | |||
@@ -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. | |||
------------------------------------------------------------------------------ | |||
@@ -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,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,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,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. | |||
@@ -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. | |||
------------------------------------------------------------------------------ | |||
@@ -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. | |||
------------------------------------------------------------------------------ | |||
@@ -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__ |
@@ -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. | |||
------------------------------------------------------------------------------ | |||
@@ -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. | |||
------------------------------------------------------------------------------ | |||
@@ -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__ |
@@ -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 | |||
} | |||
} | |||
} |
@@ -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__ |
@@ -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; | |||
} | |||
@@ -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. | |||
------------------------------------------------------------------------------ | |||
@@ -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) | |||
{ | |||
@@ -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__ |
@@ -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()) | |||
@@ -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); | |||
}; | |||
@@ -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. | |||
------------------------------------------------------------------------------ | |||
@@ -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. | |||
------------------------------------------------------------------------------ | |||
@@ -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 | |||
@@ -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()); | |||
} | |||
} | |||
} | |||
@@ -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 | |||
@@ -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"); | |||
@@ -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; | |||
} |
@@ -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/"; } | |||
@@ -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*) | |||
@@ -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__ |
@@ -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. | |||
------------------------------------------------------------------------------ | |||
@@ -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. | |||
------------------------------------------------------------------------------ | |||
@@ -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); | |||
} | |||
}; | |||
//============================================================================== | |||