/* ============================================================================== This file is part of the JUCE 6 technical preview. Copyright (c) 2020 - Raw Material Software Limited You may use this code under the terms of the GPL v3 (see www.gnu.org/licenses). For this technical preview, this file is not subject to commercial licensing. JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE DISCLAIMED. ============================================================================== */ #pragma once //============================================================================== struct ProjectBuildInfo { ProjectBuildInfo() : tree (MessageTypes::BUILDINFO) {} ProjectBuildInfo (const ValueTree& t) : tree (t) {} Array getCompileUnits() const { Array files; for (int i = 0; i < tree.getNumChildren(); ++i) if (tree.getChild(i).hasType (MessageTypes::COMPILEUNIT)) files.add (File (tree.getChild(i) [Ids::file].toString())); return files; } // This is a list of all cpp and header files that are actually "user" code // rather than system or internal files Array getUserFiles() const { Array files; for (int i = 0; i < tree.getNumChildren(); ++i) if (tree.getChild(i).hasType (MessageTypes::USERFILE)) files.add (File (tree.getChild(i) [Ids::file].toString())); return files; } void setFiles (const Array& compileUnits, const Array& allUserFiles) { for (const File& f : compileUnits) { ValueTree file (MessageTypes::COMPILEUNIT); file.setProperty (Ids::file, f.getFullPathName(), nullptr); tree.appendChild (file, nullptr); } for (const File& f : allUserFiles) { ValueTree file (MessageTypes::USERFILE); file.setProperty (Ids::file, f.getFullPathName(), nullptr); tree.appendChild (file, nullptr); } } StringArray getSystemIncludes() const { return separateJoinedStrings (tree [Ids::systempath]); } StringArray getUserIncludes() const { return separateJoinedStrings (tree [Ids::userpath]); } void setSystemIncludes (const StringArray& s) { tree.setProperty (Ids::systempath, concatenateListOfStrings (s), nullptr); } void setUserIncludes (const StringArray& s) { tree.setProperty (Ids::userpath, concatenateListOfStrings (s), nullptr); } String getGlobalDefs() const { return tree [Ids::defines]; } void setGlobalDefs (const String& defs) { tree.setProperty (Ids::defines, defs, nullptr); } String getCompileFlags() const { return tree [Ids::extraCompilerFlags]; } void setCompileFlags (const String& f) { tree.setProperty (Ids::extraCompilerFlags, f, nullptr); } String getUtilsCppInclude() const { return tree [Ids::utilsCppInclude]; } void setUtilsCppInclude (const String& s) { tree.setProperty (Ids::utilsCppInclude, s, nullptr); } String getJuceModulesFolder() const { return tree [Ids::juceModulesFolder]; } void setJuceModulesFolder (const String& s) { tree.setProperty (Ids::juceModulesFolder, s, nullptr); } StringArray getExtraDLLs() const { return separateJoinedStrings (tree [Ids::extraDLLs]); } void setExtraDLLs (const StringArray& s) { tree.setProperty (Ids::extraDLLs, concatenateListOfStrings (s), nullptr); } String getWindowsTargetPlatformVersion() const { return tree [Ids::liveWindowsTargetPlatformVersion]; } void setWindowsTargetPlatformVersion (const String& s) { tree.setProperty (Ids::liveWindowsTargetPlatformVersion, s, nullptr); } ValueTree tree; };