bin/gbuild-to-ide |   39 +++++++++++++--------------------------
 1 file changed, 13 insertions(+), 26 deletions(-)

New commits:
commit ee3f793a2d4e2977a3e952e1439708d8936953d7
Author: Matúš Kukan <matus.ku...@gmail.com>
Date:   Wed Dec 14 22:25:12 2016 +0100

    tdf#70414: Fix VisualStudio ide integration
    
    'LINKTARGET' is not really helpful as target name.
    Use name based on makefile's name and hope something like
    b81ac16e65b311d6e43c05c22c65d2040c9d7e04 is not needed anymore.
    And if there are still some inconsistencies, we should fix makefile's name.
    
    Also, don't use target.name because it's not unique.
    There can be e.g. both Library_smoketest and CppunitTest_smoketest.
    
    Change-Id: I541a1e41f80446e875e1bb2bfa89786e356e0e74
    Reviewed-on: https://gerrit.libreoffice.org/32027
    Reviewed-by: jan iversen <j...@documentfoundation.org>
    Tested-by: jan iversen <j...@documentfoundation.org>

diff --git a/bin/gbuild-to-ide b/bin/gbuild-to-ide
index 7de2fb4..8ee2d13 100755
--- a/bin/gbuild-to-ide
+++ b/bin/gbuild-to-ide
@@ -39,47 +39,40 @@ class GbuildLinkTarget:
 
 
 class GbuildLib(GbuildLinkTarget):
-    def __init__(self, name, library, location, include, include_sys, defs, 
cxxobjects, cxxflags, linked_libs):
+    def __init__(self, name, 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):
         """Return the short name of target based on the Library_* makefile 
name"""
         return 'Library %s' % self.name
 
     def target_name(self):
-        return 'Library_%s' % self.library
+        return 'Library_%s' % self.name
 
     def library_name(self):
-        return self.library
+        return self.name
 
 class GbuildTest(GbuildLinkTarget):
-    def __init__(self, name, test, location, include, include_sys, defs, 
cxxobjects, cxxflags, linked_libs):
+    def __init__(self, name, location, include, include_sys, defs, cxxobjects, 
cxxflags, linked_libs):
         GbuildLinkTarget.__init__(self, name, location, include, include_sys, 
defs, cxxobjects, cxxflags, linked_libs)
-        self.test = test
 
     def short_name(self):
         """Return the short name of target based n the CppunitTest_* makefile 
names"""
         return 'CppunitTest %s' % self.name
 
     def target_name(self):
-        return 'CppunitTest_%s' % self.test
-
-    def test_name(self):
-        return self.test
-
+        return 'CppunitTest_%s' % self.name
 
 class GbuildExe(GbuildLinkTarget):
-    def __init__(self, name, executable, location, include, include_sys, defs, 
cxxobjects, cxxflags, linked_libs):
+    def __init__(self, name, 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):
         """Return the short name of target based on the Executable_* makefile 
name"""
         return 'Executable %s' % self.name
 
     def target_name(self):
-        return 'Executable_%s' % self.executable
+        return 'Executable_%s' % self.name
 
 
 class GbuildParser:
@@ -88,7 +81,7 @@ class GbuildParser:
         self.binpath = os.path.dirname(os.environ['GPERF']) # woha, this is 
quite a hack
         (self.srcdir, self.builddir, self.instdir, self.workdir) = 
(os.environ['SRCDIR'], os.environ['BUILDDIR'], os.environ['INSTDIR'], 
os.environ['WORKDIR'])
         (self.libs, self.exes, self.tests, self.modulenamelist) = ([], [], [], 
[])
-        (self.libnames, self.exenames, self.testnames, self.target_by_path, 
self.target_by_location) = ({}, {}, {}, {}, {})
+        (self.target_by_path, self.target_by_location) = ({}, {})
 
     includepattern = re.compile('-I(\S+)')
     isystempattern = re.compile('-isystem\s*(\S+)')
@@ -129,7 +122,6 @@ class GbuildParser:
         (foundincludes, foundisystem) = 
