[ros-diffs] [mpiulachs] 30072: - Created a new concept "the cd bootstrap folder" . The cd bootstrap folder is a user customizable folder in the cd's root that defaults to the current build architecture for example i386 o ppc. - Modifed the InstallBase from the BootStrap element to be relative to the bootstrap folder, for example the usetup bootstrap: <bootstrap installbase="system32" nameoncd="smss.exe" /> will be created in : (CD)\i386\system32\smss.exe on a I386 build and (CD)\ppc\system32\smss.exe on a powerpc build - Introduced a new element "bootstrapfile" equivalent to the bootstrap for module target but applied to regular files for example : <bootstrapfile>hivecls.inf</bootstrapfile> will be placed in : (CD)\i386\hivecls.inf on a I386 build and (CD)\ppc\hivecls.inf on a powerpc build - Moved the "loader" folder from cd root to the bootstrap cd folder (this will require a modification in isoboot.asm). Every architecture will have its bootloader code in (CD)\(BootStrapFolder)\loader With this changes we will be able to place complete installation for more than one architecture in the same cd .Only one of the architectures will be able to be booted by default but we can include the cdmake utility + some .bat files in a (CD)\tools folder so the user can download the official CD with all supported architectures and create a bootable boot CD for a particular architecture. cool huh? ============================================ - Consity and explicty declare install folders , use the same ID that this folders have on Windows , we will use it later to validate InstallBase attributes and during setup

mpiulachs at svn.reactos.org mpiulachs at svn.reactos.org
Fri Nov 2 19:36:56 CET 2007


Author: mpiulachs
Date: Fri Nov  2 21:36:55 2007
New Revision: 30072

URL: http://svn.reactos.org/svn/reactos?rev=30072&view=rev
Log:
- Created a new concept "the cd bootstrap folder" . The cd bootstrap folder is a user customizable folder in the cd's root that defaults to the current build architecture for example i386 o ppc.

- Modifed the InstallBase from the BootStrap element to be relative to the bootstrap folder, for example the usetup bootstrap:

<bootstrap installbase="system32" nameoncd="smss.exe" />

will be created in  :

(CD)\i386\system32\smss.exe on a I386 build and
(CD)\ppc\system32\smss.exe on a powerpc build

- Introduced a new element "bootstrapfile" equivalent to the bootstrap for module target but applied to regular files for example :

	<bootstrapfile>hivecls.inf</bootstrapfile>

will be placed in :

(CD)\i386\hivecls.inf on a I386 build and
(CD)\ppc\hivecls.inf on a powerpc build

- Moved the "loader" folder from cd root to the bootstrap cd folder (this will require a modification in isoboot.asm). Every architecture will have its 
bootloader code in (CD)\(BootStrapFolder)\loader

With this changes we will be able to place complete installation for more than one architecture in the same cd .Only one of the architectures will be able to 
be booted by default but we can include the cdmake utility + some .bat files in a (CD)\tools folder so the user can download the official CD with all 
supported architectures and create a bootable boot CD for a particular architecture. cool huh?

============================================

- Consity and explicty declare install folders , use the same ID that this folders have on Windows , we will use it later to validate InstallBase attributes 
and during setup

Added:
    branches/rbuild/reactos/installfolders.rbuild   (with props)
Modified:
    branches/rbuild/reactos/ReactOS-generic.rbuild
    branches/rbuild/reactos/base/applications/notepad/setup/notepad.inf
    branches/rbuild/reactos/base/setup/reactos/reactos.rbuild
    branches/rbuild/reactos/base/setup/usetup/usetup.rbuild
    branches/rbuild/reactos/base/setup/welcome/welcome.rbuild
    branches/rbuild/reactos/boot/bootdata/bootdata.rbuild
    branches/rbuild/reactos/boot/freeldr/freeldr/setupldr.rbuild
    branches/rbuild/reactos/dll/ntdll/ntdll.rbuild
    branches/rbuild/reactos/drivers/base/bootvid/bootvid.rbuild
    branches/rbuild/reactos/drivers/base/kdcom/kdcom.rbuild
    branches/rbuild/reactos/drivers/filesystems/cdfs/cdfs.rbuild
    branches/rbuild/reactos/drivers/filesystems/ntfs/ntfs.rbuild
    branches/rbuild/reactos/drivers/filesystems/vfat/vfatfs.rbuild
    branches/rbuild/reactos/drivers/input/i8042prt/i8042prt.rbuild
    branches/rbuild/reactos/drivers/input/kbdclass/kbdclass.rbuild
    branches/rbuild/reactos/drivers/setup/blue/blue.rbuild
    branches/rbuild/reactos/drivers/storage/class/cdrom/cdrom.rbuild
    branches/rbuild/reactos/drivers/storage/class/class2/class2.rbuild
    branches/rbuild/reactos/drivers/storage/class/disk/disk.rbuild
    branches/rbuild/reactos/drivers/storage/floppy/floppy.rbuild
    branches/rbuild/reactos/drivers/storage/ide/atapi/atapi.rbuild
    branches/rbuild/reactos/drivers/storage/ide/uniata/uniata.rbuild
    branches/rbuild/reactos/drivers/storage/port/buslogic/buslogic.rbuild
    branches/rbuild/reactos/drivers/storage/port/diskdump/diskdump.rbuild
    branches/rbuild/reactos/drivers/storage/scsiport/scsiport.rbuild
    branches/rbuild/reactos/hal/halppc/up/halup.rbuild
    branches/rbuild/reactos/hal/halx86/mp/halmp.rbuild
    branches/rbuild/reactos/hal/halx86/up/halup.rbuild
    branches/rbuild/reactos/media/drivers/etc/etc.rbuild
    branches/rbuild/reactos/media/nls/nls.rbuild
    branches/rbuild/reactos/ntoskrnl/ntoskrnl.rbuild
    branches/rbuild/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
    branches/rbuild/reactos/tools/rbuild/backend/mingw/modulehandler.h
    branches/rbuild/reactos/tools/rbuild/bootstrap.cpp
    branches/rbuild/reactos/tools/rbuild/cdfile.cpp
    branches/rbuild/reactos/tools/rbuild/linkerscript.cpp
    branches/rbuild/reactos/tools/rbuild/project.cpp
    branches/rbuild/reactos/tools/rbuild/rbuild.h
    branches/rbuild/reactos/tools/rbuild/syssetupgenerator.cpp

