diff --git a/reactos/tools/rbuild/backend/mingw/modulehandler.cpp b/reactos/tools/rbuild/backend/mingw/modulehandler.cpp index 43df9ba8707..af98501b3aa 100644 --- a/reactos/tools/rbuild/backend/mingw/modulehandler.cpp +++ b/reactos/tools/rbuild/backend/mingw/modulehandler.cpp @@ -267,6 +267,7 @@ MingwModuleHandler::GenerateMacros ( const vector& files, const vector* includes, const vector& defines, + const vector* ifs, const string& cflags_macro, const string& nasmflags_macro, const string& objs_macro) const @@ -319,6 +320,35 @@ MingwModuleHandler::GenerateMacros ( } fprintf ( fMakefile, "\n" ); } + + if ( ifs && ifs->size() ) + { + for ( size_t i = 0; i < module.ifs.size(); i++ ) + { + If& rIf = *(*ifs)[i]; + if ( rIf.defines.size() || rIf.files.size() || rIf.ifs.size() ) + { + fprintf ( + fMakefile, + "ifeq ($(%s),\"%s\")\n", + rIf.property.c_str(), + rIf.value.c_str() ); + GenerateMacros ( + module, + "+=", + rIf.files, + NULL, + rIf.defines, + &rIf.ifs, + cflags_macro, + nasmflags_macro, + objs_macro ); + fprintf ( + fMakefile, + "endif\n\n" ); + } + } + } } void @@ -334,6 +364,7 @@ MingwModuleHandler::GenerateMacros ( module.files, &module.includes, module.defines, + NULL, cflags_macro, nasmflags_macro, objs_macro ); @@ -342,7 +373,7 @@ MingwModuleHandler::GenerateMacros ( for ( size_t i = 0; i < module.ifs.size(); i++ ) { If& rIf = *module.ifs[i]; - if ( rIf.defines.size() || rIf.files.size() ) + if ( rIf.defines.size() || rIf.files.size() || rIf.ifs.size() ) { fprintf ( fMakefile, @@ -355,6 +386,7 @@ MingwModuleHandler::GenerateMacros ( rIf.files, NULL, rIf.defines, + &rIf.ifs, cflags_macro, nasmflags_macro, objs_macro ); diff --git a/reactos/tools/rbuild/backend/mingw/modulehandler.h b/reactos/tools/rbuild/backend/mingw/modulehandler.h index d2715c77958..8570eb079e9 100644 --- a/reactos/tools/rbuild/backend/mingw/modulehandler.h +++ b/reactos/tools/rbuild/backend/mingw/modulehandler.h @@ -51,6 +51,7 @@ private: const std::vector& files, const std::vector* includes, const std::vector& defines, + const std::vector* ifs, const std::string& cflags_macro, const std::string& nasmflags_macro, const std::string& objs_macro) const;