From 1a47ede2ff1f23b7f92aa34a4c1e63548bdeeb99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Fri, 3 Aug 2007 11:35:01 +0000 Subject: [PATCH] Add ROS_ARCH environment variable Set -r option of rbuild as mandatory svn path=/trunk/; revision=28124 --- reactos/Makefile | 23 +++++++++++++------ .../{ReactOS.rbuild => ReactOS-i386.rbuild} | 0 reactos/tools/rbuild/exception.cpp | 7 ++++++ reactos/tools/rbuild/exception.h | 7 ++++++ reactos/tools/rbuild/rbuild.cpp | 8 ++++--- reactos/tools/tools.mak | 1 + 6 files changed, 36 insertions(+), 10 deletions(-) rename reactos/{ReactOS.rbuild => ReactOS-i386.rbuild} (100%) diff --git a/reactos/Makefile b/reactos/Makefile index bd2aa36b7d9..d85357f9569 100644 --- a/reactos/Makefile +++ b/reactos/Makefile @@ -49,6 +49,10 @@ # # 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 diff --git a/reactos/ReactOS.rbuild b/reactos/ReactOS-i386.rbuild similarity index 100% rename from reactos/ReactOS.rbuild rename to reactos/ReactOS-i386.rbuild diff --git a/reactos/tools/rbuild/exception.cpp b/reactos/tools/rbuild/exception.cpp index a375f984620..d19179a3304 100644 --- a/reactos/tools/rbuild/exception.cpp +++ b/reactos/tools/rbuild/exception.cpp @@ -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" ) { diff --git a/reactos/tools/rbuild/exception.h b/reactos/tools/rbuild/exception.h index 3b1fbb5dda9..48cd35d3275 100644 --- a/reactos/tools/rbuild/exception.h +++ b/reactos/tools/rbuild/exception.h @@ -39,6 +39,13 @@ private: }; +class MissingArgumentException : public Exception +{ +public: + MissingArgumentException ( const std::string& argument ); +}; + + class InvalidOperationException : public Exception { public: diff --git a/reactos/tools/rbuild/rbuild.cpp b/reactos/tools/rbuild/rbuild.cpp index e844727769a..abe255ff038 100644 --- a/reactos/tools/rbuild/rbuild.cpp +++ b/reactos/tools/rbuild/rbuild.cpp @@ -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..." ); diff --git a/reactos/tools/tools.mak b/reactos/tools/tools.mak index 7840ab3e036..cbc5f417af7 100644 --- a/reactos/tools/tools.mak +++ b/reactos/tools/tools.mak @@ -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