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

Federico Bassini kurogan21 at gmail.com
Wed Feb 1 07:23:37 UTC 2017


 bin/gbuild-to-ide |   40 +++++++++++++++++++++++-----------------
 1 file changed, 23 insertions(+), 17 deletions(-)

New commits:
commit 6f08c430353b36d219c284a87f014985b00af06c
Author: Federico Bassini <kurogan21 at gmail.com>
Date:   Tue Jan 31 08:53:10 2017 +0100

    gbuild-to-ide: VSGenerator and testVs2013 with relative links
    
    VisualStudio2013IntegrationGenerator  recently doesn't work
    with the new relative paths in GbuilParser.
    this patch does this, now it works fine with all relative paths.
    what is missing it's in the .vcxproj:
    <NMakeBuildCommandLine>
    <NMakeCleanCommandLine>
    <NMakeReBuildCommandLine>
    
    these still work with absolute path but i start now on working this
    
    Change-Id: I19610097edc11be67b4f7fd9f32b6683d334cc2d
    Reviewed-on: https://gerrit.libreoffice.org/33735
    Reviewed-by: jan iversen <jani at documentfoundation.org>
    Tested-by: jan iversen <jani at documentfoundation.org>

diff --git a/bin/gbuild-to-ide b/bin/gbuild-to-ide
index 3bf063d..f9ca375 100755
--- a/bin/gbuild-to-ide
+++ b/bin/gbuild-to-ide
@@ -353,33 +353,36 @@ class testVS2013Ide(IdeIntegrationGenerator):
             nmake_rebuild_node = ET.SubElement(conf_node, '{%s}NMakeReBuildCommandLine' % ns)
             nmake_rebuild_node.text = cfg_targets['rebuild'] % nmake_params
             nmake_output_node = ET.SubElement(conf_node, '{%s}NMakeOutput' % ns)
-            nmake_output_node.text = os.path.join(self.gbuildparser.instdir, 'program', 'soffice.exe')
+            nmake_output_node.text = os.path.join('../..', 'program', 'soffice.exe')
             nmake_defs_node = ET.SubElement(conf_node, '{%s}NMakePreprocessorDefinitions' % ns)
             nmake_defs_node.text = ';'.join(list(target['DEFS']) + ['$(NMakePreprocessorDefinitions)'])
             include_path_node = ET.SubElement(conf_node, '{%s}IncludePath' % ns)
-            include_path_node.text = ';'.join(target['include'] + ['$(IncludePath)'])
+            includes=[os.path.join('../..',elem) if elem[1] != ':'  else elem for elem in target['include'] ]
+            include_path_node.text = ';'.join(includes + ['$(IncludePath)'])
 
         ET.SubElement(proj_node, '{%s}ItemDefinitionGroup' % ns)
 
         cxxobjects_node = ET.SubElement(proj_node, '{%s}ItemGroup' % ns)
         for cxxobject in target['CXXOBJECTS']:
-            cxxabspath = os.path.join(self.gbuildparser.srcdir + '/' + target['module'], cxxobject)
-            cxxfile = cxxabspath
-            if os.path.isfile(cxxabspath):
-                ET.SubElement(cxxobjects_node, '{%s}ClCompile' % ns, Include=cxxabspath)
+            cxxrelpath= os.path.join('../..',target['location'].split('/')[-1], cxxobject)
+            cxxabspath = os.path.join(self.gbuildparser.srcdir,target['location'].split('/')[-1], cxxobject)
+            cxxfile = cxxabspath + '.cxx'
+            if os.path.isfile(cxxfile):
+                ET.SubElement(cxxobjects_node, '{%s}ClCompile' % ns, Include=cxxrelpath + '.cxx')
             else:
                 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']:
-            include_abs_path = os.path.join(self.gbuildparser.srcdir + '/' + target['module'], cxxobject)
+            include_rel_path = os.path.join('../..',target['location'].split('/')[-1], cxxobject)
+            include_abs_path = os.path.join(self.gbuildparser.srcdir,target['location'].split('/')[-1], cxxobject)
             hxxfile = include_abs_path + '.hxx'
             if os.path.isfile(hxxfile):