Modified: branches/rbuild/reactos/ReactOS-generic.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/ReactOS-generic.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/ReactOS-generic.rbuild (original)
+++ branches/rbuild/reactos/ReactOS-generic.rbuild Fri Nov  2 21:36:55 2007
@@ -3,6 +3,7 @@
 <group xmlns:xi="http://www.w3.org/2001/XInclude">
 	<xi:include href="baseaddress.rbuild" />
 	<xi:include href="contributors.rbuild" />
+	<xi:include href="installfolders.rbuild" />
 
 	<define name="__REACTOS__" overridable="true" />
 	<if property="MP" value="1">

Modified: branches/rbuild/reactos/base/applications/notepad/setup/notepad.inf
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/base/applications/notepad/setup/notepad.inf?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/base/applications/notepad/setup/notepad.inf (original)
+++ branches/rbuild/reactos/base/applications/notepad/setup/notepad.inf Fri Nov  2 21:36:55 2007
@@ -8,9 +8,9 @@
 
 [NotepadDesktopItemAdd]
 Name       = %NOTEPAD_NAME%, 0x0000008, 16409
-CmdLine    = 24,"%SystemRoot%\system32\","notepad.exe"
+CmdLine    = 11,,"notepad.exe"
 InfoTip    = %NOTEPAD_DESC%
-WorkingDir = 24,"%HOMEDRIVE%%HOMEPATH%"
+WorkingDir = "%HOMEDRIVE%%HOMEPATH%"
 
 ; Localizable Strings
 

Modified: branches/rbuild/reactos/base/setup/reactos/reactos.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/base/setup/reactos/reactos.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/base/setup/reactos/reactos.rbuild (original)
+++ branches/rbuild/reactos/base/setup/reactos/reactos.rbuild Fri Nov  2 21:36:55 2007
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
 <module name="reactos" type="win32gui">
-	<bootstrap installbase="$(CDOUTPUT)" />
+	<bootstrap />
 	<include base="reactos">.</include>
 	<define name="_WIN32_IE">0x0501</define>
 	<define name="_WIN32_WINNT">0x0501</define>

Modified: branches/rbuild/reactos/base/setup/usetup/usetup.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/base/setup/usetup/usetup.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/base/setup/usetup/usetup.rbuild (original)
+++ branches/rbuild/reactos/base/setup/usetup/usetup.rbuild Fri Nov  2 21:36:55 2007
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
 <module name="usetup" type="nativecui" installbase="system32" installname="usetup.exe" allowwarnings="false">
-	<bootstrap installbase="$(CDOUTPUT)/system32" nameoncd="smss.exe" />
+	<bootstrap installbase="system32" nameoncd="smss.exe" />
 	<include base="usetup">.</include>
 	<include base="zlib">.</include>
 	<include base="inflib">.</include>

Modified: branches/rbuild/reactos/base/setup/welcome/welcome.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/base/setup/welcome/welcome.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/base/setup/welcome/welcome.rbuild (original)
+++ branches/rbuild/reactos/base/setup/welcome/welcome.rbuild Fri Nov  2 21:36:55 2007
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
 <module name="welcome" type="win32gui" installbase="system32" installname="welcome.exe">
-	<bootstrap installbase="$(CDOUTPUT)" />
+	<bootstrap />
 	<include base="welcome">.</include>
 	<define name="_WIN32_IE">0x0501</define>
 	<define name="_WIN32_WINNT">0x0501</define>

Modified: branches/rbuild/reactos/boot/bootdata/bootdata.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/boot/bootdata/bootdata.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/boot/bootdata/bootdata.rbuild (original)
+++ branches/rbuild/reactos/boot/bootdata/bootdata.rbuild Fri Nov  2 21:36:55 2007
@@ -4,12 +4,23 @@
 	<cdfile>autorun.inf</cdfile>
 	<cdfile>icon.ico</cdfile>
 	<cdfile>readme.txt</cdfile>
-	<cdfile installbase="$(CDOUTPUT)">hivecls.inf</cdfile>
-	<cdfile installbase="$(CDOUTPUT)">hivedef.inf</cdfile>
-	<cdfile installbase="$(CDOUTPUT)">hivesft.inf</cdfile>
-	<cdfile installbase="$(CDOUTPUT)">hivesys.inf</cdfile>
-	<cdfile installbase="$(CDOUTPUT)">txtsetup.sif</cdfile>
-	<cdfile installbase="$(CDOUTPUT)">unattend.inf</cdfile>
+
+	<bootstrapfile>hivecls.inf</bootstrapfile>
+	<bootstrapfile>hivedef.inf</bootstrapfile>
+	<bootstrapfile>hivesft.inf</bootstrapfile>
+	<bootstrapfile>hivesys.inf</bootstrapfile>
+	<bootstrapfile>txtsetup.sif</bootstrapfile>
+	<bootstrapfile>unattend.inf</bootstrapfile>
+	
+	<!--
+	<cdfile installbase="reactos">hivecls.inf</cdfile>
+	<cdfile installbase="reactos">hivedef.inf</cdfile>
+	<cdfile installbase="reactos">hivesft.inf</cdfile>
+	<cdfile installbase="reactos">hivesys.inf</cdfile>
+	<cdfile installbase="reactos">txtsetup.sif</cdfile>
+	<cdfile installbase="reactos">unattend.inf</cdfile>
+	-->
+
 	<directory name="bootcd">
 		<xi:include href="bootcd/bootcd.rbuild" />
 	</directory>

Modified: branches/rbuild/reactos/boot/freeldr/freeldr/setupldr.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/boot/freeldr/freeldr/setupldr.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/boot/freeldr/freeldr/setupldr.rbuild (original)
+++ branches/rbuild/reactos/boot/freeldr/freeldr/setupldr.rbuild Fri Nov  2 21:36:55 2007
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
 <module name="setupldr" type="bootloader">
-	<bootstrap installbase="loader" />
+	<bootstrap installbase="loader"/>
 	<library>freeldr_startup</library>
 	<library>freeldr_base64k</library>
 	<library>freeldr_base</library>

