Generate RPC interface headers in intermediate directory Modified: trunk/reactos/lib/advapi32/advapi32.xml Modified: trunk/reactos/subsys/system/services/services.xml Modified: trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp Modified: trunk/reactos/tools/rbuild/backend/mingw/modulehandler.h Modified: trunk/reactos/tools/rbuild/include.cpp Modified: trunk/reactos/tools/rbuild/rbuild.h _____
Modified: trunk/reactos/lib/advapi32/advapi32.xml --- trunk/reactos/lib/advapi32/advapi32.xml 2005-07-19 18:15:32 UTC (rev 16646) +++ trunk/reactos/lib/advapi32/advapi32.xml 2005-07-19 18:46:13 UTC (rev 16647) @@ -1,7 +1,7 @@
<module name="advapi32" type="win32dll" baseaddress="${BASEADDRESS_ADVAPI32}" installbase="system32" installname="advapi32.dll"> <importlibrary definition="advapi32.def" /> <include base="advapi32">.</include> - <include base="ReactOS">include/idl</include> + <include base="scm_client">.</include> <define name="__USE_W32API" /> <define name="WINVER">0x600</define> <define name="_WIN32_IE">0x0500</define> _____
Modified: trunk/reactos/subsys/system/services/services.xml --- trunk/reactos/subsys/system/services/services.xml 2005-07-19 18:15:32 UTC (rev 16646) +++ trunk/reactos/subsys/system/services/services.xml 2005-07-19 18:46:13 UTC (rev 16647) @@ -1,6 +1,6 @@
<module name="services" type="win32cui" installbase="system32" installname="services.exe"> <include base="services">.</include> - <include base="ReactOS">include/idl</include> + <include base="scm_server">.</include> <define name="__USE_W32API" /> <define name="UNICODE" /> <define name="_UNICODE" /> _____
Modified: trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp --- trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp 2005-07-19 18:15:32 UTC (rev 16646) +++ trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp 2005-07-19 18:46:13 UTC (rev 16647) @@ -288,6 +288,20 @@
}
string +MingwModuleHandler::GetExtraDependencies ( + const string& filename ) const +{ + string extension = GetExtension ( filename ); + if ( extension == ".idl" || extension == ".IDL" ) + { + string basename = GetBasename ( filename ); + return GetRpcServerHeaderFilename ( basename ) + " " + GetRpcClientHeaderFilename ( basename ); + } + else + return ""; +} + +string MingwModuleHandler::GetModuleArchiveFilename () const { if ( module.type == StaticLibrary ) @@ -701,10 +715,19 @@
for ( i = 0; i < data.includes.size(); i++ ) { + const Include& include = *data.includes[i]; + string includeDirectory; + if ( include.baseModule != NULL && + ( include.baseModule->type == RpcServer || + include.baseModule->type == RpcClient ) ) + includeDirectory = PassThruCacheDirectory ( NormalizeFilename ( include.directory ), + backend->intermediateDirectory ); + else + includeDirectory = include.directory; fprintf ( fMakefile, " -I%s", - data.includes[i]->directory.c_str() ); + includeDirectory.c_str() ); } for ( i = 0; i < data.defines.size(); i++ ) { @@ -905,10 +928,13 @@ void MingwModuleHandler::GenerateGccCommand ( const string& sourceFilename, + const string& extraDependencies, const string& cc, const string& cflagsMacro ) { string dependencies = sourceFilename; + if ( extraDependencies != "" ) + dependencies += " " + extraDependencies; if ( module.pch && use_pch ) dependencies += " " + GetPrecompiledHeaderFilename (); @@ -1079,7 +1105,8 @@ string MingwModuleHandler::GetRpcServerHeaderFilename ( string basename ) const { - return basename + "_s.h"; + return PassThruCacheDirectory ( basename + "_s.h", + backend->intermediateDirectory ); } void @@ -1092,11 +1119,6 @@
string basename = GetBasename ( file.name );
- /*string generatedHeaderFilename = PassThruCacheDirectory ( - basename + ".h", - backend->intermediateDirectory ); - CLEAN_FILE(generatedHeaderFilename); - */ string generatedHeaderFilename = GetRpcServerHeaderFilename ( basename ); CLEAN_FILE(generatedHeaderFilename);
@@ -1125,7 +1147,8 @@ string MingwModuleHandler::GetRpcClientHeaderFilename ( string basename ) const { - return basename + "_c.h"; + return PassThruCacheDirectory ( basename + "_c.h", + backend->intermediateDirectory ); }
void @@ -1138,11 +1161,6 @@
string basename = GetBasename ( file.name );
- /*string generatedHeaderFilename = PassThruCacheDirectory ( - basename + ".h", - backend->intermediateDirectory ); - CLEAN_FILE(generatedHeaderFilename); - */ string generatedHeaderFilename = GetRpcClientHeaderFilename ( basename ); CLEAN_FILE(generatedHeaderFilename);
@@ -1195,6 +1213,7 @@ if ( extension == ".c" || extension == ".C" ) { GenerateGccCommand ( file.name, + "", cc, cflagsMacro ); return; @@ -1204,6 +1223,7 @@ extension == ".cxx" || extension == ".CXX" ) { GenerateGccCommand ( file.name, + "", cppc, cflagsMacro ); return; @@ -1231,6 +1251,7 @@ { GenerateWinebuildCommands ( file.name ); GenerateGccCommand ( GetActualSourceFilename ( file.name ), + "", cc, cflagsMacro ); return; @@ -1240,6 +1261,7 @@ GenerateWidlCommands ( file, widlflagsMacro ); GenerateGccCommand ( GetActualSourceFilename ( file.name ), + GetExtraDependencies ( file.name ), cc, cflagsMacro ); return; @@ -1647,7 +1669,6 @@ if ( library.importedModule->type == RpcServer || library.importedModule->type == RpcClient ) { - for ( size_t j = 0; j < library.importedModule->non_if_data.files.size (); j++ ) { File& file = *library.importedModule->non_if_data.files[j]; @@ -2026,10 +2047,11 @@ const string& filename ) const { string basename = GetBasename ( filename ); - string serverDependency = PassThruCacheDirectory ( + string serverSourceDependency = PassThruCacheDirectory ( NormalizeFilename ( basename + "_s.c" ), backend->intermediateDirectory ); - dependencies.push_back ( serverDependency ); + dependencies.push_back ( serverSourceDependency ); + dependencies.push_back ( GetRpcServerHeaderFilename ( basename ) ); }
void _____
Modified: trunk/reactos/tools/rbuild/backend/mingw/modulehandler.h --- trunk/reactos/tools/rbuild/backend/mingw/modulehandler.h 2005-07-19 18:15:32 UTC (rev 16646) +++ trunk/reactos/tools/rbuild/backend/mingw/modulehandler.h 2005-07-19 18:46:13 UTC (rev 16647) @@ -85,6 +85,7 @@
std::string GetWorkingDirectory () const; std::string GetBasename ( const std::string& filename ) const; std::string GetActualSourceFilename ( const std::string& filename ) const; + std::string GetExtraDependencies ( const std::string& filename ) const; std::string GetModuleArchiveFilename () const; bool IsGeneratedFile ( const File& file ) const; std::string GetImportLibraryDependency ( const Module& importedModule ); @@ -143,6 +144,7 @@ std::string GenerateNasmParameters () const; std::string MingwModuleHandler::GetPrecompiledHeaderFilename () const; void GenerateGccCommand ( const std::string& sourceFilename, + const std::string& extraDependencies, const std::string& cc, const std::string& cflagsMacro ); void GenerateGccAssemblerCommand ( const std::string& sourceFilename, _____
Modified: trunk/reactos/tools/rbuild/include.cpp --- trunk/reactos/tools/rbuild/include.cpp 2005-07-19 18:15:32 UTC (rev 16646) +++ trunk/reactos/tools/rbuild/include.cpp 2005-07-19 18:46:13 UTC (rev 16647) @@ -27,7 +27,8 @@
const XMLElement* includeNode ) : project ( project ), module ( NULL ), - node ( includeNode ) + node ( includeNode ), + baseModule ( NULL ) { }
@@ -36,7 +37,8 @@ const XMLElement* includeNode ) : project ( project ), module ( module ), - node ( includeNode ) + node ( includeNode ), + baseModule ( NULL ) { }
@@ -45,7 +47,8 @@ string basePath ) : project ( project ), module ( NULL ), - node ( NULL ) + node ( NULL ), + baseModule ( NULL ) { this->directory = NormalizeFilename ( basePath + SSEP + directory ); this->basePath = NormalizeFilename ( basePath ); @@ -78,6 +81,7 @@ const Module* base = project.LocateModule ( att->value ); if ( base != NULL ) { + baseModule = base; basePath = base->GetBasePath (); referenceResolved = true; } _____
Modified: trunk/reactos/tools/rbuild/rbuild.h --- trunk/reactos/tools/rbuild/rbuild.h 2005-07-19 18:15:32 UTC (rev 16646) +++ trunk/reactos/tools/rbuild/rbuild.h 2005-07-19 18:46:13 UTC (rev 16647) @@ -271,6 +271,7 @@
const Project& project; const Module* module; const XMLElement* node; + const Module* baseModule; std::string directory; std::string basePath;