diff options
Diffstat (limited to 'UI/Qt/qmakeish.py')
| -rwxr-xr-x | UI/Qt/qmakeish.py | 107 | 
1 files changed, 107 insertions, 0 deletions
diff --git a/UI/Qt/qmakeish.py b/UI/Qt/qmakeish.py new file mode 100755 index 0000000..1625bd0 --- /dev/null +++ b/UI/Qt/qmakeish.py @@ -0,0 +1,107 @@ +#!/usr/bin/env python +# Run this from the UI/Qt dir with: +# ./qmakeish.py  ../../Makefile > Swiften.pri + +import sys, re, os.path + +def processSourcesLine(line) : +  strippedLine = line.rstrip("\n") +  sourceFile = re.sub("\\\\$", "", strippedLine).strip() +  if len(sourceFile) > 0 : +    print "SOURCES += $$PWD/../../" + sourceFile +  return strippedLine.endswith("\\") + +def processFlags(name, flags) : +  flags = flags.replace("-isystem ", "-I") +  for flag in flags.split(" ") : +    if flag.startswith("-D") : +      print "DEFINES += " + flag[2:] +    elif flag.startswith("-I") : +      print "INCLUDEPATH += $$PWD/../../" + flag[2:] +    elif len(flag) > 0 : +      print name + " += " + flag + + +assert(len(sys.argv) == 2) + +basedir = os.path.dirname(sys.argv[1]) + +# Flatten the makefile +makefile = [] +files = [open(sys.argv[1])] +while len(files) > 0 : +  file = files[-1] +  line = file.readline() +  if line : +    match = re.match("include (.*)", line) +    if match and match.group(1) != "Makefile.config" : +      files.append(open(os.path.join(basedir, match.group(1)))) +      makefile.append("## Begin File: " + match.group(1)) +    else : +      makefile.append(line) +  else : +    makefile.append("## End file") +    file.close() +    files.pop() + +# Process makefile +inSources = False +for line in makefile : +  if inSources : +    inSources = processSourcesLine(line) +  else : +    # Conditional +    match = re.match("if(n?)eq \(\$\((.*)\),(.*)\)", line) +    if match : +      conditional = match.group(2) +      if conditional == "WIN32" : +        conditional = "win32" +      elif conditional == "MACOSX" : +        conditional = "mac" +      elif match.group(2).startswith("HAVE_") : +        conditional = "!isEmpty(" + match.group(2) + ")" +      else : +        conditional = "DUMMY" +      if (match.group(1) == "n") ^ (match.group(3) not in ["1", "yes"]) : +        conditional = "!" + conditional +      print conditional + " {" +      continue +    if re.match("^if(n?)def", line) : +      print "DUMMY {" +      continue +    elif re.match("^if(n?)eq", line) : +      print "DUMMY {" +      continue +    if re.match("^else$", line) : +      print "} else {" +      continue +    if re.match("^endif$", line) : +      print "}" +      continue +     +    match = re.match("(\w+)_SOURCES (\+?)= (.*)", line)  +    if match and match.group(1) in ["SWIFT", "ZLIB", "LIBIDN", "BOOST"] : +      inSources = processSourcesLine(match.group(3)) +      continue + +    match = re.match("(LIBS|CXXFLAGS|CPPFLAGS|CFLAGS) \+= (.*)", line)  +    if match :  +      processFlags(match.group(1), match.group(2)) + +    if line.startswith("## ") : +      print line + +""" +#print sourceFiles +sys.exit(0) + +print files +pro = open ('swiftall.pri', 'w') +for sourceType in files.keys(): +    pro.write("%s += \\\n" % sourceType) +    for sourceFile in files[sourceType]: +        pro.write("$$PWD/Swift/%s \\\n" % sourceFile) +    pro.write("\n") +pro.close() + +"""  | 
 Swift