Modified: branches/rbuild/reactos/dll/ntdll/ntdll.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/dll/ntdll/ntdll.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/dll/ntdll/ntdll.rbuild (original)
+++ branches/rbuild/reactos/dll/ntdll/ntdll.rbuild Fri Nov  2 21:36:55 2007
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE module SYSTEM "../../tools/rbuild/project.dtd">
 <module name="ntdll" type="nativedll" entrypoint="0" baseaddress="${BASEADDRESS_NTDLL}" installbase="system32" installname="ntdll.dll">
-	<bootstrap installbase="$(CDOUTPUT)/system32" />
+	<bootstrap installbase="system32" />
 	<importlibrary definition="def/ntdll.def" />
 	<include base="ntdll">inc</include>
 	<include base="ReactOS">include/reactos/subsys</include>

Modified: branches/rbuild/reactos/drivers/base/bootvid/bootvid.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/drivers/base/bootvid/bootvid.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/drivers/base/bootvid/bootvid.rbuild (original)
+++ branches/rbuild/reactos/drivers/base/bootvid/bootvid.rbuild Fri Nov  2 21:36:55 2007
@@ -2,7 +2,7 @@
 <!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
 <module name="bootvid" type="kernelmodedll" entrypoint="DriverEntry at 8" installbase="system32/drivers" installname="bootvid.dll">
 	<importlibrary definition="bootvid.def"></importlibrary>
-	<bootstrap installbase="$(CDOUTPUT)" nameoncd="bootvid.dll" />
+	<bootstrap nameoncd="bootvid.dll" />
 	<include base="bootvid">.</include>
 	<define name="__USE_W32API" />
 	<library>ntoskrnl</library>

Modified: branches/rbuild/reactos/drivers/base/kdcom/kdcom.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/drivers/base/kdcom/kdcom.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/drivers/base/kdcom/kdcom.rbuild (original)
+++ branches/rbuild/reactos/drivers/base/kdcom/kdcom.rbuild Fri Nov  2 21:36:55 2007
@@ -2,7 +2,7 @@
 <!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
 <module name="kdcom" type="kernelmodedll" entrypoint="DriverEntry at 8" installbase="system32/drivers" installname="kdcom.dll">
 	<importlibrary definition="kdcom.def"></importlibrary>
-	<bootstrap installbase="$(CDOUTPUT)" nameoncd="kdcom.dll" />
+	<bootstrap nameoncd="kdcom.dll" />
 	<include base="kdcom">.</include>
 	<define name="__USE_W32API" />
 	<library>ntoskrnl</library>

Modified: branches/rbuild/reactos/drivers/filesystems/cdfs/cdfs.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/drivers/filesystems/cdfs/cdfs.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/drivers/filesystems/cdfs/cdfs.rbuild (original)
+++ branches/rbuild/reactos/drivers/filesystems/cdfs/cdfs.rbuild Fri Nov  2 21:36:55 2007
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
 <module name="cdfs" type="kernelmodedriver" installbase="system32/drivers" installname="cdfs.sys">
-	<bootstrap installbase="$(CDOUTPUT)" />
+	<bootstrap />
 	<include base="cdfs">.</include>
 	<define name="__USE_W32API" />
 	<library>ntoskrnl</library>

Modified: branches/rbuild/reactos/drivers/filesystems/ntfs/ntfs.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/drivers/filesystems/ntfs/ntfs.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/drivers/filesystems/ntfs/ntfs.rbuild (original)
+++ branches/rbuild/reactos/drivers/filesystems/ntfs/ntfs.rbuild Fri Nov  2 21:36:55 2007
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
 <module name="ntfs" type="kernelmodedriver" installbase="system32/drivers" installname="ntfs.sys">
-	<bootstrap installbase="$(CDOUTPUT)" />
+	<bootstrap />
 	<include base="ntfs">.</include>
 	<define name="__USE_W32API" />
 	<library>ntoskrnl</library>

Modified: branches/rbuild/reactos/drivers/filesystems/vfat/vfatfs.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/drivers/filesystems/vfat/vfatfs.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/drivers/filesystems/vfat/vfatfs.rbuild (original)
+++ branches/rbuild/reactos/drivers/filesystems/vfat/vfatfs.rbuild Fri Nov  2 21:36:55 2007
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
 <module name="vfatfs" type="kernelmodedriver" installbase="system32/drivers" installname="vfatfs.sys">
-	<bootstrap installbase="$(CDOUTPUT)" />
+	<bootstrap />
 	<include base="vfatfs">.</include>
 	<define name="__USE_W32API" />
 	<linkerflag>-lgcc</linkerflag>

Modified: branches/rbuild/reactos/drivers/input/i8042prt/i8042prt.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/drivers/input/i8042prt/i8042prt.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/drivers/input/i8042prt/i8042prt.rbuild (original)
+++ branches/rbuild/reactos/drivers/input/i8042prt/i8042prt.rbuild Fri Nov  2 21:36:55 2007
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
 <module name="i8042prt" type="kernelmodedriver" installbase="system32/drivers" installname="i8042prt.sys">
-	<bootstrap installbase="$(CDOUTPUT)" />
+	<bootstrap />
 	<include base="i8042prt">.</include>
 	<define name="__USE_W32API" />
 	<library>ntoskrnl</library>

Modified: branches/rbuild/reactos/drivers/input/kbdclass/kbdclass.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/drivers/input/kbdclass/kbdclass.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/drivers/input/kbdclass/kbdclass.rbuild (original)
+++ branches/rbuild/reactos/drivers/input/kbdclass/kbdclass.rbuild Fri Nov  2 21:36:55 2007
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
 <module name="kbdclass" type="kernelmodedriver" installbase="system32/drivers" installname="kbdclass.sys">
-	<bootstrap installbase="$(CDOUTPUT)" />
+	<bootstrap />
 	<define name="__USE_W32API" />
 	<define name="NDEBUG" />
 	<library>pseh</library>

Modified: branches/rbuild/reactos/drivers/setup/blue/blue.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/drivers/setup/blue/blue.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/drivers/setup/blue/blue.rbuild (original)
+++ branches/rbuild/reactos/drivers/setup/blue/blue.rbuild Fri Nov  2 21:36:55 2007
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
 <module name="blue" type="kernelmodedriver" installbase="system32/drivers" installname="blue.sys">