GbuildParser.__split_includes(json['INCLUDE'])
         return GbuildLib(
             
GbuildParser.libpattern.match(os.path.basename(json['MAKEFILE'])).group(1),
-            json['LINKTARGET'],
             os.path.dirname(json['MAKEFILE']),
             foundincludes,
             foundisystem,
@@ -151,7 +143,6 @@ class GbuildParser:
 
         return GbuildTest(
             testname,
-            json['LINKTARGET'],
             os.path.dirname(json['MAKEFILE']),
             foundincludes,
             foundisystem,
@@ -165,7 +156,6 @@ class GbuildParser:
         (foundincludes, foundisystem) = 
GbuildParser.__split_includes(json['INCLUDE'])
         return GbuildExe(
             
GbuildParser.exepattern.match(os.path.basename(json['MAKEFILE'])).group(1),
-            json['LINKTARGET'],
             os.path.dirname(json['MAKEFILE']),
             foundincludes,
             foundisystem,
@@ -178,17 +168,14 @@ class GbuildParser:
         for jsonfilename in os.listdir(os.path.join(self.workdir, 
'GbuildToJson', 'Library')):
             with open(os.path.join(self.workdir, 'GbuildToJson', 'Library', 
jsonfilename), 'r') as f:
                 lib = self.__lib_from_json(json.load(f))
-                self.libnames[lib.library] = lib.name
                 self.libs.append(lib)
         for jsonfilename in os.listdir(os.path.join(self.workdir, 
'GbuildToJson', 'Executable')):
             with open(os.path.join(self.workdir, 'GbuildToJson', 'Executable', 
jsonfilename), 'r') as f:
                 exe = self.__exe_from_json(json.load(f))
-                self.exenames[exe.executable] = exe.name
                 self.exes.append(exe)
         for jsonfilename in os.listdir(os.path.join(self.workdir, 
'GbuildToJson', 'CppunitTest')):
             with open(os.path.join(self.workdir, 'GbuildToJson', 
'CppunitTest', jsonfilename), 'r') as f:
                 test = self.__test_from_json(json.load(f))
-                self.testnames[test.test] = test.name
                 self.tests.append(test)
         for target in set(self.libs) | set(self.exes) | set(self.tests):
             if target.location not in self.target_by_location:
@@ -715,7 +702,7 @@ class XcodeIntegrationGenerator(IdeIntegrationGenerator):
     # For some reverse-engineered documentation on the project.pbxproj format,
     # see http://www.monobjc.net/xcode-project-file-format.html .
     def write_xcodeproj(self, moduledir, target):
-        xcodeprojdir = os.path.join(moduledir, '%s.xcodeproj' % target.name)
+        xcodeprojdir = os.path.join(moduledir, '%s.xcodeproj' % 
target.target_name())
         try:
             os.mkdir(xcodeprojdir)
         except:
@@ -732,7 +719,7 @@ class XcodeIntegrationGenerator(IdeIntegrationGenerator):
             # module = location.split('/')[-1]
             # module_directory = os.path.join(self.rootlocation, module)
             for target in self.gbuildparser.target_by_location[location]:
-                # project_path = os.path.join(module_directory, '%s.pbxroj' % 
target.name)
+                # project_path = os.path.join(module_directory, '%s.pbxroj' % 
target.target_name())
                 self.write_xcodeproj(location, target)
 
 
@@ -781,7 +768,7 @@ class 
VisualStudioIntegrationGenerator(IdeIntegrationGenerator):
             module = location.split('/')[-1]
             module_directory = os.path.join(self.solution_directory, module)
             for target in self.gbuildparser.target_by_location[location]:
-                project_path = os.path.join(module_directory, '%s.vcxproj' % 
target.name)
+                project_path = os.path.join(module_directory, '%s.vcxproj' % 
target.target_name())
                 project_guid = self.write_project(project_path, target)
                 p = VisualStudioIntegrationGenerator.Project(project_guid, 
target, project_path)
                 projects.append(p)
@@ -807,7 +794,7 @@ class 
VisualStudioIntegrationGenerator(IdeIntegrationGenerator):
             f.write('Microsoft Visual Studio Solution File, Format Version 
12.00\n')
             for project in projects:
                 target = project.target
-                print(' %s' % target.name, end='')
+                print(' %s' % target.target_name(), end='')
                 proj_path = os.path.relpath(project.path, 
os.path.abspath(os.path.dirname(solution_path)))
                 f.write('Project("{%s}") = "%s", "%s", "{%s}"\n' %
                         (VisualStudioIntegrationGenerator.nmake_project_guid,
@@ -919,7 +906,7 @@ class 
VisualStudioIntegrationGenerator(IdeIntegrationGenerator):
             if os.path.isfile(cxxfile):
                 ET.SubElement(cxxobjects_node, '{%s}ClCompile' % ns, 
Include=cxxfile)
             else:
-                print('Source %s in project %s does not exist' % (cxxfile, 
target.name))
+                print('Source %s in project %s does not exist' % (cxxfile, 
target.target_name()))
 
         includes_node = ET.SubElement(proj_node, '{%s}ItemGroup' % ns)
         for cxxobject in target.cxxobjects:
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to