summaryrefslogtreecommitdiff
path: root/config/makedepend.py
diff options
context:
space:
mode:
Diffstat (limited to 'config/makedepend.py')
-rwxr-xr-xconfig/makedepend.py151
1 files changed, 151 insertions, 0 deletions
diff --git a/config/makedepend.py b/config/makedepend.py
new file mode 100755
index 00000000000..d5de46b75a1
--- /dev/null
+++ b/config/makedepend.py
@@ -0,0 +1,151 @@
+#!/usr/bin/env python
+# **********************************************************************
+#
+# Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
+#
+# This copy of Ice is licensed to you under the terms described in the
+# ICE_LICENSE file included in this distribution.
+#
+# **********************************************************************
+
+import sys, os, fileinput, re, string, getopt
+
+previous = ""
+
+commentre = re.compile("^#")
+
+for top_srcdir in [".", "..", "../..", "../../..", "../../../.."]:
+ top_srcdir = os.path.normpath(top_srcdir)
+ if os.path.exists(os.path.join(top_srcdir, "..", "config", "makedepend.py")):
+ break
+else:
+ raise RuntimeError("can't find top level source directory!")
+
+subincludedir = top_srcdir + "/include"
+subcppincludedir = top_srcdir + "/../cpp/include"
+
+try:
+ opts, args = getopt.getopt(sys.argv[1:], "n", ["nmake"])
+except getopt.GetoptError:
+ raise RuntimeError("invalid arguments")
+
+prefix = None
+if len(args) > 0:
+ prefix = args[0]
+
+nmake = False
+for o, a in opts:
+ if o in ("-n", "--nmake"):
+ nmake = True
+
+depend = None
+if not nmake:
+ depend = open(".depend", "a")
+dependmak = open(".depend.mak", "a")
+
+lang = None
+for line in fileinput.input("-"):
+ line = line.strip()
+
+ if commentre.search(line, 0):
+ continue;
+
+ if len(line) == 0:
+ continue
+
+ line = string.replace(line, ".o:", "$(OBJEXT):")
+
+ if(previous):
+ line = previous + " " + line
+
+ if(line[-1] == "\\"):
+ previous = line[:-2]
+ continue
+ else:
+ previous = ""
+
+ i = 0
+ for s in line.split():
+ if(s[0] == "/"):
+ continue
+
+ if i == 0 and s.endswith(".h") and prefix != None:
+ if depend:
+ print >>depend, prefix + "/" + s,
+ print >>dependmak, prefix + "\\" + s,
+ i += 1
+ continue
+
+ if s.endswith(".cs:"):
+ lang = "cs"
+ s = "generated/" + s
+ if depend:
+ print >>depend, s,
+ print >>dependmak, s,
+ continue
+
+ if s.endswith(".cpp:"):
+ lang = "cpp"
+
+ if s.endswith(".rb:") and prefix != None:
+ s = prefix + "/" + s
+ if depend:
+ print >>depend, s,
+ print >>dependmak, s,
+ continue
+
+ if s.endswith(".php:"):
+ lang = "php"
+ if prefix != None:
+ s = prefix + "/" + s
+ if depend:
+ print >>depend, s,
+ print >>dependmak, s,
+ continue
+
+ if s.startswith(subincludedir):
+ s = "$(includedir)" + s[len(subincludedir):]
+ if depend:
+ print >>depend, s,
+ print >>dependmak, '"' + s + '"',
+ continue
+
+ if s.startswith(subcppincludedir):
+ s = "$(ice_cpp_dir)/include" + s[len(subcppincludedir):]
+ if depend:
+ print >>depend, s,
+ print >>dependmak, '"' + s + '"',
+ continue
+
+ idx = s.find("./slice")
+ if idx >= 0:
+ s = "$(slicedir)" + s[idx + 7:]
+ if depend:
+ print >>depend, s,
+ print >>dependmak, '"' + s + '"',
+ continue
+
+ if depend:
+ print >>depend, s,
+ print >>dependmak, s,
+
+ if lang == "cpp":
+ if depend:
+ print >>depend, "$(SLICE2CPP) $(SLICEPARSERLIB)"
+ print >>dependmak, "\"$(SLICE2CPP)\" \"$(SLICEPARSERLIB)\""
+ elif lang == "cs":
+ if depend:
+ print >>depend, "$(SLICE2CS) $(SLICEPARSERLIB)"
+ print >>dependmak, "\"$(SLICE2CS)\" \"$(SLICEPARSERLIB)\""
+ elif lang == "php":
+ if depend:
+ print >>depend, "$(SLICE2PHP) $(SLICEPARSERLIB)"
+ print >>dependmak, "\"$(SLICE2PHP)\" \"$(SLICEPARSERLIB)\""
+ else:
+ if depend:
+ print >>depend
+ print >>dependmak
+
+if depend:
+ depend.close()
+dependmak.close()