Author: janderwald
Date: Fri Jun 23 00:49:18 2006
New Revision: 22508
URL:
http://svn.reactos.ru/svn/reactos?rev=22508&view=rev
Log:
implement IDL compilation, generation of client/server stubs and creating import library
of it
hurray :-)
Modified:
trunk/reactos/tools/rbuild/backend/msvc/vcprojmaker.cpp
Modified: trunk/reactos/tools/rbuild/backend/msvc/vcprojmaker.cpp
URL:
http://svn.reactos.ru/svn/reactos/trunk/reactos/tools/rbuild/backend/msvc/v…
==============================================================================
--- trunk/reactos/tools/rbuild/backend/msvc/vcprojmaker.cpp (original)
+++ trunk/reactos/tools/rbuild/backend/msvc/vcprojmaker.cpp Fri Jun 23 00:49:18 2006
@@ -75,7 +75,7 @@
vector<string> imports;
string module_type = GetExtension(module.GetTargetName());
- bool lib = (module.type == ObjectLibrary) || (module_type == ".lib") ||
(module_type == ".a");
+ bool lib = (module.type == ObjectLibrary) || (module.type == RpcClient) ||(module.type
== RpcServer) || (module_type == ".lib") || (module_type == ".a");
bool dll = (module_type == ".dll") || (module_type == ".cpl");
bool exe = (module_type == ".exe") || (module_type == ".scr");
bool sys = (module_type == ".sys");
@@ -532,9 +532,23 @@
fprintf ( OUT, "\t\t\t\t\t<Tool\r\n" );
if (source_file.find(".idl") != string::npos)
{
- fprintf ( OUT, "\t\t\t\t\t\tName=\"VCMIDLTool\"\r\n" );
- fprintf ( OUT,
"\t\t\t\t\t\tHeaderFileName=\"$(InputName).h\"\r\n" );
- fprintf ( OUT,
"\t\t\t\t\t\tOutputDirectory=\"$(IntDir)\"/>\r\n" );
+ string src = source_file.substr (0, source_file.find(".idl"));
+
+ if ( src.find (".\\") != string::npos )
+ src.erase (0, 2);
+
+ fprintf ( OUT, "\t\t\t\t\t\tName=\"VCCustomBuildTool\"\r\n" );
+
+ if ( module.type == RpcClient )
+ fprintf ( OUT, "\t\t\t\t\t\tCommandLine=\"midl.exe /cstub %s.c /header
%s.h "$(InputPath)" /out "$(IntDir)"", src.c_str
(), src.c_str () );
+ else
+ fprintf ( OUT, "\t\t\t\t\t\tCommandLine=\"midl.exe /sstub %s.c /header
%s.h "$(InputPath)" /out "$(IntDir)"", src.c_str
(), src.c_str () );
+
+ fprintf ( OUT, "
");
+ fprintf ( OUT, "cl.exe /Od /D "WIN32" /D
"_DEBUG" /D "_WINDOWS" /D
"_WIN32_WINNT=0x502" /D "_UNICODE" /D
"UNICODE" /Gm /EHsc /RTC1 /MDd /Fo"$(IntDir)\\%s.obj"
/W3 /c /Wp64 /ZI /TC "$(IntDir)\\%s.c" /nologo
/errorReport:prompt", src.c_str (), src.c_str () );
+ fprintf ( OUT, "
");
+ fprintf ( OUT, "lib.exe /OUT:"$(OutDir)\\%s.lib"
"$(IntDir)\\%s.obj"
\"\r\n",
module.name.c_str (), src.c_str () );
+ fprintf ( OUT,
"\t\t\t\t\t\tOutputs=\"$(IntDir)\\$(InputName).obj\"/>\r\n" );
}
else if ((source_file.find(".asm") != string::npos ||
tolower(source_file.at(source_file.size() - 1)) == 's'))
{