Generate object macros before target macros
Modified: branches/xmlbuildsystem/reactos/tools/cabman/cabman.mak
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/tools.mak
_____
Modified: branches/xmlbuildsystem/reactos/tools/cabman/cabman.mak
--- branches/xmlbuildsystem/reactos/tools/cabman/cabman.mak
2005-03-25 13:40:33 UTC (rev 14310)
+++ branches/xmlbuildsystem/reactos/tools/cabman/cabman.mak
2005-03-25 14:31:00 UTC (rev 14311)
@@ -38,7 +38,7 @@
.PHONY: cabman
cabman: $(CABMAN_TARGET)
-$(CABMAN_TARGET): $(CABMAN_OBJECTS) $(CABMAN_HOST_LIBS) $(CABMAN_OUT)
+$(CABMAN_TARGET1): $(CABMAN_OBJECTS) $(CABMAN_HOST_LIBS) $(CABMAN_OUT)
$(ECHO_LD)
${host_gpp} $(CABMAN_OBJECTS) $(CABMAN_HOST_LFLAGS) -o $@
_____
Modified:
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp
--- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp
2005-03-25 13:40:33 UTC (rev 14310)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/mingw.cpp
2005-03-25 14:31:00 UTC (rev 14311)
@@ -142,6 +142,8 @@
size_t iend = v.size ();
for ( i = 0; i < iend; i++ )
+ v[i]->GenerateObjectMacro();
+ for ( i = 0; i < iend; i++ )
v[i]->GenerateTargetMacro();
fprintf ( fMakefile, "\n" );
@@ -419,26 +421,6 @@
d.CreateRule ( fMakefile, "" );
if ( i ) fprintf ( fMakefile, "endif\n" );
}
- /*if ( directories.size () == 0 )
- return;
-
- set_string::iterator i;
- for ( i = directories.begin ();
- i != directories.end ();
- i++ )
- {
- if ( IncludeDirectoryTarget ( *i ) )
- {
- fprintf ( fMakefile,
- "%s: $(RMKDIR_TARGET)\n",
- i->c_str () );
- fprintf ( fMakefile,
- "\t${mkdir} %s\n\n",
- i->c_str () );
- }
- }
-
- directories.clear ();*/
}
string
_____
Modified:
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.cpp
---
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.cpp 2005-03-25 13:40:33 UTC (rev 14310)
+++
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.cpp 2005-03-25 14:31:00 UTC (rev 14311)
@@ -614,6 +614,42 @@
}
}
+ const vector<If*>& ifs = data.ifs;
+ for ( i = 0; i < ifs.size(); i++ )
+ {
+ If& rIf = *ifs[i];
+ if ( rIf.data.defines.size()
+ || rIf.data.includes.size()
+ || rIf.data.libraries.size()
+ || rIf.data.files.size()
+ || rIf.data.ifs.size() )
+ {
+ fprintf (
+ fMakefile,
+ "ifeq (\"$(%s)\",\"%s\")\n",
+ rIf.property.c_str(),
+ rIf.value.c_str() );
+ GenerateMacros (
+ "+=",
+ rIf.data,
+ NULL,
+ NULL );
+ fprintf (
+ fMakefile,
+ "endif\n\n" );
+ }
+ }
+}
+
+void
+MingwModuleHandler::GenerateObjectMacros (
+ const char* assignmentOperation,
+ const IfableData& data,
+ const vector<CompilerFlag*>* compilerFlags,
+ const vector<LinkerFlag*>* linkerFlags )
+{
+ size_t i;
+
const vector<File*>& files = data.files;
if ( files.size () > 0 )
{
@@ -666,7 +702,7 @@
"ifeq (\"$(%s)\",\"%s\")\n",
rIf.property.c_str(),
rIf.value.c_str() );
- GenerateMacros (
+ GenerateObjectMacros (
"+=",
rIf.data,
NULL,
@@ -887,7 +923,7 @@
const string& libsMacro )
{
string target ( GetTargetMacro ( module ) );
- string target_folder (
GetDirectory(GetTargetFilename(module,NULL)) );
+ string target_folder ( GetDirectory ( GetTargetFilename (
module, NULL ) ) );
fprintf ( fMakefile,
"%s: %s %s $(RSYM_TARGET)\n",
@@ -1107,13 +1143,37 @@
module.name.c_str () );
}
+string
+MingwModuleHandler::GetModuleTargets ( const Module& module )
+{
+ if ( module.type == ObjectLibrary )
+ return GetObjectsMacro ( module );
+ else
+ return GetTargetFilename ( module, NULL );
+}
+
void
+MingwModuleHandler::GenerateObjectMacro ()
+{
+ objectsMacro = ssprintf ("%s_OBJS", module.name.c_str ());
+
+ GenerateObjectMacros (
+ "=",
+ module.non_if_data,
+ &module.compilerFlags,
+ &module.linkerFlags );
+
+ // future references to the macro will be to get its values
+ objectsMacro = ssprintf ("$(%s)", objectsMacro.c_str ());
+}
+
+void
MingwModuleHandler::GenerateTargetMacro ()
{
fprintf ( fMakefile,
"%s := %s\n",
- GetTargetMacro(module,false).c_str (),
- GetTargetFilename(module,NULL).c_str () );
+ GetTargetMacro ( module, false ).c_str (),
+ GetModuleTargets ( module ).c_str () );
}
void
@@ -1123,7 +1183,6 @@
nasmflagsMacro = ssprintf ("%s_NASMFLAGS", module.name.c_str
());
windresflagsMacro = ssprintf ("%s_RCFLAGS", module.name.c_str
());
linkerflagsMacro = ssprintf ("%s_LFLAGS", module.name.c_str ());
- objectsMacro = ssprintf ("%s_OBJS", module.name.c_str ());
libsMacro = ssprintf("%s_LIBS", module.name.c_str ());
linkDepsMacro = ssprintf ("%s_LINKDEPS", module.name.c_str ());
@@ -1202,7 +1261,6 @@
// future references to the macros will be to get their values
cflagsMacro = ssprintf ("$(%s)", cflagsMacro.c_str ());
nasmflagsMacro = ssprintf ("$(%s)", nasmflagsMacro.c_str ());
- objectsMacro = ssprintf ("$(%s)", objectsMacro.c_str ());
}
void
_____
Modified:
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.h
---
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.h 2005-03-25 13:40:33 UTC (rev 14310)
+++
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.h 2005-03-25 14:31:00 UTC (rev 14311)
@@ -36,6 +36,8 @@
const Module& module,
string_list* pclean_files );
+ std::string GetModuleTargets ( const Module& module );
+ void GenerateObjectMacro();
void GenerateTargetMacro();
void GenerateOtherMacros();
@@ -101,6 +103,10 @@
const IfableData& data,
const std::vector<CompilerFlag*>*
compilerFlags,
const std::vector<LinkerFlag*>*
linkerFlags );
+ void GenerateObjectMacros ( const char* assignmentOperation,
+ const IfableData& data,
+ const std::vector<CompilerFlag*>*
compilerFlags,
+ const std::vector<LinkerFlag*>*
linkerFlags );
std::string GenerateGccIncludeParameters () const;
std::string GenerateGccParameters () const;
std::string GenerateNasmParameters () const;
_____
Modified: branches/xmlbuildsystem/reactos/tools/tools.mak
--- branches/xmlbuildsystem/reactos/tools/tools.mak 2005-03-25
13:40:33 UTC (rev 14310)
+++ branches/xmlbuildsystem/reactos/tools/tools.mak 2005-03-25
14:31:00 UTC (rev 14311)
@@ -5,11 +5,13 @@
TOOLS_OUT = $(OUTPUT_)$(TOOLS_BASE)
TOOLS_OUT_ = $(TOOLS_OUT)$(SEP)
+.LOW_RESOLUTION_TIME: $(TOOLS_INT)
$(TOOLS_INT): $(INTERMEDIATE)
$(ECHO_MKDIR)
${mkdir} $@
ifneq ($(INTERMEDIATE),$(OUTPUT))
+.LOW_RESOLUTION_TIME: $(TOOLS_OUT)
$(TOOLS_OUT): $(OUTPUT)
$(ECHO_MKDIR)
${mkdir} $@