-                ET.SubElement(includes_node, '{%s}ClInclude' % ns, Include=hxxfile)
+                ET.SubElement(includes_node, '{%s}ClInclude' % ns, Include=include_rel_path + '.hxx')
             # Few files have corresponding .h files
             hfile = include_abs_path + '.h'
             if os.path.isfile(hfile):
-                ET.SubElement(includes_node, '{%s}ClInclude' % ns, Include=hfile)
+                ET.SubElement(includes_node, '{%s}ClInclude' % ns, Include=include_rel_path + '.h')
         ET.SubElement(proj_node, '{%s}Import' % ns, Project='$(VCTargetsPath)\Microsoft.Cpp.targets')
         ET.SubElement(proj_node, '{%s}ImportGroup' % ns, Label='ExtensionTargets')
         self.write_pretty_xml(proj_node, project_path)
@@ -826,33 +829,36 @@ class VisualStudioIntegrationGenerator(IdeIntegrationGenerator):
             nmake_rebuild_node = ET.SubElement(conf_node, '{%s}NMakeReBuildCommandLine' % ns)
             nmake_rebuild_node.text = cfg_targets['rebuild'] % nmake_params
             nmake_output_node = ET.SubElement(conf_node, '{%s}NMakeOutput' % ns)
-            nmake_output_node.text = os.path.join(self.gbuildparser.instdir, 'program', 'soffice.exe')
+            nmake_output_node.text = os.path.join('../..', 'program', 'soffice.exe')
             nmake_defs_node = ET.SubElement(conf_node, '{%s}NMakePreprocessorDefinitions' % ns)
             nmake_defs_node.text = ';'.join(list(target['DEFS']) + ['$(NMakePreprocessorDefinitions)'])
             include_path_node = ET.SubElement(conf_node, '{%s}IncludePath' % ns)
-            include_path_node.text = ';'.join(target['include'] + ['$(IncludePath)'])
+            includes = [os.path.join('../..', elem) if elem[1] != ':'  else elem for elem in target['include']]
+            include_path_node.text = ';'.join(includes + ['$(IncludePath)'])
 
         ET.SubElement(proj_node, '{%s}ItemDefinitionGroup' % ns)
 
         cxxobjects_node = ET.SubElement(proj_node, '{%s}ItemGroup' % ns)
         for cxxobject in target['CXXOBJECTS']:
-            cxxabspath = os.path.join(self.gbuildparser.srcdir + '/' + target['module'], cxxobject)
-            cxxfile = cxxabspath
+            cxxrelpath = os.path.join('../..', target['location'].split('/')[-1], cxxobject)
+            cxxabspath = os.path.join(self.gbuildparser.srcdir, target['location'].split('/')[-1], cxxobject)
+            cxxfile = cxxabspath + '.cxx'
             if os.path.isfile(cxxfile):
-                ET.SubElement(cxxobjects_node, '{%s}ClCompile' % ns, Include='../../' + cxxobject)
+                ET.SubElement(cxxobjects_node, '{%s}ClCompile' % ns, Include=cxxrelpath + '.cxx')
             else:
                 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']:
-            include_abs_path = os.path.join(self.gbuildparser.srcdir + '/' + target['module'], cxxobject)
+            include_rel_path = os.path.join('../..',target['location'].split('/')[-1], cxxobject)
+            include_abs_path = os.path.join(self.gbuildparser.srcdir,target['location'].split('/')[-1], cxxobject)
             hxxfile = include_abs_path + '.hxx'
             if os.path.isfile(hxxfile):
-                ET.SubElement(includes_node, '{%s}ClInclude' % ns, Include='../../' + cxxobject + '.hxx')
+                ET.SubElement(includes_node, '{%s}ClInclude' % ns, Include=include_rel_path + '.hxx')
             # Few files have corresponding .h files
             hfile = include_abs_path + '.h'
             if os.path.isfile(hfile):
-                ET.SubElement(includes_node, '{%s}ClInclude' % ns, Include='../../' + cxxobject + '.h')
+                ET.SubElement(includes_node, '{%s}ClInclude' % ns, Include=include_rel_path + '.h')
         ET.SubElement(proj_node, '{%s}Import' % ns, Project='$(VCTargetsPath)\Microsoft.Cpp.targets')
         ET.SubElement(proj_node, '{%s}ImportGroup' % ns, Label='ExtensionTargets')
         self.write_pretty_xml(proj_node, project_path)


More information about the Libreoffice-commits mailing list