-	<bootstrap installbase="$(CDOUTPUT)" />
+	<bootstrap />
 	<define name="__USE_W32API" />
 	<include base="ReactOS">include/reactos/drivers</include>
 	<library>ntoskrnl</library>

Modified: branches/rbuild/reactos/drivers/storage/class/cdrom/cdrom.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/drivers/storage/class/cdrom/cdrom.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/drivers/storage/class/cdrom/cdrom.rbuild (original)
+++ branches/rbuild/reactos/drivers/storage/class/cdrom/cdrom.rbuild Fri Nov  2 21:36:55 2007
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd">
 <module name="cdrom" type="kernelmodedriver" installbase="system32/drivers" installname="cdrom.sys" allowwarnings="true">
-	<bootstrap installbase="$(CDOUTPUT)" />
+	<bootstrap />
 	<define name="__USE_W32API" />
 	<library>ntoskrnl</library>
 	<library>hal</library>

Modified: branches/rbuild/reactos/drivers/storage/class/class2/class2.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/drivers/storage/class/class2/class2.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/drivers/storage/class/class2/class2.rbuild (original)
+++ branches/rbuild/reactos/drivers/storage/class/class2/class2.rbuild Fri Nov  2 21:36:55 2007
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd">
 <module name="class2" type="kernelmodedriver" installbase="system32/drivers" installname="class2.sys">
-	<bootstrap installbase="$(CDOUTPUT)" />
+	<bootstrap />
 	<define name="__USE_W32API" />
 	<importlibrary definition="class2.def" />
 	<library>ntoskrnl</library>

Modified: branches/rbuild/reactos/drivers/storage/class/disk/disk.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/drivers/storage/class/disk/disk.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/drivers/storage/class/disk/disk.rbuild (original)
+++ branches/rbuild/reactos/drivers/storage/class/disk/disk.rbuild Fri Nov  2 21:36:55 2007
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd">
 <module name="disk" type="kernelmodedriver" installbase="system32/drivers" installname="disk.sys">
-	<bootstrap installbase="$(CDOUTPUT)" />
+	<bootstrap />
 	<define name="__USE_W32API" />
 	<linkerflag>-lgcc</linkerflag>
 	<library>ntoskrnl</library>

Modified: branches/rbuild/reactos/drivers/storage/floppy/floppy.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/drivers/storage/floppy/floppy.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/drivers/storage/floppy/floppy.rbuild (original)
+++ branches/rbuild/reactos/drivers/storage/floppy/floppy.rbuild Fri Nov  2 21:36:55 2007
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
 <module name="floppy" type="kernelmodedriver" installbase="system32/drivers" installname="floppy.sys">
-	<bootstrap installbase="$(CDOUTPUT)" />
+	<bootstrap />
 	<define name="__USE_W32API" />
 	<include base="floppy">.</include>
 	<library>ntoskrnl</library>

Modified: branches/rbuild/reactos/drivers/storage/ide/atapi/atapi.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/drivers/storage/ide/atapi/atapi.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/drivers/storage/ide/atapi/atapi.rbuild (original)
+++ branches/rbuild/reactos/drivers/storage/ide/atapi/atapi.rbuild Fri Nov  2 21:36:55 2007
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd">
 <module name="atapi" type="kernelmodedriver" installbase="system32/drivers" installname="atapi.sys" allowwarnings="true">
-	<bootstrap installbase="$(CDOUTPUT)" />
+	<bootstrap />
 	<define name="__USE_W32API" />
 	<include base="atapi">.</include>
 	<library>ntoskrnl</library>

Modified: branches/rbuild/reactos/drivers/storage/ide/uniata/uniata.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/drivers/storage/ide/uniata/uniata.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/drivers/storage/ide/uniata/uniata.rbuild (original)
+++ branches/rbuild/reactos/drivers/storage/ide/uniata/uniata.rbuild Fri Nov  2 21:36:55 2007
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd">
 <module name="uniata" type="kernelmodedriver" installbase="system32/drivers" allowwarnings="true" installname="uniata.sys">
-	<bootstrap installbase="$(CDOUTPUT)" />
+	<bootstrap />
 	<define name="__USE_W32API" />
 	<define name="_DEBUG" />
 	<include base="uniata">.</include>

Modified: branches/rbuild/reactos/drivers/storage/port/buslogic/buslogic.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/drivers/storage/port/buslogic/buslogic.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/drivers/storage/port/buslogic/buslogic.rbuild (original)
+++ branches/rbuild/reactos/drivers/storage/port/buslogic/buslogic.rbuild Fri Nov  2 21:36:55 2007
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd">
 <module name="buslogic" type="kernelmodedriver" installbase="system32/drivers" installname="buslogic.sys">
-	<bootstrap installbase="$(CDOUTPUT)" />
+	<bootstrap />
 	<define name="__USE_W32API" />
 	<include base="buslogic">.</include>
 	<library>ntoskrnl</library>

Modified: branches/rbuild/reactos/drivers/storage/port/diskdump/diskdump.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/drivers/storage/port/diskdump/diskdump.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/drivers/storage/port/diskdump/diskdump.rbuild (original)
+++ branches/rbuild/reactos/drivers/storage/port/diskdump/diskdump.rbuild Fri Nov  2 21:36:55 2007
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd">
 <module name="diskdump" type="kernelmodedriver" installbase="system32/drivers" installname="diskdump.sys">
-	<bootstrap installbase="$(CDOUTPUT)" />
+	<bootstrap />
 	<importlibrary definition="diskdump.def" />
 	<define name="__USE_W32API" />
 	<include base="ReactOS">include/reactos/drivers</include>

Modified: branches/rbuild/reactos/drivers/storage/scsiport/scsiport.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/drivers/storage/scsiport/scsiport.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/drivers/storage/scsiport/scsiport.rbuild (original)
+++ branches/rbuild/reactos/drivers/storage/scsiport/scsiport.rbuild Fri Nov  2 21:36:55 2007
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
 <module name="scsiport" type="kernelmodedriver" installbase="system32/drivers" installname="scsiport.sys">
-	<bootstrap installbase="$(CDOUTPUT)" />
+	<bootstrap />
 	<define name="__USE_W32API" />
 	<define name="_SCSIPORT_" />
 	<importlibrary definition="scsiport.def" />

