9 static class MingwFactory
: public Backend::Factory
12 MingwFactory() : Factory ( "mingw" ) {}
13 Backend
* operator() ( Project
& project
)
15 return new MingwBackend ( project
);
20 MingwBackend::MingwBackend ( Project
& project
)
26 MingwBackend::Process ()
30 GenerateGlobalVariables ();
32 for ( size_t i
= 0; i
< ProjectNode
.modules
.size (); i
++ )
34 Module
& module
= *ProjectNode
.modules
[i
];
35 ProcessModule ( module
);
41 MingwBackend::CreateMakefile ()
43 fMakefile
= fopen ( ProjectNode
.makefile
.c_str (), "w" );
45 throw AccessDeniedException ( ProjectNode
.makefile
);
49 MingwBackend::CloseMakefile ()
56 MingwBackend::GenerateHeader ()
58 fprintf ( fMakefile
, "# THIS FILE IS AUTOMATICALLY GENERATED, EDIT 'ReactOS.xml' INSTEAD\n\n" );
62 MingwBackend::GenerateGlobalVariables ()
64 fprintf ( fMakefile
, "rm = del /y\n" );
65 fprintf ( fMakefile
, "gcc = gcc\n" );
66 fprintf ( fMakefile
, "ld = ld\n" );
67 fprintf ( fMakefile
, "ar = ar\n" );
68 fprintf ( fMakefile
, "dlltool = dlltool\n" );
69 fprintf ( fMakefile
, "\n" );
73 MingwBackend::GenerateAllTarget ()
75 fprintf ( fMakefile
, "all:" );
76 for ( size_t i
= 0; i
< ProjectNode
.modules
.size (); i
++ )
78 Module
& module
= *ProjectNode
.modules
[i
];
81 module
.GetPath ().c_str () );
83 fprintf ( fMakefile
, "\n\t\n\n" );
87 MingwBackend::ProcessModule ( Module
& module
)
89 MingwModuleHandlerList moduleHandlers
;
90 GetModuleHandlers ( moduleHandlers
);
91 for (size_t i
= 0; i
< moduleHandlers
.size (); i
++)
93 MingwModuleHandler
& moduleHandler
= *moduleHandlers
[i
];
94 if (moduleHandler
.CanHandleModule ( module
) )
96 moduleHandler
.Process ( module
);
103 MingwBackend::GetModuleHandlers ( MingwModuleHandlerList
& moduleHandlers
)
105 moduleHandlers
.push_back ( new MingwKernelModuleHandler ( fMakefile
) );