[Libreoffice-commits] core.git: 2 commits - bin/gbuild-to-ide

Markus Mohrhard markus.mohrhard at collabora.co.uk
Mon Aug 11 05:40:15 PDT 2014


 bin/gbuild-to-ide |   44 ++++++++++++++++++++++++++++----------------
 1 file changed, 28 insertions(+), 16 deletions(-)

New commits:
commit d4801c45caa05585c14f800e2dfe2cfc8642499d
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date:   Thu Aug 7 21:20:02 2014 +0200

    add the cxx flags to the ide parser
    
    Change-Id: Ied5f8ec9af69365e3375de26d325984c57327460
    Reviewed-on: https://gerrit.libreoffice.org/10819
    Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
    Tested-by: Markus Mohrhard <markus.mohrhard at googlemail.com>

diff --git a/bin/gbuild-to-ide b/bin/gbuild-to-ide
index f7302c2..fcc1236 100755
--- a/bin/gbuild-to-ide
+++ b/bin/gbuild-to-ide
@@ -25,14 +25,15 @@ class GbuildParserState:
         self.include = []
         self.defs = {}
         self.cxxobjects = []
+        self.cxxflags = []
         self.linked_libs = []
         self.include_sys = []
 
 
 class GbuildLinkTarget:
-    def __init__(self, name, location, include, include_sys, defs, cxxobjects, linked_libs):
-        (self.name, self.location, self.include, self.include_sys, self.defs, self.cxxobjects, self.linked_libs) = (
-        name, location, include, include_sys, defs, cxxobjects, linked_libs)
+    def __init__(self, name, location, include, include_sys, defs, cxxobjects, cxxflags, linked_libs):
+        (self.name, self.location, self.include, self.include_sys, self.defs, self.cxxobjects, self.cxxflags, self.linked_libs) = (
+        name, location, include, include_sys, defs, cxxobjects, cxxflags, linked_libs)
 
     def short_name(self):
         return self.name
@@ -41,13 +42,14 @@ class GbuildLinkTarget:
         return not self.include and not self.defs and not self.cxxobjects and not self.linked_libs
 
     def __str__(self):
-        return '%s at %s with include path: %s, isystem includes: %s, defines %s, objects: %s and linked libs: %s' % (
-        self.short_name(), self.location, self.include, self.include_sys, self.defs, self.cxxobjects, self.linked_libs)
+        return '%s at %s with include path: %s, isystem includes: %s, defines: %s, objects: %s, cxxflags: %s and linked libs: %s' % (
+        self.short_name(), self.location, self.include, self.include_sys, self.defs, self.cxxobjects,
+            self.cxxflags, self.linked_libs)
 
 
 class GbuildLib(GbuildLinkTarget):
-    def __init__(self, name, library, location, include, include_sys, defs, cxxobjects, linked_libs):
-        GbuildLinkTarget.__init__(self, name, location, include, include_sys, defs, cxxobjects, linked_libs)
+    def __init__(self, name, library, location, include, include_sys, defs, cxxobjects, cxxflags, linked_libs):
+        GbuildLinkTarget.__init__(self, name, location, include, include_sys, defs, cxxobjects, cxxflags, linked_libs)
         self.library = library
 
     def short_name(self):
@@ -62,8 +64,8 @@ class GbuildLib(GbuildLinkTarget):
 
 
 class GbuildExe(GbuildLinkTarget):
-    def __init__(self, name, executable, location, include, include_sys, defs, cxxobjects, linked_libs):
-        GbuildLinkTarget.__init__(self, name, location, include, include_sys, defs, cxxobjects, linked_libs)
+    def __init__(self, name, executable, location, include, include_sys, defs, cxxobjects, cxxflags, linked_libs):
+        GbuildLinkTarget.__init__(self, name, location, include, include_sys, defs, cxxobjects, cxxflags, linked_libs)
         self.executable = executable
 
     def short_name(self):
@@ -91,6 +93,7 @@ class GbuildParser:
     cxxpattern = re.compile('# CXXOBJECTS := (.*)')
     linkedlibspattern = re.compile('# LINKED_LIBS := (.*)')
     ilibpattern = re.compile('# ILIBTARGET := (.*)')
+    warningpattern = re.compile('-W\S+')
 
     def __init__(self):
         (self.makecmd, self.srcdir, self.builddir, self.instdir, self.libs,
@@ -150,7 +153,7 @@ class GbuildParser:
                 self.libs.append(
                     GbuildLib(libmatch.group(2), libname, libmatch.group(1),
                               state.include, state.include_sys, state.defs, state.cxxobjects,
-                              state.linked_libs))
+                              state.cxxflags, state.linked_libs))
                 state = GbuildParserState()
                 continue
             exematch = GbuildParser.exepattern.match(line)
@@ -159,7 +162,7 @@ class GbuildParser:
                 self.exes.append(
                     GbuildExe(exematch.group(2), exename, exematch.group(1),
                               state.include, state.include_sys, state.defs, state.cxxobjects,
-                              state.linked_libs))
+                              state.cxxflags, state.linked_libs))
                 state = GbuildParserState()
                 continue
             includematch = GbuildParser.includepattern.match(line)
@@ -190,6 +193,10 @@ class GbuildParser:
             ilibmatch = GbuildParser.ilibpattern.match(line)
             if ilibmatch:
                 state.ilib = os.path.basename(ilibmatch.group(1))
+                continue
+            if line.find('# T_CXXFLAGS :=') == 0:
+                state.cxxflags = [cxxflag.strip() for cxxflag in GbuildParser.warningpattern.sub('', line.replace('# T_CXXFLAGS :=','')).split(' ') if len(cxxflag) > 1]
+                continue
             #we could match a lot of other stuff here if needed for integration rpaths etc.
         return self
 