Modified: branches/rbuild/reactos/hal/halppc/up/halup.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/hal/halppc/up/halup.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/hal/halppc/up/halup.rbuild (original)
+++ branches/rbuild/reactos/hal/halppc/up/halup.rbuild Fri Nov  2 21:36:55 2007
@@ -2,7 +2,7 @@
 <!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
 <module name="halppc_up" type="kernelmodedll">
 	<importlibrary definition="../../hal/hal.def" />
-	<bootstrap installbase="$(CDOUTPUT)" nameoncd="hal.dll" />
+	<bootstrap nameoncd="hal.dll" />
 	<include base="halppc_generic">../include</include>
 	<include base="ntoskrnl">include</include>
 	<define name="_DISABLE_TIDENTS" />

Modified: branches/rbuild/reactos/hal/halx86/mp/halmp.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/hal/halx86/mp/halmp.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/hal/halx86/mp/halmp.rbuild (original)
+++ branches/rbuild/reactos/hal/halx86/mp/halmp.rbuild Fri Nov  2 21:36:55 2007
@@ -2,7 +2,7 @@
 <!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
 <module name="halmp" type="kernelmodedll" entrypoint="0">
 	<importlibrary definition="../../hal/hal.def" />
-	<bootstrap installbase="$(CDOUTPUT)" />
+	<bootstrap />
 	<include base="hal_generic">../include</include>
 	<include base="ntoskrnl">include</include>
 	<define name="_DISABLE_TIDENTS" />

Modified: branches/rbuild/reactos/hal/halx86/up/halup.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/hal/halx86/up/halup.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/hal/halx86/up/halup.rbuild (original)
+++ branches/rbuild/reactos/hal/halx86/up/halup.rbuild Fri Nov  2 21:36:55 2007
@@ -2,7 +2,7 @@
 <!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
 <module name="halup" type="kernelmodedll" entrypoint="0">
 	<importlibrary definition="../../hal/hal.def" />
-	<bootstrap installbase="$(CDOUTPUT)" nameoncd="hal.dll" />
+	<bootstrap nameoncd="hal.dll" />
 	<include base="hal_generic">../include</include>
 	<include base="ntoskrnl">include</include>
 	<define name="_DISABLE_TIDENTS" />

Added: branches/rbuild/reactos/installfolders.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/installfolders.rbuild?rev=30072&view=auto
==============================================================================
--- branches/rbuild/reactos/installfolders.rbuild (added)
+++ branches/rbuild/reactos/installfolders.rbuild Fri Nov  2 21:36:55 2007
@@ -1,0 +1,18 @@
+<?xml version="1.0"?>
+<!DOCTYPE group SYSTEM "tools/rbuild/project.dtd">
+<group xmlns:xi="http://www.w3.org/2001/XInclude">
+	
+	<!-- XP SP2 folders -->
+	<installfolder id="1">.</installfolder>
+	<installfolder id="2">system32</installfolder>
+	<installfolder id="3">system32\config</installfolder>
+	<installfolder id="4">system32\drivers</installfolder>
+	<installfolder id="5">system</installfolder>
+	<installfolder id="17">system32\drivers\etc</installfolder>
+	<installfolder id="20">inf</installfolder>
+	<installfolder id="22">fonts</installfolder>
+
+	<!-- Reactos specific folders -->
+	<installfolder id="201">system32\bin</installfolder>
+	<installfolder id="202">media\fonts</installfolder>
+</group>

Propchange: branches/rbuild/reactos/installfolders.rbuild
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: branches/rbuild/reactos/media/drivers/etc/etc.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/media/drivers/etc/etc.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/media/drivers/etc/etc.rbuild (original)
+++ branches/rbuild/reactos/media/drivers/etc/etc.rbuild Fri Nov  2 21:36:55 2007
@@ -1,10 +1,10 @@
 <?xml version="1.0"?>
 <!DOCTYPE group SYSTEM "../../../tools/rbuild/project.dtd">
 <group>
-	<cdfile installbase="$(CDOUTPUT)">services</cdfile>
+	<bootstrapfile>services</bootstrapfile>
 	<installfile installbase="system32/drivers/etc">services</installfile>
 	<if property="KDBG" value="1">
-		<cdfile installbase="$(CDOUTPUT)">KDBinit</cdfile>
+		<bootstrapfile>KDBinit</bootstrapfile>
 		<installfile installbase="system32/drivers/etc">KDBinit</installfile>
 	</if>
 </group>

Modified: branches/rbuild/reactos/media/nls/nls.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/media/nls/nls.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/media/nls/nls.rbuild (original)
+++ branches/rbuild/reactos/media/nls/nls.rbuild Fri Nov  2 21:36:55 2007
@@ -1,9 +1,9 @@
 <?xml version="1.0"?>
 <!DOCTYPE group SYSTEM "../../tools/rbuild/project.dtd">
 <group>
-	<cdfile installbase="$(CDOUTPUT)">c_437.nls</cdfile>
-	<cdfile installbase="$(CDOUTPUT)">c_1252.nls</cdfile>
-	<cdfile installbase="$(CDOUTPUT)">l_intl.nls</cdfile>
+	<bootstrapfile>c_437.nls</bootstrapfile>
+	<bootstrapfile>c_1252.nls</bootstrapfile>
+	<bootstrapfile>l_intl.nls</bootstrapfile>
 
 	<installfile installbase="system32">c_037.nls</installfile>
 	<installfile installbase="system32">c_424.nls</installfile>
@@ -59,4 +59,4 @@
 	<installfile installbase="system32">c_28598.nls</installfile>
 	<installfile installbase="system32">c_28599.nls</installfile>
 	<installfile installbase="system32">l_intl.nls</installfile>
-</group>
+</group>

Modified: branches/rbuild/reactos/ntoskrnl/ntoskrnl.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/ntoskrnl/ntoskrnl.rbuild?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/ntoskrnl/ntoskrnl.rbuild (original)
+++ branches/rbuild/reactos/ntoskrnl/ntoskrnl.rbuild Fri Nov  2 21:36:55 2007
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE module SYSTEM "../tools/rbuild/project.dtd">
 <module name="ntoskrnl" type="kernel" installbase="system32" installname="ntoskrnl.exe">
