using std::map;\r
using std::set;\r
\r
+typedef set<string> set_string;\r
+\r
map<ModuleType,MingwModuleHandler*>*\r
MingwModuleHandler::handler_map = NULL;\r
-set<string> \r
+set_string\r
MingwModuleHandler::directory_set;\r
int\r
MingwModuleHandler::ref = 0;\r
MingwModuleHandler::GetDirectory ( const string& filename ) const \r
{\r
size_t index = filename.find_last_of ( '/' );\r
- if (index == string::npos) return ".";\r
- else return filename.substr ( 0, index );\r
+ if (index == string::npos)\r
+ return ".";\r
+ else\r
+ return filename.substr ( 0, index );\r
}\r
\r
string\r
MingwModuleHandler::GetExtension ( const string& filename ) const\r
{\r
size_t index = filename.find_last_of ( '/' );\r
- if (index == string::npos) index = 0; \r
- string tmp = filename.substr( index, filename.size() - index );\r
- size_t ext_index = tmp.find_last_of( '.' );\r
- if (ext_index != string::npos) \r
- return filename.substr ( index + ext_index, filename.size() );\r
+ if (index == string::npos) index = 0;\r
+ string tmp = filename.substr( index, filename.size() - index );\r
+ size_t ext_index = tmp.find_last_of( '.' );\r
+ if (ext_index != string::npos) \r
+ return filename.substr ( index + ext_index, filename.size() );\r
return "";\r
}\r
\r
\r
string\r
MingwModuleHandler::ReplaceExtension ( const string& filename,\r
- const string& newExtension ) const\r
+ const string& newExtension ) const\r
{\r
size_t index = filename.find_last_of ( '/' );\r
if (index == string::npos) index = 0;\r
- string tmp = filename.substr( index, filename.size() - index );\r
- size_t ext_index = tmp.find_last_of( '.' );\r
- if (ext_index != string::npos) \r
- return filename.substr ( 0, index + ext_index ) + newExtension;\r
+ string tmp = filename.substr( index, filename.size() - index );\r
+ size_t ext_index = tmp.find_last_of( '.' );\r
+ if (ext_index != string::npos) \r
+ return filename.substr ( 0, index + ext_index ) + newExtension;\r
return filename + newExtension;\r
}\r
\r
MingwModuleHandler::GetModuleArchiveFilename ( const Module& module ) const\r
{\r
return ReplaceExtension ( FixupTargetFilename ( module.GetPath () ),\r
- ".a" );\r
+ ".a" );\r
}\r
\r
string\r
newExtension = ".stubs.o";\r
else\r
newExtension = ".o";\r
- return PassThruCacheDirectory\r
- ( FixupTargetFilename ( ReplaceExtension ( sourceFilename,\r
- newExtension ) ) );\r
+ return PassThruCacheDirectory (\r
+ FixupTargetFilename (\r
+ ReplaceExtension ( sourceFilename, newExtension ) ) );\r
}\r
\r
string\r
void\r
MingwModuleHandler::GenerateDirectoryTargets() const \r
{\r
- fprintf( fMakefile, "ifneq ($(ROS_INTERMEDIATE),)\ndirectories::" );\r
+ set_string::iterator i;\r
+ fprintf( fMakefile, "ifneq ($(ROS_INTERMEDIATE),)\ndirectories::" );\r
\r
- for( set<string>::iterator i = directory_set.begin();\r
- i != directory_set.end();\r
- i++ )\r
- fprintf( fMakefile, " %s", i->c_str() );\r
+ for ( i = directory_set.begin();\r
+ i != directory_set.end();\r
+ i++ )\r
+ {\r
+ fprintf ( fMakefile, " %s", i->c_str() );\r
+ }\r
\r
- fprintf( fMakefile, "\n\n" );\r
+ fprintf( fMakefile, "\n\n" );\r
\r
- for( set<string>::iterator i = directory_set.begin();\r
- i != directory_set.end();\r
- i++ )\r
- fprintf( fMakefile, "%s ", i->c_str() );\r
+ for ( i = directory_set.begin();\r
+ i != directory_set.end();\r
+ i++ )\r
+ {\r
+ fprintf ( fMakefile, "%s ", i->c_str() );\r
+ }\r
\r
- fprintf ( fMakefile, \r
- "::\n\t${mkdir} $@\n\n"\r
- "else\n"\r
- "directories::\n\n"\r
- "endif\n\n" );\r
+ fprintf ( fMakefile, \r
+ "::\n\t${mkdir} $@\n\n"\r
+ "else\n"\r
+ "directories::\n\n"\r
+ "endif\n\n" );\r
\r
- directory_set.clear();\r
+ directory_set.clear();\r
}\r
\r
string\r
MingwModuleHandler::GenerateGccDefineParametersFromVector ( const vector<Define*>& defines ) const\r
{\r
string parameters;\r
- for (size_t i = 0; i < defines.size (); i++)\r
+ for ( size_t i = 0; i < defines.size (); i++ )\r
{\r
Define& define = *defines[i];\r
if (parameters.length () > 0)\r
{\r
string parameters = GenerateGccDefineParametersFromVector ( module.project.defines );\r
string s = GenerateGccDefineParametersFromVector ( module.defines );\r
- if (s.length () > 0)\r
+ if ( s.length () > 0 )\r
{\r
parameters += " ";\r
parameters += s;\r
const vector<Define*>& defines ) const\r
{\r
size_t i;\r
- \r
+\r
fprintf (\r
fMakefile,\r
"%s %s",\r
junk_tmp.c_str () );\r
\r
fprintf ( fMakefile,\r
- "\t${dlltool} --dllname %s --base-file %s --def %s --output-exp %s --kill-at\n",\r
- targetName.c_str (),\r
- base_tmp.c_str (),\r
- (module.GetBasePath () + SSEP + module.importLibrary->definition ).c_str (),\r
- temp_exp.c_str () );\r
+ "\t${dlltool} --dllname %s --base-file %s --def %s --output-exp %s --kill-at\n",\r
+ targetName.c_str (),\r
+ base_tmp.c_str (),\r
+ ( module.GetBasePath () + SSEP + module.importLibrary->definition ).c_str (),\r
+ temp_exp.c_str () );\r
\r
fprintf ( fMakefile,\r
"\t${rm} %s\n",\r
}\r
\r
for ( i = 0; i < ifs.size(); i++ )\r
+ {\r
GenerateObjectFileTargets ( module,\r
ifs[i]->files,\r
ifs[i]->ifs,\r
cflagsMacro,\r
nasmflagsMacro,\r
windresflagsMacro );\r
+ }\r
}\r
\r
void\r
const string& ar,\r
const string& objs_macro ) const\r
{\r
- string archiveFilename = GetModuleArchiveFilename ( module );\r
+ string archiveFilename = GetModuleArchiveFilename ( module );\r
\r
fprintf ( fMakefile,\r
"%s: %s\n",\r
- archiveFilename.c_str (),\r
+ archiveFilename.c_str (),\r
objs_macro.c_str ());\r
\r
fprintf ( fMakefile,\r
const Invoke& invoke = *module.invocations[i];\r
\r
if ( invoke.invokeModule->type != BuildTool )\r
+ {\r
throw InvalidBuildFileException ( module.node.location,\r
- "Only modules of type buildtool can be invoked." );\r
+ "Only modules of type buildtool can be invoked." );\r
+ }\r
\r
string invokeTarget = module.GetInvocationTarget ( i );\r
fprintf ( fMakefile,\r
p2 = end;\r
}\r
fprintf ( fMakefile,\r
- "%.*s: %s\n",\r
- p2-p,\r
- p,\r
- preconditionDependenciesName.c_str ());\r
+ "%.*s: %s\n",\r
+ p2-p,\r
+ p,\r
+ preconditionDependenciesName.c_str ());\r
p = p2;\r
p += strspn ( p, " \t" );\r
}\r
fprintf ( fMakefile,\r
"\t${dlltool} --dllname %s --def %s --output-lib %s --kill-at\n\n",\r
module.GetTargetName ().c_str (),\r
- (module.GetBasePath () + SSEP + module.importLibrary->definition).c_str (),\r
+ ( module.GetBasePath () + SSEP + module.importLibrary->definition ).c_str (),\r
FixupTargetFilename ( module.GetDependencyPath () ).c_str () );\r
}\r
}\r
\r
string linkerParameters ( "-Wl,--subsystem,native -Wl,--entry,_DriverEntry@8 -Wl,--image-base,0x10000 -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -mdll" );\r
GenerateLinkerCommand ( module,\r
- "${gcc}",\r
- linkerParameters,\r
- archiveFilename );\r
+ "${gcc}",\r
+ linkerParameters,\r
+ archiveFilename );\r
}\r
else\r
{\r
delete cflags;\r
\r
fprintf ( fMakefile, "%s: %s %s\n",\r
- target.c_str (),\r
+ target.c_str (),\r
archiveFilename.c_str (),\r
importLibraryDependencies.c_str () );\r
\r
string linkerParameters ( "-Wl,--subsystem,native -Wl,--entry,_DriverEntry@8 -Wl,--image-base,0x10000 -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -mdll" );\r
GenerateLinkerCommand ( module,\r
- "${gcc}",\r
- linkerParameters,\r
- archiveFilename );\r
+ "${gcc}",\r
+ linkerParameters,\r
+ archiveFilename );\r
}\r
else\r
{\r
\r
string linkerParameters ( "-Wl,--subsystem,native -Wl,--entry,_DllMainCRTStartup@12 -Wl,--image-base,0x10000 -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -nostdlib -mdll" );\r
GenerateLinkerCommand ( module,\r
- "${gcc}",\r
- linkerParameters,\r
- objectFilenames );\r
+ "${gcc}",\r
+ linkerParameters,\r
+ objectFilenames );\r
}\r
else\r
{\r
\r
string linkerParameters ( "-Wl,--subsystem,console -Wl,--entry,_DllMain@12 -Wl,--image-base,0x10000 -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -mdll" );\r
GenerateLinkerCommand ( module,\r
- "${gcc}",\r
- linkerParameters,\r
- objectFilenames );\r
+ "${gcc}",\r
+ linkerParameters,\r
+ objectFilenames );\r
}\r
else\r
{\r
\r
string linkerParameters ( "-Wl,--subsystem,windows -Wl,--entry,_WinMainCRTStartup -Wl,--image-base,0x00400000 -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000" );\r
GenerateLinkerCommand ( module,\r
- "${gcc}",\r
- linkerParameters,\r
- objectFilenames );\r
+ "${gcc}",\r
+ linkerParameters,\r
+ objectFilenames );\r
}\r
else\r
{\r