Author: hpoussin Date: Sun Jun 29 08:49:39 2008 New Revision: 34189
URL: http://svn.reactos.org/svn/reactos?rev=34189&view=rev Log: Move some more linker args to temp file, so command line is not too long Fix link of C++ kernel mode dlls/drivers
Modified: trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
Modified: trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/mingw/... ============================================================================== --- trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp [iso-8859-1] Sun Jun 29 08:49:39 2008 @@ -1603,21 +1603,25 @@ fprintf ( fMakefile, "\t$(ECHO_LD)\n" ); string targetName ( module.output->name );
- fprintf ( fMakefile, "\t@echo $(subst $(SEP),/,%s) > %s\n", + /* HACK: if we have C++ in kernel, link it with some user mode dlls (kernel32 + msvcrt) ... */ + static const string libsCppKernel = " "$(shell ${TARGET_CC} -print-file-name=libkernel32.a)" "$(shell ${TARGET_CC} -print-file-name=libmsvcrt.a)""; + + fprintf ( fMakefile, "\t@echo $(subst $(SEP),/,%s)%s%s $(subst $(SEP),/,%s) > %s\n", objectsMacro.c_str (), + module.cplusplus ? " $(PROJECT_LPPFLAGS)" : "", + module.cplusplus && (module.type == KernelModeDLL || module.type == KernelModeDriver) ? libsCppKernel.c_str () : "", + libsMacro.c_str (), backend->GetFullName ( temp_obj ).c_str () ); CLEAN_FILE ( temp_obj );
if ( !module.IsDLL () ) { fprintf ( fMakefile, - "\t%s %s%s @%s %s%s %s -o %s\n", + "\t%s %s%s @%s %s -o %s\n", linker.c_str (), linkerParameters.c_str (), linkerScriptArgument.c_str (), backend->GetFullName ( temp_obj ).c_str (), - module.cplusplus ? "$(PROJECT_LPPFLAGS) " : "", - libsMacro.c_str (), GetLinkerMacro ().c_str (), target_macro.c_str () ); } @@ -1637,14 +1641,12 @@ module.underscoreSymbols ? " --add-underscore" : "" );
fprintf ( fMakefile, - "\t%s %s%s %s @%s %s%s %s -o %s\n", + "\t%s %s%s %s @%s %s -o %s\n", linker.c_str (), linkerParameters.c_str (), linkerScriptArgument.c_str (), backend->GetFullName ( temp_exp ).c_str (), backend->GetFullName ( temp_obj ).c_str (), - module.cplusplus ? "$(PROJECT_LPPFLAGS) " : "", - libsMacro.c_str (), GetLinkerMacro ().c_str (), target_macro.c_str () );
@@ -1666,13 +1668,11 @@ //printf ( "%s will have all its functions exported\n", // module.target->name.c_str () ); fprintf ( fMakefile, - "\t%s %s%s @%s %s%s %s -o %s\n", + "\t%s %s%s @%s %s -o %s\n", linker.c_str (), linkerParameters.c_str (), linkerScriptArgument.c_str (), backend->GetFullName ( temp_obj ).c_str (), - module.cplusplus ? "$(PROJECT_LPPFLAGS) " : "", - libsMacro.c_str (), GetLinkerMacro ().c_str (), target_macro.c_str () ); }