Add ROS_ARCH environment variable
authorHervé Poussineau <hpoussin@reactos.org>
Fri, 3 Aug 2007 11:35:01 +0000 (11:35 +0000)
committerHervé Poussineau <hpoussin@reactos.org>
Fri, 3 Aug 2007 11:35:01 +0000 (11:35 +0000)
Set -r option of rbuild as mandatory

svn path=/trunk/; revision=28124

reactos/Makefile
reactos/ReactOS-i386.rbuild [moved from reactos/ReactOS.rbuild with 100% similarity]
reactos/tools/rbuild/exception.cpp
reactos/tools/rbuild/exception.h
reactos/tools/rbuild/rbuild.cpp
reactos/tools/tools.mak

index bd2aa36..d85357f 100644 (file)
 #
 # Accepted environment variables:
 #
+#    ROS_ARCH
+#        This variable specifies the name of the architecture to build ReactOS for.
+#        The variable defaults to i386.
+#
 #    ROS_PREFIX
 #        This variable specifies the prefix of the MinGW installation. On Windows
 #        a prefix is usually not needed, but on linux it is usually "mingw32". If
@@ -323,13 +327,19 @@ else # mingw32-windows
        endif
 endif
 
+ifneq ($(ROS_ARCH),)
+  ARCH := $(ROS_ARCH)
+else
+  ARCH := i386
+endif
+
 ifneq ($(ROS_INTERMEDIATE),)
   INTERMEDIATE := $(ROS_INTERMEDIATE)
 else
   ifneq ($(ROS_CDOUTPUT),)
     INTERMEDIATE := obj-$(ROS_CDOUTPUT)
   else
-    INTERMEDIATE := obj-i386
+    INTERMEDIATE := obj-$(ARCH)
   endif
 endif
 INTERMEDIATE_ := $(INTERMEDIATE)$(SEP)
@@ -340,7 +350,7 @@ else
   ifneq ($(ROS_CDOUTPUT),)
     OUTPUT := output-$(ROS_CDOUTPUT)
   else
-    OUTPUT := output-i386
+    OUTPUT := output-$(ARCH)
   endif
 endif
 OUTPUT_ := $(OUTPUT)$(SEP)
@@ -392,7 +402,6 @@ include lib/lib.mak
 include tools/tools.mak
 include boot/freeldr/bootsect/bootsect.mak
 -include $(ROS_AUTOMAKE)
-include tools/nci/nci.mak
 
 PREAUTO := \
        $(BIN2C_TARGET) \
@@ -402,17 +411,17 @@ PREAUTO := \
        $(BUGCODES_RC) \
        $(ERRCODES_H) \
        $(ERRCODES_RC) \
-       $(GENDIB_DIB_FILES)
+       $(GENDIB_DIB_FILES) \
+       $(NCI_SERVICE_FILES)
 
 POSTAUTO : \
        psdk \
-       $(IDL_FILES) \
-       $(NCI_SERVICE_FILES)
+       $(IDL_FILES)
 
 $(ROS_AUTOMAKE): $(RBUILD_TARGET) $(PREAUTO) $(XMLBUILDFILES)
        ${mkdir} $(INTERMEDIATE_)media$(SEP)inf 2>$(NUL)
        $(ECHO_RBUILD)
-       $(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) mingw
+       $(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) -rReactOS-$(ARCH).rbuild mingw
        @$(MAKE) POSTAUTO
 
 world: all bootcd livecd
index a375f98..d19179a 100644 (file)
@@ -51,6 +51,13 @@ void Exception::SetMessageV ( const char* message, va_list args )
 }
 
 
+MissingArgumentException::MissingArgumentException ( const string& argument )
+       : Exception ( "Argument '%s' is missing",
+                     argument.c_str () )
+{
+}
+
+
 OutOfMemoryException::OutOfMemoryException ()
        : Exception ( "Out of memory" )
 {
index 3b1fbb5..48cd35d 100644 (file)
@@ -39,6 +39,13 @@ private:
 };
 
 
+class MissingArgumentException : public Exception
+{
+public:
+       MissingArgumentException ( const std::string& argument );
+};
+
+
 class InvalidOperationException : public Exception
 {
 public:
index e844727..abe255f 100644 (file)
@@ -33,7 +33,7 @@ using std::string;
 using std::vector;
 
 static string BuildSystem;
-static string RootXmlFile = "ReactOS.rbuild";
+static string RootXmlFile;
 static Configuration configuration;
 
 bool
@@ -239,12 +239,11 @@ main ( int argc, char** argv )
        if ( !ParseArguments ( argc, argv ) )
        {
                printf ( "Generates project files for buildsystems\n\n" );
-               printf ( "  rbuild [switches] buildsystem\n\n" );
+               printf ( "  rbuild [switches] -r{rootfile.rbuild} buildsystem\n\n" );
                printf ( "Switches:\n" );
                printf ( "  -v            Be verbose.\n" );
                printf ( "  -c            Clean as you go. Delete generated files as soon as they are not\n" );
                printf ( "                needed anymore.\n" );
-               printf ( "  -r{file.rbuild}  Name of the root rbuild file. Default is ReactOS.rbuild.\n" );
                printf ( "  -dd           Disable automatic dependencies.\n" );
                printf ( "  -dm{module}   Check only automatic dependencies for this module.\n" );
                printf ( "  -ud           Disable multiple source files per compilation unit.\n" );
@@ -267,6 +266,9 @@ main ( int argc, char** argv )
        }
        try
        {
+               if ( RootXmlFile.length () == 0 )
+                       throw MissingArgumentException ( "-r" );
+
                string projectFilename ( RootXmlFile );
 
                printf ( "Reading build files..." );
index 7840ab3..cbc5f41 100644 (file)
@@ -48,6 +48,7 @@ include tools/cdmake/cdmake.mak
 include tools/dbgprint/dbgprint.mak
 include tools/gendib/gendib.mak
 include tools/mkhive/mkhive.mak
+include tools/nci/nci.mak
 include tools/pefixup.mak
 include tools/raddr2line.mak
 include tools/rbuild/rbuild.mak