-	<bootstrap installbase="$(CDOUTPUT)" />
+	<bootstrap />
 	<importlibrary definition="ntoskrnl.def" />
 	<define name="_DISABLE_TIDENTS" />
 	<define name="__NTOSKRNL__" />

Modified: branches/rbuild/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/tools/rbuild/backend/mingw/modulehandler.cpp?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/tools/rbuild/backend/mingw/modulehandler.cpp (original)
+++ branches/rbuild/reactos/tools/rbuild/backend/mingw/modulehandler.cpp Fri Nov  2 21:36:55 2007
@@ -3329,7 +3329,8 @@
 }
 
 void
-MingwIsoModuleHandler::OutputBootstrapfileCopyCommands (
+MingwIsoModuleHandler::OutputBootstrapModuleTargetCopyCommands (
+    const string& bootcdstrapDirectory ,
 	const string& bootcdDirectory )
 {
 	for ( size_t i = 0; i < module.project.modules.size (); i++ )
@@ -3339,12 +3340,26 @@
 			continue;
 		if ( m.bootstrap != NULL )
 		{
-			FileLocation targetFile ( OutputDirectory,
-			                          m.bootstrap->base.length () > 0
-			                                   ? bootcdDirectory + sSep + m.bootstrap->base
-			                                   : bootcdDirectory,
-			                          m.bootstrap->nameoncd );
-			OutputCopyCommand ( *m.output, targetFile );
+            if (m.bootstrap->archDependent == true)
+            {
+			    FileLocation targetFile ( OutputDirectory,
+			                              m.bootstrap->base.length () > 0
+			                                       ? bootcdstrapDirectory + sSep + m.bootstrap->base
+			                                       : bootcdstrapDirectory,
+			                              m.bootstrap->nameoncd );
+
+			    OutputCopyCommand ( *m.output, targetFile );
+            }
+            else
+            {
+                FileLocation targetFile ( OutputDirectory,
+                          m.bootstrap->base.length () > 0
+                                   ? bootcdDirectory + sSep + m.bootstrap->base
+                                   : bootcdDirectory,
+                          m.bootstrap->nameoncd );
+
+                OutputCopyCommand ( *m.output, targetFile );
+            }
 		}
 	}
 }
@@ -3362,6 +3377,22 @@
 		                              : bootcdDirectory,
 		                          cdfile.target->name );
 		OutputCopyCommand ( *cdfile.source, targetFile );
+	}
+}
+
+void
+MingwIsoModuleHandler::OutputBootstrapfileCopyCommands (
+	const string& bootcdDirectory )
+{
+    for ( size_t i = 0; i < module.project.bootstrapfiles.size (); i++ )
+	{
+		const BootstrapFile& bootfile = *module.project.bootstrapfiles[i];
+		FileLocation targetFile ( OutputDirectory,
+		                          bootfile.target->relative_path.length () > 0
+		                              ? bootcdDirectory + sSep + bootfile.target->relative_path
+		                              : bootcdDirectory,
+		                          bootfile.target->name );
+		OutputCopyCommand ( *bootfile.source, targetFile );
 	}
 }
 
@@ -3449,11 +3480,13 @@
 MingwIsoModuleHandler::GenerateIsoModuleTarget ()
 {
 	string bootcdDirectory = "cd";
+    string bootcdStrapDirectory = bootcdDirectory + sSep + Environment::GetBootstrapCdOutputPath();
+
 	FileLocation bootcd ( OutputDirectory,
 	                      bootcdDirectory,
 	                      "" );
 	FileLocation bootcdReactos ( OutputDirectory,
-	                             bootcdDirectory + sSep + Environment::GetCdOutputPath (),
+                                 bootcdStrapDirectory,
 	                             "" );
 	vector<FileLocation> vSourceFiles, vCdFiles;
 	vector<FileLocation> vCdDirectories;
@@ -3523,7 +3556,9 @@
 	fprintf ( fMakefile,
 	          "\t-@${rm} %s 2>$(NUL)\n",
 	          backend->GetFullName ( reactosInf ).c_str () );
-	OutputBootstrapfileCopyCommands ( bootcdDirectory );
+
+    OutputBootstrapfileCopyCommands ( bootcdStrapDirectory );
+	OutputBootstrapModuleTargetCopyCommands ( bootcdStrapDirectory , bootcdDirectory);
 	OutputCdfileCopyCommands ( bootcdDirectory );
 
 	if (module.type == IsoRegTest)
@@ -3670,7 +3705,7 @@
 
 	FileLocation isoboot ( OutputDirectory, "boot" + sSep + "freeldr" + sSep + "bootsect", bootloader );
 
-	string reactosDirectory = "reactos";
+    string reactosDirectory = Environment::GetArch();// "reactos";
 	string livecdReactosNoFixup = livecdDirectory + sSep + reactosDirectory;
 	FileLocation livecdReactos ( OutputDirectory,
 	                             livecdReactosNoFixup,

Modified: branches/rbuild/reactos/tools/rbuild/backend/mingw/modulehandler.h
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/tools/rbuild/backend/mingw/modulehandler.h?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/tools/rbuild/backend/mingw/modulehandler.h (original)
+++ branches/rbuild/reactos/tools/rbuild/backend/mingw/modulehandler.h Fri Nov  2 21:36:55 2007
@@ -434,8 +434,9 @@
 	void GetBootstrapCdFiles ( std::vector<FileLocation>& out ) const;
 	void GetNonModuleCdFiles ( std::vector<FileLocation>& out ) const;
 	void GetCdFiles ( std::vector<FileLocation>& out ) const;
-	void OutputBootstrapfileCopyCommands ( const std::string& bootcdDirectory );
+	void OutputBootstrapModuleTargetCopyCommands ( const std::string& bootcdstrapDirectory , const std::string& bootcdDirectory );
 	void OutputCdfileCopyCommands ( const std::string& bootcdDirectory );
+    void OutputBootstrapfileCopyCommands ( const std::string& bootcdDirectory );
 };
 
 

Modified: branches/rbuild/reactos/tools/rbuild/bootstrap.cpp
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/tools/rbuild/bootstrap.cpp?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/tools/rbuild/bootstrap.cpp (original)
+++ branches/rbuild/reactos/tools/rbuild/bootstrap.cpp Fri Nov  2 21:36:55 2007
@@ -103,6 +103,24 @@
 	else
 		base = "";
 
+    archDependent = true;
+
+    att = node.GetAttribute ( "archDependent", false );
+	if ( att != NULL )
+	{
+        const char* p = att->value.c_str();
+		if ( !stricmp ( p, TRUE_STRING ) || !stricmp ( p, YES_STRING ) )
+			archDependent = true;
+		else if ( !stricmp ( p, FALSE_STRING ) || !stricmp ( p, NO_STRING ) )
+			archDependent = false;
+		else
+		{
+			throw XMLInvalidBuildFileException (
+				node.location,
+				"attribute 'archDependent' of <bootstrap> element can only be 'true' or 'false'" );
+		}
+	}
+
 	att = node.GetAttribute ( "nameoncd", false );
 	if ( att != NULL )
 		nameoncd = att->value;

Modified: branches/rbuild/reactos/tools/rbuild/cdfile.cpp
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/tools/rbuild/cdfile.cpp?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/tools/rbuild/cdfile.cpp (original)
+++ branches/rbuild/reactos/tools/rbuild/cdfile.cpp Fri Nov  2 21:36:55 2007
@@ -34,6 +34,18 @@
 		return path;
 }
 