commit f70f4e998517e9792034613b85ad89afa187e271
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date:   Thu Aug 7 20:02:05 2014 +0200

    split isystem includes from normal includes
    
    All includes coming from isystem where wrong as the regex was not able
    to recognize that the isystem and following path belong together.
    Additionally stripping the first two characters resulted in broken paths
    in this case.
    
    Change-Id: Iaa8e484d1ddcd4c8744d1e37a006ebf915cdfc84
    Reviewed-on: https://gerrit.libreoffice.org/10815
    Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
    Tested-by: Markus Mohrhard <markus.mohrhard at googlemail.com>

diff --git a/bin/gbuild-to-ide b/bin/gbuild-to-ide
index 55bfa37..f7302c2 100755
--- a/bin/gbuild-to-ide
+++ b/bin/gbuild-to-ide
@@ -26,12 +26,13 @@ class GbuildParserState:
         self.defs = {}
         self.cxxobjects = []
         self.linked_libs = []
+        self.include_sys = []
 
 
 class GbuildLinkTarget:
-    def __init__(self, name, location, include, defs, cxxobjects, linked_libs):
-        (self.name, self.location, self.include, self.defs, self.cxxobjects, self.linked_libs) = (
-        name, location, include, defs, cxxobjects, linked_libs)
+    def __init__(self, name, location, include, include_sys, defs, cxxobjects, linked_libs):
+        (self.name, self.location, self.include, self.include_sys, self.defs, self.cxxobjects, self.linked_libs) = (
+        name, location, include, include_sys, defs, cxxobjects, linked_libs)
 
     def short_name(self):
         return self.name
@@ -40,13 +41,13 @@ class GbuildLinkTarget:
         return not self.include and not self.defs and not self.cxxobjects and not self.linked_libs
 
     def __str__(self):
-        return '%s at %s with include path: %s, defines %s, objects: %s and linked libs: %s' % (
-        self.short_name(), self.location, self.include, self.defs, self.cxxobjects, self.linked_libs)
+        return '%s at %s with include path: %s, isystem includes: %s, defines %s, objects: %s and linked libs: %s' % (
+        self.short_name(), self.location, self.include, self.include_sys, self.defs, self.cxxobjects, self.linked_libs)
 
 
 class GbuildLib(GbuildLinkTarget):
-    def __init__(self, name, library, location, include, defs, cxxobjects, linked_libs):
-        GbuildLinkTarget.__init__(self, name, location, include, defs, cxxobjects, linked_libs)
+    def __init__(self, name, library, location, include, include_sys, defs, cxxobjects, linked_libs):
+        GbuildLinkTarget.__init__(self, name, location, include, include_sys, defs, cxxobjects, linked_libs)
         self.library = library
 
     def short_name(self):
@@ -61,8 +62,8 @@ class GbuildLib(GbuildLinkTarget):
 
 
 class GbuildExe(GbuildLinkTarget):
-    def __init__(self, name, executable, location, include, defs, cxxobjects, linked_libs):
-        GbuildLinkTarget.__init__(self, name, location, include, defs, cxxobjects, linked_libs)
+    def __init__(self, name, executable, location, include, include_sys, defs, cxxobjects, linked_libs):
+        GbuildLinkTarget.__init__(self, name, location, include, include_sys, defs, cxxobjects, linked_libs)
         self.executable = executable
 
     def short_name(self):
@@ -84,7 +85,8 @@ class GbuildParser:
     rulepattern = re.compile('^(.+?):( .*)?$')
     libpattern = re.compile('#  [a-z]+ to execute \(from [\'`](.*)/Library_(.*)\.mk\', line [0-9]*\):')
     exepattern = re.compile('#  [a-z]+ to execute \(from [\'`](.*)/Executable_(.*)\.mk\', line [0-9]*\):')
-    includepattern = re.compile('# INCLUDE := (.*)')
+    includepattern = re.compile('-I(\S+)')
+    isystempattern = re.compile('-isystem\s*(\S+)')
     defspattern = re.compile('# DEFS := (.*)')
     cxxpattern = re.compile('# CXXOBJECTS := (.*)')
     linkedlibspattern = re.compile('# LINKED_LIBS := (.*)')
@@ -147,7 +149,7 @@ class GbuildParser:
                 libname = self.libnames.get(state.ilib, None)
                 self.libs.append(
                     GbuildLib(libmatch.group(2), libname, libmatch.group(1),
-                              state.include, state.defs, state.cxxobjects,
+                              state.include, state.include_sys, state.defs, state.cxxobjects,
                               state.linked_libs))
                 state = GbuildParserState()
                 continue
@@ -156,13 +158,16 @@ class GbuildParser:
                 exename = self.exenames.get(state.target, None)
                 self.exes.append(
                     GbuildExe(exematch.group(2), exename, exematch.group(1),
-                              state.include, state.defs, state.cxxobjects,
+                              state.include, state.include_sys, state.defs, state.cxxobjects,
                               state.linked_libs))
                 state = GbuildParserState()
                 continue
             includematch = GbuildParser.includepattern.match(line)
-            if includematch:
-                state.include = [includeswitch.strip()[2:] for includeswitch in includematch.group(1).split(' ') if
+            if line.find('# INCLUDE :=') == 0:
+                isystemmatch = GbuildParser.isystempattern.findall(line)
+                if isystemmatch:
+                    state.include_sys = isystemmatch
+                state.include = [includeswitch.strip() for includeswitch in GbuildParser.includepattern.findall(line) if
                                  len(includeswitch) > 2]
                 continue
             defsmatch = GbuildParser.defspattern.match(line)


More information about the Libreoffice-commits mailing list