mirror of
https://github.com/reactos/reactos.git
synced 2024-10-15 13:45:58 +00:00
Support define overriding in child .rbuild files
See issue #2745 for more details. svn path=/trunk/; revision=29681
This commit is contained in:
parent
7b57d6a08d
commit
e7d0bd05c2
|
@ -372,35 +372,31 @@ MingwBackend::GenerateHeader () const
|
||||||
ProjectNode.GetProjectFilename ().c_str () );
|
ProjectNode.GetProjectFilename ().c_str () );
|
||||||
}
|
}
|
||||||
|
|
||||||
string
|
|
||||||
MingwBackend::GenerateIncludesAndDefines ( IfableData& data ) const
|
|
||||||
{
|
|
||||||
set<string> used_defs;
|
|
||||||
string includeParameters = MingwModuleHandler::GenerateGccIncludeParametersFromVector ( data.includes );
|
|
||||||
string defineParameters = MingwModuleHandler::GenerateGccDefineParametersFromVector ( data.defines, used_defs );
|
|
||||||
return includeParameters + " " + defineParameters;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
MingwBackend::GenerateProjectCFlagsMacro ( const char* assignmentOperation,
|
MingwBackend::GenerateProjectCFlagsMacro ( const char* assignmentOperation,
|
||||||
IfableData& data ) const
|
const IfableData& data ) const
|
||||||
{
|
{
|
||||||
fprintf (
|
set<string> used_defs;
|
||||||
fMakefile,
|
|
||||||
"PROJECT_CFLAGS %s",
|
|
||||||
assignmentOperation );
|
|
||||||
|
|
||||||
fprintf ( fMakefile,
|
|
||||||
" %s",
|
|
||||||
GenerateIncludesAndDefines ( data ).c_str() );
|
|
||||||
|
|
||||||
fprintf ( fMakefile, "\n" );
|
if ( data.includes.size () > 0 )
|
||||||
|
fprintf (
|
||||||
|
fMakefile,
|
||||||
|
"PROJECT_CFLAGS %s %s\n",
|
||||||
|
assignmentOperation,
|
||||||
|
MingwModuleHandler::GenerateGccIncludeParametersFromVector ( data.includes ).c_str ());
|
||||||
|
|
||||||
|
if ( data.defines.size () > 0 )
|
||||||
|
fprintf (
|
||||||
|
fMakefile,
|
||||||
|
"PROJECT_CDEFINES %s %s\n",
|
||||||
|
assignmentOperation,
|
||||||
|
MingwModuleHandler::GenerateGccDefineParametersFromVector ( data.defines, used_defs ).c_str ());
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
MingwBackend::GenerateGlobalCFlagsAndProperties (
|
MingwBackend::GenerateGlobalCFlagsAndProperties (
|
||||||
const char* assignmentOperation,
|
const char* assignmentOperation,
|
||||||
IfableData& data ) const
|
const IfableData& data ) const
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
|
@ -420,7 +416,7 @@ MingwBackend::GenerateGlobalCFlagsAndProperties (
|
||||||
|
|
||||||
for ( i = 0; i < data.ifs.size(); i++ )
|
for ( i = 0; i < data.ifs.size(); i++ )
|
||||||
{
|
{
|
||||||
If& rIf = *data.ifs[i];
|
const If& rIf = *data.ifs[i];
|
||||||
if ( rIf.data.defines.size()
|
if ( rIf.data.defines.size()
|
||||||
|| rIf.data.includes.size()
|
|| rIf.data.includes.size()
|
||||||
|| rIf.data.ifs.size() )
|
|| rIf.data.ifs.size() )
|
||||||
|
@ -523,8 +519,8 @@ MingwBackend::GenerateGlobalVariables () const
|
||||||
GenerateGlobalCFlagsAndProperties ( "=", ProjectNode.non_if_data );
|
GenerateGlobalCFlagsAndProperties ( "=", ProjectNode.non_if_data );
|
||||||
GenerateProjectGccOptions ( "=", ProjectNode.non_if_data );
|
GenerateProjectGccOptions ( "=", ProjectNode.non_if_data );
|
||||||
|
|
||||||
fprintf ( fMakefile, "PROJECT_RCFLAGS := $(PROJECT_CFLAGS)\n" );
|
fprintf ( fMakefile, "PROJECT_RCFLAGS := $(PROJECT_CFLAGS) $(PROJECT_CDEFINES)\n" );
|
||||||
fprintf ( fMakefile, "PROJECT_WIDLFLAGS := $(PROJECT_CFLAGS)\n" );
|
fprintf ( fMakefile, "PROJECT_WIDLFLAGS := $(PROJECT_CFLAGS) $(PROJECT_CDEFINES)\n" );
|
||||||
fprintf ( fMakefile, "PROJECT_LFLAGS := %s\n",
|
fprintf ( fMakefile, "PROJECT_LFLAGS := %s\n",
|
||||||
GenerateProjectLFLAGS ().c_str () );
|
GenerateProjectLFLAGS ().c_str () );
|
||||||
fprintf ( fMakefile, "PROJECT_CFLAGS += -Wall\n" );
|
fprintf ( fMakefile, "PROJECT_CFLAGS += -Wall\n" );
|
||||||
|
|
|
@ -62,11 +62,10 @@ private:
|
||||||
void CreateMakefile ();
|
void CreateMakefile ();
|
||||||
void CloseMakefile () const;
|
void CloseMakefile () const;
|
||||||
void GenerateHeader () const;
|
void GenerateHeader () const;
|
||||||
std::string GenerateIncludesAndDefines ( IfableData& data ) const;
|
|
||||||
void GenerateProjectCFlagsMacro ( const char* assignmentOperation,
|
void GenerateProjectCFlagsMacro ( const char* assignmentOperation,
|
||||||
IfableData& data ) const;
|
const IfableData& data ) const;
|
||||||
void GenerateGlobalCFlagsAndProperties ( const char* op,
|
void GenerateGlobalCFlagsAndProperties ( const char* op,
|
||||||
IfableData& data ) const;
|
const IfableData& data ) const;
|
||||||
void GenerateProjectGccOptionsMacro ( const char* assignmentOperation,
|
void GenerateProjectGccOptionsMacro ( const char* assignmentOperation,
|
||||||
IfableData& data ) const;
|
IfableData& data ) const;
|
||||||
void GenerateProjectGccOptions ( const char* assignmentOperation,
|
void GenerateProjectGccOptions ( const char* assignmentOperation,
|
||||||
|
|
|
@ -629,7 +629,7 @@ MingwModuleHandler::GetObjectFilenames ()
|
||||||
/* static */ string
|
/* static */ string
|
||||||
MingwModuleHandler::GenerateGccDefineParametersFromVector (
|
MingwModuleHandler::GenerateGccDefineParametersFromVector (
|
||||||
const vector<Define*>& defines,
|
const vector<Define*>& defines,
|
||||||
set<string>& used_defs)
|
set<string>& used_defs)
|
||||||
{
|
{
|
||||||
string parameters;
|
string parameters;
|
||||||
|
|
||||||
|
@ -640,8 +640,8 @@ MingwModuleHandler::GenerateGccDefineParametersFromVector (
|
||||||
continue;
|
continue;
|
||||||
if (parameters.length () > 0)
|
if (parameters.length () > 0)
|
||||||
parameters += " ";
|
parameters += " ";
|
||||||
if (define.name.find('(') != string::npos)
|
if (define.name.find('(') != string::npos)
|
||||||
parameters += "$(QT)";
|
parameters += "$(QT)";
|
||||||
parameters += "-D";
|
parameters += "-D";
|
||||||
parameters += define.name;
|
parameters += define.name;
|
||||||
if (define.value.length () > 0)
|
if (define.value.length () > 0)
|
||||||
|
@ -649,8 +649,8 @@ MingwModuleHandler::GenerateGccDefineParametersFromVector (
|
||||||
parameters += "=";
|
parameters += "=";
|
||||||
parameters += define.value;
|
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);
|
||||||
}
|
}
|
||||||
return parameters;
|
return parameters;
|
||||||
|
@ -659,7 +659,7 @@ MingwModuleHandler::GenerateGccDefineParametersFromVector (
|
||||||
string
|
string
|
||||||
MingwModuleHandler::GenerateGccDefineParameters () const
|
MingwModuleHandler::GenerateGccDefineParameters () const
|
||||||
{
|
{
|
||||||
set<string> used_defs;
|
set<string> used_defs;
|
||||||
string parameters = GenerateGccDefineParametersFromVector ( module.project.non_if_data.defines, used_defs );
|
string parameters = GenerateGccDefineParametersFromVector ( module.project.non_if_data.defines, used_defs );
|
||||||
string s = GenerateGccDefineParametersFromVector ( module.non_if_data.defines, used_defs );
|
string s = GenerateGccDefineParametersFromVector ( module.non_if_data.defines, used_defs );
|
||||||
if ( s.length () > 0 )
|
if ( s.length () > 0 )
|
||||||
|
@ -765,7 +765,8 @@ void
|
||||||
MingwModuleHandler::GenerateMacro (
|
MingwModuleHandler::GenerateMacro (
|
||||||
const char* assignmentOperation,
|
const char* assignmentOperation,
|
||||||
const string& macro,
|
const string& macro,
|
||||||
const IfableData& data )
|
const IfableData& data,
|
||||||
|
set<string> *used_defs )
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
bool generateAssignment;
|
bool generateAssignment;
|
||||||
|
@ -806,7 +807,14 @@ MingwModuleHandler::GenerateMacro (
|
||||||
}
|
}
|
||||||
for ( i = 0; i < data.defines.size(); i++ )
|
for ( i = 0; i < data.defines.size(); i++ )
|
||||||
{
|
{
|
||||||
Define& d = *data.defines[i];
|
const Define& d = *data.defines[i];
|
||||||
|
if (used_defs && used_defs->find(d.name) != used_defs->end())
|
||||||
|
{
|
||||||
|
if ( backend->configuration.Verbose )
|
||||||
|
printf("%s define overridden in '%s' module\n",
|
||||||
|
d.name.c_str (), module.name.c_str () );
|
||||||
|
continue;
|
||||||
|
}
|
||||||
fprintf (
|
fprintf (
|
||||||
fMakefile,
|
fMakefile,
|
||||||
" -D%s",
|
" -D%s",
|
||||||
|
@ -816,6 +824,8 @@ MingwModuleHandler::GenerateMacro (
|
||||||
fMakefile,
|
fMakefile,
|
||||||
"=%s",
|
"=%s",
|
||||||
d.value.c_str() );
|
d.value.c_str() );
|
||||||
|
if (used_defs)
|
||||||
|
used_defs->insert(used_defs->begin(), d.name);
|
||||||
}
|
}
|
||||||
if ( generateAssignment )
|
if ( generateAssignment )
|
||||||
{
|
{
|
||||||
|
@ -827,16 +837,19 @@ void
|
||||||
MingwModuleHandler::GenerateMacros (
|
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 )
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
GenerateMacro ( assignmentOperation,
|
GenerateMacro ( assignmentOperation,
|
||||||
cflagsMacro,
|
cflagsMacro,
|
||||||
data );
|
data,
|
||||||
|
&used_defs );
|
||||||
GenerateMacro ( assignmentOperation,
|
GenerateMacro ( assignmentOperation,
|
||||||
windresflagsMacro,
|
windresflagsMacro,
|
||||||
data );
|
data,
|
||||||
|
NULL );
|
||||||
|
|
||||||
if ( linkerFlags != NULL )
|
if ( linkerFlags != NULL )
|
||||||
{
|
{
|
||||||
|
@ -886,7 +899,8 @@ MingwModuleHandler::GenerateMacros (
|
||||||
GenerateMacros (
|
GenerateMacros (
|
||||||
"+=",
|
"+=",
|
||||||
rIf.data,
|
rIf.data,
|
||||||
NULL );
|
NULL,
|
||||||
|
used_defs );
|
||||||
fprintf (
|
fprintf (
|
||||||
fMakefile,
|
fMakefile,
|
||||||
"endif\n\n" );
|
"endif\n\n" );
|
||||||
|
@ -2020,6 +2034,8 @@ MingwModuleHandler::GetRpcHeaderDependencies (
|
||||||
void
|
void
|
||||||
MingwModuleHandler::GenerateOtherMacros ()
|
MingwModuleHandler::GenerateOtherMacros ()
|
||||||
{
|
{
|
||||||
|
set<string> 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 ());
|
||||||
windresflagsMacro = ssprintf ("%s_RCFLAGS", module.name.c_str ());
|
windresflagsMacro = ssprintf ("%s_RCFLAGS", module.name.c_str ());
|
||||||
|
@ -2031,7 +2047,14 @@ MingwModuleHandler::GenerateOtherMacros ()
|
||||||
GenerateMacros (
|
GenerateMacros (
|
||||||
"=",
|
"=",
|
||||||
module.non_if_data,
|
module.non_if_data,
|
||||||
&module.linkerFlags );
|
&module.linkerFlags,
|
||||||
|
used_defs );
|
||||||
|
|
||||||
|
GenerateMacros (
|
||||||
|
"+=",
|
||||||
|
module.project.non_if_data,
|
||||||
|
NULL,
|
||||||
|
used_defs );
|
||||||
|
|
||||||
vector<FileLocation> s;
|
vector<FileLocation> s;
|
||||||
if ( module.importLibrary )
|
if ( module.importLibrary )
|
||||||
|
|
|
@ -136,10 +136,12 @@ private:
|
||||||
std::string GenerateLinkerParameters () const;
|
std::string GenerateLinkerParameters () const;
|
||||||
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 );
|
||||||
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 );
|
||||||
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…
Reference in a new issue