class LinkerScript;
class Property;
class TestSupportCode;
-class WineResource;
class AutomaticDependency;
class Bootstrap;
class CDFile;
std::string name;
directory_map subdirs;
Directory ( const std::string& name );
+ ~Directory();
void Add ( const char* subdir );
void GenerateTree ( DirectoryLocation root,
bool verbose );
std::vector<Module*> modules;
std::vector<CompilerFlag*> compilerFlags;
std::vector<If*> ifs;
+ int asmFiles; // number of .asm files in compilationUnits
+ IfableData();
~IfableData();
void ProcessXML();
void ExtractModules( std::vector<Module*> &modules );
const std::string& GetProjectFilename () const;
std::string ResolveProperties ( const std::string& s ) const;
private:
- std::string ResolveNextProperty ( std::string& s ) const;
+ std::string ResolveNextProperty ( const std::string& s ) const;
const Property* LookupProperty ( const std::string& name ) const;
void SetConfigurationOption ( char* s,
std::string name,
- std::string* alternativeName );
+ std::string alternativeName );
void SetConfigurationOption ( char* s,
std::string name );
void ReadXml ();
IsoRegTest = 24,
LiveIsoRegTest = 25,
EmbeddedTypeLib = 26,
- ElfExecutable = 27
+ ElfExecutable = 27,
+ RpcProxy,
+ HostStaticLibrary,
+ TypeDontCare,
+ Cabinet,
+ KeyboardLayout
};
enum HostType
{
HostFalse,
HostDefault,
- HostTrue
+ HostTrue,
+ HostDontCare,
+};
+
+enum CompilerType
+{
+ CompilerTypeDontCare,
+ CompilerTypeCC,
+ CompilerTypeCPP,
};
class FileLocation
FileLocation ( const DirectoryLocation directory,
const std::string& relative_path,
- const std::string& name );
+ const std::string& name,
+ const XMLElement *node = NULL );
FileLocation ( const FileLocation& other );
};
std::string prefix;
HostType host;
std::string aliasedModuleName;
- bool useWRC;
bool allowWarnings;
bool enabled;
bool isStartupLib;
FileLocation *output; // "path/foo.exe"
FileLocation *dependency; // "path/foo.exe" or "path/libfoo.a"
FileLocation *install;
+ std::string description;
+ std::string lcid;
+ std::string layoutId;
+ std::string layoutNameResId;
Module ( const Project& project,
const XMLElement& moduleNode,
std::string name;
std::string value;
std::string backend;
+ bool overridable;
Define ( const Project& project,
const XMLElement& defineNode );
const XMLElement& defineNode );
Define ( const Project& project,
const Module* module,
- const std::string name_,
- const std::string backend_ = "" );
+ const std::string& name_,
+ const std::string& backend_ = "" );
~Define();
void ProcessXML();
private:
ImportLibrary ( const Project& project,
const XMLElement& node,
const Module& module );
+ ~ImportLibrary ();
};
const Module* module;
const XMLElement& node;
std::string flag;
+ CompilerType compiler;
CompilerFlag ( const Project& project,
const XMLElement& compilerFlagNode );
class LinkerScript
{
public:
- const Project& project;
- const Module* module;
const XMLElement& node;
- const Module* baseModule;
- std::string directory;
- std::string basePath;
+ const Module& module;
+ const FileLocation *file;
- LinkerScript ( const Project& project,
- const Module* module,
- const XMLElement& node );
+ LinkerScript ( const XMLElement& node,
+ const Module& module,
+ const FileLocation *file );
~LinkerScript ();
void ProcessXML();
};
const Project& project;
const Module* module;
std::string name, value;
+ bool isInternal;
Property ( const XMLElement& node_,
const Project& project_,
};
-class WineResource
-{
-public:
- const Project& project;
- std::string bin2res;
-
- WineResource ( const Project& project,
- std::string bin2res );
- ~WineResource ();
- void UnpackResources ( bool verbose );
-private:
- bool IsSpecFile ( const File& file );
- bool IsWineModule ( const Module& module );
- bool IsResourceFile ( const File& file );
- std::string GetResourceFilename ( const Module& module );
- void UnpackResourcesInModule ( Module& module,
- bool verbose );
-};
-
-
class SourceFile
{
public:
SourceFile ( AutomaticDependency* automaticDependency,
const Module& module,
- const std::string& filename,
- SourceFile* parent,
- bool isNonAutomaticDependency );
- SourceFile* ParseFile ( const std::string& normalizedFilename );
+ const File& file,
+ SourceFile* parent );
void Parse ();
- std::string Location () const;
- std::vector<SourceFile*> files;
+ std::vector<SourceFile*> files; /* List of files included in this file */
+ const File& file;
AutomaticDependency* automaticDependency;
const Module& module;
- std::string filename;
- std::string filenamePart;
- std::string directoryPart;
std::vector<SourceFile*> parents; /* List of files, this file is included from */
- bool isNonAutomaticDependency;
- std::string cachedDependencies;
time_t lastWriteTime;
time_t youngestLastWriteTime; /* Youngest last write time of this file and all children */
SourceFile* youngestFile;
private:
- void GetDirectoryAndFilenameParts ();
void Close ();
void Open ();
void SkipWhitespace ();
bool ReadInclude ( std::string& filename,
bool& searchCurrentDirectory,
bool& includeNext );
- bool IsIncludedFrom ( const std::string& normalizedFilename );
- SourceFile* GetParentSourceFile ();
- bool CanProcessFile ( const std::string& extension );
+ bool IsIncludedFrom ( const File& file );
+ SourceFile* ParseFile(const File& file);
+ bool CanProcessFile ( const File& file );
bool IsParentOf ( const SourceFile* parent,
const SourceFile* child );
std::string buf;
AutomaticDependency ( const Project& project );
~AutomaticDependency ();
bool LocateIncludedFile ( const FileLocation& directory,
- const std::string& includedFilename,
- std::string& resolvedFilename );
+ const std::string& includedFilename );
bool LocateIncludedFile ( SourceFile* sourceFile,
const Module& module,
const std::string& includedFilename,
bool searchCurrentDirectory,
bool includeNext,
- std::string& resolvedFilename );
+ File& resolvedFile );
SourceFile* RetrieveFromCacheOrParse ( const Module& module,
- const std::string& filename,
+ const File& file,
SourceFile* parentSourceFile );
- SourceFile* RetrieveFromCache ( const std::string& filename );
+ SourceFile* RetrieveFromCache ( const File& file );
void CheckAutomaticDependencies ( bool verbose );
void CheckAutomaticDependenciesForModule ( Module& module,
bool verbose );
bool verbose );
void CheckAutomaticDependenciesForFile ( SourceFile* sourceFile );
void GetIncludeDirectories ( std::vector<Include*>& includes,
- const Module& module,
- Include& currentDirectory,
- bool searchCurrentDirectory );
+ const Module& module );
void GetModuleFiles ( const Module& module,
std::vector<File*>& files ) const;
void ParseFiles ();
void ParseFiles ( const Module& module );
void ParseFile ( const Module& module,
const File& file );
- std::string ReplaceVariable ( const std::string& name,
- const std::string& value,
- std::string path );
- std::string ResolveVariablesInPath ( const std::string& path );
std::map<std::string, SourceFile*> sourcefile_map;
};
CDFile ( const Project& project,
const XMLElement& bootstrapNode,
const std::string& path );
+ ~CDFile ();
private:
static std::string ReplaceVariable ( const std::string& name,
const std::string& value,
InstallFile ( const Project& project,
const XMLElement& bootstrapNode,
const std::string& path );
+ ~InstallFile ();
};
public:
const XMLElement& node;
const Module& module;
- FileLocation file;
+ const FileLocation *file;
PchFile (
const XMLElement& node,
const Module& module,
- const FileLocation& file );
+ const FileLocation *file );
+ ~PchFile();
void ProcessXML();
};
class CompilationUnit
{
public:
- const Project* project;
- const Module* module;
- const XMLElement* node;
std::string name;
- std::vector<File*> files;
- CompilationUnit ( File* file );
+ CompilationUnit ( const File* file );
CompilationUnit ( const Project* project,
const Module* module,
const XMLElement* node );
bool IsGeneratedFile () const;
bool HasFileWithExtension ( const std::string& extension ) const;
bool IsFirstFile () const;
- const FileLocation* GetFilename () const;
- std::string GetSwitches () const;
+ const FileLocation& GetFilename () const;
+ const std::string& GetSwitches () const;
+ void AddFile ( const File * file );
+ const std::vector<const File*> GetFiles () const;
private:
- std::string local_name;
+ const Project* project;
+ const Module* module;
+ const XMLElement* node;
+ std::vector<const File*> files;
+ FileLocation *default_name;
};