+string
+BootstrapFile::ReplaceVariable ( const string& name,
+                          const string& value,
+                          string path )
+{
+	size_t i = path.find ( name );
+	if ( i != string::npos )
+		return path.replace ( i, name.length (), value );
+	else
+		return path;
+}
+
 CDFile::CDFile ( const Project& project,
                  const XMLElement& cdfileNode,
                  const string& path )
@@ -57,3 +69,27 @@
 	                            nameoncd ? att->value : cdfileNode.value,
 	                            &cdfileNode );
 }
+
+BootstrapFile::BootstrapFile ( const Project& project,
+                 const XMLElement& cdfileNode,
+                 const string& path )
+	: XmlNode ( project, cdfileNode )
+{
+	const XMLAttribute* att = cdfileNode.GetAttribute ( "installbase", false );
+	string target_relative_directory;
+	if ( att != NULL )
+		target_relative_directory = ReplaceVariable ( "$(CDOUTPUT)", Environment::GetCdOutputPath (), att->value );
+	else
+		target_relative_directory = "";
+
+	const XMLAttribute* nameoncd = cdfileNode.GetAttribute ( "nameoncd", false );
+
+	source = new FileLocation ( SourceDirectory,
+	                            path,
+	                            cdfileNode.value,
+	                            &cdfileNode );
+	target = new FileLocation ( OutputDirectory,
+	                            target_relative_directory,
+	                            nameoncd ? att->value : cdfileNode.value,
+	                            &cdfileNode );
+}

Modified: branches/rbuild/reactos/tools/rbuild/linkerscript.cpp
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/tools/rbuild/linkerscript.cpp?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/tools/rbuild/linkerscript.cpp (original)
+++ branches/rbuild/reactos/tools/rbuild/linkerscript.cpp Fri Nov  2 21:36:55 2007
@@ -76,3 +76,18 @@
     else
         section = "DefaultInstall";
 }
+
+InstallFolder::InstallFolder ( const XMLElement& node_)
+	: node(node_)
+{
+    ProcessXML ();
+}
+
+void
+InstallFolder::ProcessXML()
+{
+    const XMLAttribute* att = node.GetAttribute ( "id", true );
+	assert(att);
+	id = att->value;
+    name = node.value;
+}

Modified: branches/rbuild/reactos/tools/rbuild/project.cpp
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/tools/rbuild/project.cpp?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/tools/rbuild/project.cpp (original)
+++ branches/rbuild/reactos/tools/rbuild/project.cpp Fri Nov  2 21:36:55 2007
@@ -73,16 +73,23 @@
 /* static */ string
 Environment::GetInstallPath ()
 {
-	string defaultInstall = GetCdOutputPath ();
+	//string defaultInstall = GetCdOutputPath ();
 	return GetEnvironmentVariablePathOrDefault ( "ROS_INSTALL",
-	                                             defaultInstall );
+	                                             /*defaultInstall*/ "reactos" );
 }
 
 /* static */ string
 Environment::GetCdOutputPath ()
 {
 	return GetEnvironmentVariablePathOrDefault ( "ROS_CDOUTPUT",
-	                                             "reactos" );
+	                                             "");
+}
+
+/* static */ string
+Environment::GetBootstrapCdOutputPath ()
+{
+	return GetEnvironmentVariablePathOrDefault ( "ROS_CDBOOTSTRAPOUTPUT",
+	                                             GetArch());
 }
 
 /* static */ string
@@ -193,6 +200,8 @@
 		delete linkerFlags[i];
 	for ( i = 0; i < cdfiles.size (); i++ )
 		delete cdfiles[i];
+    for ( i = 0; i < bootstrapfiles.size (); i++ )
+		delete bootstrapfiles[i];
 	for ( i = 0; i < installfiles.size (); i++ )
 		delete installfiles[i];
 	delete head;
@@ -401,6 +410,8 @@
 		linkerFlags[i]->ProcessXML ();
 	for ( i = 0; i < modules.size (); i++ )
 		modules[i]->ProcessXML ();
+    for ( i = 0; i < bootstrapfiles.size (); i++ )
+		bootstrapfiles[i]->ProcessXML ();
 	for ( i = 0; i < cdfiles.size (); i++ )
 		cdfiles[i]->ProcessXML ();
 	for ( i = 0; i < installfiles.size (); i++ )
@@ -477,6 +488,12 @@
 		cdfiles.push_back ( cdfile );
 		subs_invalid = true;
 	}
