From f963c33ddcc2d3f70cc927104d6d1c3ed4ef9b27 Mon Sep 17 00:00:00 2001 From: jan Iversen Date: Sat, 14 Jan 2017 15:57:00 +0100 Subject: gbuild-to-ide, prepare for more file types. The structure how to capture new file types is in place, now search need to start in post_Gbuildtojson for missing/wrong macros. Change-Id: I9f97a6181c24d2cffbb004ee660c9cfbf5d0a099 --- bin/gbuild-to-ide | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) (limited to 'bin') diff --git a/bin/gbuild-to-ide b/bin/gbuild-to-ide index cf673e38c6f7..2d9e7212a912 100755 --- a/bin/gbuild-to-ide +++ b/bin/gbuild-to-ide @@ -21,7 +21,6 @@ import xml.dom.minidom as minidom import traceback import collections - class GbuildLinkTarget: def __init__(self, name, location, include, include_sys, defs, cxxobjects, cxxflags, linked_libs, asmobjects, cflags, gencobjects, gencxxobjects, ilibtarget, linked_static_libs, linktarget, @@ -86,6 +85,18 @@ class GbuildParser: return [cxxflag.strip() for cxxflag in GbuildParser._warningpattern.sub('', '%s %s' % (flagsline, flagslineappend)).split(' ') if len(cxxflag) > 1] def parse(self): + # Relation between json object and file extension + # Missing relations: .hxx .hpp .hrc .src .java .py .h .s .c .pl .S .ui .l .cpp + jsonSrc = {'ASMOBJECTS': '.asm', + 'CXXOBJECTS': '.cxx', + 'GENCOBJECTS': '?', + 'GENCXXOBJECTS': '.cxx', # this does not sound right + 'OBJCOBJECTS': '.m', + 'OBJCXXOBJECTS': '.mm', + 'YACCOBJECTS': '.y' + } + + moduleDict = {} for jsontype in ['Library', 'Executable', 'CppunitTest']: for jsonfilename in os.listdir(os.path.join(self.workdir, 'GbuildToJson', jsontype)): @@ -95,26 +106,35 @@ class GbuildParser: (foundincludes, foundisystem) = GbuildParser.__split_includes(jsondata['INCLUDE']) match = GbuildParser._buildpattern[jsontype].match(os.path.basename(jsondata['MAKEFILE'])).group(1) location = os.path.dirname(jsondata['MAKEFILE']) + filesSorted = {} + for i in jsonSrc: + if len(jsondata[i]) > 0: + if jsonSrc[i] == '?': + raise Exception('type need conversion') + filesSorted[i] = sorted(GbuildParser.__split_objs(jsondata[i])) + else: + filesSorted[i] = [] + newObj = GbuildLinkTarget(match, location, foundincludes, foundisystem, GbuildParser.__split_defs(jsondata['DEFS']), - sorted(GbuildParser.__split_objs(jsondata['CXXOBJECTS'])), + filesSorted['CXXOBJECTS'], GbuildParser.__split_flags(jsondata['CXXFLAGS'], jsondata['CXXFLAGSAPPEND']), jsondata['LINKED_LIBS'].strip().split(' '), - sorted(jsondata['ASMOBJECTS']), + filesSorted['ASMOBJECTS'], GbuildParser.__split_flags(jsondata['CFLAGS'], jsondata['CFLAGSAPPEND']), - sorted(jsondata['GENCOBJECTS']), - sorted(jsondata['GENCXXOBJECTS']), + filesSorted['GENCOBJECTS'], + filesSorted['GENCXXOBJECTS'], jsondata['ILIBTARGET'], jsondata['LINKED_STATIC_LIBS'], jsondata['LINKTARGET'], GbuildParser.__split_flags(jsondata['OBJCFLAGS'], jsondata['OBJCFLAGSAPPEND']), - sorted(jsondata['OBJCOBJECTS']), + filesSorted['OBJCOBJECTS'], GbuildParser.__split_flags(jsondata['OBJCXXFLAGS'], jsondata['OBJCXXFLAGSAPPEND']), - sorted(jsondata['OBJCXXOBJECTS']), - sorted(jsondata['YACCOBJECTS']), + filesSorted['OBJCXXOBJECTS'], + filesSorted['YACCOBJECTS'], jsontype) module = location.split('/')[-1] if not module in moduleDict: -- cgit v1.2.3