* Nasm support
* Hal, rosrtl, pseh, string modules
* Build ntoskrnl
Modified: branches/xmlbuildsystem/reactos/ReactOS.xml
Added: branches/xmlbuildsystem/reactos/hal/directory.xml
Added: branches/xmlbuildsystem/reactos/hal/hal/hal.xml
Modified: branches/xmlbuildsystem/reactos/lib/directory.xml
Added: branches/xmlbuildsystem/reactos/lib/kjs/kjs.xml
Deleted: branches/xmlbuildsystem/reactos/lib/kjs/module.xml
Added: branches/xmlbuildsystem/reactos/lib/pseh/pseh.xml
Added: branches/xmlbuildsystem/reactos/lib/rosrtl/rosrtl.xml
Added: branches/xmlbuildsystem/reactos/lib/rtl/rtl.xml
Added: branches/xmlbuildsystem/reactos/lib/string/string.xml
Modified: branches/xmlbuildsystem/reactos/ntoskrnl/ntoskrnl.xml
Modified:
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp
Modified:
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.cpp
Modified:
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.h
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h
_____
Modified: branches/xmlbuildsystem/reactos/ReactOS.xml
--- branches/xmlbuildsystem/reactos/ReactOS.xml 2005-01-09 19:40:08 UTC
(rev 12912)
+++ branches/xmlbuildsystem/reactos/ReactOS.xml 2005-01-09 21:26:16 UTC
(rev 12913)
@@ -12,6 +12,9 @@
<directory name="tools">
<xi:include href="tools/tools.xml" />
</directory>
+ <directory name="hal">
+ <xi:include href="hal/directory.xml" />
+ </directory>
<directory name="iface">
<directory name="native">
<xi:include href="iface/native/module.xml" />
_____
Added: branches/xmlbuildsystem/reactos/hal/directory.xml
--- branches/xmlbuildsystem/reactos/hal/directory.xml 2005-01-09
19:40:08 UTC (rev 12912)
+++ branches/xmlbuildsystem/reactos/hal/directory.xml 2005-01-09
21:26:16 UTC (rev 12913)
@@ -0,0 +1,3 @@
+<directory name="hal">
+ <xi:include href="hal/hal.xml" />
+</directory>
_____
Added: branches/xmlbuildsystem/reactos/hal/hal/hal.xml
--- branches/xmlbuildsystem/reactos/hal/hal/hal.xml 2005-01-09
19:40:08 UTC (rev 12912)
+++ branches/xmlbuildsystem/reactos/hal/hal/hal.xml 2005-01-09
21:26:16 UTC (rev 12913)
@@ -0,0 +1,3 @@
+<module name="hal" type="kernelmodedll">
+ <importlibrary basename="hal" definition="hal.def" />
+</module>
_____
Modified: branches/xmlbuildsystem/reactos/lib/directory.xml
--- branches/xmlbuildsystem/reactos/lib/directory.xml 2005-01-09
19:40:08 UTC (rev 12912)
+++ branches/xmlbuildsystem/reactos/lib/directory.xml 2005-01-09
21:26:16 UTC (rev 12913)
@@ -1,3 +1,15 @@
<directory name="kjs">
- <xi:include href="kjs/module.xml" />
+ <xi:include href="kjs/kjs.xml" />
</directory>
+<directory name="pseh">
+ <xi:include href="pseh/pseh.xml" />
+</directory>
+<directory name="rosrtl">
+ <xi:include href="rosrtl/rosrtl.xml" />
+</directory>
+<directory name="rtl">
+ <xi:include href="rtl/rtl.xml" />
+</directory>
+<directory name="string">
+ <xi:include href="string/string.xml" />
+</directory>
_____
Copied: branches/xmlbuildsystem/reactos/lib/kjs/kjs.xml (from rev 12911,
branches/xmlbuildsystem/reactos/lib/kjs/module.xml)
_____
Deleted: branches/xmlbuildsystem/reactos/lib/kjs/module.xml
--- branches/xmlbuildsystem/reactos/lib/kjs/module.xml 2005-01-09
19:40:08 UTC (rev 12912)
+++ branches/xmlbuildsystem/reactos/lib/kjs/module.xml 2005-01-09
21:26:16 UTC (rev 12913)
@@ -1,41 +0,0 @@
-<module name="kjs" type="staticlibrary">
- <include base="kjs">.</include>
- <include base="kjs">src</include>
- <include base="kjs">include</include>
- <directory name="ksrc">
- <file>setjmp.S</file>
- <file>longjmp.S</file>
- <file>alloc.c</file>
- <file>bc.c</file>
- <file>b_core.c</file>
- <file>b_file.c</file>
- <file>b_func.c</file>
- <file>b_regexp.c</file>
- <file>b_system.c</file>
- <file>compat.c</file>
- <file>debug.c</file>
- <file>iostream.c</file>
- <file>js.c</file>
- <file>kjs.c</file>
- <file>mrgsort.c</file>
- <file>object.c</file>
- <file>regex.c</file>
- <file>vm.c</file>
- <file>vmjumps.c</file>
- <file>vmswitch.c</file>
- <file>vmswt0.c</file>
- </directory>
- <directory name="src">
- <file>b_array.c</file>
- <file>b_bool.c</file>
- <file>b_object.c</file>
- <file>b_number.c</file>
- <file>b_string.c</file>
- <file>b_vm.c</file>
- <file>compiler.c</file>
- <file>crc32.c</file>
- <file>dl_dummy.c</file>
- <file>heap.c</file>
- <file>utils.c</file>
- </directory>
-</module>
_____
Added: branches/xmlbuildsystem/reactos/lib/pseh/pseh.xml
--- branches/xmlbuildsystem/reactos/lib/pseh/pseh.xml 2005-01-09
19:40:08 UTC (rev 12912)
+++ branches/xmlbuildsystem/reactos/lib/pseh/pseh.xml 2005-01-09
21:26:16 UTC (rev 12913)
@@ -0,0 +1,8 @@
+<module name="pseh" type="staticlibrary">
+ <define name="__USE_W32API" />
+ <directory name="i386">
+ <file>framebased.asm</file>
+ <file>setjmp.asm</file>
+ </directory>
+ <file>framebased.c</file>
+</module>
_____
Added: branches/xmlbuildsystem/reactos/lib/rosrtl/rosrtl.xml
--- branches/xmlbuildsystem/reactos/lib/rosrtl/rosrtl.xml
2005-01-09 19:40:08 UTC (rev 12912)
+++ branches/xmlbuildsystem/reactos/lib/rosrtl/rosrtl.xml
2005-01-09 21:26:16 UTC (rev 12913)
@@ -0,0 +1,33 @@
+<module name="rosrtl" type="staticlibrary">
+ <define name="__USE_W32API" />
+ <directory name="file">
+ <file>sparse.c</file>
+ </directory>
+ <directory name="misc">
+ <file>devmode.c</file>
+ <file>intrlck.c</file>
+ <file>logfont.c</file>
+ <file>qsort.c</file>
+ </directory>
+ <directory name="recmutex">
+ <file>recmutex.c</file>
+ </directory>
+ <directory name="registry">
+ <file>registry.c</file>
+ </directory>
+ <directory name="string">
+ <file>append.c</file>
+ <file>resstr.c</file>
+ </directory>
+ <directory name="thread">
+ <directory name="i386">
+ <file>context.c</file>
+ <file>stackexit.S</file>
+ </directory>
+ <file>create.c</file>
+ <file>exit.c</file>
+ <file>linearstack.c</file>
+ <file>priv.c</file>
+ <file>stack.c</file>
+ </directory>
+</module>
_____
Added: branches/xmlbuildsystem/reactos/lib/rtl/rtl.xml
--- branches/xmlbuildsystem/reactos/lib/rtl/rtl.xml 2005-01-09
19:40:08 UTC (rev 12912)
+++ branches/xmlbuildsystem/reactos/lib/rtl/rtl.xml 2005-01-09
21:26:16 UTC (rev 12913)
@@ -0,0 +1,34 @@
+<module name="rtl" type="staticlibrary">
+ <directory name="i386">
+ <file>except.s</file>
+ <file>exception.c</file>
+ </directory>
+ <file>acl.c</file>
+ <file>bit.c</file>
+ <file>bitmap.c</file>
+ <file>bootdata.c</file>
+ <file>compress.c</file>
+ <file>dos8dot3.c</file>
+ <file>encode.c</file>
+ <file>env.c</file>
+ <file>error.c</file>
+ <file>exception.c</file>
+ <file>generictable.c</file>
+ <file>heap.c</file>
+ <file>image.c</file>
+ <file>largeint.c</file>
+ <file>luid.c</file>
+ <file>mem.c</file>
+ <file>network.c</file>
+ <file>nls.c</file>
+ <file>random.c</file>
+ <file>sd.c</file>
+ <file>security.c</file>
+ <file>sid.c</file>
+ <file>splaytree.c</file>
+ <file>time.c</file>
+ <file>timezone.c</file>
+ <file>unicode.c</file>
+ <file>unicodeprefix.c</file>
+ <file>version.c</file>
+</module>
_____
Added: branches/xmlbuildsystem/reactos/lib/string/string.xml
--- branches/xmlbuildsystem/reactos/lib/string/string.xml
2005-01-09 19:40:08 UTC (rev 12912)
+++ branches/xmlbuildsystem/reactos/lib/string/string.xml
2005-01-09 21:26:16 UTC (rev 12913)
@@ -0,0 +1,30 @@
+<module name="string" type="staticlibrary">
+ <file>memccpy.c</file>
+ <file>memchr.c</file>
+ <file>memcmp.c</file>
+ <file>memcpy.c</file>
+ <file>memmove.c</file>
+ <file>memset.c</file>
+ <file>strcat.c</file>
+ <file>strchr.c</file>
+ <file>strcmp.c</file>
+ <file>strcpy.c</file>
+ <file>strcspn.c</file>
+ <file>strlen.c</file>
+ <file>strncat.c</file>
+ <file>strncmp.c</file>
+ <file>strncpy.c</file>
+ <file>strnlen.c</file>
+ <file>strrchr.c</file>
+ <file>strspn.c</file>
+ <file>wcscat.c</file>
+ <file>wcschr.c</file>
+ <file>wcscmp.c</file>
+ <file>wcscpy.c</file>
+ <file>wcslen.c</file>
+ <file>wcsncat.c</file>
+ <file>wcsncmp.c</file>
+ <file>wcsncpy.c</file>
+ <file>wcsnlen.c</file>
+ <file>wcsrchr.c</file>
+</module>
_____
Modified: branches/xmlbuildsystem/reactos/ntoskrnl/ntoskrnl.xml
--- branches/xmlbuildsystem/reactos/ntoskrnl/ntoskrnl.xml
2005-01-09 19:40:08 UTC (rev 12912)
+++ branches/xmlbuildsystem/reactos/ntoskrnl/ntoskrnl.xml
2005-01-09 21:26:16 UTC (rev 12913)
@@ -1,4 +1,4 @@
-<module name="ntoskrnl" type="kernelmodedll"
extension=".exe">
+<module name="ntoskrnl" type="kernel">
<dependency>buildno</dependency>
<dependency>genntdll</dependency>
<dependency>wmc</dependency>
@@ -9,7 +9,12 @@
<define name="__ELF_WORD_SIZE">32</define>
<include base="kjs">include</include>
<include base="ntoskrnl">include</include>
+ <library>hal</library>
<library>kjs</library>
+ <library>pseh</library>
+ <library>rosrtl</library>
+ <library>rtl</library>
+ <library>string</library>
<invoke module="wmc">
<input>
<inputfile>ntoskrnl.mc</inputfile>
@@ -83,13 +88,11 @@
<file>user.c</file>
</directory>
<directory name="ex">
- <!--
<if property="arch" value="i386">
<directory name="i386">
<file>interlck.c</file>
</directory>
</if>
- -->
<file>btree.c</file>
<file>callback.c</file>
<file>fmutex.c</file>
@@ -315,6 +318,7 @@
<file>plugplay.c</file>
<file>profile.c</file>
<file>vdm.c</file>
+ <file>zw.c</file>
</directory>
<directory name="ob">
<file>dirobj.c</file>
_____
Modified:
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp
--- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp
2005-01-09 19:40:08 UTC (rev 12912)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp
2005-01-09 21:26:16 UTC (rev 12913)
@@ -65,7 +65,7 @@
fprintf ( fMakefile, "host_gcc = gcc\n" );
fprintf ( fMakefile, "host_ar = ar\n" );
fprintf ( fMakefile, "host_ld = ld\n" );
- fprintf ( fMakefile, "rm = del /y\n" );
+ fprintf ( fMakefile, "rm = del /f /q\n" );
fprintf ( fMakefile, "gcc = gcc\n" );
fprintf ( fMakefile, "ld = ld\n" );
fprintf ( fMakefile, "ar = ar\n" );
@@ -82,7 +82,7 @@
Module& module = *ProjectNode.modules[i];
fprintf ( fMakefile,
" %s",
- FixupTargetFilename(module.GetPath ()).c_str
() );
+ FixupTargetFilename( module.GetPath () ).c_str
() );
}
fprintf ( fMakefile, "\n\t\n\n" );
}
_____
Modified:
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.cpp
---
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.cpp 2005-01-09 19:40:08 UTC (rev 12912)
+++
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.cpp 2005-01-09 21:26:16 UTC (rev 12913)
@@ -100,7 +100,7 @@
dependencies += " ";
const Module* importedModule =
module.project.LocateModule ( module.libraries[i]->name );
assert ( importedModule != NULL );
- dependencies += FixupTargetFilename (
importedModule->GetPath () ).c_str ();
+ dependencies += FixupTargetFilename (
importedModule->GetDependencyPath () ).c_str ();
}
return dependencies;
}
@@ -261,11 +261,17 @@
MingwModuleHandler::GenerateGccParameters ( const Module& module )
const
{
string parameters = GenerateGccDefineParameters ( module );
- parameters += ssprintf(" $(%s_INCLUDES)",module.name.c_str());
+ parameters += ssprintf(" $(%s_INCLUDES)", module.name.c_str());
return parameters;
}
string
+MingwModuleHandler::GenerateNasmParameters ( const Module& module )
const
+{
+ return "";
+}
+
+string
MingwModuleHandler::GenerateGccCommand ( const Module& module,
const string&
sourceFilename,
const string& cc ) const
@@ -292,6 +298,18 @@
}
string
+MingwModuleHandler::GenerateNasmCommand ( const Module& module,
+ const string&
sourceFilename ) const
+{
+ string objectFilename = GetObjectFilename ( sourceFilename );
+ return ssprintf ( "%s -f win32 %s -o %s %s\n",
+ "nasm",
+ sourceFilename.c_str (),
+ objectFilename.c_str (),
+ GenerateNasmParameters ( module ).c_str ()
);
+}
+
+string
MingwModuleHandler::GenerateCommand ( const Module& module,
const string& sourceFilename,
const string& cc ) const
@@ -305,6 +323,9 @@
return GenerateGccAssemblerCommand ( module,
sourceFilename,
cc );
+ else if ( extension == ".asm" || extension == ".ASM" )
+ return GenerateNasmCommand ( module,
+ sourceFilename );
throw InvalidOperationException ( __FILE__,
__LINE__,
@@ -506,6 +527,7 @@
preconditionDependenciesName.c_str () );
}
+
static MingwBuildToolModuleHandler buildtool_handler;
MingwBuildToolModuleHandler::MingwBuildToolModuleHandler()
@@ -540,7 +562,7 @@
static MingwKernelModuleHandler kernelmodule_handler;
MingwKernelModuleHandler::MingwKernelModuleHandler ()
- : MingwModuleHandler ( KernelModeDLL )
+ : MingwModuleHandler ( Kernel )
{
}
@@ -564,13 +586,15 @@
string base_tmp = ros_junk + module.name + ".base.tmp";
string junk_tmp = ros_junk + module.name + ".junk.tmp";
string temp_exp = ros_junk + module.name + ".temp.exp";
+ string gccOptions = ssprintf ("-Wl,-T,%s" SSEP "ntoskrnl.lnk
-Wl,--subsystem,native -Wl,--entry,_NtProcessStartup
-Wl,--image-base,0xC0000000 -Wl,--file-alignment,0x1000
-Wl,--section-alignment,0x1000 -nostartfiles -mdll",
+ module.GetBasePath ().c_str () );
fprintf ( fMakefile, "%s: %s %s\n",
target.c_str (),
archiveFilename.c_str (),
importLibraryDependencies.c_str () );
fprintf ( fMakefile,
- "\t${gcc} -Wl,--entry,_NtProcessStartup -Wl,-T,%s"
SSEP "ntoskrnl.lnk -Wl,--subsystem,native -Wl,--image-base,0xC0000000
-Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000
-Wl,--base-file,%s -nostartfiles -o %s %s %s\n",
- module.GetBasePath ().c_str (),
+ "\t${gcc} %s -Wl,--base-file,%s -o %s %s %s\n",
+ gccOptions.c_str (),
base_tmp.c_str (),
junk_tmp.c_str (),
archiveFilename.c_str (),
@@ -587,7 +611,8 @@
"\t${rm} %s\n",
base_tmp.c_str () );
fprintf ( fMakefile,
- "\t${ld} -Wl,%s -o %s %s %s\n",
+ "\t${gcc} %s -Wl,%s -o %s %s %s\n",
+ gccOptions.c_str (),
temp_exp.c_str (),
target.c_str (),
archiveFilename.c_str (),
@@ -600,6 +625,7 @@
GenerateObjectFileTargetsTarget ( module );
}
+
static MingwStaticLibraryModuleHandler staticlibrary_handler;
MingwStaticLibraryModuleHandler::MingwStaticLibraryModuleHandler ()
@@ -621,3 +647,65 @@
GenerateArchiveTargetTarget ( module );
GenerateObjectFileTargetsTarget ( module );
}
+
+
+static MingwKernelModeDLLModuleHandler kernelmodedll_handler;
+
+MingwKernelModeDLLModuleHandler::MingwKernelModeDLLModuleHandler ()
+ : MingwModuleHandler ( KernelModeDLL )
+{
+}
+
+void
+MingwKernelModeDLLModuleHandler::Process ( const Module& module )
+{
+ GeneratePreconditionDependencies ( module );
+ GenerateKernelModeDLLModuleTarget ( module );
+ GenerateInvocations ( module );
+}
+
+void
+MingwKernelModeDLLModuleHandler::GenerateKernelModeDLLModuleTarget (
const Module& module )
+{
+ static string ros_junk ( "$(ROS_TEMPORARY)" );
+ string target ( FixupTargetFilename ( module.GetPath () ) );
+ string workingDirectory = GetWorkingDirectory ( );
+ string archiveFilename = GetModuleArchiveFilename ( module );
+ string importLibraryDependencies = GetImportLibraryDependencies
( module );
+
+ if (module.importLibrary != NULL)
+ {
+ fprintf ( fMakefile, "%s:\n",
+ module.GetDependencyPath ().c_str () );
+
+ fprintf ( fMakefile,
+ "\t${dlltool} --dllname %s --def %s
--output-lib %s --kill-at\n\n",
+ module.GetTargetName ().c_str (),
+ FixupTargetFilename ( module.GetBasePath () +
SSEP + module.importLibrary->definition ).c_str (),
+ FixupTargetFilename ( module.GetDependencyPath
() ).c_str () );
+ }
+
+ if (module.files.size () > 0)
+ {
+ fprintf ( fMakefile, "%s: %s %s\n",
+ target.c_str (),
+ archiveFilename.c_str (),
+ importLibraryDependencies.c_str () );
+
+ fprintf ( fMakefile,
+ "\t${gcc} -Wl,--subsystem,native
-Wl,--entry,_DriverEntry@8 -Wl,--image-base,0x10000
-Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles
-mdll -o %s %s %s\n",
+ target.c_str (),
+ archiveFilename.c_str (),
+ importLibraryDependencies.c_str () );
+
+ GenerateArchiveTargetTarget ( module );
+ GenerateObjectFileTargetsTarget ( module );
+ }
+ else
+ {
+ fprintf ( fMakefile, "%s:\n\n",
+ target.c_str ());
+ fprintf ( fMakefile, ".PHONY: %s\n\n",
+ target.c_str ());
+ }
+}
_____
Modified:
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.h
---
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.h 2005-01-09 19:40:08 UTC (rev 12912)
+++
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.h 2005-01-09 21:26:16 UTC (rev 12913)
@@ -48,12 +48,15 @@
void GenerateGccModuleIncludeVariable ( const Module& module )
const;
std::string GenerateGccIncludeParameters ( const Module& module
) const;
std::string GenerateGccParameters ( const Module& module )
const;
+ std::string GenerateNasmParameters ( const Module& module )
const;
std::string GenerateGccCommand ( const Module& module,
const std::string&
sourceFilename,
const std::string& cc ) const;
std::string GenerateGccAssemblerCommand ( const Module& module,
const std::string&
sourceFilename,
const std::string& cc
) const;
+ std::string GenerateNasmCommand ( const Module& module,
+ const std::string&
sourceFilename ) const;
std::string GenerateCommand ( const Module& module,
const std::string& sourceFilename,
const std::string& cc ) const;
@@ -94,4 +97,14 @@
void GenerateStaticLibraryModuleTarget ( const Module& module );
};
+
+class MingwKernelModeDLLModuleHandler : public MingwModuleHandler
+{
+public:
+ MingwKernelModeDLLModuleHandler ();
+ virtual void Process ( const Module& module );
+private:
+ void GenerateKernelModeDLLModuleTarget ( const Module& module );
+};
+
#endif /* MINGW_MODULEHANDLER_H */
_____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp
--- branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp
2005-01-09 19:40:08 UTC (rev 12912)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp
2005-01-09 21:26:16 UTC (rev 12913)
@@ -24,8 +24,9 @@
Module::Module ( const Project& project,
const XMLElement& moduleNode,
const string& modulePath )
- : project(project),
- node(moduleNode)
+ : project (project),
+ node (moduleNode),
+ importLibrary (NULL)
{
if ( node.name != "module" )
throw Exception ( "internal tool error: Module created
with non-<module> node" );
@@ -126,6 +127,11 @@
dependencies.push_back ( new Dependency ( e, *this ) );
subs_invalid = true;
}
+ else if ( e.name == "importlibrary" )
+ {
+ importLibrary = new ImportLibrary ( e, *this );
+ subs_invalid = true;
+ }
if ( subs_invalid && e.subElements.size() > 0 )
throw InvalidBuildFileException (
e.location,
@@ -142,6 +148,8 @@
return BuildTool;
if ( attribute.value == "staticlibrary" )
return StaticLibrary;
+ if ( attribute.value == "kernel" )
+ return Kernel;
if ( attribute.value == "kernelmodedll" )
return KernelModeDLL;
throw InvalidAttributeValueException ( location,
@@ -158,6 +166,8 @@
return EXEPOSTFIX;
case StaticLibrary:
return ".a";
+ case Kernel:
+ return ".exe";
case KernelModeDLL:
return ".dll";
}
@@ -166,18 +176,43 @@
}
string
-Module::GetBasePath() const
+Module::GetTargetName () const
{
+ return name + extension;
+}
+
+string
+Module::GetDependencyPath () const
+{
+ if ( type == KernelModeDLL )
+ return ssprintf ( "dk%snkm%slib%slib%s.a",
+ SSEP,
+ SSEP,
+ SSEP,
+ name.c_str () );
+ else
+ return GetPath ();
+}
+
+string
+Module::GetBasePath () const
+{
return path;
}
string
Module::GetPath () const
{
- return path + CSEP + name + extension;
+ return path + CSEP + GetTargetName ();
}
string
+Module::GetPathWithPrefix ( const string& prefix ) const
+{
+ return path + CSEP + prefix + GetTargetName ();
+}
+
+string
Module::GetTargets () const
{
if ( invocations.size () > 0 )
@@ -371,3 +406,20 @@
module.name.c_str(),
node.value.c_str() );
}
+
+
+ImportLibrary::ImportLibrary ( const XMLElement& _node,
+ const Module& _module )
+ : node (_node),
+ module (_module)
+{
+ const XMLAttribute* att = _node.GetAttribute ( "basename", false
);
+ if (att != NULL)
+ basename = att->value;
+ else
+ basename = module.name;
+
+ att = _node.GetAttribute ( "definition", true );
+ assert (att);
+ definition = att->value;
+}
_____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h
--- branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h
2005-01-09 19:40:08 UTC (rev 12912)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h
2005-01-09 21:26:16 UTC (rev 12913)
@@ -30,6 +30,7 @@
class Invoke;
class InvokeFile;
class Dependency;
+class ImportLibrary;
class Project
{
@@ -63,6 +64,7 @@
{
BuildTool,
StaticLibrary,
+ Kernel,
KernelModeDLL
};
@@ -76,6 +78,7 @@
std::string extension;
std::string path;
ModuleType type;
+ ImportLibrary* importLibrary;
std::vector<File*> files;
std::vector<Library*> libraries;
std::vector<Include*> includes;
@@ -89,8 +92,11 @@
~Module ();
ModuleType GetModuleType ( const std::string& location,
const XMLAttribute& attribute );
+ std::string GetTargetName () const;
+ std::string GetDependencyPath () const;
std::string GetBasePath() const;
std::string GetPath () const;
+ std::string GetPathWithPrefix ( const std::string& prefix )
const;
std::string GetTargets () const;
std::string GetInvocationTarget ( const int index ) const;
void ProcessXML();
@@ -217,6 +223,21 @@
void ProcessXML();
};
+
+class ImportLibrary
+{
+public:
+ const XMLElement& node;
+ const Module& module;
+ std::string basename;
+ std::string definition;
+
+ ImportLibrary ( const XMLElement& _node,
+ const Module& module );
+
+ void ProcessXML ();
+};
+
extern std::string
FixSeparator ( const std::string& s );