+    else if ( e.name == "bootstrapfile" )
+	{
+		BootstrapFile* bootstrapfile = new BootstrapFile ( *this, e, path );
+		bootstrapfiles.push_back ( bootstrapfile );
+		subs_invalid = true;
+	}
 	else if ( e.name == "installfile" )
 	{
 		InstallFile* installfile = new InstallFile ( *this, e, path );
@@ -493,7 +510,13 @@
 	{
 		Contributor* contributor = new Contributor ( e );
 		contributors.push_back ( contributor );
-		subs_invalid = true;
+		subs_invalid = false;
+	}
+    else if ( e.name == "installfolder" )
+	{
+		InstallFolder* installFolder = new InstallFolder ( e );
+		installFolders.push_back ( installFolder );
+		subs_invalid = false;
 	}
 	else if ( e.name == "directory" )
 	{
@@ -596,6 +619,18 @@
 	return NULL;
 }
 
+const Contributor*
+Project::LocateContributor ( const string& alias ) const
+{
+	for ( size_t i = 0; i < contributors.size (); i++ )
+	{
+		if ( contributors[i]->alias == alias )
+			return contributors[i];
+	}
+
+	return NULL;
+}
+
 const std::string&
 Project::GetProjectFilename () const
 {

Modified: branches/rbuild/reactos/tools/rbuild/rbuild.h
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/tools/rbuild/rbuild.h?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/tools/rbuild/rbuild.h (original)
+++ branches/rbuild/reactos/tools/rbuild/rbuild.h Fri Nov  2 21:36:55 2007
@@ -99,6 +99,7 @@
 class Bootstrap;
 class CDFile;
 class InstallFile;
+class BootstrapFile;
 class PchFile;
 class StubbedComponent;
 class StubbedSymbol;
@@ -117,6 +118,7 @@
 class AutoManifest;
 class AutoResource;
 class InstallComponent;
+class InstallFolder;
 
 typedef std::map<std::string,Directory*> directory_map;
 
@@ -199,6 +201,7 @@
 	static std::string GetIntermediatePath ();
 	static std::string GetOutputPath ();
 	static std::string GetCdOutputPath ();
+    static std::string GetBootstrapCdOutputPath ();
 	static std::string GetInstallPath ();
 	static std::string GetAutomakeFile ( const std::string& defaultFile );
 	static std::string GetEnvironmentVariablePathOrDefault ( const std::string& name,
@@ -262,10 +265,12 @@
 	XMLIncludes xmlbuildfiles;
 	std::vector<LinkerFlag*> linkerFlags;
 	std::vector<CDFile*> cdfiles;
+    std::vector<BootstrapFile*> bootstrapfiles;
 	std::vector<InstallFile*> installfiles;
 	std::vector<Module*> modules;
 	std::vector<Language*> languages;
     std::vector<Contributor*> contributors;
+    std::vector<InstallFolder*> installFolders;
 	IfableData non_if_data;
 	ArchitectureType GetArchitectureType ( const std::string& location,
 	                           const XMLAttribute& attribute );
@@ -280,6 +285,7 @@
 	ArchitectureType architectureType;
 	void ProcessXML ( const std::string& path );
 	Module* LocateModule ( const std::string& name );
+    const Contributor* LocateContributor ( const std::string& alias ) const;
 	const Module* LocateModule ( const std::string& name ) const;
 	const std::string& GetProjectFilename () const;
 	std::string ResolveProperties ( const std::string& s ) const;
@@ -339,6 +345,19 @@
 	HostDefault,
 	HostTrue
 };
+
+// reference : http://www.msfn.org/board/lofiversion/index.php/t29964.html
+
+#define	SETUPAPI_SOURCEDRIVE    "1"   //(the directory from which the INF file was installed) 
+#define	SETUPAPI_OS             "10"  //(%SystemRoot%) 
+#define	SETUPAPI_SYSTEM         "11"  //(%SystemRoot%\system32) 
+#define SETUPAPI_DRIVERS        "12"  //(%SystemRoot%\system32\drivers)
+#define SETUPAPI_INF            "17"  //(%SystemRoot%\inf)
+#define SETUPAPI_HELP           "18"  //(%SystemRoot%\Help)
+#define SETUPAPI_FONTS          "20"  //(%SystemRoot%\Fonts)
+#define SETUPAPI_ROOT           "24"  //(%SystemDrive%)
+#define SETUPAPI_SHARED         "25"  //(%ALLUSERSPROFILE%\Shared Documents)
+#define SETUPAPI_USERPROFILE    "53"  //(%USERPROFILE%)
 
 class FileLocation
 {
@@ -773,6 +792,17 @@
 	void ProcessXML();
 };
 
+class InstallFolder
+{
+public:
+	const XMLElement& node;
+    std::string id;
+    std::string name;
+
+	InstallFolder ( const XMLElement& node);
+	~InstallFolder ();
+	void ProcessXML();
+};
 
 class Property
 {
@@ -938,6 +968,7 @@
 	const XMLElement& node;
 	std::string base;
 	std::string nameoncd;
+    bool archDependent;
 
 	Bootstrap ( const Project& project,
 	            const Module* module,
@@ -968,6 +999,20 @@
 	                                     std::string path );
 };
 
+class BootstrapFile : public XmlNode
+{
+public:
+	FileLocation *source;
+	FileLocation *target;
+
+	BootstrapFile ( const Project& project,
+	         const XMLElement& bootstrapNode,
+	         const std::string& path );
+private:
+	static std::string ReplaceVariable ( const std::string& name,
+	                                     const std::string& value,
+	                                     std::string path );
+};
 
 class InstallFile : public XmlNode
 {

Modified: branches/rbuild/reactos/tools/rbuild/syssetupgenerator.cpp
URL: http://svn.reactos.org/svn/reactos/branches/rbuild/reactos/tools/rbuild/syssetupgenerator.cpp?rev=30072&r1=30071&r2=30072&view=diff
==============================================================================
--- branches/rbuild/reactos/tools/rbuild/syssetupgenerator.cpp (original)
+++ branches/rbuild/reactos/tools/rbuild/syssetupgenerator.cpp Fri Nov  2 21:36:55 2007
@@ -67,13 +67,11 @@
 	InfHostCloseFile ( inf );
 }
 
-#define DIRECTORYID_SYSTEM32	"11"
-
 string
 SysSetupGenerator::GetDirectoryId ( const Module& module )
 {
 	if ( module.install && ToLower ( module.install->relative_path ) == "system32" )
-		return DIRECTORYID_SYSTEM32;
+		return SETUPAPI_SYSTEM;
 	throw InvalidOperationException ( __FILE__,
 	                                  __LINE__ );
 }




More information about the Ros-diffs mailing list