Merge trunk HEAD (r46369)
[reactos.git] / reactos / tools / rbuild / rbuild.h
index 4334930..e5be60c 100644 (file)
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
-#ifndef __RBUILD_H
-#define __RBUILD_H
+
+#pragma once
 
 #include "pch.h"
 
@@ -68,7 +68,7 @@ extern char cBadSep;
 #define DEF_SBAD_SEP "\\"
 #endif
 
-#define MS_VS_DEF_VERSION "7.10"
+#define MS_VS_DEF_VERSION "9.00"
 
 class XmlNode;
 class Directory;
@@ -167,6 +167,13 @@ enum LinkerSet
        MicrosoftLink
 };
 
+enum SpecFileType
+{
+    None,
+    Spec = 1,
+    PSpec = 2
+};
+
 class Configuration
 {
 public:
@@ -197,6 +204,7 @@ public:
        static std::string GetArch ();
        static std::string GetIntermediatePath ();
        static std::string GetOutputPath ();
+       static std::string GetSourcePath ();
        static std::string GetCdOutputPath ();
        static std::string GetInstallPath ();
        static std::string GetAutomakeFile ( const std::string& defaultFile );
@@ -276,6 +284,7 @@ public:
        const Property* LookupProperty ( const std::string& name ) const;
        std::string GetCompilerSet () const;
        std::string GetLinkerSet () const;
+       void GenerateInstallerFileList();
 private:
        std::string ResolveNextProperty ( const std::string& s ) const;
        void ReadXml ();
@@ -378,8 +387,6 @@ public:
        ImportLibrary* delayImportLibrary;
        Metadata* metadata;
        Bootsector* bootSector;
-       bool mangledSymbols;
-       bool underscoreSymbols;
        bool isUnicode;
        bool isDefaultEntryPoint;
        Bootstrap* bootstrap;
@@ -402,6 +409,7 @@ public:
        bool isCRT;
        std::string CRT;
        bool dynamicCRT;
+       std::string installbase;
        FileLocation *output; // "path/foo.exe"
        FileLocation *dependency; // "path/foo.exe" or "path/libfoo.a"
        FileLocation *install;
@@ -420,13 +428,14 @@ public:
        bool IsDLL () const;
        std::string GetPathWithPrefix ( const std::string& prefix ) const; // "path/prefixfoo.exe"
        std::string GetPathToBaseDir() const; // "../" offset to rootdirectory
-       std::string GetEntryPoint(bool leadingUnderscore) const;
+       std::string GetEntryPoint() const;
        void GetTargets ( string_list& ) const;
        std::string GetInvocationTarget ( const int index ) const;
        bool HasFileWithExtension ( const IfableData&, const std::string& extension ) const;
        void InvokeModule () const;
        void ProcessXML ();
        std::string GetDllName() const;
+       SpecFileType IsSpecDefinitionFile () const;
 private:
        void SetImportLibrary ( ImportLibrary* importLibrary );
        void SetDelayImportLibrary ( ImportLibrary* importLibrary );
@@ -906,6 +915,7 @@ class InstallFile : public XmlNode
 public:
        FileLocation *source;
        FileLocation *target;
+       std::string installbase;
 
        InstallFile ( const Project& project,
                      const XMLElement& bootstrapNode,
@@ -1088,5 +1098,3 @@ NormalizeFilename ( const std::string& filename );
 
 extern std::string
 ToLower ( std::string filename );
-
-#endif /* __RBUILD_H */