68 lines
2.0 KiB
Python
Executable File
68 lines
2.0 KiB
Python
Executable File
#!/usr/bin/python
|
|
# coding: utf-8
|
|
#
|
|
|
|
import json
|
|
import os
|
|
import sys
|
|
|
|
def generate_compile_commands_from_json(infilename, outfilename, builddir = None):
|
|
try:
|
|
if os.path.isfile(outfilename):
|
|
os.remove(outfilename)
|
|
|
|
jsonFile = open(infilename,'r')
|
|
outFile = open(outfilename, 'w')
|
|
|
|
for command in json.load(jsonFile):
|
|
# blacklist build dir
|
|
if builddir:
|
|
fn = command['file']
|
|
if command['file'].startswith(builddir):
|
|
continue
|
|
# whilelist some generated files (generated by us) - is not useful since qacpp can't handle dds data types
|
|
#if not '_impl' in fn and not '_plugin.cpp' in fn:
|
|
# if 'moc_' in fn:
|
|
# continue
|
|
# not sure why \" must be replaced with \"" - but that's the output of the old script
|
|
# .acf file is not used, add some defines...
|
|
cmd = ' "' + command['command'].replace('-isystem ', '-I').replace('-isystem', '-I').replace('-I ', '-I').replace('\\\\\\','\\"').replace('\"', '\""') + ' "\n'
|
|
outFile.write(cmd)
|
|
|
|
return True
|
|
except Exception as e:
|
|
print >> sys.stderr, "Error generating compile commands file '%s': %s" % (outfilename, e)
|
|
return False
|
|
|
|
########### START --- CHECK FOR VALID OPTION AND PATH ###########
|
|
def main():
|
|
print sys.argv[1]
|
|
print sys.argv[2]
|
|
try:
|
|
usageOption = sys.argv[1]
|
|
except:
|
|
print ('''You forgot to add a OPTION
|
|
-path <path>
|
|
''')
|
|
sys.exit()
|
|
try:
|
|
path = sys.argv[2]
|
|
except:
|
|
print ('''You forgot to add a PATH
|
|
-path <path>
|
|
''')
|
|
sys.exit()
|
|
|
|
if ( usageOption == '-path'):
|
|
jsonOrigFile = os.path.abspath(path+'/compile_commands.json')
|
|
outfilename = os.path.abspath(path+'/compile_commands.txt')
|
|
if not os.path.isfile(jsonOrigFile):
|
|
print >> sys.stderr, "Could not find compile commands file %s... aborting" % jsonOrigFile
|
|
sys.exit(1)
|
|
generate_compile_commands_from_json(jsonOrigFile, outfilename)
|
|
|
|
########### END --- CHECK FOR VALID OPTION AND PATH ###########
|
|
|
|
if __name__ == "__main__":
|
|
main()
|