mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 16:32:59 +00:00
Better error reporting in case of define override
Support empty defines svn path=/trunk/; revision=30149
This commit is contained in:
parent
cdc0ef2243
commit
69251b5abf
2 changed files with 34 additions and 27 deletions
|
@ -644,11 +644,8 @@ MingwModuleHandler::GenerateGccDefineParametersFromVector (
|
||||||
parameters += "$(QT)";
|
parameters += "$(QT)";
|
||||||
parameters += "-D";
|
parameters += "-D";
|
||||||
parameters += define.name;
|
parameters += define.name;
|
||||||
if (define.value.length () > 0)
|
parameters += "=";
|
||||||
{
|
parameters += define.value;
|
||||||
parameters += "=";
|
|
||||||
parameters += define.value;
|
|
||||||
}
|
|
||||||
if (define.name.find('(') != string::npos)
|
if (define.name.find('(') != string::npos)
|
||||||
parameters += "$(QT)";
|
parameters += "$(QT)";
|
||||||
used_defs.insert(used_defs.begin(),define.name);
|
used_defs.insert(used_defs.begin(),define.name);
|
||||||
|
@ -766,7 +763,7 @@ MingwModuleHandler::GenerateMacro (
|
||||||
const char* assignmentOperation,
|
const char* assignmentOperation,
|
||||||
const string& macro,
|
const string& macro,
|
||||||
const IfableData& data,
|
const IfableData& data,
|
||||||
set<string> *used_defs,
|
set<const Define *> *used_defs,
|
||||||
bool generatingCompilerMacro )
|
bool generatingCompilerMacro )
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
|
@ -814,32 +811,42 @@ MingwModuleHandler::GenerateMacro (
|
||||||
for ( i = 0; i < data.defines.size(); i++ )
|
for ( i = 0; i < data.defines.size(); i++ )
|
||||||
{
|
{
|
||||||
const Define& define = *data.defines[i];
|
const Define& define = *data.defines[i];
|
||||||
if ( used_defs && used_defs->find ( define.name ) != used_defs->end () )
|
if ( used_defs )
|
||||||
{
|
{
|
||||||
if ( !define.overridable )
|
set<const Define *>::const_iterator last_define;
|
||||||
|
for (last_define = used_defs->begin ();
|
||||||
|
last_define != used_defs->end ();
|
||||||
|
last_define++)
|
||||||
{
|
{
|
||||||
throw InvalidOperationException ( __FILE__,
|
if ( (*last_define)->name != define.name )
|
||||||
__LINE__,
|
continue;
|
||||||
"Invalid override of define '%s' in module '%s'",
|
if ( !define.overridable )
|
||||||
define.name.c_str (),
|
{
|
||||||
module.name.c_str () );
|
throw InvalidOperationException ( define.node->location.c_str (),
|
||||||
|
0,
|
||||||
|
"Invalid override of define '%s', already defined at %s",
|
||||||
|
define.name.c_str (),
|
||||||
|
(*last_define)->node->location.c_str () );
|
||||||
|
}
|
||||||
|
if ( backend->configuration.Verbose )
|
||||||
|
printf("%s: Overriding '%s' already defined at %s\n",
|
||||||
|
(*last_define)->node->location.c_str (), define.name.c_str (),
|
||||||
|
define.node->location.c_str () );
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if ( backend->configuration.Verbose )
|
if ( last_define != used_defs->end () )
|
||||||
printf("Define '%s' overridden in module '%s'\n",
|
continue;
|
||||||
define.name.c_str (), module.name.c_str () );
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
fprintf (
|
fprintf (
|
||||||
fMakefile,
|
fMakefile,
|
||||||
" -D%s",
|
" -D%s",
|
||||||
define.name.c_str() );
|
define.name.c_str() );
|
||||||
if ( define.value.size() )
|
fprintf (
|
||||||
fprintf (
|
fMakefile,
|
||||||
fMakefile,
|
"=%s",
|
||||||
"=%s",
|
define.value.c_str() );
|
||||||
define.value.c_str() );
|
|
||||||
if ( used_defs )
|
if ( used_defs )
|
||||||
used_defs->insert(used_defs->begin(), define.name);
|
used_defs->insert( used_defs->begin (), &define );
|
||||||
}
|
}
|
||||||
if ( generateAssignment )
|
if ( generateAssignment )
|
||||||
{
|
{
|
||||||
|
@ -852,7 +859,7 @@ MingwModuleHandler::GenerateMacros (
|
||||||
const char* assignmentOperation,
|
const char* assignmentOperation,
|
||||||
const IfableData& data,
|
const IfableData& data,
|
||||||
const vector<LinkerFlag*>* linkerFlags,
|
const vector<LinkerFlag*>* linkerFlags,
|
||||||
set<string>& used_defs )
|
set<const Define *>& used_defs )
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
|
@ -2050,7 +2057,7 @@ MingwModuleHandler::GetRpcHeaderDependencies (
|
||||||
void
|
void
|
||||||
MingwModuleHandler::GenerateOtherMacros ()
|
MingwModuleHandler::GenerateOtherMacros ()
|
||||||
{
|
{
|
||||||
set<string> used_defs;
|
set<const Define *> used_defs;
|
||||||
|
|
||||||
cflagsMacro = ssprintf ("%s_CFLAGS", module.name.c_str ());
|
cflagsMacro = ssprintf ("%s_CFLAGS", module.name.c_str ());
|
||||||
nasmflagsMacro = ssprintf ("%s_NASMFLAGS", module.name.c_str ());
|
nasmflagsMacro = ssprintf ("%s_NASMFLAGS", module.name.c_str ());
|
||||||
|
|
|
@ -137,12 +137,12 @@ private:
|
||||||
void GenerateMacro ( const char* assignmentOperation,
|
void GenerateMacro ( const char* assignmentOperation,
|
||||||
const std::string& macro,
|
const std::string& macro,
|
||||||
const IfableData& data,
|
const IfableData& data,
|
||||||
std::set<std::string>* used_defs,
|
std::set<const Define *>* used_defs,
|
||||||
bool generatingCompilerMacro );
|
bool generatingCompilerMacro );
|
||||||
void GenerateMacros ( const char* op,
|
void GenerateMacros ( const char* op,
|
||||||
const IfableData& data,
|
const IfableData& data,
|
||||||
const std::vector<LinkerFlag*>* linkerFlags,
|
const std::vector<LinkerFlag*>* linkerFlags,
|
||||||
std::set<std::string>& used_defs );
|
std::set<const Define *>& used_defs );
|
||||||
void GenerateSourceMacros ( const char* assignmentOperation,
|
void GenerateSourceMacros ( const char* assignmentOperation,
|
||||||
const IfableData& data );
|
const IfableData& data );
|
||||||
void GenerateObjectMacros ( const char* assignmentOperation,
|
void GenerateObjectMacros ( const char* assignmentOperation,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue