summaryrefslogtreecommitdiff
path: root/cpp/src/Slice/Preprocessor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Slice/Preprocessor.cpp')
-rw-r--r--cpp/src/Slice/Preprocessor.cpp44
1 files changed, 43 insertions, 1 deletions
diff --git a/cpp/src/Slice/Preprocessor.cpp b/cpp/src/Slice/Preprocessor.cpp
index 30b6d5c6948..68da2bf9028 100644
--- a/cpp/src/Slice/Preprocessor.cpp
+++ b/cpp/src/Slice/Preprocessor.cpp
@@ -15,6 +15,7 @@
#include <IceUtil/FileUtil.h>
#include <IceUtil/UUID.h>
#include <algorithm>
+#include <vector>
#include <fstream>
#include <sys/types.h>
#include <sys/stat.h>
@@ -398,6 +399,10 @@ Slice::Preprocessor::printMakefileDependencies(Language lang, const vector<strin
//
// Process each dependency.
//
+
+ string sourceFile;
+ vector<string> dependencies;
+
string::size_type end;
while((end = unprocessed.find(".ice", pos)) != string::npos)
{
@@ -442,6 +447,17 @@ Slice::Preprocessor::printMakefileDependencies(Language lang, const vector<strin
result += "\n <dependsOn name=\"" + file + "\"/>";
}
}
+ if(lang == JavaScriptJSON)
+ {
+ if(sourceFile.empty())
+ {
+ sourceFile = file;
+ }
+ else
+ {
+ dependencies.push_back(file);
+ }
+ }
else
{
//
@@ -465,6 +481,30 @@ Slice::Preprocessor::printMakefileDependencies(Language lang, const vector<strin
{
result += "\n </source>\n";
}
+ else if(lang == JavaScriptJSON)
+ {
+ result = "\"" + sourceFile + "\":" + (dependencies.empty() ? "[]" : "[");
+ for(vector<string>::const_iterator i = dependencies.begin(); i != dependencies.end();)
+ {
+ string file = *i;
+ result += "\n \"" + file + "\"";
+ if(++i == dependencies.end())
+ {
+ result += "]";
+ }
+ else
+ {
+ result += ",";
+ }
+ }
+
+ string::size_type pos = 0;
+ while((pos = result.find("\\", pos + 1)) != string::npos)
+ {
+ result.insert(pos, 1, '\\');
+ ++pos;
+ }
+ }
else
{
result += "\n";
@@ -570,7 +610,9 @@ Slice::Preprocessor::printMakefileDependencies(Language lang, const vector<strin
}
break;
}
- case JS:
+ case JavaScriptJSON:
+ break;
+ case JavaScript:
{
//
// Change .o[bj] suffix to .js suffix.