summaryrefslogtreecommitdiff
path: root/cpp/src/Slice/Preprocessor.cpp
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2012-03-15 21:18:44 +0100
committerJose <jose@zeroc.com>2012-03-15 21:18:44 +0100
commit4a1627793f9e20381e026bc74e117dcbded7a6dc (patch)
tree9f77d47757cfa800334490dccf096ef4dee2ec16 /cpp/src/Slice/Preprocessor.cpp
parentICE-4745 - Freeze serialization throws Ice.MemoryLimitException (diff)
downloadice-4a1627793f9e20381e026bc74e117dcbded7a6dc.tar.bz2
ice-4a1627793f9e20381e026bc74e117dcbded7a6dc.tar.xz
ice-4a1627793f9e20381e026bc74e117dcbded7a6dc.zip
ICE-4791 - Include generated header in dependency rules emitted by slice2cpp.
Diffstat (limited to 'cpp/src/Slice/Preprocessor.cpp')
-rw-r--r--cpp/src/Slice/Preprocessor.cpp28
1 files changed, 20 insertions, 8 deletions
diff --git a/cpp/src/Slice/Preprocessor.cpp b/cpp/src/Slice/Preprocessor.cpp
index 6f75020a71d..9366e3164e7 100644
--- a/cpp/src/Slice/Preprocessor.cpp
+++ b/cpp/src/Slice/Preprocessor.cpp
@@ -249,12 +249,23 @@ Slice::Preprocessor::preprocess(bool keepComments)
bool
Slice::Preprocessor::printMakefileDependencies(Language lang, const vector<string>& includePaths,
- const string& cppSourceExt, const string& pyPrefix)
+ const string& cppSourceExt, const string& optValue)
{
if(!checkInputFile())
{
return false;
}
+
+ string cppHeaderExt;
+ string pyPrefix;
+ if(lang == CPlusPlus)
+ {
+ cppHeaderExt = optValue;
+ }
+ else if(lang == Python)
+ {
+ pyPrefix = optValue;
+ }
//
// Build arguments list.
@@ -452,10 +463,11 @@ Slice::Preprocessor::printMakefileDependencies(Language lang, const vector<strin
//
// Change .o[bj] suffix to the cpp source extension suffix.
//
- string::size_type pos;
- while((pos = result.find(suffix)) != string::npos)
+ string::size_type pos = result.find(suffix);
+ if(pos != string::npos)
{
- result.replace(pos, suffix.size() - 1, "." + cppSourceExt);
+ string name = result.substr(0, pos);
+ result.replace(0, pos + suffix.size() - 1, name + "." + cppHeaderExt + " " + name + "." + cppSourceExt);
}
break;
}
@@ -514,7 +526,7 @@ Slice::Preprocessor::printMakefileDependencies(Language lang, const vector<strin
// Change .o[bj] suffix to .cs suffix.
//
string::size_type pos;
- while((pos = result.find(suffix)) != string::npos)
+ if((pos = result.find(suffix)) != string::npos)
{
result.replace(pos, suffix.size() - 1, ".cs");
}
@@ -530,7 +542,7 @@ Slice::Preprocessor::printMakefileDependencies(Language lang, const vector<strin
result = pyPrefix + result;
}
string::size_type pos;
- while((pos = result.find(suffix)) != string::npos)
+ if((pos = result.find(suffix)) != string::npos)
{
result.replace(pos, suffix.size() - 1, "_ice.py");
}
@@ -542,7 +554,7 @@ Slice::Preprocessor::printMakefileDependencies(Language lang, const vector<strin
// Change .o[bj] suffix to .rb suffix.
//
string::size_type pos;
- while((pos = result.find(suffix)) != string::npos)
+ if((pos = result.find(suffix)) != string::npos)
{
result.replace(pos, suffix.size() - 1, ".rb");
}
@@ -554,7 +566,7 @@ Slice::Preprocessor::printMakefileDependencies(Language lang, const vector<strin
// Change .o[bj] suffix to .php suffix.
//
string::size_type pos;
- while((pos = result.find(suffix)) != string::npos)
+ if((pos = result.find(suffix)) != string::npos)
{
result.replace(pos, suffix.size() - 1, ".php");
}