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 () );
|
||||
}
|
||||
|
||||
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
|
||||
MingwBackend::GenerateProjectCFlagsMacro ( const char* assignmentOperation,
|
||||
IfableData& data ) const
|
||||
const IfableData& data ) const
|
||||
{
|
||||
fprintf (
|
||||
fMakefile,
|
||||
"PROJECT_CFLAGS %s",
|
||||
assignmentOperation );
|
||||
|
||||
fprintf ( fMakefile,
|
||||
" %s",
|
||||
GenerateIncludesAndDefines ( data ).c_str() );
|
||||
set<string> used_defs;
|
||||
|
||||
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
|
||||
MingwBackend::GenerateGlobalCFlagsAndProperties (
|
||||
const char* assignmentOperation,
|
||||
IfableData& data ) const
|
||||
const IfableData& data ) const
|
||||
{
|
||||
size_t i;
|
||||
|
||||
|
@ -420,7 +416,7 @@ MingwBackend::GenerateGlobalCFlagsAndProperties (
|
|||
|
||||
for ( i = 0; i < data.ifs.size(); i++ )
|
||||
{
|
||||
If& rIf = *data.ifs[i];
|
||||
const If& rIf = *data.ifs[i];
|
||||
if ( rIf.data.defines.size()
|
||||
|| rIf.data.includes.size()
|
||||
|| rIf.data.ifs.size() )
|
||||
|
@ -523,8 +519,8 @@ MingwBackend::GenerateGlobalVariables () const
|
|||
GenerateGlobalCFlagsAndProperties ( "=", ProjectNode.non_if_data );
|
||||
GenerateProjectGccOptions ( "=", ProjectNode.non_if_data );
|
||||
|
||||
fprintf ( fMakefile, "PROJECT_RCFLAGS := $(PROJECT_CFLAGS)\n" );
|
||||
fprintf ( fMakefile, "PROJECT_WIDLFLAGS := $(PROJECT_CFLAGS)\n" );
|
||||
fprintf ( fMakefile, "PROJECT_RCFLAGS := $(PROJECT_CFLAGS) $(PROJECT_CDEFINES)\n" );
|
||||
fprintf ( fMakefile, "PROJECT_WIDLFLAGS := $(PROJECT_CFLAGS) $(PROJECT_CDEFINES)\n" );
|
||||
fprintf ( fMakefile, "PROJECT_LFLAGS := %s\n",
|
||||
GenerateProjectLFLAGS ().c_str () );
|
||||
fprintf ( fMakefile, "PROJECT_CFLAGS += -Wall\n" );
|
||||
|
|
|
@ -62,11 +62,10 @@ private:
|
|||
void CreateMakefile ();
|
||||
void CloseMakefile () const;
|
||||
void GenerateHeader () const;
|
||||
std::string GenerateIncludesAndDefines ( IfableData& data ) const;
|
||||
void GenerateProjectCFlagsMacro ( const char* assignmentOperation,
|
||||
IfableData& data ) const;
|
||||
const IfableData& data ) const;
|
||||
void GenerateGlobalCFlagsAndProperties ( const char* op,
|
||||
IfableData& data ) const;
|
||||
const IfableData& data ) const;
|
||||
void GenerateProjectGccOptionsMacro ( const char* assignmentOperation,
|
||||
IfableData& data ) const;
|
||||
void GenerateProjectGccOptions ( const char* assignmentOperation,
|
||||
|
|
|
@ -629,7 +629,7 @@ MingwModuleHandler::GetObjectFilenames ()
|
|||
/* static */ string
|
||||
MingwModuleHandler::GenerateGccDefineParametersFromVector (
|
||||
const vector<Define*>& defines,
|
||||
set<string>& used_defs)
|
||||
set<string>& used_defs)
|
||||
{
|
||||
string parameters;
|
||||
|
||||
|
@ -640,8 +640,8 @@ MingwModuleHandler::GenerateGccDefineParametersFromVector (
|
|||
continue;
|
||||
if (parameters.length () > 0)
|
||||
parameters += " ";
|
||||
if (define.name.find('(') != string::npos)
|
||||
parameters += "$(QT)";
|
||||
if (define.name.find('(') != string::npos)
|
||||
parameters += "$(QT)";
|
||||
parameters += "-D";
|
||||
parameters += define.name;
|
||||
if (define.value.length () > 0)
|
||||
|
@ -649,8 +649,8 @@ MingwModuleHandler::GenerateGccDefineParametersFromVector (
|
|||
parameters += "=";
|
||||
parameters += define.value;
|
||||
}
|
||||
if (define.name.find('(') != string::npos)
|
||||
parameters += "$(QT)";
|
||||
if (define.name.find('(') != string::npos)
|
||||
parameters += "$(QT)";
|
||||
used_defs.insert(used_defs.begin(),define.name);
|
||||
}
|
||||
return parameters;
|
||||
|
@ -659,7 +659,7 @@ MingwModuleHandler::GenerateGccDefineParametersFromVector (
|
|||
string
|
||||
MingwModuleHandler::GenerateGccDefineParameters () const
|
||||
{
|
||||
set<string> used_defs;
|
||||
set<string> used_defs;
|
||||
string parameters = GenerateGccDefineParametersFromVector ( module.project.non_if_data.defines, used_defs );
|
||||
string s = GenerateGccDefineParametersFromVector ( module.non_if_data.defines, used_defs );
|
||||
if ( s.length () > 0 )
|
||||
|
@ -765,7 +765,8 @@ void
|
|||
MingwModuleHandler::GenerateMacro (
|
||||
const char* assignmentOperation,
|
||||
const string& macro,
|
||||
const IfableData& data )
|
||||
const IfableData& data,
|
||||
set<string> *used_defs )
|
||||
{
|
||||
size_t i;
|
||||
bool generateAssignment;
|
||||
|
@ -806,7 +807,14 @@ MingwModuleHandler::GenerateMacro (
|
|||
}
|
||||
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 (
|
||||
fMakefile,
|
||||
" -D%s",
|
||||
|
@ -816,6 +824,8 @@ MingwModuleHandler::GenerateMacro (
|
|||
fMakefile,
|
||||
"=%s",
|
||||
d.value.c_str() );
|
||||
if (used_defs)
|
||||
used_defs->insert(used_defs->begin(), d.name);
|
||||
}
|
||||
if ( generateAssignment )
|
||||
{
|
||||
|
@ -827,16 +837,19 @@ void
|
|||
MingwModuleHandler::GenerateMacros (
|
||||
const char* assignmentOperation,
|
||||
const IfableData& data,
|
||||
const vector<LinkerFlag*>* linkerFlags )
|
||||
const vector<LinkerFlag*>* linkerFlags,
|
||||
set<string>& used_defs )
|
||||
{
|
||||
size_t i;
|
||||
|
||||
GenerateMacro ( assignmentOperation,
|
||||
cflagsMacro,
|
||||
data );
|
||||
data,
|
||||
&used_defs );
|
||||
GenerateMacro ( assignmentOperation,
|
||||
windresflagsMacro,
|
||||
data );
|
||||
data,
|
||||
NULL );
|
||||
|
||||
if ( linkerFlags != NULL )
|
||||
{
|
||||
|
@ -886,7 +899,8 @@ MingwModuleHandler::GenerateMacros (
|
|||
GenerateMacros (
|
||||
"+=",
|
||||
rIf.data,
|
||||
NULL );
|
||||
NULL,
|
||||
used_defs );
|
||||
fprintf (
|
||||
fMakefile,
|
||||
"endif\n\n" );
|
||||
|
@ -2020,6 +2034,8 @@ MingwModuleHandler::GetRpcHeaderDependencies (
|
|||
void
|
||||
MingwModuleHandler::GenerateOtherMacros ()
|
||||
{
|
||||
set<string> used_defs;
|
||||
|
||||
cflagsMacro = ssprintf ("%s_CFLAGS", module.name.c_str ());
|
||||
nasmflagsMacro = ssprintf ("%s_NASMFLAGS", module.name.c_str ());
|
||||
windresflagsMacro = ssprintf ("%s_RCFLAGS", module.name.c_str ());
|
||||
|
@ -2031,7 +2047,14 @@ MingwModuleHandler::GenerateOtherMacros ()
|
|||
GenerateMacros (
|
||||
"=",
|
||||
module.non_if_data,
|
||||
&module.linkerFlags );
|
||||
&module.linkerFlags,
|
||||
used_defs );
|
||||
|
||||
GenerateMacros (
|
||||
"+=",
|
||||
module.project.non_if_data,
|
||||
NULL,
|
||||
used_defs );
|
||||
|
||||
vector<FileLocation> s;
|
||||
if ( module.importLibrary )
|
||||
|
|
|
@ -136,10 +136,12 @@ private:
|
|||
std::string GenerateLinkerParameters () const;
|
||||
void GenerateMacro ( const char* assignmentOperation,
|
||||
const std::string& macro,
|
||||
const IfableData& data );
|
||||
const IfableData& data,
|
||||
std::set<std::string>* used_defs );
|
||||
void GenerateMacros ( const char* op,
|
||||
const IfableData& data,
|
||||
const std::vector<LinkerFlag*>* linkerFlags );
|
||||
const std::vector<LinkerFlag*>* linkerFlags,
|
||||
std::set<std::string>& used_defs );
|
||||
void GenerateSourceMacros ( const char* assignmentOperation,
|
||||
const IfableData& data );
|
||||
void GenerateObjectMacros ( const char* assignmentOperation,
|
||||
|
|
Loading…
Reference in a new issue